diff --git a/.github/workflows/printer-linter-format.yml b/.github/workflows/printer-linter-format.yml new file mode 100644 index 0000000000..9fb5a1c584 --- /dev/null +++ b/.github/workflows/printer-linter-format.yml @@ -0,0 +1,45 @@ +name: printer-linter-format + +on: + push: + branches: + - main + - '[1-9].[0-9]' + - '[1-9].[0-9][0-9]' + path: + - 'resources/**' + +jobs: + printer-linter-format: + name: Printer linter auto format + + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v3 + + - name: Setup Python and pip + uses: actions/setup-python@v4 + with: + python-version: 3.11.x + cache: 'pip' + cache-dependency-path: .github/workflows/requirements-printer-linter.txt + + - uses: technote-space/get-diff-action@v6 + with: + PATTERNS: | + resources/+(definitions|extruders)/*.def.json + resources/+(intent|quality|variants)/**/*.inst.cfg + + - name: Install Python requirements for runner + if: env.GIT_DIFF && !env.MATCHED_FILES + run: pip install -r .github/workflows/requirements-printer-linter.txt + + - name: Format file + if: env.GIT_DIFF && !env.MATCHED_FILES + run: python printer-linter/src/terminal.py --format ${{ env.GIT_DIFF_FILTERED }} + + - uses: stefanzweifel/git-auto-commit-action@v4 + if: env.GIT_DIFF && !env.MATCHED_FILES + with: + commit_message: "Applied printer-linter format" diff --git a/.printer-linter b/.printer-linter index 82eadb6d53..f9f105e1f7 100644 --- a/.printer-linter +++ b/.printer-linter @@ -9,6 +9,7 @@ format: format-definition-paired-coordinate-array: true format-definition-sort-keys: true format-definition-indent: 4 + format-definition-single-value-single-line: true # Format dicts and lists with a single item on one line "dict": { "value": 10 } format-profile-space-around-delimiters: true format-profile-sort-keys: true diagnostic-mesh-file-size: 1200000 \ No newline at end of file diff --git a/cura/Settings/ActiveQuality.py b/cura/Settings/ActiveQuality.py new file mode 100644 index 0000000000..420d1f24fc --- /dev/null +++ b/cura/Settings/ActiveQuality.py @@ -0,0 +1,48 @@ +from dataclasses import dataclass +from typing import List + +from UM import i18nCatalog + +catalog = i18nCatalog("cura") + + +@dataclass +class ActiveQuality: + """ Represents the active intent+profile combination, contains all information needed to display active quality. """ + intent_category: str = "" # Name of the base intent. For example "visual" or "engineering". + intent_name: str = "" # Name of the base intent formatted for display. For Example "Visual" or "Engineering" + profile: str = "" # Name of the base profile. For example "Fine" or "Fast" + custom_profile: str = "" # Name of the custom profile, this is based on profile. For example "MyCoolCustomProfile" + layer_height: float = None # Layer height of quality in mm. For example 0.4 + is_experimental: bool = False # If the quality experimental. + + def getMainStringParts(self) -> List[str]: + string_parts = [] + + if self.custom_profile is not None: + string_parts.append(self.custom_profile) + else: + string_parts.append(self.profile) + if self.intent_category is not "default": + string_parts.append(self.intent_name) + + return string_parts + + def getTailStringParts(self) -> List[str]: + string_parts = [] + + if self.custom_profile is not None: + string_parts.append(self.profile) + if self.intent_category is not "default": + string_parts.append(self.intent_name) + + if self.layer_height: + string_parts.append(f"{self.layer_height}mm") + + if self.is_experimental: + string_parts.append(catalog.i18nc("@label", "Experimental")) + + return string_parts + + def getStringParts(self) -> List[str]: + return self.getMainStringParts() + self.getTailStringParts() diff --git a/cura/Settings/MachineManager.py b/cura/Settings/MachineManager.py index 27d8fbbc78..b8a5e7d885 100755 --- a/cura/Settings/MachineManager.py +++ b/cura/Settings/MachineManager.py @@ -40,6 +40,7 @@ from cura.Settings.cura_empty_instance_containers import (empty_definition_chang empty_material_container, empty_quality_container, empty_quality_changes_container, empty_intent_container) from cura.UltimakerCloud.UltimakerCloudConstants import META_UM_LINKED_TO_ACCOUNT +from .ActiveQuality import ActiveQuality from .CuraStackBuilder import CuraStackBuilder @@ -1631,33 +1632,31 @@ class MachineManager(QObject): # Examples: # - "my_profile - Fine" (only based on a default quality, no intent involved) # - "my_profile - Engineering - Fine" (based on an intent) - @pyqtProperty("QVariantMap", notify = activeQualityDisplayNameChanged) - def activeQualityDisplayNameMap(self) -> Dict[str, str]: + @pyqtProperty("QList", notify = activeQualityDisplayNameChanged) + def activeQualityDisplayNameStringParts(self) -> List[str]: + return self.activeQualityDisplayNameMap().getStringParts() + + @pyqtProperty("QList", notify = activeQualityDisplayNameChanged) + def activeQualityDisplayNameMainStringParts(self) -> List[str]: + return self.activeQualityDisplayNameMap().getMainStringParts() + + @pyqtProperty("QList", notify = activeQualityDisplayNameChanged) + def activeQualityDisplayNameTailStringParts(self) -> List[str]: + return self.activeQualityDisplayNameMap().getTailStringParts() + + def activeQualityDisplayNameMap(self) -> ActiveQuality: global_stack = self._application.getGlobalContainerStack() if global_stack is None: - return {"main": "", - "suffix": ""} + return ActiveQuality() - display_name = global_stack.quality.getName() - - intent_category = self.activeIntentCategory - if intent_category != "default": - intent_display_name = IntentCategoryModel.translation(intent_category, - "name", - intent_category.title()) - display_name = "{intent_name} - {the_rest}".format(intent_name = intent_display_name, - the_rest = display_name) - - main_part = display_name - suffix_part = "" - - # Not a custom quality - if global_stack.qualityChanges != empty_quality_changes_container: - main_part = self.activeQualityOrQualityChangesName - suffix_part = display_name - - return {"main": main_part, - "suffix": suffix_part} + return ActiveQuality( + profile = global_stack.quality.getName(), + intent_category = self.activeIntentCategory, + intent_name = IntentCategoryModel.translation(self.activeIntentCategory, "name", self.activeIntentCategory.title()), + custom_profile = self.activeQualityOrQualityChangesName if global_stack.qualityChanges is not empty_quality_changes_container else None, + layer_height = self.activeQualityLayerHeight if self.isActiveQualitySupported else None, + is_experimental = self.isActiveQualityExperimental and self.isActiveQualitySupported + ) @pyqtSlot(str) def setIntentByCategory(self, intent_category: str) -> None: @@ -1776,7 +1775,9 @@ class MachineManager(QObject): @pyqtProperty(bool, notify = activeQualityGroupChanged) def hasNotSupportedQuality(self) -> bool: global_container_stack = self._application.getGlobalContainerStack() - return (not global_container_stack is None) and global_container_stack.quality == empty_quality_container and global_container_stack.qualityChanges == empty_quality_changes_container + return global_container_stack is not None\ + and global_container_stack.quality == empty_quality_container \ + and global_container_stack.qualityChanges == empty_quality_changes_container @pyqtProperty(bool, notify = activeQualityGroupChanged) def isActiveQualityCustom(self) -> bool: diff --git a/plugins/UFPWriter/UFPWriter.py b/plugins/UFPWriter/UFPWriter.py index d7671d02c8..f90ef823e7 100644 --- a/plugins/UFPWriter/UFPWriter.py +++ b/plugins/UFPWriter/UFPWriter.py @@ -1,6 +1,7 @@ # Copyright (c) 2022 Ultimaker B.V. # Cura is released under the terms of the LGPLv3 or higher. import json +from dataclasses import asdict from typing import cast, List, Dict from Charon.VirtualFile import VirtualFile # To open UFP files. @@ -225,8 +226,7 @@ class UFPWriter(MeshWriter): "changes": {}, "all_settings": {}, }, - "intent": machine_manager.activeIntentCategory, - "quality": machine_manager.activeQualityOrQualityChangesName, + "quality": asdict(machine_manager.activeQualityDisplayNameMap()), } global_stack = cast(GlobalStack, Application.getInstance().getGlobalContainerStack()) diff --git a/plugins/XmlMaterialProfile/XmlMaterialProfile.py b/plugins/XmlMaterialProfile/XmlMaterialProfile.py index 527fa4ec13..524b7f099c 100644 --- a/plugins/XmlMaterialProfile/XmlMaterialProfile.py +++ b/plugins/XmlMaterialProfile/XmlMaterialProfile.py @@ -1125,21 +1125,28 @@ class XmlMaterialProfile(InstanceContainer): id_list = list(id_list) return id_list + __product_to_id_map: Optional[Dict[str, List[str]]] = None + @classmethod def getProductIdMap(cls) -> Dict[str, List[str]]: """Gets a mapping from product names in the XML files to their definition IDs. This loads the mapping from a file. """ + if cls.__product_to_id_map is not None: + return cls.__product_to_id_map plugin_path = cast(str, PluginRegistry.getInstance().getPluginPath("XmlMaterialProfile")) product_to_id_file = os.path.join(plugin_path, "product_to_id.json") with open(product_to_id_file, encoding = "utf-8") as f: - product_to_id_map = json.load(f) - product_to_id_map = {key: [value] for key, value in product_to_id_map.items()} + contents = "" + for line in f: + contents += line if "#" not in line else "".join([line.replace("#", str(n)) for n in range(1, 12)]) + cls.__product_to_id_map = json.loads(contents) + cls.__product_to_id_map = {key: [value] for key, value in cls.__product_to_id_map.items()} #This also loads "Ultimaker S5" -> "ultimaker_s5" even though that is not strictly necessary with the default to change spaces into underscores. #However it is not always loaded with that default; this mapping is also used in serialize() without that default. - return product_to_id_map + return cls.__product_to_id_map @staticmethod def _parseCompatibleValue(value: str): diff --git a/plugins/XmlMaterialProfile/product_to_id.json b/plugins/XmlMaterialProfile/product_to_id.json index 053c8d13f5..07e14f1276 100644 --- a/plugins/XmlMaterialProfile/product_to_id.json +++ b/plugins/XmlMaterialProfile/product_to_id.json @@ -1,14 +1,11 @@ { - "Ultimaker 2": "ultimaker2", - "Ultimaker 2 Extended": "ultimaker2_extended", - "Ultimaker 2 Extended+": "ultimaker2_extended_plus", - "Ultimaker 2 Go": "ultimaker2_go", - "Ultimaker 2+": "ultimaker2_plus", - "Ultimaker 2+ Connect": "ultimaker2_plus_connect", - "Ultimaker 3": "ultimaker3", - "Ultimaker 3 Extended": "ultimaker3_extended", - "Ultimaker S3": "ultimaker_s3", - "Ultimaker S5": "ultimaker_s5", + "Ultimaker #": "ultimaker#", + "Ultimaker # Extended": "ultimaker#_extended", + "Ultimaker # Extended+": "ultimaker#_extended_plus", + "Ultimaker # Go": "ultimaker#_go", + "Ultimaker #+": "ultimaker#_plus", + "Ultimaker #+ Connect": "ultimaker#_plus_connect", + "Ultimaker S#": "ultimaker_s#", "Ultimaker Original": "ultimaker_original", "Ultimaker Original+": "ultimaker_original_plus", "Ultimaker Original Dual Extrusion": "ultimaker_original_dual", diff --git a/printer-linter/README.md b/printer-linter/README.md new file mode 100644 index 0000000000..fc6a9a8e29 --- /dev/null +++ b/printer-linter/README.md @@ -0,0 +1,33 @@ +# Printer Linter +Printer linter is a python package that does linting on Cura definitions files. +Running this on your definition files will get them ready for a pull request. + +## Running Locally +From the Cura root folder. + +```python3 printer-linter/src/terminal.py "flashforge_dreamer_nx.def.json" "flashforge_base.def.json" --fix --format``` + +## Developing +### Printer Linter Rules +Inside ```.printer-linter``` you can find a list of rules. These are seperated into roughly three categories. + +1. Checks + 1. These rules are about checking if a file meets some requirements that can't be fixed by replacing its content. + 2. An example of a check is ```diagnostic-mesh-file-extension``` this checks if a mesh file extension is acceptable. +2. Format + 1. These rules are purely about how a file is structured, not content. + 2. An example of a format rule is ```format-definition-bracket-newline``` This rule says that when assigning a dict value the bracket should go on a new line. +3. Fixes + 1. These are about the content of the file. + 2. An example of a fix is ```diagnostic-definition-redundant-override``` This removes settings that have already been defined by a parent definition + +### Linters +Linters find issues within a file. There are separate linters for each type of file. The linter that is used is decided by the create function in factory.py. All linters implement the abstract class Linter. + +A Linter class returns an iterator of Diagnostics, each diagnostic is an issue with the file. The diagnostics can also contain suggested fixes. + +### Formatters +Formatters load a file reformat it and write it to disk. There are separate formatters for each file type. All formatters implement the abstract class Formatter. + +Formatters should format based on the Format rules in .printer-linter + diff --git a/printer-linter/src/printerlinter/__init__.py b/printer-linter/src/printerlinter/__init__.py index 8023686891..3ec571c3c6 100644 --- a/printer-linter/src/printerlinter/__init__.py +++ b/printer-linter/src/printerlinter/__init__.py @@ -1,7 +1,4 @@ -from .defintion import Definition from .diagnostic import Diagnostic -from .factory import create -from .meshes import Meshes -from .profile import Profile +from .factory import getLinter -__all__ = ["Profile", "Definition", "Meshes", "Diagnostic", "create"] +__all__ = ["Diagnostic", "getLinter"] diff --git a/printer-linter/src/printerlinter/diagnostic.py b/printer-linter/src/printerlinter/diagnostic.py index 7941929c43..27f4fdd14a 100644 --- a/printer-linter/src/printerlinter/diagnostic.py +++ b/printer-linter/src/printerlinter/diagnostic.py @@ -1,5 +1,20 @@ +from pathlib import Path +from typing import Optional, List, Dict, Any + +from .replacement import Replacement + + class Diagnostic: - def __init__(self, file, diagnostic_name, message, level, offset, replacements=None): + def __init__(self, file: Path, diagnostic_name: str, message: str, level: str, offset: int, replacements: Optional[List[Replacement]] = None) -> None: + """ A diagnosis of an issue in "file" at "offset" in that file. May include suggested replacements. + + @param file: The path to the file this diagnostic is for. + @param diagnostic_name: The name of the diagnostic rule that spawned this result. A list can be found in .printer-linter. + @param message: A message explaining the issue with this file. + @param level: How important this diagnostic is, ranges from Warning -> Error. + @param offset: The offset in file where the issue is. + @param replacements: A list of Replacement that contain replacement text. + """ self.file = file self.diagnostic_name = diagnostic_name self.message = message @@ -7,14 +22,13 @@ class Diagnostic: self.level = level self.replacements = replacements - def toDict(self): - diagnostic_dict = {"DiagnosticName": self.diagnostic_name, - "DiagnosticMessage": { - "Message": self.message, - "FilePath": self.file.as_posix(), - "FileOffset": self.offset, - "Replacements": [] if self.replacements is None else [r.toDict() for r in self.replacements], - }, - "Level": self.level - } - return diagnostic_dict + def toDict(self) -> Dict[str, Any]: + return {"DiagnosticName": self.diagnostic_name, + "DiagnosticMessage": { + "Message": self.message, + "FilePath": self.file.as_posix(), + "FileOffset": self.offset, + "Replacements": [] if self.replacements is None else [r.toDict() for r in self.replacements], + }, + "Level": self.level + } diff --git a/printer-linter/src/printerlinter/factory.py b/printer-linter/src/printerlinter/factory.py index 12e2d36628..d27f82244b 100644 --- a/printer-linter/src/printerlinter/factory.py +++ b/printer-linter/src/printerlinter/factory.py @@ -1,17 +1,26 @@ -from .profile import Profile -from .defintion import Definition -from .meshes import Meshes +from pathlib import Path +from typing import Optional + +from .linters.profile import Profile +from .linters.defintion import Definition +from .linters.linter import Linter +from .linters.meshes import Meshes -def create(file, settings): +def getLinter(file: Path, settings: dict) -> Optional[Linter]: + """ Returns a Linter depending on the file format """ if not file.exists(): return None + if ".inst" in file.suffixes and ".cfg" in file.suffixes: return Profile(file, settings) + if ".def" in file.suffixes and ".json" in file.suffixes: if file.stem in ("fdmprinter.def", "fdmextruder.def"): return None return Definition(file, settings) + if file.parent.stem == "meshes": return Meshes(file, settings) - return None \ No newline at end of file + + return None diff --git a/printer-linter/src/printerlinter/formatters/__init__.py b/printer-linter/src/printerlinter/formatters/__init__.py new file mode 100644 index 0000000000..00d9c7eef3 --- /dev/null +++ b/printer-linter/src/printerlinter/formatters/__init__.py @@ -0,0 +1,4 @@ +from .def_json_formatter import DefJsonFormatter +from .inst_cfg_formatter import InstCfgFormatter + +__all__ = ["DefJsonFormatter", "InstCfgFormatter"] \ No newline at end of file diff --git a/printer-linter/src/printerlinter/formatters/def_json_formatter.py b/printer-linter/src/printerlinter/formatters/def_json_formatter.py new file mode 100644 index 0000000000..f839594ea5 --- /dev/null +++ b/printer-linter/src/printerlinter/formatters/def_json_formatter.py @@ -0,0 +1,84 @@ +import json +import re +from collections import OrderedDict +from pathlib import Path +from typing import Dict + +from .formatter import FileFormatter + + +# Dictionary items with matching keys will be sorted as if they were the value +# Example: "version" will be sorted as if it was "0" +TOP_LEVEL_SORT_PRIORITY = { + "version": "0", + "name": "1", + "inherits": "3", +} + +METADATA_SORT_PRIORITY = { + "visible": "0", + "author": "1", + "manufacturer": "2", + "file_formats": "3", + "platform": "4", +} + + +class DefJsonFormatter(FileFormatter): + def formatFile(self, file: Path): + """ Format .def.json files according to the rules in settings. + + You can assume that you will be running regex on standard formatted json files, because we load the json first and then + dump it to a string. This means you only have to write regex that works on the output of json.dump() + """ + + definition = json.loads(file.read_text(), object_pairs_hook=OrderedDict) + + if self._settings["format"].get("format-definition-sort-keys", True): + definition = self.order_keys(definition) + + content = json.dumps(definition, indent=self._settings["format"].get("format-definition-indent", 4)) + + if self._settings["format"].get("format-definition-bracket-newline", True): + newline = re.compile(r"(\B\s+)(\"[\w\"]+)(\:\s\{)") + content = newline.sub(r"\1\2:\1{", content) + + if self._settings["format"].get("format-definition-single-value-single-line", True): + single_value_dict = re.compile(r"(:)(\s*\n?.*\{\s+)(\".*)(\d*\s*\})(.*\n,?)") + content = single_value_dict.sub(r"\1 { \3 }\5", content) + + single_value_list = re.compile(r"(:)(\s*\n?.*\[\s+)(\".*)(\d*\s*\])(.*\n,?)") + content = single_value_list.sub(r"\1 [ \3 ]\5", content) + + if self._settings["format"].get("format-definition-paired-coordinate-array", True): + paired_coordinates = re.compile(r"(\[)\s+(-?\d*),\s*(-?\d*)\s*(\])") + content = paired_coordinates.sub(r"\1 \2, \3 \4", content) + + file.write_text(content) + + def order_keys(self, json_content: OrderedDict) -> OrderedDict: + """ Orders json keys lexicographically """ + # First order all keys (Recursive) lexicographically + json_content_text = json.dumps(json_content, sort_keys=True) + json_content = json.loads(json_content_text, object_pairs_hook=OrderedDict) + + # Do a custom ordered sort on the top level items in the json. This is so that keys like "version" appear at the top. + json_content = self.custom_sort_keys(json_content, TOP_LEVEL_SORT_PRIORITY) + + # Do a custom ordered sort on collections that are one level deep into the json + if "metadata" in json_content.keys(): + json_content["metadata"] = self.custom_sort_keys(json_content["metadata"], METADATA_SORT_PRIORITY) + + return json_content + + + def custom_sort_keys(self, ordered_dictionary: OrderedDict, sort_priority: Dict[str, str]) -> OrderedDict: + """ Orders keys in dictionary lexicographically, except for keys with matching strings in sort_priority. + + Keys in ordered_dictionary that match keys in sort_priority will sort based on the value in sort_priority. + + @param ordered_dictionary: A dictionary that will have it's top level keys sorted + @param sort_priority: A mapping from string keys to alternative strings to be used instead when sorting. + @return: A dictionary sorted by it's top level keys + """ + return OrderedDict(sorted(ordered_dictionary.items(), key=lambda x: sort_priority[x[0]] if str(x[0]) in sort_priority.keys() else str(x[0]))) diff --git a/printer-linter/src/printerlinter/formatters/formatter.py b/printer-linter/src/printerlinter/formatters/formatter.py new file mode 100644 index 0000000000..c668744f42 --- /dev/null +++ b/printer-linter/src/printerlinter/formatters/formatter.py @@ -0,0 +1,16 @@ +from abc import ABC, abstractmethod +from pathlib import Path + + +class FileFormatter(ABC): + def __init__(self, settings: dict) -> None: + """ Yields Diagnostics for file, these are issues with the file such as bad text format or too large file size. + + @param file: A file to generate diagnostics for + @param settings: A list of settings containing rules for creating diagnostics + """ + self._settings = settings + + @abstractmethod + def formatFile(self, file: Path) -> None: + pass \ No newline at end of file diff --git a/printer-linter/src/printerlinter/formatters/inst_cfg_formatter.py b/printer-linter/src/printerlinter/formatters/inst_cfg_formatter.py new file mode 100644 index 0000000000..c4113bcb48 --- /dev/null +++ b/printer-linter/src/printerlinter/formatters/inst_cfg_formatter.py @@ -0,0 +1,21 @@ +import configparser +import json +import re +from collections import OrderedDict +from pathlib import Path + +from .formatter import FileFormatter + +class InstCfgFormatter(FileFormatter): + def formatFile(self, file: Path): + """ Format .inst.cfg files according to the rules in settings """ + config = configparser.ConfigParser() + config.read(file) + + if self._settings["format"].get("format-profile-sort-keys", True): + for section in config._sections: + config._sections[section] = OrderedDict(sorted(config._sections[section].items(), key=lambda t: t[0])) + config._sections = OrderedDict(sorted(config._sections.items(), key=lambda t: t[0])) + + with open(file, "w") as f: + config.write(f, space_around_delimiters=self._settings["format"].get("format-profile-space-around-delimiters", True)) \ No newline at end of file diff --git a/printer-linter/src/printerlinter/linters/__init__.py b/printer-linter/src/printerlinter/linters/__init__.py new file mode 100644 index 0000000000..a4a48acb3d --- /dev/null +++ b/printer-linter/src/printerlinter/linters/__init__.py @@ -0,0 +1,6 @@ +from .profile import Profile +from .meshes import Meshes +from .linter import Linter +from .defintion import Definition + +__all__ = ["Profile", "Meshes", "Linter", "Definition"] \ No newline at end of file diff --git a/printer-linter/src/printerlinter/defintion.py b/printer-linter/src/printerlinter/linters/defintion.py similarity index 60% rename from printer-linter/src/printerlinter/defintion.py rename to printer-linter/src/printerlinter/linters/defintion.py index a92828f31b..909265e829 100644 --- a/printer-linter/src/printerlinter/defintion.py +++ b/printer-linter/src/printerlinter/linters/defintion.py @@ -1,26 +1,23 @@ import json import re from pathlib import Path +from typing import Iterator -from .diagnostic import Diagnostic -from .replacement import Replacement +from ..diagnostic import Diagnostic +from .linter import Linter +from ..replacement import Replacement -class Definition: - def __init__(self, file, settings): - self._settings = settings - self._file = file - self._defs = {} - self._getDefs(file) - +class Definition(Linter): + """ Finds issues in definition files, such as overriding default parameters """ + def __init__(self, file: Path, settings: dict) -> None: + super().__init__(file, settings) + self._definitions = {} + self._loadDefinitionFiles(file) self._content = self._file.read_text() + self._loadBasePrinterSettings() - settings = {} - for k, v in self._defs["fdmprinter"]["settings"].items(): - self._getSetting(k, v, settings) - self._defs["fdmprinter"] = {"overrides": settings} - - def check(self): + def check(self) -> Iterator[Diagnostic]: if self._settings["checks"].get("diagnostic-definition-redundant-override", False): for check in self.checkRedefineOverride(): yield check @@ -32,9 +29,10 @@ class Definition: yield - def checkRedefineOverride(self): - definition_name = list(self._defs.keys())[0] - definition = self._defs[definition_name] + def checkRedefineOverride(self) -> Iterator[Diagnostic]: + """ Checks if definition file overrides its parents settings with the same value. """ + definition_name = list(self._definitions.keys())[0] + definition = self._definitions[definition_name] if "overrides" in definition and definition_name != "fdmprinter": for key, value_dict in definition["overrides"].items(): is_redefined, value, parent = self._isDefinedInParent(key, value_dict, definition['inherits']) @@ -54,29 +52,27 @@ class Definition: replacement_text = "")] ) - def checkValueOutOfBounds(self): - pass + def _loadDefinitionFiles(self, definition_file) -> None: + """ Loads definition file contents into self._definitions. Also load parent definition if it exists. """ + definition_name = Path(definition_file.stem).stem - def _getSetting(self, name, setting, settings): - if "children" in setting: - for childname, child in setting["children"].items(): - self._getSetting(childname, child, settings) - settings |= {name: setting} - - def _getDefs(self, file): - if not file.exists(): + if not definition_file.exists() or definition_name in self._definitions: return - self._defs[Path(file.stem).stem] = json.loads(file.read_text()) - if "inherits" in self._defs[Path(file.stem).stem]: - parent_file = file.parent.joinpath(f"{self._defs[Path(file.stem).stem]['inherits']}.def.json") - self._getDefs(parent_file) + + # Load definition file into dictionary + self._definitions[definition_name] = json.loads(definition_file.read_text()) + + # Load parent definition if it exists + if "inherits" in self._definitions[definition_name]: + parent_file = definition_file.parent.joinpath(f"{self._definitions[definition_name]['inherits']}.def.json") + self._loadDefinitionFiles(parent_file) def _isDefinedInParent(self, key, value_dict, inherits_from): - if "overrides" not in self._defs[inherits_from]: - return self._isDefinedInParent(key, value_dict, self._defs[inherits_from]["inherits"]) + if "overrides" not in self._definitions[inherits_from]: + return self._isDefinedInParent(key, value_dict, self._definitions[inherits_from]["inherits"]) - parent = self._defs[inherits_from]["overrides"] - is_number = self._defs["fdmprinter"]["overrides"][key] in ("float", "int") + parent = self._definitions[inherits_from]["overrides"] + is_number = self._definitions["fdmprinter"]["overrides"][key] in ("float", "int") for value in value_dict.values(): if key in parent: check_values = [cv for cv in [parent[key].get("default_value", None), parent[key].get("value", None)] if cv is not None] @@ -99,3 +95,16 @@ class Definition: if "inherits" in parent: return self._isDefinedInParent(key, value_dict, parent["inherits"]) return False, None, None + + def _loadBasePrinterSettings(self): + """ TODO @Jelle please explain why this """ + settings = {} + for k, v in self._definitions["fdmprinter"]["settings"].items(): + self._getSetting(k, v, settings) + self._definitions["fdmprinter"] = {"overrides": settings} + + def _getSetting(self, name, setting, settings) -> None: + if "children" in setting: + for childname, child in setting["children"].items(): + self._getSetting(childname, child, settings) + settings |= {name: setting} diff --git a/printer-linter/src/printerlinter/linters/linter.py b/printer-linter/src/printerlinter/linters/linter.py new file mode 100644 index 0000000000..fbcd91196d --- /dev/null +++ b/printer-linter/src/printerlinter/linters/linter.py @@ -0,0 +1,20 @@ +from abc import ABC, abstractmethod +from pathlib import Path +from typing import Iterator + +from ..diagnostic import Diagnostic + + +class Linter(ABC): + def __init__(self, file: Path, settings: dict) -> None: + """ Yields Diagnostics for file, these are issues with the file such as bad text format or too large file size. + + @param file: A file to generate diagnostics for + @param settings: A list of settings containing rules for creating diagnostics + """ + self._settings = settings + self._file = file + + @abstractmethod + def check(self) -> Iterator[Diagnostic]: + pass \ No newline at end of file diff --git a/printer-linter/src/printerlinter/meshes.py b/printer-linter/src/printerlinter/linters/meshes.py similarity index 66% rename from printer-linter/src/printerlinter/meshes.py rename to printer-linter/src/printerlinter/linters/meshes.py index 404f194100..d49caf7dc9 100644 --- a/printer-linter/src/printerlinter/meshes.py +++ b/printer-linter/src/printerlinter/linters/meshes.py @@ -1,13 +1,17 @@ -from .diagnostic import Diagnostic +from pathlib import Path +from typing import Iterator + +from ..diagnostic import Diagnostic +from .linter import Linter -class Meshes: - def __init__(self, file, settings): - self._settings = settings - self._file = file +class Meshes(Linter): + def __init__(self, file: Path, settings: dict) -> None: + """ Finds issues in model files, such as incorrect file format or too large size """ + super().__init__(file, settings) self._max_file_size = self._settings.get("diagnostic-mesh-file-size", 1e6) - def check(self): + def check(self) -> Iterator[Diagnostic]: if self._settings["checks"].get("diagnostic-mesh-file-extension", False): for check in self.checkFileFormat(): yield check @@ -18,7 +22,8 @@ class Meshes: yield - def checkFileFormat(self): + def checkFileFormat(self) -> Iterator[Diagnostic]: + """ Check if mesh is in supported format """ if self._file.suffix.lower() not in (".3mf", ".obj", ".stl"): yield Diagnostic( file = self._file, @@ -29,7 +34,8 @@ class Meshes: ) yield - def checkFileSize(self): + def checkFileSize(self) -> Iterator[Diagnostic]: + """ Check if file is within size limits for Cura """ if self._file.stat().st_size > self._max_file_size: yield Diagnostic( file = self._file, diff --git a/printer-linter/src/printerlinter/linters/profile.py b/printer-linter/src/printerlinter/linters/profile.py new file mode 100644 index 0000000000..85cc2d9f0b --- /dev/null +++ b/printer-linter/src/printerlinter/linters/profile.py @@ -0,0 +1,9 @@ +from typing import Iterator + +from ..diagnostic import Diagnostic +from .linter import Linter + + +class Profile(Linter): + def check(self) -> Iterator[Diagnostic]: + yield diff --git a/printer-linter/src/printerlinter/profile.py b/printer-linter/src/printerlinter/profile.py deleted file mode 100644 index 137344fe71..0000000000 --- a/printer-linter/src/printerlinter/profile.py +++ /dev/null @@ -1,7 +0,0 @@ -class Profile: - def __init__(self, file, settings): - self._settings = settings - self._file = file - - def check(self): - yield diff --git a/printer-linter/src/printerlinter/replacement.py b/printer-linter/src/printerlinter/replacement.py index d609071875..b9f390107d 100644 --- a/printer-linter/src/printerlinter/replacement.py +++ b/printer-linter/src/printerlinter/replacement.py @@ -1,11 +1,20 @@ +from pathlib import Path + class Replacement: - def __init__(self, file, offset, length, replacement_text): + def __init__(self, file: Path, offset: int, length: int, replacement_text: str): + """ Replacement text for file between offset and offset+length. + + @param file: File to replace text in + @param offset: Offset in file to start text replace + @param length: Length of text that will be replaced. offset -> offset+length is the section of text to replace. + @param replacement_text: Text to insert of offset in file. + """ self.file = file self.offset = offset self.length = length self.replacement_text = replacement_text - def toDict(self): + def toDict(self) -> dict: return {"FilePath": self.file.as_posix(), "Offset": self.offset, "Length": self.length, diff --git a/printer-linter/src/terminal.py b/printer-linter/src/terminal.py index 55af41281f..6e6d1af4e5 100644 --- a/printer-linter/src/terminal.py +++ b/printer-linter/src/terminal.py @@ -1,73 +1,17 @@ -import configparser -import json -import re from argparse import ArgumentParser -from collections import OrderedDict from os import getcwd from pathlib import Path +from typing import List import yaml from printerlinter import factory +from printerlinter.diagnostic import Diagnostic +from printerlinter.formatters.def_json_formatter import DefJsonFormatter +from printerlinter.formatters.inst_cfg_formatter import InstCfgFormatter -def examineFile(file, settings, full_body_check): - patient = factory.create(file, settings) - if patient is None: - return - - for diagnostic in patient.check(): - if diagnostic: - full_body_check["Diagnostics"].append(diagnostic.toDict()) - - -def fixFile(file, settings, full_body_check): - if not file.exists(): - return - ext = ".".join(file.name.split(".")[-2:]) - - if ext == "def.json": - issues = full_body_check[f"{file.as_posix()}"] - for issue in issues: - if issue["diagnostic"] == "diagnostic-definition-redundant-override" and settings["fixes"].get( - "diagnostic-definition-redundant-override", True): - pass - - -def formatFile(file: Path, settings): - if not file.exists(): - return - ext = ".".join(file.name.split(".")[-2:]) - - if ext == "def.json": - definition = json.loads(file.read_text()) - content = json.dumps(definition, indent=settings["format"].get("format-definition-indent", 4), - sort_keys=settings["format"].get("format-definition-sort-keys", True)) - - if settings["format"].get("format-definition-bracket-newline", True): - newline = re.compile(r"(\B\s+)(\"[\w\"]+)(\:\s\{)") - content = newline.sub(r"\1\2:\1{", content) - - if settings["format"].get("format-definition-paired-coordinate-array", True): - paired_coordinates = re.compile(r"(\[)\s+(-?\d*),\s*(-?\d*)\s*(\])") - content = paired_coordinates.sub(r"\1 \2, \3 \4", content) - - file.write_text(content) - - if ext == "inst.cfg": - config = configparser.ConfigParser() - config.read(file) - - if settings["format"].get("format-profile-sort-keys", True): - for section in config._sections: - config._sections[section] = OrderedDict(sorted(config._sections[section].items(), key=lambda t: t[0])) - config._sections = OrderedDict(sorted(config._sections.items(), key=lambda t: t[0])) - - with open(file, "w") as f: - config.write(f, space_around_delimiters=settings["format"].get("format-profile-space-around-delimiters", True)) - - -def main(): +def main() -> None: parser = ArgumentParser( description="UltiMaker Cura printer linting, static analysis and formatting of Cura printer definitions and other resources") parser.add_argument("--setting", required=False, type=Path, help="Path to the `.printer-linter` setting file") @@ -78,7 +22,7 @@ def main(): parser.add_argument("Files", metavar="F", type=Path, nargs="+", help="Files or directories to format") args = parser.parse_args() - files = args.Files + files = extractFilePaths(args.Files) setting_path = args.setting to_format = args.format to_fix = args.fix @@ -95,38 +39,78 @@ def main(): with open(setting_path, "r") as f: settings = yaml.load(f, yaml.FullLoader) + full_body_check = {"Diagnostics": []} + if to_fix or to_diagnose: - full_body_check = {"Diagnostics": []} for file in files: - if file.is_dir(): - for fp in file.rglob("**/*"): - examineFile(fp, settings, full_body_check) - else: - examineFile(file, settings, full_body_check) + diagnostics = diagnoseIssuesWithFile(file, settings) + full_body_check["Diagnostics"].extend([d.toDict() for d in diagnostics]) results = yaml.dump(full_body_check, default_flow_style=False, indent=4, width=240) + if report: report.write_text(results) else: print(results) - if to_fix: - for file in files: - if file.is_dir(): - for fp in file.rglob("**/*"): - if f"{file.as_posix()}" in full_body_check: - fixFile(fp, settings, full_body_check) - else: - if f"{file.as_posix()}" in full_body_check: - fixFile(file, settings, full_body_check) + if to_fix: + for file in files: + if f"{file.as_posix()}" in full_body_check: + applyFixesToFile(file, settings, full_body_check) if to_format: for file in files: - if file.is_dir(): - for fp in file.rglob("**/*"): - formatFile(fp, settings) - else: - formatFile(file, settings) + applyFormattingToFile(file, settings) + + +def diagnoseIssuesWithFile(file: Path, settings: dict) -> List[Diagnostic]: + """ For file, runs all diagnostic checks in settings and returns a list of diagnostics """ + linter = factory.getLinter(file, settings) + + if not linter: + return [] + + return list(filter(lambda d: d is not None, linter.check())) + + +def applyFixesToFile(file, settings, full_body_check) -> None: + if not file.exists(): + return + ext = ".".join(file.name.split(".")[-2:]) + + if ext == "def.json": + issues = full_body_check[f"{file.as_posix()}"] + for issue in issues: + if issue["diagnostic"] == "diagnostic-definition-redundant-override" and settings["fixes"].get( + "diagnostic-definition-redundant-override", True): + pass + + +def applyFormattingToFile(file: Path, settings) -> None: + if not file.exists(): + return + + ext = ".".join(file.name.split(".")[-2:]) + + if ext == "def.json": + formatter = DefJsonFormatter(settings) + formatter.formatFile(file) + + if ext == "inst.cfg": + formatter = InstCfgFormatter(settings) + formatter.formatFile(file) + + +def extractFilePaths(paths: List[Path]) -> List[Path]: + """ Takes list of files and directories, returns the files as well as all files within directories as a List """ + file_paths = [] + for path in paths: + if path.is_dir(): + file_paths.extend(path.rglob("**/*")) + else: + file_paths.append(path) + + return file_paths if __name__ == "__main__": diff --git a/resources/definitions/anycubic_i3_mega_s.def.json b/resources/definitions/anycubic_i3_mega_s.def.json index 54fa459946..21919af4e1 100644 --- a/resources/definitions/anycubic_i3_mega_s.def.json +++ b/resources/definitions/anycubic_i3_mega_s.def.json @@ -29,7 +29,7 @@ "machine_center_is_zero": { "default_value": false }, "gantry_height": { "value": "0" }, "machine_gcode_flavor": { "default_value": "RepRap (Marlin/Sprinter)" }, - "machine_start_gcode": { "default_value": ";Profil Homepage: https://github.com/NilsRo/Cura_Anycubic_MegaS_Profile\n\n;Slicer Information - (Support for OctoPrint Slicer Estimator)\n;Slicer info:material_guid;{material_guid}\n;Slicer info:material_id;{material_id}\n;Slicer info:material_brand;{material_brand}\n;Slicer info:material_name;{material_name}\n;Slicer info:filament_cost;{filament_cost}\n;Slicer info:material_bed_temperature;{material_bed_temperature}\n;Slicer info:material_bed_temperature_layer_0;{material_bed_temperature_layer_0}\n;Slicer info:material_print_temperature;{material_print_temperature}\n;Slicer info:material_print_temperature_layer_0;{material_print_temperature_layer_0}\n;Slicer info:material_flow;{material_flow}\n;Slicer info:layer_height;{layer_height}\n;Slicer info:machine_nozzle_size;{machine_nozzle_size}\n;Slicer info:wall_thickness;{wall_thickness}\n;Slicer info:speed_print;{speed_print}\n;Slicer info:speed_topbottom;{speed_topbottom}\n;Slicer info:travel_speed;{travel_speed}\n;Slicer info:support;{support}\n;Slicer info:retraction_speed;{retraction_speed}\n;Slicer info:retraction_amount;{retraction_amount}\n;Slicer info:layer_height;{layer_height}\n;Slicer info:infill_pattern;{infill_pattern}\n;Slicer info:infill_sparse_density;{infill_sparse_density}\n;Slicer info:cool_fan_enabled;{cool_fan_enabled}\n;Slicer info:cool_fan_speed;{cool_fan_speed}\n;Slicer info:sliced_at;{day} {date} {time}\nG21 ; metric values \nG90 ; absolute positioning \nM82 ; set extruder to absolute mode \nM107 ; start with the fan off \nM140 S{material_bed_temperature_layer_0} ; Start heating the bed \nG4 S60 ; wait 1 minute \nM104 S{material_print_temperature_layer_0} ; start heating the hot end \nM190 S{material_bed_temperature_layer_0} ; wait for bed \nM109 S{material_print_temperature_layer_0} ; wait for hotend \nM300 S1000 P500 ; BEEP heating done \nG28 X0 Y10 Z0 ; move X/Y to min endstops \nM420 S1 ; Enable leveling \nM420 Z2.0 ; Set leveling fading height to 2 mm \nG0 Z0.15 ; lift nozzle a bit \nG92 E0 ; zero the extruded length \nG1 X50 E20 F500 ; Extrude 20mm of filament in a 5cm line. \nG92 E0 ; zero the extruded length again \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" }, + "machine_start_gcode": { "default_value": ";Profil Homepage: https://github.com/NilsRo/Cura_Anycubic_MegaS_Profile\n\n;Slicer Information - (Support for OctoPrint Slicer Estimator)\n;Slicer info:material_guid;{material_guid}\n;Slicer info:material_id;{material_id}\n;Slicer info:material_brand;{material_brand}\n;Slicer info:material_name;{material_name}\n;Slicer info:filament_cost;{filament_cost}\n;Slicer info:material_bed_temperature;{material_bed_temperature}\n;Slicer info:material_bed_temperature_layer_0;{material_bed_temperature_layer_0}\n;Slicer info:material_print_temperature;{material_print_temperature}\n;Slicer info:material_print_temperature_layer_0;{material_print_temperature_layer_0}\n;Slicer info:material_flow;{material_flow}\n;Slicer info:layer_height;{layer_height}\n;Slicer info:machine_nozzle_size;{machine_nozzle_size}\n;Slicer info:wall_thickness;{wall_thickness}\n;Slicer info:speed_print;{speed_print}\n;Slicer info:speed_topbottom;{speed_topbottom}\n;Slicer info:travel_speed;{travel_speed}\n;Slicer info:support;{support}\n;Slicer info:retraction_speed;{retraction_speed}\n;Slicer info:retraction_amount;{retraction_amount}\n;Slicer info:layer_height;{layer_height}\n;Slicer info:infill_pattern;{infill_pattern}\n;Slicer info:infill_sparse_density;{infill_sparse_density}\n;Slicer info:cool_fan_enabled;{cool_fan_enabled}\n;Slicer info:cool_fan_speed;{cool_fan_speed}\n;Slicer info:sliced_at;{day} {date} {time}\nG21 ; metric values \nG90 ; absolute positioning \nM82 ; set extruder to absolute mode \nM900 K0 ; disable lin. adv. if not set in GCODE\nM107 ; start with the fan off \nM140 S{material_bed_temperature_layer_0} ; Start heating the bed \nG4 S60 ; wait 1 minute \nM104 S{material_print_temperature_layer_0} ; start heating the hot end \nM190 S{material_bed_temperature_layer_0} ; wait for bed \nM109 S{material_print_temperature_layer_0} ; wait for hotend \nM300 S1000 P500 ; BEEP heating done \nG28 X0 Y10 Z0 ; move X/Y to min endstops \nM420 S1 ; Enable leveling \nM420 Z2.0 ; Set leveling fading height to 2 mm \nG0 Z0.15 ; lift nozzle a bit \nG92 E0 ; zero the extruded length \nG1 X50 E20 F500 ; Extrude 20mm of filament in a 5cm line. \nG92 E0 ; zero the extruded length again \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" }, "machine_end_gcode": { "default_value": "M104 S0 ; Extruder off \nM140 S0 ; Heatbed off \nM107 ; Fan off \nG91 ; relative positioning \nG1 E-5 F300 ; retract a little \nG1 Z+10 E-5 ; X-20 Y-20 F{travel_xy_speed} ; lift print head \nG28 X0 Y0 ; homing \nG1 Y180 F2000 ; reset feedrate \nM84 ; disable stepper motors \nG90 ; absolute positioning \nM300 S440 P200 ; Make Print Completed Tones \nM300 S660 P250 ; beep \nM300 S880 P300 ; beep" }, "machine_max_acceleration_x": { "value": 3000 }, diff --git a/resources/definitions/ultimaker.def.json b/resources/definitions/ultimaker.def.json index 9a41c1ac6b..e7660f7c85 100644 --- a/resources/definitions/ultimaker.def.json +++ b/resources/definitions/ultimaker.def.json @@ -86,6 +86,7 @@ "enabled": false }, "retraction_combing": { "value": "'no_outer_surfaces'" }, + "retraction_combing_max_distance": { "value": 15 }, "retraction_count_max": { "value": 25 }, "retraction_extrusion_window": { "value": 1 }, "roofing_layer_count": { "value": "1" }, diff --git a/resources/i18n/fr_FR/cura.po b/resources/i18n/fr_FR/cura.po index ef78e258a2..d2b48930c9 100644 --- a/resources/i18n/fr_FR/cura.po +++ b/resources/i18n/fr_FR/cura.po @@ -150,13 +150,13 @@ msgctxt "@label Don't translate the XML tag !" msgid "" "The file {0} already exists. Are you sure you want to " "overwrite it?" -msgstr "Le fichier {0} existe déjà. Êtes-vous sûr de vouloir le remplacer ?" +msgstr "Le fichier {0} existe déjà. Êtes-vous sûr de vouloir le remplacer?" #: /Users/c.lamboo/ultimaker/Cura/cura/Settings/ContainerManager.py:459 #: /Users/c.lamboo/ultimaker/Cura/cura/Settings/ContainerManager.py:462 msgctxt "@info:status" msgid "Invalid file URL:" -msgstr "URL de fichier invalide :" +msgstr "URL de fichier invalide:" #: /Users/c.lamboo/ultimaker/Cura/cura/Settings/cura_empty_instance_containers.py:36 msgctxt "@info:not supported profile" @@ -166,7 +166,7 @@ msgstr "Non pris en charge" #: /Users/c.lamboo/ultimaker/Cura/cura/Settings/cura_empty_instance_containers.py:55 msgctxt "@info:No intent profile selected" msgid "Default" -msgstr "Default" +msgstr "Défaut" #: /Users/c.lamboo/ultimaker/Cura/cura/Settings/MachineManager.py:745 #: /Users/c.lamboo/ultimaker/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:219 @@ -178,7 +178,7 @@ msgstr "Buse" msgctxt "@info:message Followed by a list of settings." msgid "" "Settings have been changed to match the current availability of extruders:" -msgstr "Les paramètres ont été modifiés pour correspondre aux extrudeuses actuellement disponibles :" +msgstr "Les paramètres ont été modifiés pour correspondre aux extrudeuses actuellement disponibles:" #: /Users/c.lamboo/ultimaker/Cura/cura/Settings/MachineManager.py:890 msgctxt "@info:title" @@ -212,7 +212,7 @@ msgctxt "@info:status Don't translate the XML tag !" msgid "" "Failed to export profile to {0}: Writer plugin reported " "failure." -msgstr "Échec de l'exportation du profil vers {0} : le plug-in du générateur a rapporté une erreur." +msgstr "Échec de l'exportation du profil vers {0}: le plugin du générateur a rapporté une erreur." #: /Users/c.lamboo/ultimaker/Cura/cura/Settings/CuraContainerRegistry.py:171 #, python-brace-format @@ -229,7 +229,7 @@ msgstr "L'exportation a réussi" #, python-brace-format msgctxt "@info:status Don't translate the XML tags !" msgid "Failed to import profile from {0}: {1}" -msgstr "Impossible d'importer le profil depuis {0} : {1}" +msgstr "Impossible d'importer le profil depuis {0}: {1}" #: /Users/c.lamboo/ultimaker/Cura/cura/Settings/CuraContainerRegistry.py:209 #, python-brace-format @@ -248,7 +248,7 @@ msgstr "Aucun profil personnalisé à importer dans le fichier {0}!" msgid "Failed to import profile from {0}:" -msgstr "Échec de l'importation du profil depuis le fichier {0} :" +msgstr "Échec de l'importation du profil depuis le fichier {0}:" #: /Users/c.lamboo/ultimaker/Cura/cura/Settings/CuraContainerRegistry.py:252 #: /Users/c.lamboo/ultimaker/Cura/cura/Settings/CuraContainerRegistry.py:262 @@ -309,7 +309,7 @@ msgctxt "@info:status" msgid "" "Quality type '{0}' is not compatible with the current active machine " "definition '{1}'." -msgstr "Le type de qualité « {0} » n'est pas compatible avec la définition actuelle de la machine active « {1} »." +msgstr "Le type de qualité '{0}' n'est pas compatible avec la définition actuelle de la machine active '{1}'." #: /Users/c.lamboo/ultimaker/Cura/cura/Settings/CuraContainerRegistry.py:488 #, python-brace-format @@ -318,8 +318,9 @@ msgid "" "Warning: The profile is not visible because its quality type '{0}' is not " "available for the current configuration. Switch to a material/nozzle " "combination that can use this quality type." -msgstr "Avertissement : le profil n'est pas visible car son type de qualité « {0} » n'est pas disponible pour la configuration actuelle. Passez à une combinaison" -" matériau/buse qui peut utiliser ce type de qualité." +msgstr "" +"Avertissement: le profil n'est pas visible car son type de qualité '{0}' n'est pas disponible pour la configuration actuelle. Passez à une combinaison " +"matériau/buse qui peut utiliser ce type de qualité." #: /Users/c.lamboo/ultimaker/Cura/cura/MultiplyObjectsJob.py:30 msgctxt "@info:status" @@ -477,7 +478,7 @@ msgstr "Pas écrasé" #: /Users/c.lamboo/ultimaker/Cura/cura/Machines/Models/IntentSelectionModel.py:61 msgctxt "@label" msgid "Default" -msgstr "Default" +msgstr "Défaut" #: /Users/c.lamboo/ultimaker/Cura/cura/Machines/Models/IntentTranslations.py:14 #: /Users/c.lamboo/ultimaker/Cura/cura/Machines/Models/IntentCategoryModel.py:45 @@ -580,7 +581,7 @@ msgstr "Imprimantes préréglées" #, python-brace-format msgctxt "@label {0} is the name of a printer that's about to be deleted." msgid "Are you sure you wish to remove {0}? This cannot be undone!" -msgstr "Voulez-vous vraiment supprimer l'objet {0} ? Cette action est irréversible !" +msgstr "Voulez-vous vraiment supprimer l'objet {0}? Cette action est irréversible!" #: /Users/c.lamboo/ultimaker/Cura/cura/Machines/Models/MaterialManagementModel.py:232 msgctxt "@label" @@ -688,7 +689,7 @@ msgstr "Volume d'impression" #: /Users/c.lamboo/ultimaker/Cura/cura/Backups/Backup.py:115 msgctxt "@info:backup_failed" msgid "Could not create archive from user data directory: {}" -msgstr "Impossible de créer une archive à partir du répertoire de données de l'utilisateur : {}" +msgstr "Impossible de créer une archive à partir du répertoire de données de l'utilisateur: {}" #: /Users/c.lamboo/ultimaker/Cura/cura/Backups/Backup.py:122 #: /Users/c.lamboo/ultimaker/Cura/cura/Backups/Backup.py:159 @@ -711,7 +712,7 @@ msgstr "A essayé de restaurer une sauvegarde Cura supérieure à la version act #: /Users/c.lamboo/ultimaker/Cura/cura/Backups/Backup.py:158 msgctxt "@info:backup_failed" msgid "The following error occurred while trying to restore a Cura backup:" -msgstr "L'erreur suivante s'est produite lors de la restauration d'une sauvegarde Cura :" +msgstr "L'erreur suivante s'est produite lors de la restauration d'une sauvegarde Cura:" #: /Users/c.lamboo/ultimaker/Cura/cura/CrashHandler.py:107 msgctxt "@title:window" @@ -820,25 +821,25 @@ msgstr "OpenGL" #: /Users/c.lamboo/ultimaker/Cura/cura/CrashHandler.py:264 msgctxt "@label" msgid "Not yet initialized" -msgstr "Non ancora inizializzato" +msgstr "Pas encore initialisé" #: /Users/c.lamboo/ultimaker/Cura/cura/CrashHandler.py:267 #, python-brace-format msgctxt "@label OpenGL version" msgid "
  • OpenGL Version: {version}
  • " -msgstr "
  • Version OpenGL : {version}
  • " +msgstr "
  • Version OpenGL: {version}
  • " #: /Users/c.lamboo/ultimaker/Cura/cura/CrashHandler.py:268 #, python-brace-format msgctxt "@label OpenGL vendor" msgid "
  • OpenGL Vendor: {vendor}
  • " -msgstr "
  • Revendeur OpenGL : {vendor}
  • " +msgstr "
  • Revendeur OpenGL: {vendor}
  • " #: /Users/c.lamboo/ultimaker/Cura/cura/CrashHandler.py:269 #, python-brace-format msgctxt "@label OpenGL renderer" msgid "
  • OpenGL Renderer: {renderer}
  • " -msgstr "
  • Moteur de rendu OpenGL : {renderer}
  • " +msgstr "
  • Moteur de rendu OpenGL: {renderer}
  • " #: /Users/c.lamboo/ultimaker/Cura/cura/CrashHandler.py:304 msgctxt "@title:groupbox" @@ -915,7 +916,7 @@ msgstr "Modifier le G-Code" #: /Users/c.lamboo/ultimaker/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:66 msgctxt "@info:status" msgid "There are no file formats available to write with!" -msgstr "Aucun format de fichier n'est disponible pour écriture !" +msgstr "Aucun format de fichier n'est disponible pour écriture!" #: /Users/c.lamboo/ultimaker/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadQueueFullMessage.py:16 msgctxt "@info:status" @@ -961,7 +962,7 @@ msgstr[1] "... et {0} autres" #: /Users/c.lamboo/ultimaker/Cura/plugins/UM3NetworkPrinting/src/Messages/NewPrinterDetectedMessage.py:57 msgctxt "info:status" msgid "Printers added from Digital Factory:" -msgstr "Imprimantes ajoutées à partir de Digital Factory :" +msgstr "Imprimantes ajoutées à partir de Digital Factory:" #: /Users/c.lamboo/ultimaker/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadBlockedMessage.py:15 msgctxt "@info:status" @@ -986,7 +987,7 @@ msgstr "Votre imprimante {printer_name} pourrait être connectée via le #: /Users/c.lamboo/ultimaker/Cura/plugins/UM3NetworkPrinting/src/Messages/CloudFlowMessage.py:26 msgctxt "@info:title" msgid "Are you ready for cloud printing?" -msgstr "Êtes-vous prêt pour l'impression dans le cloud ?" +msgstr "Êtes-vous prêt pour l'impression dans le cloud?" #: /Users/c.lamboo/ultimaker/Cura/plugins/UM3NetworkPrinting/src/Messages/CloudFlowMessage.py:30 msgctxt "@action" @@ -1060,8 +1061,8 @@ msgstr "Configurer le groupe" msgctxt "info:status" msgid "This printer is not linked to the Digital Factory:" msgid_plural "These printers are not linked to the Digital Factory:" -msgstr[0] "Cette imprimante n'est pas associée à Digital Factory :" -msgstr[1] "Ces imprimantes ne sont pas associées à Digital Factory :" +msgstr[0] "Cette imprimante n'est pas associée à Digital Factory:" +msgstr[1] "Ces imprimantes ne sont pas associées à Digital Factory:" #: /Users/c.lamboo/ultimaker/Cura/plugins/UM3NetworkPrinting/src/Messages/RemovedPrintersMessage.py:22 #: /Users/c.lamboo/ultimaker/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDeviceManager.py:422 @@ -1178,12 +1179,12 @@ msgstr "Pour supprimer {printer_name} définitivement, visitez le site {digital_ #, python-brace-format msgctxt "@message {printer_name} is replaced with the name of the printer" msgid "Are you sure you want to remove {printer_name} temporarily?" -msgstr "Voulez-vous vraiment supprimer {printer_name} temporairement ?" +msgstr "Voulez-vous vraiment supprimer {printer_name} temporairement?" #: /Users/c.lamboo/ultimaker/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDeviceManager.py:474 msgctxt "@title:window" msgid "Remove printers?" -msgstr "Supprimer des imprimantes ?" +msgstr "Supprimer des imprimantes?" #: /Users/c.lamboo/ultimaker/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDeviceManager.py:477 #, python-brace-format @@ -1196,8 +1197,8 @@ msgid_plural "" "You are about to remove {0} printers from Cura. This action cannot be " "undone.\n" "Are you sure you want to continue?" -msgstr[0] "Vous êtes sur le point de supprimer {0} imprimante de Cura. Cette action est irréversible.\nVoulez-vous vraiment continuer ?" -msgstr[1] "Vous êtes sur le point de supprimer {0} imprimantes de Cura. Cette action est irréversible.\nVoulez-vous vraiment continuer ?" +msgstr[0] "Vous êtes sur le point de supprimer {0} imprimante de Cura. Cette action est irréversible.\nVoulez-vous vraiment continuer?" +msgstr[1] "Vous êtes sur le point de supprimer {0} imprimantes de Cura. Cette action est irréversible.\nVoulez-vous vraiment continuer?" #: /Users/c.lamboo/ultimaker/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDeviceManager.py:484 msgctxt "@label" @@ -1205,7 +1206,7 @@ msgid "" "You are about to remove all printers from Cura. This action cannot be " "undone.\n" "Are you sure you want to continue?" -msgstr "Vous êtes sur le point de supprimer toutes les imprimantes de Cura. Cette action est irréversible.\nVoulez-vous vraiment continuer ?" +msgstr "Vous êtes sur le point de supprimer toutes les imprimantes de Cura. Cette action est irréversible.\nVoulez-vous vraiment continuer?" #: /Users/c.lamboo/ultimaker/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:276 msgctxt "@action:button" @@ -1221,7 +1222,7 @@ msgstr "Suivre l'impression dans Ultimaker Digital Factory" #, python-brace-format msgctxt "@error:send" msgid "Unknown error code when uploading print job: {0}" -msgstr "Code d'erreur inconnu lors du téléchargement d'une tâche d'impression : {0}" +msgstr "Code d'erreur inconnu lors du téléchargement d'une tâche d'impression: {0}" #: /Users/c.lamboo/ultimaker/Cura/plugins/3MFWriter/__init__.py:28 msgctxt "@item:inlistbox" @@ -1241,7 +1242,7 @@ msgstr "Erreur d'écriture du fichier 3MF." #: /Users/c.lamboo/ultimaker/Cura/plugins/3MFWriter/ThreeMFWorkspaceWriter.py:31 msgctxt "@error:zip" msgid "3MF Writer plug-in is corrupt." -msgstr "Le plug-in 3MF Writer est corrompu." +msgstr "Le plugin 3MF Writer est corrompu." #: /Users/c.lamboo/ultimaker/Cura/plugins/3MFWriter/ThreeMFWorkspaceWriter.py:37 msgctxt "@error" @@ -1320,7 +1321,7 @@ msgstr "Impossible de lire le fichier de données d'exemple." #: /Users/c.lamboo/ultimaker/Cura/plugins/UFPWriter/UFPWriter.py:178 msgctxt "@info:error" msgid "Can't write to UFP file:" -msgstr "Impossible d'écrire dans le fichier UFP :" +msgstr "Impossible d'écrire dans le fichier UFP:" #: /Users/c.lamboo/ultimaker/Cura/plugins/UFPWriter/__init__.py:28 #: /Users/c.lamboo/ultimaker/Cura/plugins/UFPReader/__init__.py:22 @@ -1440,12 +1441,12 @@ msgstr "Accepter" #: /Users/c.lamboo/ultimaker/Cura/plugins/Marketplace/CloudSync/LicenseModel.py:77 msgctxt "@title:window" msgid "Plugin License Agreement" -msgstr "Plug-in d'accord de licence" +msgstr "Plugin d'accord de licence" #: /Users/c.lamboo/ultimaker/Cura/plugins/Marketplace/CloudSync/CloudPackageChecker.py:144 msgctxt "@info:generic" msgid "Do you want to sync material and software packages with your account?" -msgstr "Vous souhaitez synchroniser du matériel et des logiciels avec votre compte ?" +msgstr "Vous souhaitez synchroniser du matériel et des logiciels avec votre compte?" #: /Users/c.lamboo/ultimaker/Cura/plugins/Marketplace/CloudSync/CloudPackageChecker.py:145 #: /Users/c.lamboo/ultimaker/Cura/plugins/Marketplace/CloudSync/DownloadPresenter.py:95 @@ -1476,7 +1477,7 @@ msgstr "Échec de téléchargement des plugins {}" #: /Users/c.lamboo/ultimaker/Cura/plugins/Marketplace/LocalPackageList.py:28 msgctxt "@label" msgid "Installed Plugins" -msgstr "Plug-ins installés" +msgstr "Plugins installés" #: /Users/c.lamboo/ultimaker/Cura/plugins/Marketplace/LocalPackageList.py:29 msgctxt "@label" @@ -1486,7 +1487,7 @@ msgstr "Matériaux installés" #: /Users/c.lamboo/ultimaker/Cura/plugins/Marketplace/LocalPackageList.py:33 msgctxt "@label" msgid "Bundled Plugins" -msgstr "Plug-ins groupés" +msgstr "Plugins groupés" #: /Users/c.lamboo/ultimaker/Cura/plugins/Marketplace/LocalPackageList.py:34 msgctxt "@label" @@ -1639,7 +1640,7 @@ msgctxt "@info:status" msgid "" "Unable to slice with the current settings. The following settings have " "errors: {0}" -msgstr "Impossible de couper avec les paramètres actuels. Les paramètres suivants contiennent des erreurs : {0}" +msgstr "Impossible de couper avec les paramètres actuels. Les paramètres suivants contiennent des erreurs: {0}" #: /Users/c.lamboo/ultimaker/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:461 #, python-brace-format @@ -1647,7 +1648,7 @@ msgctxt "@info:status" msgid "" "Unable to slice due to some per-model settings. The following settings have " "errors on one or more models: {error_labels}" -msgstr "Impossible de couper en raison de certains paramètres par modèle. Les paramètres suivants contiennent des erreurs sur un ou plusieurs modèles : {error_labels}" +msgstr "Impossible de couper en raison de certains paramètres par modèle. Les paramètres suivants contiennent des erreurs sur un ou plusieurs modèles: {error_labels}" #: /Users/c.lamboo/ultimaker/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:473 msgctxt "@info:status" @@ -1670,8 +1671,11 @@ msgid "" "- Fit within the build volume\n" "- Are assigned to an enabled extruder\n" "- Are not all set as modifier meshes" -msgstr "Veuillez vérifier les paramètres et si vos modèles :\n- S'intègrent dans le volume de fabrication\n- Sont affectés à un extrudeur activé\n- N sont pas" -" tous définis comme des mailles de modificateur" +msgstr "" +"Veuillez vérifier les paramètres et si vos modèles:\n" +"- S'intègrent dans le volume de fabrication\n" +"- Sont affectés à un extrudeur activé\n" +"- N sont pas tous définis comme des mailles de modificateur" #: /Users/c.lamboo/ultimaker/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:52 #: /Users/c.lamboo/ultimaker/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:260 @@ -1706,18 +1710,19 @@ msgid "" "The material used in this project relies on some material definitions not " "available in Cura, this might produce undesirable print results. We highly " "recommend installing the full material package from the Marketplace." -msgstr "Il materiale utilizzato in questo progetto si basa su alcune definizioni di materiale non disponibili in Cura; ciò potrebbe produrre risultati di stampa" -" indesiderati. Si consiglia vivamente di installare il pacchetto completo di materiali dal Marketplace." +msgstr "" +"Le matériau utilisé dans ce projet repose sur certaines définitions de matériaux non disponibles dans Cura, ce qui peut produire des résultats d’impression indésirables. Nous vous " +"recommandons vivement d’installer l’ensemble complet des matériaux depuis le Marketplace." #: /Users/c.lamboo/ultimaker/Cura/plugins/3MFReader/WorkspaceDialog.py:392 msgctxt "@info:title" msgid "Material profiles not installed" -msgstr "Profili del materiale non installati" +msgstr "Profils des matériaux non installés" #: /Users/c.lamboo/ultimaker/Cura/plugins/3MFReader/WorkspaceDialog.py:405 msgctxt "@action:button" msgid "Install Materials" -msgstr "Installa materiali" +msgstr "Installer les matériaux" #: /Users/c.lamboo/ultimaker/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:545 #, python-brace-format @@ -1740,7 +1745,7 @@ msgctxt "@info:error Don't translate the XML tags or !" msgid "" "Project file {0} is suddenly inaccessible: {1}" "." -msgstr "Le fichier de projet {0} est soudainement inaccessible : {1}." +msgstr "Le fichier de projet {0} est soudainement inaccessible: {1}." #: /Users/c.lamboo/ultimaker/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:651 #: /Users/c.lamboo/ultimaker/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:659 @@ -1755,7 +1760,7 @@ msgstr "Impossible d'ouvrir le fichier de projet" msgctxt "@info:error Don't translate the XML tags or !" msgid "" "Project file {0} is corrupt: {1}." -msgstr "Le fichier de projet {0} est corrompu : {1}." +msgstr "Le fichier de projet {0} est corrompu: {1}." #: /Users/c.lamboo/ultimaker/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:723 #, python-brace-format @@ -1791,9 +1796,11 @@ msgid "" "p>\n" "

    View print quality " "guide

    " -msgstr "

    Un ou plusieurs modèles 3D peuvent ne pas s'imprimer de manière optimale en raison de la taille du modèle et de la configuration matérielle :

    \n

    {model_names}

    \n

    Découvrez" -" comment optimiser la qualité et la fiabilité de l'impression.

    \n

    Consultez le guide de qualité" -" d'impression

    " +msgstr "" +"

    Un ou plusieurs modèles 3D peuvent ne pas s'imprimer de manière optimale en raison de la taille du modèle et de la configuration matérielle:

    \n" +"

    {model_names}

    \n" +"

    Découvrez comment optimiser la qualité et la fiabilité de l'impression.

    \n" +"

    Consultez le guide de qualité d'impression

    " #: /Users/c.lamboo/ultimaker/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:42 msgctxt "@item:inmenu" @@ -1819,7 +1826,7 @@ msgstr "Connecté via USB" msgctxt "@label" msgid "" "A USB print is in progress, closing Cura will stop this print. Are you sure?" -msgstr "Une impression USB est en cours, la fermeture de Cura arrêtera cette impression. Êtes-vous sûr ?" +msgstr "Une impression USB est en cours, la fermeture de Cura arrêtera cette impression. Êtes-vous sûr?" #: /Users/c.lamboo/ultimaker/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:135 msgctxt "@message" @@ -1926,8 +1933,9 @@ msgid "" "New features or bug-fixes may be available for your {machine_name}! If you " "haven't done so already, it is recommended to update the firmware on your " "printer to version {latest_version}." -msgstr "De nouvelles fonctionnalités ou des correctifs de bugs sont disponibles pour votre {machine_name} ! Si vous ne l'avez pas encore fait, il est recommandé" -" de mettre à jour le micrologiciel de votre imprimante avec la version {latest_version}." +msgstr "" +"De nouvelles fonctionnalités ou des correctifs de bugs sont disponibles pour votre {machine_name} ! Si vous ne l'avez pas encore fait, il est recommandé de mettre à jour le micrologiciel de " +"votre imprimante avec la version {latest_version}." #: /Users/c.lamboo/ultimaker/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerMessage.py:22 #, python-format @@ -2178,9 +2186,9 @@ msgid "" "to block more light coming through. For height maps lighter pixels signify " "higher terrain, so lighter pixels should correspond to thicker locations in " "the generated 3D model." -msgstr "Pour les lithophanies, les pixels foncés doivent correspondre à des emplacements plus épais afin d'empêcher la lumière de passer. Pour des cartes de hauteur," -" les pixels clairs signifient un terrain plus élevé, de sorte que les pixels clairs doivent correspondre à des emplacements plus épais dans le modèle 3D" -" généré." +msgstr "" +"Pour les lithophanies, les pixels foncés doivent correspondre à des emplacements plus épais afin d'empêcher la lumière de passer. Pour des cartes de hauteur, les pixels clairs signifient un " +"terrain plus élevé, de sorte que les pixels clairs doivent correspondre à des emplacements plus épais dans le modèle 3D généré." #: /Users/c.lamboo/ultimaker/Cura/plugins/ImageReader/ConfigUI.qml:205 msgctxt "@action:label" @@ -2202,8 +2210,8 @@ msgctxt "@info:tooltip" msgid "" "For lithophanes a simple logarithmic model for translucency is available. " "For height maps the pixel values correspond to heights linearly." -msgstr "Pour les lithophanes, un modèle logarithmique simple de la translucidité est disponible. Pour les cartes de hauteur, les valeurs des pixels correspondent" -" aux hauteurs de façon linéaire." +msgstr "" +"Pour les lithophanes, un modèle logarithmique simple de la translucidité est disponible. Pour les cartes de hauteur, les valeurs des pixels correspondent aux hauteurs de façon linéaire." #: /Users/c.lamboo/ultimaker/Cura/plugins/ImageReader/ConfigUI.qml:242 msgctxt "@action:label" @@ -2216,8 +2224,9 @@ msgid "" "The percentage of light penetrating a print with a thickness of 1 " "millimeter. Lowering this value increases the contrast in dark regions and " "decreases the contrast in light regions of the image." -msgstr "Le pourcentage de lumière pénétrant une impression avec une épaisseur de 1 millimètre. La diminution de cette valeur augmente le contraste dans les régions" -" sombres et diminue le contraste dans les régions claires de l'image." +msgstr "" +"Le pourcentage de lumière pénétrant une impression avec une épaisseur de 1 millimètre. La diminution de cette valeur augmente le contraste dans les régions sombres et diminue le contraste " +"dans les régions claires de l'image." #: /Users/c.lamboo/ultimaker/Cura/plugins/ImageReader/ConfigUI.qml:274 msgctxt "@action:label" @@ -2240,7 +2249,7 @@ msgstr "OK" #: /Users/c.lamboo/ultimaker/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:17 msgctxt "@title:window" msgid "Post Processing Plugin" -msgstr "Plug-in de post-traitement" +msgstr "Plugin de post-traitement" #: /Users/c.lamboo/ultimaker/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:57 msgctxt "@label" @@ -2439,8 +2448,8 @@ msgctxt "@info" msgid "" "Webcam feeds for cloud printers cannot be viewed from Ultimaker Cura. Click " "\"Manage printer\" to visit Ultimaker Digital Factory and view this webcam." -msgstr "Les flux de webcam des imprimantes cloud ne peuvent pas être visualisés depuis Ultimaker Cura. Cliquez sur « Gérer l'imprimante » pour visiter Ultimaker" -" Digital Factory et voir cette webcam." +msgstr "" +"Les flux de webcam des imprimantes cloud ne peuvent pas être visualisés depuis Ultimaker Cura. Cliquez sur « Gérer l'imprimante » pour visiter Ultimaker Digital Factory et voir cette webcam." #: /Users/c.lamboo/ultimaker/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:347 msgctxt "@label:status" @@ -2507,7 +2516,7 @@ msgstr "Premier disponible" #: /Users/c.lamboo/ultimaker/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorStage.qml:117 msgctxt "@info" msgid "Monitor your printers from everywhere using Ultimaker Digital Factory" -msgstr "Surveillez vos imprimantes à distance grâce à Ultimaker Digital Factory" +msgstr "Surveillez vos imprimantes à distance avec Ultimaker Digital Factory" #: /Users/c.lamboo/ultimaker/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorStage.qml:129 msgctxt "@button" @@ -2527,9 +2536,9 @@ msgid "" "your printer to your WIFI network. If you don't connect Cura with your " "printer, you can still use a USB drive to transfer g-code files to your " "printer." -msgstr "Pour imprimer directement sur votre imprimante via le réseau, assurez-vous que votre imprimante est connectée au réseau via un câble Ethernet ou en connectant" -" votre imprimante à votre réseau Wi-Fi. Si vous ne connectez pas Cura avec votre imprimante, vous pouvez utiliser une clé USB pour transférer les fichiers" -" g-code sur votre imprimante." +msgstr "" +"Pour imprimer directement sur votre imprimante via le réseau, assurez-vous que votre imprimante est connectée au réseau via un câble Ethernet ou en connectant votre imprimante à votre réseau " +"Wi-Fi. Si vous ne connectez pas Cura avec votre imprimante, vous pouvez utiliser une clé USB pour transférer les fichiers g-code sur votre imprimante." #: /Users/c.lamboo/ultimaker/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:51 msgctxt "@label" @@ -2732,7 +2741,7 @@ msgstr "Profils" #: /Users/c.lamboo/ultimaker/Cura/plugins/CuraDrive/src/qml/components/BackupListItemDetails.qml:53 msgctxt "@backuplist:label" msgid "Plugins" -msgstr "Plug-ins" +msgstr "Plugins" #: /Users/c.lamboo/ultimaker/Cura/plugins/CuraDrive/src/qml/components/BackupListFooter.qml:22 msgctxt "@button" @@ -2823,8 +2832,8 @@ msgctxt "@text:window" msgid "" "Ultimaker Cura collects anonymous data in order to improve the print quality " "and user experience. Below is an example of all the data that is shared:" -msgstr "Ultimaker Cura recueille des données anonymes afin d'améliorer la qualité d'impression et l'expérience utilisateur. Voici un exemple de toutes les données" -" partagées :" +msgstr "" +"Ultimaker Cura recueille des données anonymes afin d'améliorer la qualité d'impression et l'expérience utilisateur. Voici un exemple de toutes les données partagées :" #: /Users/c.lamboo/ultimaker/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:107 msgctxt "@text:window" @@ -2839,12 +2848,12 @@ msgstr "Autoriser l'envoi de données anonymes" #: /Users/c.lamboo/ultimaker/Cura/plugins/DigitalLibrary/resources/qml/SaveProjectFilesPage.qml:216 msgctxt "@option" msgid "Save Cura project and print file" -msgstr "Salva progetto Cura e stampa file" +msgstr "Sauvegarder le projet Cura et imprimer le fichier" #: /Users/c.lamboo/ultimaker/Cura/plugins/DigitalLibrary/resources/qml/SaveProjectFilesPage.qml:217 msgctxt "@option" msgid "Save Cura project" -msgstr "Salva progetto Cura" +msgstr "Sauvegarder le projet Cura" #: /Users/c.lamboo/ultimaker/Cura/plugins/UltimakerMachineActions/UMOUpgradeSelectionMachineAction.qml:30 msgctxt "@label" @@ -2867,8 +2876,9 @@ msgid "" "To make sure your prints will come out great, you can now adjust your " "buildplate. When you click 'Move to Next Position' the nozzle will move to " "the different positions that can be adjusted." -msgstr "Pour obtenir des résultats d'impression optimaux, vous pouvez maintenant régler votre plateau. Quand vous cliquez sur 'Aller à la position suivante', la" -" buse se déplacera vers les différentes positions pouvant être réglées." +msgstr "" +"Pour obtenir des résultats d'impression optimaux, vous pouvez maintenant régler votre plateau. Quand vous cliquez sur 'Aller à la position suivante', la buse se déplacera vers les " +"différentes positions pouvant être réglées." #: /Users/c.lamboo/ultimaker/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.qml:52 msgctxt "@label" @@ -2876,8 +2886,8 @@ msgid "" "For every position; insert a piece of paper under the nozzle and adjust the " "print build plate height. The print build plate height is right when the " "paper is slightly gripped by the tip of the nozzle." -msgstr "Pour chacune des positions ; glissez un bout de papier sous la buse et ajustez la hauteur du plateau. La hauteur du plateau est juste lorsque la pointe" -" de la buse gratte légèrement le papier." +msgstr "" +"Pour chacune des positions ; glissez un bout de papier sous la buse et ajustez la hauteur du plateau. La hauteur du plateau est juste lorsque la pointe de la buse gratte légèrement le papier." #: /Users/c.lamboo/ultimaker/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.qml:67 msgctxt "@action:button" @@ -2892,7 +2902,7 @@ msgstr "Aller à la position suivante" #: /Users/c.lamboo/ultimaker/Cura/plugins/Marketplace/resources/qml/PackageCardHeader.qml:172 msgctxt "@label Is followed by the name of an author" msgid "By" -msgstr "Per mezzo di" +msgstr "Par" #: /Users/c.lamboo/ultimaker/Cura/plugins/Marketplace/resources/qml/PackageCardHeader.qml:207 #: /Users/c.lamboo/ultimaker/Cura/plugins/Marketplace/resources/qml/OnboardBanner.qml:101 @@ -2948,14 +2958,14 @@ msgstr "Mise à jour" #: /Users/c.lamboo/ultimaker/Cura/plugins/Marketplace/resources/qml/Plugins.qml:8 msgctxt "@header" msgid "Install Plugins" -msgstr "Installer les plug-ins" +msgstr "Installer les plugins" #: /Users/c.lamboo/ultimaker/Cura/plugins/Marketplace/resources/qml/Plugins.qml:12 msgctxt "@text" msgid "" "Streamline your workflow and customize your Ultimaker Cura experience with " "plugins contributed by our amazing community of users." -msgstr "Simplifiez votre flux de travail et personnalisez votre expérience Ultimaker Cura avec des plug-ins fournis par notre incroyable communauté d'utilisateurs." +msgstr "Simplifiez votre flux de travail et personnalisez votre expérience Ultimaker Cura avec des plugins fournis par notre incroyable communauté d'utilisateurs." #: /Users/c.lamboo/ultimaker/Cura/plugins/Marketplace/resources/qml/CompatibilityDialog.qml:15 msgctxt "@title" @@ -3000,7 +3010,7 @@ msgstr "Contrat de licence du plugin" #: /Users/c.lamboo/ultimaker/Cura/plugins/Marketplace/resources/qml/LicenseDialog.qml:47 msgctxt "@text" msgid "Please read and agree with the plugin licence." -msgstr "Veuillez lire et accepter la licence du plug-in." +msgstr "Veuillez lire et accepter la licence du plugin." #: /Users/c.lamboo/ultimaker/Cura/plugins/Marketplace/resources/qml/LicenseDialog.qml:70 msgctxt "@button" @@ -3075,7 +3085,7 @@ msgstr "Optimisé pour Air Manager" #: /Users/c.lamboo/ultimaker/Cura/plugins/Marketplace/resources/qml/PackagePage.qml:243 msgctxt "@button" msgid "Visit plug-in website" -msgstr "Visitez le site Web du plug-in" +msgstr "Visitez le site Web du plugin" #: /Users/c.lamboo/ultimaker/Cura/plugins/Marketplace/resources/qml/PackagePage.qml:243 msgctxt "@button" @@ -3140,7 +3150,7 @@ msgstr "Charger plus" #: /Users/c.lamboo/ultimaker/Cura/plugins/Marketplace/resources/qml/VerifiedIcon.qml:21 msgctxt "@info" msgid "Ultimaker Verified Plug-in" -msgstr "Plug-in Ultimaker vérifié" +msgstr "Plugin Ultimaker vérifié" #: /Users/c.lamboo/ultimaker/Cura/plugins/Marketplace/resources/qml/VerifiedIcon.qml:22 msgctxt "@info" @@ -3162,12 +3172,12 @@ msgctxt "@text" msgid "" "Manage your Ultimaker Cura plugins and material profiles here. Make sure to " "keep your plugins up to date and backup your setup regularly." -msgstr "Gérez vos plug-ins Ultimaker Cura et vos profils matériaux ici. Assurez-vous de maintenir vos plug-ins à jour et de sauvegarder régulièrement votre configuration." +msgstr "Gérez vos plugins Ultimaker Cura et vos profils matériaux ici. Assurez-vous de maintenir vos plugins à jour et de sauvegarder régulièrement votre configuration." #: /Users/c.lamboo/ultimaker/Cura/plugins/Marketplace/resources/qml/InstallMissingPackagesDialog.qml:15 msgctxt "@title" msgid "Install missing Materials" -msgstr "Installa materiali mancanti" +msgstr "Installer les matériaux manquants" #: /Users/c.lamboo/ultimaker/Cura/plugins/Marketplace/resources/qml/Marketplace.qml:87 msgctxt "@title" @@ -3177,7 +3187,7 @@ msgstr "Chargement..." #: /Users/c.lamboo/ultimaker/Cura/plugins/Marketplace/resources/qml/Marketplace.qml:148 msgctxt "@button" msgid "Plugins" -msgstr "Plug-ins" +msgstr "Plugins" #: /Users/c.lamboo/ultimaker/Cura/plugins/Marketplace/resources/qml/Marketplace.qml:156 msgctxt "@button" @@ -3206,8 +3216,11 @@ msgid "" "- Check if the printer is turned on.\n" "- Check if the printer is connected to the network.\n" "- Check if you are signed in to discover cloud-connected printers." -msgstr "Assurez-vous que votre imprimante est connectée :\n- Vérifiez si l'imprimante est sous tension.\n- Vérifiez si l'imprimante est connectée au réseau.- Vérifiez" -" si vous êtes connecté pour découvrir les imprimantes connectées au cloud." +msgstr "" +"Assurez-vous que votre imprimante est connectée:\n" +"- Vérifiez si l'imprimante est sous tension.\n" +"- Vérifiez si l'imprimante est connectée au réseau.\n" +"- Vérifiez si vous êtes connecté pour découvrir les imprimantes connectées au cloud." #: /Users/c.lamboo/ultimaker/Cura/plugins/MonitorStage/MonitorMain.qml:113 msgctxt "@info" @@ -3359,7 +3372,8 @@ msgctxt "@label" msgid "" "The material used in this project is currently not installed in Cura.
    Install the material profile and reopen the project." -msgstr "Le matériau utilisé dans ce projet n'est actuellement pas installé dans Cura.
    Installez le profil du matériau et rouvrez le projet." +msgstr "" +"Le matériau utilisé dans ce projet n'est actuellement pas installé dans Cura.
    Installer le profil de matériau et rouvrir le projet." #: /Users/c.lamboo/ultimaker/Cura/plugins/3MFReader/WorkspaceDialog.qml:515 msgctxt "@action:button" @@ -3369,12 +3383,12 @@ msgstr "Ouvrir" #: /Users/c.lamboo/ultimaker/Cura/plugins/3MFReader/WorkspaceDialog.qml:521 msgctxt "@action:button" msgid "Open project anyway" -msgstr "Apri il progetto comunque" +msgstr "Ouvrir tout de même le projet" #: /Users/c.lamboo/ultimaker/Cura/plugins/3MFReader/WorkspaceDialog.qml:530 msgctxt "@action:button" msgid "Install missing material" -msgstr "Installa materiale mancante" +msgstr "Installer le matériel manquant" #: /Users/c.lamboo/ultimaker/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:41 msgctxt "@label" @@ -3443,16 +3457,16 @@ msgid "" "Firmware is the piece of software running directly on your 3D printer. This " "firmware controls the step motors, regulates the temperature and ultimately " "makes your printer work." -msgstr "Le firmware est le logiciel fonctionnant directement dans votre imprimante 3D. Ce firmware contrôle les moteurs pas à pas, régule la température et surtout," -" fait que votre machine fonctionne." +msgstr "" +"Le firmware est le logiciel fonctionnant directement dans votre imprimante 3D. Ce firmware contrôle les moteurs pas à pas, régule la température et surtout, fait que votre machine fonctionne." #: /Users/c.lamboo/ultimaker/Cura/plugins/FirmwareUpdater/FirmwareUpdaterMachineAction.qml:43 msgctxt "@label" msgid "" "The firmware shipping with new printers works, but new versions tend to have " "more features and improvements." -msgstr "Le firmware fourni avec les nouvelles imprimantes fonctionne, mais les nouvelles versions ont tendance à fournir davantage de fonctionnalités ainsi que" -" des améliorations." +msgstr "" +"Le firmware fourni avec les nouvelles imprimantes fonctionne, mais les nouvelles versions ont tendance à fournir davantage de fonctionnalités ainsi que des améliorations." #: /Users/c.lamboo/ultimaker/Cura/plugins/FirmwareUpdater/FirmwareUpdaterMachineAction.qml:55 msgctxt "@action:button" @@ -3654,7 +3668,10 @@ msgid "" "This setting has a value that is different from the profile.\n" "\n" "Click to restore the value of the profile." -msgstr "Ce paramètre possède une valeur qui est différente du profil.\n\nCliquez pour restaurer la valeur du profil." +msgstr "" +"Ce paramètre possède une valeur qui est différente du profil.\n" +"\n" +"Cliquez pour restaurer la valeur du profil." #: /Users/c.lamboo/ultimaker/Cura/resources/qml/Settings/SettingItem.qml:334 msgctxt "@label" @@ -3663,7 +3680,10 @@ msgid "" "set.\n" "\n" "Click to restore the calculated value." -msgstr "Ce paramètre est normalement calculé mais il possède actuellement une valeur absolue définie.\n\nCliquez pour restaurer la valeur calculée." +msgstr "" +"Ce paramètre est normalement calculé mais il possède actuellement une valeur absolue définie.\n" +"\n" +"Cliquez pour restaurer la valeur calculée." #: /Users/c.lamboo/ultimaker/Cura/resources/qml/Settings/SettingView.qml:48 msgctxt "@label:textbox" @@ -3708,12 +3728,15 @@ msgid "" "value.\n" "\n" "Click to make these settings visible." -msgstr "Certains paramètres masqués utilisent des valeurs différentes de leur valeur normalement calculée.\n\nCliquez pour rendre ces paramètres visibles." +msgstr "" +"Certains paramètres masqués utilisent des valeurs différentes de leur valeur normalement calculée.\n" +"\n" +"Cliquez pour rendre ces paramètres visibles." #: /Users/c.lamboo/ultimaker/Cura/resources/qml/MainWindow/MainWindowHeader.qml:135 msgctxt "@action:button" msgid "Marketplace" -msgstr "Marché en ligne" +msgstr "Marketplace" #: /Users/c.lamboo/ultimaker/Cura/resources/qml/MainWindow/ApplicationMenu.qml:63 #: /Users/c.lamboo/ultimaker/Cura/resources/qml/Menus/SettingsMenu.qml:13 @@ -3865,8 +3888,8 @@ msgid "" "It seems like you don't have any compatible printers connected to Digital " "Factory. Make sure your printer is connected and it's running the latest " "firmware." -msgstr "Il semble que vous n'ayez aucune imprimante compatible connectée à Digital Factory. Assurez-vous que votre imprimante est connectée et qu'elle utilise" -" le dernier micrologiciel." +msgstr "" +"Il semble que vous n'ayez aucune imprimante compatible connectée à Digital Factory. Assurez-vous que votre imprimante est connectée et qu'elle utilise le dernier micrologiciel." #: /Users/c.lamboo/ultimaker/Cura/resources/qml/Preferences/Materials/MaterialsSyncDialog.qml:585 msgctxt "@button" @@ -4156,12 +4179,12 @@ msgstr "Interface" #: /Users/c.lamboo/ultimaker/Cura/resources/qml/Preferences/GeneralPage.qml:215 msgctxt "@heading" msgid "-- incomplete --" -msgstr "--complet --" +msgstr "-- incomplet —-" #: /Users/c.lamboo/ultimaker/Cura/resources/qml/Preferences/GeneralPage.qml:261 msgctxt "@label" msgid "Currency:" -msgstr "Devise :" +msgstr "Devise:" #: /Users/c.lamboo/ultimaker/Cura/resources/qml/Preferences/GeneralPage.qml:277 msgctxt "" @@ -4217,8 +4240,8 @@ msgctxt "@info:tooltip" msgid "" "Highlight missing or extraneous surfaces of the model using warning signs. " "The toolpaths will often be missing parts of the intended geometry." -msgstr "Surlignez les surfaces du modèle manquantes ou étrangères en utilisant les signes d'avertissement. Les Toolpaths seront souvent les parties manquantes" -" de la géométrie prévue." +msgstr "" +"Surlignez les surfaces du modèle manquantes ou étrangères en utilisant les signes d'avertissement. Les Toolpaths seront souvent les parties manquantes de la géométrie prévue." #: /Users/c.lamboo/ultimaker/Cura/resources/qml/Preferences/GeneralPage.qml:409 msgctxt "@option:check" @@ -4322,7 +4345,7 @@ msgstr "Quel type de rendu de la caméra doit-il être utilisé?" #: /Users/c.lamboo/ultimaker/Cura/resources/qml/Preferences/GeneralPage.qml:569 msgctxt "@window:text" msgid "Camera rendering:" -msgstr "Rendu caméra :" +msgstr "Rendu caméra:" #: /Users/c.lamboo/ultimaker/Cura/resources/qml/Preferences/GeneralPage.qml:576 msgid "Perspective" @@ -4359,7 +4382,7 @@ msgstr "Les objets doivent-ils être supprimés du plateau de fabrication avant #: /Users/c.lamboo/ultimaker/Cura/resources/qml/Preferences/GeneralPage.qml:646 msgctxt "@option:check" msgid "Clear buildplate before loading model into the single instance" -msgstr "Supprimez les objets du plateau de fabrication avant de charger un modèle dans l'instance unique" +msgstr "Supprimer les objets du plateau avant de charger un modèle dans l'instance unique" #: /Users/c.lamboo/ultimaker/Cura/resources/qml/Preferences/GeneralPage.qml:656 msgctxt "@info:tooltip" @@ -4446,8 +4469,9 @@ msgid "" "When you have made changes to a profile and switched to a different one, a " "dialog will be shown asking whether you want to keep your modifications or " "not, or you can choose a default behaviour and never show that dialog again." -msgstr "Lorsque vous apportez des modifications à un profil puis passez à un autre profil, une boîte de dialogue apparaît, vous demandant si vous souhaitez conserver" -" les modifications. Vous pouvez aussi choisir une option par défaut, et le dialogue ne s'affichera plus." +msgstr "" +"Lorsque vous apportez des modifications à un profil puis passez à un autre profil, une boîte de dialogue apparaît, vous demandant si vous souhaitez conserver les modifications. Vous pouvez " +"aussi choisir une option par défaut, et le dialogue ne s'affichera plus." #: /Users/c.lamboo/ultimaker/Cura/resources/qml/Preferences/GeneralPage.qml:801 #: /Users/c.lamboo/ultimaker/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedPrintSetup.qml:36 @@ -4489,8 +4513,9 @@ msgid "" "Should anonymous data about your print be sent to Ultimaker? Note, no " "models, IP addresses or other personally identifiable information is sent or " "stored." -msgstr "Les données anonymes de votre impression doivent-elles être envoyées à Ultimaker ? Notez qu'aucun modèle, aucune adresse IP ni aucune autre information" -" permettant de vous identifier personnellement ne seront envoyés ou stockés." +msgstr "" +"Les données anonymes de votre impression doivent-elles être envoyées à Ultimaker ? Notez qu'aucun modèle, aucune adresse IP ni aucune autre information permettant de vous identifier " +"personnellement ne seront envoyés ou stockés." #: /Users/c.lamboo/ultimaker/Cura/resources/qml/Preferences/GeneralPage.qml:867 msgctxt "@option:check" @@ -4537,8 +4562,8 @@ msgctxt "@info:tooltip" msgid "" "Should an automatic check for new plugins be done every time Cura is " "started? It is highly recommended that you do not disable this!" -msgstr "Une vérification automatique des nouveaux plugins doit-elle être effectuée à chaque fois que Cura est lancé ? Il est fortement recommandé de ne pas désactiver" -" cette fonction !" +msgstr "" +"Une vérification automatique des nouveaux plugins doit-elle être effectuée à chaque fois que Cura est lancé ? Il est fortement recommandé de ne pas désactiver cette fonction !" #: /Users/c.lamboo/ultimaker/Cura/resources/qml/Preferences/GeneralPage.qml:962 msgctxt "@option:check" @@ -4814,17 +4839,17 @@ msgstr "Connectez-vous à la plateforme Ultimaker" #: /Users/c.lamboo/ultimaker/Cura/resources/qml/WelcomePages/CloudContent.qml:123 msgctxt "@text" msgid "Add material settings and plugins from the Marketplace" -msgstr "Ajoutez des paramètres de matériaux et des plug-ins depuis la Marketplace" +msgstr "Ajoutez des paramètres de matériaux et des plugins depuis la Marketplace" #: /Users/c.lamboo/ultimaker/Cura/resources/qml/WelcomePages/CloudContent.qml:149 msgctxt "@text" msgid "Backup and sync your material settings and plugins" -msgstr "Sauvegardez et synchronisez vos paramètres de matériaux et vos plug-ins" +msgstr "Sauvegardez et synchronisez vos paramètres de matériaux et vos plugins" #: /Users/c.lamboo/ultimaker/Cura/resources/qml/WelcomePages/CloudContent.qml:175 msgctxt "@text" msgid "Share ideas and get help from 48,000+ users in the Ultimaker Community" -msgstr "Partagez vos idées et obtenez l'aide de plus de 48 000 utilisateurs de la communauté Ultimaker" +msgstr "Partagez vos idées et obtenez l'aide de plus de 48,000 utilisateurs de la communauté Ultimaker" #: /Users/c.lamboo/ultimaker/Cura/resources/qml/WelcomePages/CloudContent.qml:189 msgctxt "@button" @@ -4972,7 +4997,9 @@ msgctxt "@text" msgid "" "Please follow these steps to set up Ultimaker Cura. This will only take a " "few moments." -msgstr "Veuillez suivre ces étapes pour configurer\nUltimaker Cura. Cela ne prendra que quelques instants." +msgstr "" +"Veuillez suivre ces étapes pour configurer\n" +"Ultimaker Cura. Cela ne prendra que quelques instants." #: /Users/c.lamboo/ultimaker/Cura/resources/qml/WelcomePages/WelcomeContent.qml:82 msgctxt "@button" @@ -5164,7 +5191,7 @@ msgstr "Sélectionner tous les modèles" #: /Users/c.lamboo/ultimaker/Cura/resources/qml/Actions.qml:393 msgctxt "@action:inmenu menubar:edit" msgid "Clear Build Plate" -msgstr "Supprimer les objets du plateau" +msgstr "Supprimer les modèles du plateau" #: /Users/c.lamboo/ultimaker/Cura/resources/qml/Actions.qml:403 msgctxt "@action:inmenu menubar:file" @@ -5414,7 +5441,7 @@ msgstr "Cette configuration n'est pas disponible car %1 n'est pas reconnu. Veuil #: /Users/c.lamboo/ultimaker/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationItem.qml:138 msgctxt "@label" msgid "Marketplace" -msgstr "Marché en ligne" +msgstr "Marketplace" #: /Users/c.lamboo/ultimaker/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml:106 msgctxt "@tooltip" @@ -5519,7 +5546,7 @@ msgstr "Gérer la visibilité des paramètres..." #: /Users/c.lamboo/ultimaker/Cura/resources/qml/Dialogs/ChoosePrinterDialog.qml:17 msgctxt "@title:window" msgid "Select Printer" -msgstr "Sélectionner une imprimante" +msgstr "Sélectionner l’imprimante" #: /Users/c.lamboo/ultimaker/Cura/resources/qml/Dialogs/ChoosePrinterDialog.qml:54 msgctxt "@title:label" @@ -5543,8 +5570,9 @@ msgid "" "We have found one or more project file(s) within the files you have " "selected. You can open only one project file at a time. We suggest to only " "import models from those files. Would you like to proceed?" -msgstr "Nous avons trouvé au moins un fichier de projet parmi les fichiers que vous avez sélectionnés. Vous ne pouvez ouvrir qu'un seul fichier de projet à la" -" fois. Nous vous conseillons de n'importer que les modèles de ces fichiers. Souhaitez-vous continuer ?" +msgstr "" +"Nous avons trouvé au moins un fichier de projet parmi les fichiers que vous avez sélectionnés. Vous ne pouvez ouvrir qu'un seul fichier de projet à la fois. Nous vous conseillons de " +"n'importer que les modèles de ces fichiers. Souhaitez-vous continuer?" #: /Users/c.lamboo/ultimaker/Cura/resources/qml/Dialogs/OpenFilesIncludingProjectsDialog.qml:64 msgctxt "@action:button" @@ -5589,8 +5617,10 @@ msgid "" "You have customized some profile settings. Would you like to Keep these " "changed settings after switching profiles? Alternatively, you can discard " "the changes to load the defaults from '%1'." -msgstr "Vous avez personnalisé certains paramètres de profil.\nSouhaitez-vous conserver ces paramètres modifiés après avoir changé de profil ?\nVous pouvez également" -" annuler les modifications pour charger les valeurs par défaut de '%1'." +msgstr "" +"Vous avez personnalisé certains paramètres de profil.\n" +"Souhaitez-vous conserver ces paramètres modifiés après avoir changé de profil ?\n" +"Vous pouvez également annuler les modifications pour charger les valeurs par défaut de '%1'." #: /Users/c.lamboo/ultimaker/Cura/resources/qml/Dialogs/DiscardOrKeepProfileChangesDialog.qml:85 msgctxt "@title:column" @@ -5672,7 +5702,9 @@ msgctxt "@info:credit" msgid "" "Cura is developed by Ultimaker B.V. in cooperation with the community.\n" "Cura proudly uses the following open source projects:" -msgstr "Cura a été développé par Ultimaker B.V. en coopération avec la communauté Ultimaker.\nCura est fier d'utiliser les projets open source suivants :" +msgstr "" +"Cura a été développé par Ultimaker B.V. en coopération avec la communauté Ultimaker.\n" +"Cura est fier d'utiliser les projets open source suivants :" #: /Users/c.lamboo/ultimaker/Cura/resources/qml/Dialogs/AboutDialog.qml:138 msgctxt "@label Description for application component" @@ -5806,6 +5838,7 @@ msgid "Support library for scientific computing" msgstr "Prise en charge de la bibliothèque pour le calcul scientifique" #: /Users/c.lamboo/ultimaker/Cura/resources/qml/Dialogs/AboutDialog.qml:171 +#, fuzzy msgctxt "@Label Description for application dependency" msgid "Python Error tracking library" msgstr "Bibliothèque de suivi des erreurs Python" @@ -5878,7 +5911,7 @@ msgstr "Surveillez les tâches d'impression et réimprimez à partir de votre hi #: /Users/c.lamboo/ultimaker/Cura/resources/qml/ApplicationSwitcher/ApplicationSwitcherPopup.qml:55 msgctxt "@tooltip:button" msgid "Extend Ultimaker Cura with plugins and material profiles." -msgstr "Étendez Ultimaker Cura avec des plug-ins et des profils de matériaux." +msgstr "Étendez Ultimaker Cura avec des plugins et des profils de matériaux." #: /Users/c.lamboo/ultimaker/Cura/resources/qml/ApplicationSwitcher/ApplicationSwitcherPopup.qml:62 msgctxt "@tooltip:button" @@ -5946,7 +5979,7 @@ msgstr "Le profil personnalisé %1 remplace certains paramètres." #: /Users/c.lamboo/ultimaker/Cura/resources/qml/PrintSetupSelector/Recommended/ProfileWarningReset.qml:79 msgctxt "@info" msgid "Some settings were changed." -msgstr "Alcune impostazioni sono state modificate." +msgstr "Certains paramètres ont été modifiés." #: /Users/c.lamboo/ultimaker/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedInfillDensitySelector.qml:78 #: /Users/c.lamboo/ultimaker/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedInfillDensitySelector.qml:254 @@ -5963,7 +5996,7 @@ msgstr "Remplissage graduel" #: /Users/c.lamboo/ultimaker/Cura/resources/qml/PrintSetupSelector/Recommended/UnsupportedProfileIndication.qml:31 msgctxt "@error" msgid "Configuration not supported" -msgstr "Configurazione non supportata" +msgstr "Configuration non supportée" #: /Users/c.lamboo/ultimaker/Cura/resources/qml/PrintSetupSelector/Recommended/UnsupportedProfileIndication.qml:39 msgctxt "@message:text %1 is the name the printer uses for 'nozzle'." @@ -5975,7 +6008,7 @@ msgstr "Nessun profilo disponibile per la configurazione del materiale /%1 selez #: /Users/c.lamboo/ultimaker/Cura/resources/qml/PrintSetupSelector/Recommended/UnsupportedProfileIndication.qml:47 msgctxt "@button:label" msgid "Learn more" -msgstr "Ulteriori informazioni" +msgstr "En savoir plus" #: /Users/c.lamboo/ultimaker/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedAdhesionSelector.qml:27 msgctxt "@label" @@ -5987,13 +6020,13 @@ msgctxt "@label" msgid "" "Enable printing a brim or raft. This will add a flat area around or under " "your object which is easy to cut off afterwards." -msgstr "Activez l'impression d'une bordure ou plaquette (Brim/Raft). Cela ajoutera une zone plate autour de ou sous votre objet qui est facile à découper par la" -" suite." +msgstr "" +"Activez l'impression d'une bordure ou plaquette (Brim/Raft). Cela ajoutera une zone plate autour de ou sous votre objet qui est facile à découper par la suite." #: /Users/c.lamboo/ultimaker/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedResolutionSelector.qml:27 msgctxt "@label" msgid "Resolution" -msgstr "Risoluzione" +msgstr "Résolution" #: /Users/c.lamboo/ultimaker/Cura/resources/qml/PrintSetupSelector/PrintSetupSelector.qml:20 msgctxt "@label shown when we load a Gcode file" @@ -6037,7 +6070,10 @@ msgid "" "profile.\n" "\n" "Click to open the profile manager." -msgstr "Certaines valeurs de paramètre / forçage sont différentes des valeurs enregistrées dans le profil. \n\nCliquez pour ouvrir le gestionnaire de profils." +msgstr "" +"Certaines valeurs de paramètre / forçage sont différentes des valeurs enregistrées dans le profil. \n" +"\n" +"Cliquez pour ouvrir le gestionnaire de profils." #: /Users/c.lamboo/ultimaker/Cura/resources/qml/PrintSetupSelector/Custom/QualitiesWithIntentMenu.qml:158 msgctxt "@label:header" @@ -6059,8 +6095,8 @@ msgctxt "@tooltip" msgid "" "The target temperature of the heated bed. The bed will heat up or cool down " "towards this temperature. If this is 0, the bed heating is turned off." -msgstr "Température cible du plateau chauffant. Le plateau sera chauffé ou refroidi pour tendre vers cette température. Si la valeur est 0, le chauffage du plateau" -" sera éteint." +msgstr "" +"Température cible du plateau chauffant. Le plateau sera chauffé ou refroidi pour tendre vers cette température. Si la valeur est 0, le chauffage du plateau sera éteint." #: /Users/c.lamboo/ultimaker/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:88 msgctxt "@tooltip" @@ -6090,8 +6126,9 @@ msgid "" "Heat the bed in advance before printing. You can continue adjusting your " "print while it is heating, and you won't have to wait for the bed to heat up " "when you're ready to print." -msgstr "Préchauffez le plateau avant l'impression. Vous pouvez continuer à ajuster votre impression pendant qu'il chauffe, et vous n'aurez pas à attendre que le" -" plateau chauffe lorsque vous serez prêt à lancer l'impression." +msgstr "" +"Préchauffez le plateau avant l'impression. Vous pouvez continuer à ajuster votre impression pendant qu'il chauffe, et vous n'aurez pas à attendre que le plateau chauffe lorsque vous serez " +"prêt à lancer l'impression." #: /Users/c.lamboo/ultimaker/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:40 msgctxt "@label" @@ -6103,8 +6140,9 @@ msgctxt "@tooltip" msgid "" "The target temperature of the hotend. The hotend will heat up or cool down " "towards this temperature. If this is 0, the hotend heating is turned off." -msgstr "Température cible de l'extrémité chauffante. L'extrémité chauffante sera chauffée ou refroidie pour tendre vers cette température. Si la valeur est 0," -" le chauffage de l'extrémité chauffante sera coupé." +msgstr "" +"Température cible de l'extrémité chauffante. L'extrémité chauffante sera chauffée ou refroidie pour tendre vers cette température. Si la valeur est 0, le chauffage de l'extrémité chauffante " +"sera coupé." #: /Users/c.lamboo/ultimaker/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:105 msgctxt "@tooltip" @@ -6122,8 +6160,9 @@ msgid "" "Heat the hotend in advance before printing. You can continue adjusting your " "print while it is heating, and you won't have to wait for the hotend to heat " "up when you're ready to print." -msgstr "Préchauffez l'extrémité chauffante avant l'impression. Vous pouvez continuer l'ajustement de votre impression pendant qu'elle chauffe, ce qui vous évitera" -" un temps d'attente lorsque vous serez prêt à lancer l'impression." +msgstr "" +"Préchauffez l'extrémité chauffante avant l'impression. Vous pouvez continuer l'ajustement de votre impression pendant qu'elle chauffe, ce qui vous évitera un temps d'attente lorsque vous " +"serez prêt à lancer l'impression." #: /Users/c.lamboo/ultimaker/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:335 msgctxt "@tooltip" @@ -6175,7 +6214,7 @@ msgctxt "@tooltip of G-code command input" msgid "" "Send a custom G-code command to the connected printer. Press 'enter' to send " "the command." -msgstr "Envoyer une commande G-Code personnalisée à l'imprimante connectée. Appuyez sur « Entrée » pour envoyer la commande." +msgstr "Envoyer une commande G-Code personnalisée à l'imprimante connectée. Appuyez sur « Entrée » pour envoyer la commande." #: /Users/c.lamboo/ultimaker/Cura/resources/qml/Cura.qml:250 msgctxt "@label" @@ -6196,7 +6235,7 @@ msgstr "Fermeture de %1" #: /Users/c.lamboo/ultimaker/Cura/resources/qml/Cura.qml:597 msgctxt "@label %1 is the application name" msgid "Are you sure you want to exit %1?" -msgstr "Voulez-vous vraiment quitter %1 ?" +msgstr "Voulez-vous vraiment quitter %1?" #: /Users/c.lamboo/ultimaker/Cura/resources/qml/Cura.qml:740 msgctxt "@window:title" @@ -6214,8 +6253,9 @@ msgid "" "We have found one or more G-Code files within the files you have selected. " "You can only open one G-Code file at a time. If you want to open a G-Code " "file, please just select only one." -msgstr "Nous avons trouvé au moins un fichier G-Code parmi les fichiers que vous avez sélectionné. Vous ne pouvez ouvrir qu'un seul fichier G-Code à la fois. Si" -" vous souhaitez ouvrir un fichier G-Code, veuillez ne sélectionner qu'un seul fichier de ce type." +msgstr "" +"Nous avons trouvé au moins un fichier G-Code parmi les fichiers que vous avez sélectionné. Vous ne pouvez ouvrir qu'un seul fichier G-Code à la fois. Si vous souhaitez ouvrir un fichier G-" +"Code, veuillez ne sélectionner qu'un seul fichier de ce type." #: /Users/c.lamboo/ultimaker/Cura/resources/qml/Cura.qml:829 msgctxt "@title:window" @@ -6233,8 +6273,10 @@ msgid "" "- Add material profiles and plug-ins from the Marketplace\n" "- Back-up and sync your material profiles and plug-ins\n" "- Share ideas and get help from 48,000+ users in the Ultimaker community" -msgstr "- Ajoutez des profils de matériaux et des plug-ins à partir de la Marketplace\n- Sauvegardez et synchronisez vos profils de matériaux et vos plug-ins\n-" -" Partagez vos idées et obtenez l'aide de plus de 48 000 utilisateurs de la communauté Ultimaker" +msgstr "" +"- Ajoutez des profils de matériaux et des plugins à partir de la Marketplace\n" +"- Sauvegardez et synchronisez vos profils de matériaux et vos plugins\n" +"- Partagez vos idées et obtenez l'aide de plus de 48,000 utilisateurs de la communauté Ultimaker" #: /Users/c.lamboo/ultimaker/Cura/resources/qml/Account/GeneralOperations.qml:58 msgctxt "@button" diff --git a/resources/qml/Dialogs/DiscardOrKeepProfileChangesDialog.qml b/resources/qml/Dialogs/DiscardOrKeepProfileChangesDialog.qml index 0b39d84177..0fecb6b662 100644 --- a/resources/qml/Dialogs/DiscardOrKeepProfileChangesDialog.qml +++ b/resources/qml/Dialogs/DiscardOrKeepProfileChangesDialog.qml @@ -56,7 +56,7 @@ UM.Dialog UM.Label { id: infoText - text: catalog.i18nc("@text:window, %1 is a profile name", "You have customized some profile settings. Would you like to Keep these changed settings after switching profiles? Alternatively, you can discard the changes to load the defaults from '%1'.").arg(Cura.MachineManager.activeQualityDisplayNameMap["main"]) + text: catalog.i18nc("@text:window, %1 is a profile name", "You have customized some profile settings. Would you like to Keep these changed settings after switching profiles? Alternatively, you can discard the changes to load the defaults from '%1'.").arg(Cura.MachineManager.activeQualityDisplayNameMainStringParts.join(" - ")) anchors.left: parent.left anchors.right: parent.right wrapMode: Text.WordWrap @@ -83,7 +83,7 @@ UM.Dialog columnHeaders: [ catalog.i18nc("@title:column", "Profile settings"), - Cura.MachineManager.activeQualityDisplayNameMap["main"], + Cura.MachineManager.activeQualityDisplayNameMainStringParts.join(" - "), catalog.i18nc("@title:column", "Current changes") ] model: UM.TableModel diff --git a/resources/qml/PrintSetupSelector/Custom/CustomPrintSetup.qml b/resources/qml/PrintSetupSelector/Custom/CustomPrintSetup.qml index 554b663a9b..e64f211cd1 100644 --- a/resources/qml/PrintSetupSelector/Custom/CustomPrintSetup.qml +++ b/resources/qml/PrintSetupSelector/Custom/CustomPrintSetup.qml @@ -67,7 +67,7 @@ Item UM.Label { id: textLabel - text: Cura.MachineManager.activeQualityDisplayNameMap["main"] + text: Cura.MachineManager.activeQualityDisplayNameMainStringParts.join(" - ") Layout.margins: 0 Layout.maximumWidth: Math.floor(parent.width * 0.7) // Always leave >= 30% for the rest of the row. height: contentHeight @@ -77,7 +77,19 @@ Item UM.Label { - text: activeQualityDetailText() + text: + { + const string_parts = Cura.MachineManager.activeQualityDisplayNameTailStringParts; + if (string_parts.length === 0) + { + return ""; + } + else + { + ` - ${string_parts.join(" - ")}` + } + } + color: UM.Theme.getColor("text_detail") Layout.margins: 0 Layout.fillWidth: true @@ -85,32 +97,6 @@ Item height: contentHeight elide: Text.ElideRight wrapMode: Text.NoWrap - function activeQualityDetailText() - { - var resultMap = Cura.MachineManager.activeQualityDisplayNameMap - var resultSuffix = resultMap["suffix"] - var result = "" - - if (Cura.MachineManager.isActiveQualityExperimental) - { - resultSuffix += " (Experimental)" - } - - if (Cura.MachineManager.isActiveQualitySupported) - { - if (Cura.MachineManager.activeQualityLayerHeight > 0) - { - if (resultSuffix) - { - result += " - " + resultSuffix - } - result += " - " - result += Cura.MachineManager.activeQualityLayerHeight + "mm" - } - } - - return result - } } } diff --git a/resources/qml/PrintSetupSelector/PrintSetupSelectorHeader.qml b/resources/qml/PrintSetupSelector/PrintSetupSelectorHeader.qml index 41e913a2c1..8804e51bb2 100644 --- a/resources/qml/PrintSetupSelector/PrintSetupSelectorHeader.qml +++ b/resources/qml/PrintSetupSelector/PrintSetupSelectorHeader.qml @@ -17,26 +17,8 @@ RowLayout { source: UM.Theme.getIcon("Sliders", "medium") iconSize: UM.Theme.getSize("button_icon").width - text: - { - if (Cura.MachineManager.activeStack) - { - var resultMap = Cura.MachineManager.activeQualityDisplayNameMap - var text = resultMap["main"] - if (resultMap["suffix"]) - { - text += " - " + resultMap["suffix"] - } - if (!Cura.MachineManager.hasNotSupportedQuality) - { - text += " - " + layerHeight.properties.value + "mm" - text += Cura.MachineManager.isActiveQualityExperimental ? " - " + catalog.i18nc("@label", "Experimental") : "" - } - return text - } - return "" - } + text: Cura.MachineManager.activeQualityDisplayNameStringParts.join(" - ") font: UM.Theme.getFont("medium") elide: Text.ElideMiddle wrapMode: Text.NoWrap diff --git a/resources/quality/ultimaker2_plus_connect/um2pc_cpe_0.25_normal.inst.cfg b/resources/quality/ultimaker2_plus_connect/um2pc_cpe_0.25_normal.inst.cfg index e6ba07e333..59183e1226 100644 --- a/resources/quality/ultimaker2_plus_connect/um2pc_cpe_0.25_normal.inst.cfg +++ b/resources/quality/ultimaker2_plus_connect/um2pc_cpe_0.25_normal.inst.cfg @@ -18,5 +18,4 @@ cool_min_layer_time_fan_speed_max = 15 cool_min_speed = 15 infill_sparse_density = 20 speed_print = 30 -top_bottom_thickness = 0.72 -retraction_combing_max_distance = 50 \ No newline at end of file +top_bottom_thickness = 0.72 \ No newline at end of file diff --git a/resources/quality/ultimaker2_plus_connect/um2pc_cpe_0.4_fast.inst.cfg b/resources/quality/ultimaker2_plus_connect/um2pc_cpe_0.4_fast.inst.cfg index ecc275955a..131196e4f2 100644 --- a/resources/quality/ultimaker2_plus_connect/um2pc_cpe_0.4_fast.inst.cfg +++ b/resources/quality/ultimaker2_plus_connect/um2pc_cpe_0.4_fast.inst.cfg @@ -17,7 +17,6 @@ cool_min_layer_time = 3 cool_min_layer_time_fan_speed_max = 15 cool_min_speed = 10 infill_sparse_density = 20 -retraction_combing_max_distance = 50 retraction_prime_speed = =retraction_speed speed_print = 45 speed_travel = 150 diff --git a/resources/quality/ultimaker2_plus_connect/um2pc_cpe_0.4_high.inst.cfg b/resources/quality/ultimaker2_plus_connect/um2pc_cpe_0.4_high.inst.cfg index 04edfcc04e..21e4815242 100644 --- a/resources/quality/ultimaker2_plus_connect/um2pc_cpe_0.4_high.inst.cfg +++ b/resources/quality/ultimaker2_plus_connect/um2pc_cpe_0.4_high.inst.cfg @@ -17,7 +17,6 @@ cool_min_layer_time = 2 cool_min_layer_time_fan_speed_max = 15 cool_min_speed = 15 infill_sparse_density = 20 -retraction_combing_max_distance = 50 retraction_prime_speed = =retraction_speed speed_print = 45 speed_wall = =math.ceil(speed_print * 30 / 45) diff --git a/resources/quality/ultimaker2_plus_connect/um2pc_cpe_0.4_normal.inst.cfg b/resources/quality/ultimaker2_plus_connect/um2pc_cpe_0.4_normal.inst.cfg index 575f34afa5..a5bc52107a 100644 --- a/resources/quality/ultimaker2_plus_connect/um2pc_cpe_0.4_normal.inst.cfg +++ b/resources/quality/ultimaker2_plus_connect/um2pc_cpe_0.4_normal.inst.cfg @@ -17,7 +17,6 @@ cool_min_layer_time = 3 cool_min_layer_time_fan_speed_max = 15 cool_min_speed = 10 infill_sparse_density = 20 -retraction_combing_max_distance = 50 retraction_prime_speed = =retraction_speed speed_print = 45 speed_wall = =math.ceil(speed_print * 30 / 45) diff --git a/resources/quality/ultimaker2_plus_connect/um2pc_cpe_0.6_normal.inst.cfg b/resources/quality/ultimaker2_plus_connect/um2pc_cpe_0.6_normal.inst.cfg index 3bbfcae59a..f9bb6000df 100644 --- a/resources/quality/ultimaker2_plus_connect/um2pc_cpe_0.6_normal.inst.cfg +++ b/resources/quality/ultimaker2_plus_connect/um2pc_cpe_0.6_normal.inst.cfg @@ -17,7 +17,6 @@ cool_min_layer_time = 5 cool_min_layer_time_fan_speed_max = 20 cool_min_speed = 8 infill_sparse_density = 20 -retraction_combing_max_distance = 50 retraction_prime_speed = =retraction_speed speed_print = 40 top_bottom_thickness = 1.2 diff --git a/resources/quality/ultimaker2_plus_connect/um2pc_cpe_0.8_normal.inst.cfg b/resources/quality/ultimaker2_plus_connect/um2pc_cpe_0.8_normal.inst.cfg index b423160845..ab3546eda5 100644 --- a/resources/quality/ultimaker2_plus_connect/um2pc_cpe_0.8_normal.inst.cfg +++ b/resources/quality/ultimaker2_plus_connect/um2pc_cpe_0.8_normal.inst.cfg @@ -18,5 +18,4 @@ cool_min_layer_time_fan_speed_max = 25 cool_min_speed = 8 infill_sparse_density = 20 speed_print = 40 -top_bottom_thickness = 1.2 -retraction_combing_max_distance = 50 \ No newline at end of file +top_bottom_thickness = 1.2 \ No newline at end of file diff --git a/resources/quality/ultimaker2_plus_connect/um2pc_cpep_0.4_draft.inst.cfg b/resources/quality/ultimaker2_plus_connect/um2pc_cpep_0.4_draft.inst.cfg index 1b72899389..1a617d5a7b 100644 --- a/resources/quality/ultimaker2_plus_connect/um2pc_cpep_0.4_draft.inst.cfg +++ b/resources/quality/ultimaker2_plus_connect/um2pc_cpep_0.4_draft.inst.cfg @@ -20,7 +20,6 @@ infill_overlap = =0 if infill_sparse_density > 80 else 5 infill_sparse_density = 20 layer_0_z_overlap = 0.22 raft_airgap = 0.37 -retraction_combing_max_distance = 50 retraction_prime_speed = =retraction_speed speed_print = 25 speed_topbottom = =math.ceil(speed_print * 20 / 25) diff --git a/resources/quality/ultimaker2_plus_connect/um2pc_cpep_0.4_normal.inst.cfg b/resources/quality/ultimaker2_plus_connect/um2pc_cpep_0.4_normal.inst.cfg index 9ca4dec093..e7b4596e32 100644 --- a/resources/quality/ultimaker2_plus_connect/um2pc_cpep_0.4_normal.inst.cfg +++ b/resources/quality/ultimaker2_plus_connect/um2pc_cpep_0.4_normal.inst.cfg @@ -20,7 +20,6 @@ infill_overlap = =0 if infill_sparse_density > 80 else 5 infill_sparse_density = 20 layer_0_z_overlap = 0.22 raft_airgap = 0.37 -retraction_combing_max_distance = 50 retraction_prime_speed = =retraction_speed speed_print = 35 speed_topbottom = =math.ceil(speed_print * 20 / 35) diff --git a/resources/quality/ultimaker2_plus_connect/um2pc_cpep_0.6_draft.inst.cfg b/resources/quality/ultimaker2_plus_connect/um2pc_cpep_0.6_draft.inst.cfg index bdf526c785..d8390ebf5e 100644 --- a/resources/quality/ultimaker2_plus_connect/um2pc_cpep_0.6_draft.inst.cfg +++ b/resources/quality/ultimaker2_plus_connect/um2pc_cpep_0.6_draft.inst.cfg @@ -20,7 +20,6 @@ infill_overlap = =0 if infill_sparse_density > 80 else 5 infill_sparse_density = 20 layer_0_z_overlap = 0.22 raft_airgap = 0.37 -retraction_combing_max_distance = 50 retraction_prime_speed = =retraction_speed speed_print = 25 speed_topbottom = =math.ceil(speed_print * 20 / 25) diff --git a/resources/quality/ultimaker2_plus_connect/um2pc_cpep_0.6_normal.inst.cfg b/resources/quality/ultimaker2_plus_connect/um2pc_cpep_0.6_normal.inst.cfg index f9348f6118..780e81c8ec 100644 --- a/resources/quality/ultimaker2_plus_connect/um2pc_cpep_0.6_normal.inst.cfg +++ b/resources/quality/ultimaker2_plus_connect/um2pc_cpep_0.6_normal.inst.cfg @@ -20,7 +20,6 @@ infill_overlap = =0 if infill_sparse_density > 80 else 5 infill_sparse_density = 20 layer_0_z_overlap = 0.22 raft_airgap = 0.37 -retraction_combing_max_distance = 50 retraction_prime_speed = =retraction_speed speed_print = 35 speed_topbottom = =math.ceil(speed_print * 20 / 35) diff --git a/resources/quality/ultimaker2_plus_connect/um2pc_cpep_0.8_draft.inst.cfg b/resources/quality/ultimaker2_plus_connect/um2pc_cpep_0.8_draft.inst.cfg index a612263cfa..1fcd6241b0 100644 --- a/resources/quality/ultimaker2_plus_connect/um2pc_cpep_0.8_draft.inst.cfg +++ b/resources/quality/ultimaker2_plus_connect/um2pc_cpep_0.8_draft.inst.cfg @@ -27,5 +27,4 @@ speed_wall_x = =speed_print support_angle = 45 support_enable = True support_z_distance = 0.26 -top_bottom_thickness = 1.2 -retraction_combing_max_distance = 50 \ No newline at end of file +top_bottom_thickness = 1.2 \ No newline at end of file diff --git a/resources/quality/ultimaker2_plus_connect/um2pc_cpep_0.8_normal.inst.cfg b/resources/quality/ultimaker2_plus_connect/um2pc_cpep_0.8_normal.inst.cfg index 5bf30209fe..156c0cb434 100644 --- a/resources/quality/ultimaker2_plus_connect/um2pc_cpep_0.8_normal.inst.cfg +++ b/resources/quality/ultimaker2_plus_connect/um2pc_cpep_0.8_normal.inst.cfg @@ -28,4 +28,3 @@ support_angle = 45 support_enable = True support_z_distance = 0.26 top_bottom_thickness = 1.2 -retraction_combing_max_distance = 50 diff --git a/resources/quality/ultimaker2_plus_connect/um2pc_petg_0.25_normal.inst.cfg b/resources/quality/ultimaker2_plus_connect/um2pc_petg_0.25_normal.inst.cfg index dbdc672498..6aaf960862 100644 --- a/resources/quality/ultimaker2_plus_connect/um2pc_petg_0.25_normal.inst.cfg +++ b/resources/quality/ultimaker2_plus_connect/um2pc_petg_0.25_normal.inst.cfg @@ -18,5 +18,4 @@ cool_min_layer_time_fan_speed_max = 25 cool_min_speed = 15 infill_sparse_density = 20 speed_print = 30 -top_bottom_thickness = 0.72 -retraction_combing_max_distance = 8 \ No newline at end of file +top_bottom_thickness = 0.72 \ No newline at end of file diff --git a/resources/quality/ultimaker2_plus_connect/um2pc_petg_0.4_draft.inst.cfg b/resources/quality/ultimaker2_plus_connect/um2pc_petg_0.4_draft.inst.cfg index fc7dec4b93..4880801cc4 100644 --- a/resources/quality/ultimaker2_plus_connect/um2pc_petg_0.4_draft.inst.cfg +++ b/resources/quality/ultimaker2_plus_connect/um2pc_petg_0.4_draft.inst.cfg @@ -24,5 +24,4 @@ top_bottom_thickness = 0.75 speed_wall_0 = =math.ceil(speed_print * 30 / 45) speed_topbottom = =math.ceil(speed_print * 30 / 45) speed_wall_x = =math.ceil(speed_print * 40 / 45) -speed_infill = =math.ceil(speed_print * 45 / 45) -retraction_combing_max_distance = 8 \ No newline at end of file +speed_infill = =math.ceil(speed_print * 45 / 45) \ No newline at end of file diff --git a/resources/quality/ultimaker2_plus_connect/um2pc_petg_0.4_fast.inst.cfg b/resources/quality/ultimaker2_plus_connect/um2pc_petg_0.4_fast.inst.cfg index a14e2fa0e9..242094359e 100644 --- a/resources/quality/ultimaker2_plus_connect/um2pc_petg_0.4_fast.inst.cfg +++ b/resources/quality/ultimaker2_plus_connect/um2pc_petg_0.4_fast.inst.cfg @@ -24,5 +24,4 @@ top_bottom_thickness = 0.75 speed_wall_0 = =math.ceil(speed_print * 30 / 45) speed_topbottom = =math.ceil(speed_print * 30 / 45) speed_wall_x = =math.ceil(speed_print * 40 / 45) -speed_infill = =math.ceil(speed_print * 45 / 45) -retraction_combing_max_distance = 8 \ No newline at end of file +speed_infill = =math.ceil(speed_print * 45 / 45) \ No newline at end of file diff --git a/resources/quality/ultimaker2_plus_connect/um2pc_petg_0.4_normal.inst.cfg b/resources/quality/ultimaker2_plus_connect/um2pc_petg_0.4_normal.inst.cfg index 1daeacf5b1..9eabf0f070 100644 --- a/resources/quality/ultimaker2_plus_connect/um2pc_petg_0.4_normal.inst.cfg +++ b/resources/quality/ultimaker2_plus_connect/um2pc_petg_0.4_normal.inst.cfg @@ -19,5 +19,4 @@ cool_min_speed = 10 infill_sparse_density = 20 speed_print = 45 speed_wall = =math.ceil(speed_print * 30 / 45) -top_bottom_thickness = 0.8 -retraction_combing_max_distance = 8 \ No newline at end of file +top_bottom_thickness = 0.8 \ No newline at end of file diff --git a/resources/quality/ultimaker2_plus_connect/um2pc_petg_0.6_normal.inst.cfg b/resources/quality/ultimaker2_plus_connect/um2pc_petg_0.6_normal.inst.cfg index 7598e7bce6..fa4835b5e0 100644 --- a/resources/quality/ultimaker2_plus_connect/um2pc_petg_0.6_normal.inst.cfg +++ b/resources/quality/ultimaker2_plus_connect/um2pc_petg_0.6_normal.inst.cfg @@ -18,5 +18,4 @@ cool_min_layer_time_fan_speed_max = 20 cool_min_speed = 8 infill_sparse_density = 20 speed_print = 40 -top_bottom_thickness = 1.2 -retraction_combing_max_distance = 8 \ No newline at end of file +top_bottom_thickness = 1.2 \ No newline at end of file diff --git a/resources/quality/ultimaker2_plus_connect/um2pc_petg_0.8_normal.inst.cfg b/resources/quality/ultimaker2_plus_connect/um2pc_petg_0.8_normal.inst.cfg index 17badc67ef..e816088c5e 100644 --- a/resources/quality/ultimaker2_plus_connect/um2pc_petg_0.8_normal.inst.cfg +++ b/resources/quality/ultimaker2_plus_connect/um2pc_petg_0.8_normal.inst.cfg @@ -18,5 +18,4 @@ cool_min_layer_time_fan_speed_max = 25 cool_min_speed = 8 infill_sparse_density = 20 speed_print = 40 -top_bottom_thickness = 1.2 -retraction_combing_max_distance = 8 \ No newline at end of file +top_bottom_thickness = 1.2 \ No newline at end of file diff --git a/resources/quality/ultimaker3/um3_aa0.25_PETG_Normal_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.25_PETG_Normal_Quality.inst.cfg index ce7087bf3a..c9a96ecf1c 100644 --- a/resources/quality/ultimaker3/um3_aa0.25_PETG_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.25_PETG_Normal_Quality.inst.cfg @@ -16,5 +16,4 @@ speed_infill = =math.ceil(speed_print * 40 / 55) speed_topbottom = =math.ceil(speed_print * 30 / 55) top_bottom_thickness = 0.8 material_print_temperature = =default_material_print_temperature - 5 -retraction_combing_max_distance = 8 retraction_combing = all diff --git a/resources/quality/ultimaker3/um3_aa0.4_PETG_Draft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_PETG_Draft_Print.inst.cfg index df43409808..398f4be2a0 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_PETG_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_PETG_Draft_Print.inst.cfg @@ -20,5 +20,4 @@ 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) -retraction_combing_max_distance = 8 retraction_combing = all diff --git a/resources/quality/ultimaker3/um3_aa0.4_PETG_Fast_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_PETG_Fast_Print.inst.cfg index d7c1434f85..292389472c 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_PETG_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_PETG_Fast_Print.inst.cfg @@ -21,5 +21,4 @@ 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) speed_infill = =math.ceil(speed_print * 50 / 60) -retraction_combing_max_distance = 8 retraction_combing = all diff --git a/resources/quality/ultimaker3/um3_aa0.4_PETG_Normal_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_PETG_Normal_Quality.inst.cfg index 22d4a931c4..69bff08818 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_PETG_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_PETG_Normal_Quality.inst.cfg @@ -21,5 +21,4 @@ speed_print = 55 speed_topbottom = =math.ceil(speed_print * 30 / 55) speed_wall = =math.ceil(speed_print * 30 / 55) speed_infill = =math.ceil(speed_print * 45 / 55) -retraction_combing_max_distance = 8 retraction_combing = all diff --git a/resources/quality/ultimaker3/um3_aa0.8_PETG_Draft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_PETG_Draft_Print.inst.cfg index 5e296b117a..caa2516bb4 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_PETG_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_PETG_Draft_Print.inst.cfg @@ -18,5 +18,4 @@ prime_tower_enable = True speed_print = 40 speed_topbottom = =math.ceil(speed_print * 25 / 40) speed_wall = =math.ceil(speed_print * 30 / 40) -retraction_combing_max_distance = 8 retraction_combing = all diff --git a/resources/quality/ultimaker3/um3_aa0.8_PETG_Superdraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_PETG_Superdraft_Print.inst.cfg index 7b203fe360..c36030f0f6 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_PETG_Superdraft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_PETG_Superdraft_Print.inst.cfg @@ -21,5 +21,4 @@ speed_topbottom = =math.ceil(speed_print * 30 / 45) speed_wall = =math.ceil(speed_print * 33 / 45) speed_wall_0 = =math.ceil(speed_wall * 30 / 40) speed_infill = =math.ceil(speed_print * 33 / 45) -retraction_combing_max_distance = 8 retraction_combing = all diff --git a/resources/quality/ultimaker3/um3_aa0.8_PETG_Verydraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_PETG_Verydraft_Print.inst.cfg index 1117ab1a43..0dbd21ea00 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_PETG_Verydraft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_PETG_Verydraft_Print.inst.cfg @@ -19,5 +19,4 @@ prime_tower_enable = True speed_print = 40 speed_topbottom = =math.ceil(speed_print * 25 / 40) speed_wall = =math.ceil(speed_print * 30 / 40) -retraction_combing_max_distance = 8 retraction_combing = all diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.25_CPE_Normal_Quality.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.25_CPE_Normal_Quality.inst.cfg index 5ced8748b1..2c7b1f63f3 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.25_CPE_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.25_CPE_Normal_Quality.inst.cfg @@ -12,7 +12,6 @@ material = generic_cpe variant = AA 0.25 [values] -retraction_combing_max_distance = 50 speed_infill = =math.ceil(speed_print * 40 / 55) speed_topbottom = =math.ceil(speed_print * 30 / 55) top_bottom_thickness = 0.8 diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.25_PETG_Normal_Quality.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.25_PETG_Normal_Quality.inst.cfg index 8b42be13b0..45afd4501a 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.25_PETG_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.25_PETG_Normal_Quality.inst.cfg @@ -13,7 +13,6 @@ variant = AA 0.25 [values] material_print_temperature = =default_material_print_temperature - 5 -retraction_combing_max_distance = 8 speed_infill = =math.ceil(speed_print * 40 / 55) speed_topbottom = =math.ceil(speed_print * 30 / 55) top_bottom_thickness = 0.8 diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_CPEP_Draft_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_CPEP_Draft_Print.inst.cfg index 562023183d..177290c551 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.4_CPEP_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_CPEP_Draft_Print.inst.cfg @@ -23,7 +23,6 @@ material_print_temperature = =default_material_print_temperature + 10 multiple_mesh_overlap = 0 prime_tower_enable = True prime_tower_wipe_enabled = True -retraction_combing_max_distance = 50 retraction_hop = 0.2 retraction_hop_enabled = False retraction_hop_only_when_collides = True diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_CPEP_Fast_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_CPEP_Fast_Print.inst.cfg index 86a955c24a..ebb934c56c 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.4_CPEP_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_CPEP_Fast_Print.inst.cfg @@ -23,7 +23,6 @@ material_print_temperature = =default_material_print_temperature + 10 multiple_mesh_overlap = 0 prime_tower_enable = True prime_tower_wipe_enabled = True -retraction_combing_max_distance = 50 retraction_hop = 0.2 retraction_hop_enabled = False retraction_hop_only_when_collides = True diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_CPEP_High_Quality.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_CPEP_High_Quality.inst.cfg index cbd48442e3..42faffdd88 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.4_CPEP_High_Quality.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_CPEP_High_Quality.inst.cfg @@ -25,7 +25,6 @@ material_print_temperature = =default_material_print_temperature + 2 multiple_mesh_overlap = 0 prime_tower_enable = True prime_tower_wipe_enabled = True -retraction_combing_max_distance = 50 retraction_hop = 0.2 retraction_hop_enabled = False retraction_hop_only_when_collides = True diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_CPEP_Normal_Quality.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_CPEP_Normal_Quality.inst.cfg index f70b6b22bf..bbbf14001b 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.4_CPEP_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_CPEP_Normal_Quality.inst.cfg @@ -25,7 +25,6 @@ material_print_temperature = =default_material_print_temperature + 5 multiple_mesh_overlap = 0 prime_tower_enable = True prime_tower_wipe_enabled = True -retraction_combing_max_distance = 50 retraction_hop = 0.2 retraction_hop_enabled = False retraction_hop_only_when_collides = True diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_CPE_Draft_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_CPE_Draft_Print.inst.cfg index 57ae37e209..7a0115080e 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.4_CPE_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_CPE_Draft_Print.inst.cfg @@ -16,7 +16,6 @@ infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'triangles' material_final_print_temperature = =material_print_temperature - 10 material_initial_print_temperature = =material_print_temperature - 5 material_print_temperature = =default_material_print_temperature + 10 -retraction_combing_max_distance = 50 retraction_prime_speed = =retraction_speed skin_overlap = 20 speed_infill = =math.ceil(speed_print * 50 / 60) diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_CPE_Fast_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_CPE_Fast_Print.inst.cfg index 2becdb2bc2..5759d4d710 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.4_CPE_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_CPE_Fast_Print.inst.cfg @@ -17,7 +17,6 @@ infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'triangles' material_final_print_temperature = =material_print_temperature - 10 material_initial_print_temperature = =material_print_temperature - 5 material_print_temperature = =default_material_print_temperature + 5 -retraction_combing_max_distance = 50 retraction_prime_speed = =retraction_speed speed_infill = =math.ceil(speed_print * 50 / 60) speed_print = 60 diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_CPE_High_Quality.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_CPE_High_Quality.inst.cfg index 4774cea71f..df2df7d58f 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.4_CPE_High_Quality.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_CPE_High_Quality.inst.cfg @@ -19,7 +19,6 @@ machine_nozzle_heat_up_speed = 1.5 material_final_print_temperature = =material_print_temperature - 10 material_initial_print_temperature = =material_print_temperature - 5 material_print_temperature = =default_material_print_temperature - 5 -retraction_combing_max_distance = 50 retraction_prime_speed = =retraction_speed speed_infill = =math.ceil(speed_print * 40 / 50) speed_print = 50 diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_CPE_Normal_Quality.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_CPE_Normal_Quality.inst.cfg index e34a9c943d..5c182298a0 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.4_CPE_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_CPE_Normal_Quality.inst.cfg @@ -17,7 +17,6 @@ machine_nozzle_cool_down_speed = 0.85 machine_nozzle_heat_up_speed = 1.5 material_final_print_temperature = =material_print_temperature - 10 material_initial_print_temperature = =material_print_temperature - 5 -retraction_combing_max_distance = 50 retraction_prime_speed = =retraction_speed speed_infill = =math.ceil(speed_print * 45 / 55) speed_print = 55 diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_PETG_Draft_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_PETG_Draft_Print.inst.cfg index 08e059547d..5630992467 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.4_PETG_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_PETG_Draft_Print.inst.cfg @@ -16,7 +16,6 @@ infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'triangles' material_final_print_temperature = =material_print_temperature - 5 material_initial_print_temperature = =material_print_temperature material_print_temperature = =default_material_print_temperature + 5 -retraction_combing_max_distance = 8 skin_overlap = 20 speed_infill = =math.ceil(speed_print * 50 / 60) speed_print = 60 diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_PETG_Fast_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_PETG_Fast_Print.inst.cfg index 81431a2089..d7a21b7db9 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.4_PETG_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_PETG_Fast_Print.inst.cfg @@ -17,7 +17,6 @@ infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'triangles' material_final_print_temperature = =material_print_temperature - 10 material_initial_print_temperature = =material_print_temperature - 5 material_print_temperature = =default_material_print_temperature -retraction_combing_max_distance = 8 speed_infill = =math.ceil(speed_print * 50 / 60) speed_print = 60 speed_topbottom = =math.ceil(speed_print * 30 / 60) diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_PETG_High_Quality.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_PETG_High_Quality.inst.cfg index 943b720e4d..7dc95765e5 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.4_PETG_High_Quality.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_PETG_High_Quality.inst.cfg @@ -19,7 +19,6 @@ machine_nozzle_heat_up_speed = 1.5 material_final_print_temperature = =material_print_temperature - 15 material_initial_print_temperature = =material_print_temperature - 10 material_print_temperature = =default_material_print_temperature - 10 -retraction_combing_max_distance = 8 speed_infill = =math.ceil(speed_print * 40 / 50) speed_print = 50 speed_topbottom = =math.ceil(speed_print * 30 / 50) diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_PETG_Normal_Quality.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_PETG_Normal_Quality.inst.cfg index c16ac3fb99..0d4448d7c5 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.4_PETG_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_PETG_Normal_Quality.inst.cfg @@ -18,7 +18,6 @@ machine_nozzle_heat_up_speed = 1.5 material_final_print_temperature = =material_print_temperature - 15 material_initial_print_temperature = =material_print_temperature - 10 material_print_temperature = =default_material_print_temperature - 5 -retraction_combing_max_distance = 8 speed_infill = =math.ceil(speed_print * 45 / 55) speed_print = 55 speed_topbottom = =math.ceil(speed_print * 30 / 55) diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.8_CPEP_Fast_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.8_CPEP_Fast_Print.inst.cfg index 16464b6394..a04f4ce184 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.8_CPEP_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.8_CPEP_Fast_Print.inst.cfg @@ -18,7 +18,6 @@ machine_nozzle_cool_down_speed = 0.9 machine_nozzle_heat_up_speed = 1.4 material_print_temperature = =default_material_print_temperature - 10 prime_tower_enable = True -retraction_combing_max_distance = 50 retraction_hop = 0.1 retraction_hop_enabled = False skin_overlap = 0 diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.8_CPEP_Superdraft_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.8_CPEP_Superdraft_Print.inst.cfg index 17bcb153be..8d93a7cc86 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.8_CPEP_Superdraft_Print.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.8_CPEP_Superdraft_Print.inst.cfg @@ -18,7 +18,6 @@ machine_nozzle_cool_down_speed = 0.9 machine_nozzle_heat_up_speed = 1.4 material_print_temperature = =default_material_print_temperature - 5 prime_tower_enable = True -retraction_combing_max_distance = 50 retraction_hop = 0.1 retraction_hop_enabled = False skin_overlap = 0 diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.8_CPEP_Verydraft_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.8_CPEP_Verydraft_Print.inst.cfg index cd22ced2ce..d68a2fa7a5 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.8_CPEP_Verydraft_Print.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.8_CPEP_Verydraft_Print.inst.cfg @@ -18,7 +18,6 @@ machine_nozzle_cool_down_speed = 0.9 machine_nozzle_heat_up_speed = 1.4 material_print_temperature = =default_material_print_temperature - 7 prime_tower_enable = True -retraction_combing_max_distance = 50 retraction_hop = 0.1 retraction_hop_enabled = False skin_overlap = 0 diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.8_CPE_Draft_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.8_CPE_Draft_Print.inst.cfg index c05205a9f2..7672b99659 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.8_CPE_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.8_CPE_Draft_Print.inst.cfg @@ -15,7 +15,6 @@ variant = AA 0.8 brim_width = 15 material_print_temperature = =default_material_print_temperature + 15 prime_tower_enable = True -retraction_combing_max_distance = 50 speed_print = 40 speed_topbottom = =math.ceil(speed_print * 25 / 40) speed_wall = =math.ceil(speed_print * 30 / 40) diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.8_CPE_Superdraft_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.8_CPE_Superdraft_Print.inst.cfg index 8cd5ba4ac2..c5fd2c0955 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.8_CPE_Superdraft_Print.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.8_CPE_Superdraft_Print.inst.cfg @@ -15,7 +15,6 @@ variant = AA 0.8 brim_width = 15 material_print_temperature = =default_material_print_temperature + 20 prime_tower_enable = True -retraction_combing_max_distance = 50 speed_infill = =math.ceil(speed_print * 33 / 45) speed_print = 45 speed_topbottom = =math.ceil(speed_print * 30 / 45) diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.8_CPE_Verydraft_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.8_CPE_Verydraft_Print.inst.cfg index 1d619bf42c..e0b9362e0b 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.8_CPE_Verydraft_Print.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.8_CPE_Verydraft_Print.inst.cfg @@ -15,7 +15,6 @@ variant = AA 0.8 brim_width = 15 material_print_temperature = =default_material_print_temperature + 17 prime_tower_enable = True -retraction_combing_max_distance = 50 speed_print = 40 speed_topbottom = =math.ceil(speed_print * 25 / 40) speed_wall = =math.ceil(speed_print * 30 / 40) diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.8_PETG_Draft_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.8_PETG_Draft_Print.inst.cfg index d4a1f6c985..b4ff2efe6c 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.8_PETG_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.8_PETG_Draft_Print.inst.cfg @@ -16,7 +16,6 @@ brim_width = 7 cool_fan_speed = 20 material_print_temperature = =default_material_print_temperature - 5 prime_tower_enable = True -retraction_combing_max_distance = 8 speed_print = 40 speed_topbottom = =math.ceil(speed_print * 25 / 40) speed_wall = =math.ceil(speed_print * 30 / 40) diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.8_PETG_Superdraft_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.8_PETG_Superdraft_Print.inst.cfg index 127166bd62..437c9a8a1e 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.8_PETG_Superdraft_Print.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.8_PETG_Superdraft_Print.inst.cfg @@ -16,7 +16,6 @@ brim_width = 7 cool_fan_speed = 20 material_print_temperature = =default_material_print_temperature - 5 prime_tower_enable = True -retraction_combing_max_distance = 8 speed_infill = =math.ceil(speed_print * 33 / 45) speed_print = 45 speed_topbottom = =math.ceil(speed_print * 30 / 45) diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.8_PETG_Verydraft_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.8_PETG_Verydraft_Print.inst.cfg index ca5a5b8404..3c115ddec1 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.8_PETG_Verydraft_Print.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.8_PETG_Verydraft_Print.inst.cfg @@ -16,7 +16,6 @@ brim_width = 7 cool_fan_speed = 20 material_print_temperature = =default_material_print_temperature - 5 prime_tower_enable = True -retraction_combing_max_distance = 8 speed_print = 40 speed_topbottom = =math.ceil(speed_print * 25 / 40) speed_wall = =math.ceil(speed_print * 30 / 40) diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.25_CPE_Normal_Quality.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.25_CPE_Normal_Quality.inst.cfg index f895450c0a..5220dc917c 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.25_CPE_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.25_CPE_Normal_Quality.inst.cfg @@ -12,7 +12,6 @@ material = generic_cpe variant = AA 0.25 [values] -retraction_combing_max_distance = 50 speed_infill = =math.ceil(speed_print * 40 / 55) speed_topbottom = =math.ceil(speed_print * 30 / 55) top_bottom_thickness = 0.8 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.25_PETG_Normal_Quality.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.25_PETG_Normal_Quality.inst.cfg index afd987af02..3f99451398 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.25_PETG_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.25_PETG_Normal_Quality.inst.cfg @@ -13,7 +13,6 @@ variant = AA 0.25 [values] material_print_temperature = =default_material_print_temperature - 5 -retraction_combing_max_distance = 8 speed_infill = =math.ceil(speed_print * 40 / 55) speed_topbottom = =math.ceil(speed_print * 30 / 55) top_bottom_thickness = 0.8 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_CPEP_Draft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_CPEP_Draft_Print.inst.cfg index 757c495559..6a7089ebe5 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_CPEP_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_CPEP_Draft_Print.inst.cfg @@ -23,7 +23,6 @@ material_print_temperature = =default_material_print_temperature + 10 multiple_mesh_overlap = 0 prime_tower_enable = True prime_tower_wipe_enabled = True -retraction_combing_max_distance = 50 retraction_hop = 0.2 retraction_hop_enabled = False retraction_hop_only_when_collides = True diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_CPEP_Fast_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_CPEP_Fast_Print.inst.cfg index 5e438c8704..06f2cc19b6 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_CPEP_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_CPEP_Fast_Print.inst.cfg @@ -23,7 +23,6 @@ material_print_temperature = =default_material_print_temperature + 10 multiple_mesh_overlap = 0 prime_tower_enable = True prime_tower_wipe_enabled = True -retraction_combing_max_distance = 50 retraction_hop = 0.2 retraction_hop_enabled = False retraction_hop_only_when_collides = True diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_CPEP_High_Quality.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_CPEP_High_Quality.inst.cfg index 6bcd25a9b9..be93585e5b 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_CPEP_High_Quality.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_CPEP_High_Quality.inst.cfg @@ -25,7 +25,6 @@ material_print_temperature = =default_material_print_temperature + 2 multiple_mesh_overlap = 0 prime_tower_enable = True prime_tower_wipe_enabled = True -retraction_combing_max_distance = 50 retraction_hop = 0.2 retraction_hop_enabled = False retraction_hop_only_when_collides = True diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_CPEP_Normal_Quality.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_CPEP_Normal_Quality.inst.cfg index cc08c9d5d6..1dce2eff05 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_CPEP_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_CPEP_Normal_Quality.inst.cfg @@ -25,7 +25,6 @@ material_print_temperature = =default_material_print_temperature + 5 multiple_mesh_overlap = 0 prime_tower_enable = True prime_tower_wipe_enabled = True -retraction_combing_max_distance = 50 retraction_hop = 0.2 retraction_hop_enabled = False retraction_hop_only_when_collides = True diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_CPE_Draft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_CPE_Draft_Print.inst.cfg index b1f0be1594..b961ede473 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_CPE_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_CPE_Draft_Print.inst.cfg @@ -16,7 +16,6 @@ infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'triangles' material_final_print_temperature = =material_print_temperature - 10 material_initial_print_temperature = =material_print_temperature - 5 material_print_temperature = =default_material_print_temperature + 10 -retraction_combing_max_distance = 50 retraction_prime_speed = =retraction_speed skin_overlap = 20 speed_infill = =math.ceil(speed_print * 50 / 60) diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_CPE_Fast_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_CPE_Fast_Print.inst.cfg index e34aa7fd24..cf0eab0fca 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_CPE_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_CPE_Fast_Print.inst.cfg @@ -17,7 +17,6 @@ infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'triangles' material_final_print_temperature = =material_print_temperature - 10 material_initial_print_temperature = =material_print_temperature - 5 material_print_temperature = =default_material_print_temperature + 5 -retraction_combing_max_distance = 50 retraction_prime_speed = =retraction_speed speed_infill = =math.ceil(speed_print * 50 / 60) speed_print = 60 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_CPE_High_Quality.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_CPE_High_Quality.inst.cfg index 270b03521a..68a04f4f61 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_CPE_High_Quality.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_CPE_High_Quality.inst.cfg @@ -19,7 +19,6 @@ machine_nozzle_heat_up_speed = 1.5 material_final_print_temperature = =material_print_temperature - 10 material_initial_print_temperature = =material_print_temperature - 5 material_print_temperature = =default_material_print_temperature - 5 -retraction_combing_max_distance = 50 retraction_prime_speed = =retraction_speed speed_infill = =math.ceil(speed_print * 40 / 50) speed_print = 50 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_CPE_Normal_Quality.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_CPE_Normal_Quality.inst.cfg index f7f7979188..3a136fdd40 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_CPE_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_CPE_Normal_Quality.inst.cfg @@ -17,7 +17,6 @@ machine_nozzle_cool_down_speed = 0.85 machine_nozzle_heat_up_speed = 1.5 material_final_print_temperature = =material_print_temperature - 10 material_initial_print_temperature = =material_print_temperature - 5 -retraction_combing_max_distance = 50 retraction_prime_speed = =retraction_speed speed_infill = =math.ceil(speed_print * 45 / 55) speed_print = 55 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_PETG_Draft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_PETG_Draft_Print.inst.cfg index f1e55234df..b07d4d37f1 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_PETG_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_PETG_Draft_Print.inst.cfg @@ -16,7 +16,6 @@ infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'triangles' material_final_print_temperature = =material_print_temperature - 5 material_initial_print_temperature = =material_print_temperature material_print_temperature = =default_material_print_temperature + 5 -retraction_combing_max_distance = 8 skin_overlap = 20 speed_infill = =math.ceil(speed_print * 50 / 60) speed_print = 60 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_PETG_Fast_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_PETG_Fast_Print.inst.cfg index bdb4e78d6a..97b6d52fa8 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_PETG_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_PETG_Fast_Print.inst.cfg @@ -17,7 +17,6 @@ infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'triangles' material_final_print_temperature = =material_print_temperature - 10 material_initial_print_temperature = =material_print_temperature - 5 material_print_temperature = =default_material_print_temperature -retraction_combing_max_distance = 8 speed_infill = =math.ceil(speed_print * 50 / 60) speed_print = 60 speed_topbottom = =math.ceil(speed_print * 30 / 60) diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_PETG_High_Quality.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_PETG_High_Quality.inst.cfg index 58ddfca383..118dbded28 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_PETG_High_Quality.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_PETG_High_Quality.inst.cfg @@ -19,7 +19,6 @@ machine_nozzle_heat_up_speed = 1.5 material_final_print_temperature = =material_print_temperature - 15 material_initial_print_temperature = =material_print_temperature - 10 material_print_temperature = =default_material_print_temperature - 10 -retraction_combing_max_distance = 8 speed_infill = =math.ceil(speed_print * 40 / 50) speed_print = 50 speed_topbottom = =math.ceil(speed_print * 30 / 50) diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_PETG_Normal_Quality.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_PETG_Normal_Quality.inst.cfg index 5a9addabb1..20c4c73716 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_PETG_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_PETG_Normal_Quality.inst.cfg @@ -18,7 +18,6 @@ machine_nozzle_heat_up_speed = 1.5 material_final_print_temperature = =material_print_temperature - 15 material_initial_print_temperature = =material_print_temperature - 10 material_print_temperature = =default_material_print_temperature - 5 -retraction_combing_max_distance = 8 speed_infill = =math.ceil(speed_print * 45 / 55) speed_print = 55 speed_topbottom = =math.ceil(speed_print * 30 / 55) diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_CPEP_Fast_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_CPEP_Fast_Print.inst.cfg index 9f7101546f..e014c6ae90 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_CPEP_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_CPEP_Fast_Print.inst.cfg @@ -18,7 +18,6 @@ machine_nozzle_cool_down_speed = 0.9 machine_nozzle_heat_up_speed = 1.4 material_print_temperature = =default_material_print_temperature - 10 prime_tower_enable = True -retraction_combing_max_distance = 50 retraction_hop = 0.1 retraction_hop_enabled = False skin_overlap = 0 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_CPEP_Superdraft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_CPEP_Superdraft_Print.inst.cfg index c342e4d2f7..a4e265c4cf 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_CPEP_Superdraft_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_CPEP_Superdraft_Print.inst.cfg @@ -18,7 +18,6 @@ machine_nozzle_cool_down_speed = 0.9 machine_nozzle_heat_up_speed = 1.4 material_print_temperature = =default_material_print_temperature - 5 prime_tower_enable = True -retraction_combing_max_distance = 50 retraction_hop = 0.1 retraction_hop_enabled = False skin_overlap = 0 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_CPEP_Verydraft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_CPEP_Verydraft_Print.inst.cfg index cf0b8da5b7..c27a37dafb 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_CPEP_Verydraft_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_CPEP_Verydraft_Print.inst.cfg @@ -18,7 +18,6 @@ machine_nozzle_cool_down_speed = 0.9 machine_nozzle_heat_up_speed = 1.4 material_print_temperature = =default_material_print_temperature - 7 prime_tower_enable = True -retraction_combing_max_distance = 50 retraction_hop = 0.1 retraction_hop_enabled = False skin_overlap = 0 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_CPE_Draft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_CPE_Draft_Print.inst.cfg index 19f7e7be37..d10b520869 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_CPE_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_CPE_Draft_Print.inst.cfg @@ -15,7 +15,6 @@ variant = AA 0.8 brim_width = 15 material_print_temperature = =default_material_print_temperature + 15 prime_tower_enable = True -retraction_combing_max_distance = 50 speed_print = 40 speed_topbottom = =math.ceil(speed_print * 25 / 40) speed_wall = =math.ceil(speed_print * 30 / 40) diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_CPE_Superdraft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_CPE_Superdraft_Print.inst.cfg index d15f1a7c84..4745f45d52 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_CPE_Superdraft_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_CPE_Superdraft_Print.inst.cfg @@ -15,7 +15,6 @@ variant = AA 0.8 brim_width = 15 material_print_temperature = =default_material_print_temperature + 20 prime_tower_enable = True -retraction_combing_max_distance = 50 speed_infill = =math.ceil(speed_print * 33 / 45) speed_print = 45 speed_topbottom = =math.ceil(speed_print * 30 / 45) diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_CPE_Verydraft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_CPE_Verydraft_Print.inst.cfg index 721d0a8752..3e2317aea2 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_CPE_Verydraft_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_CPE_Verydraft_Print.inst.cfg @@ -15,7 +15,6 @@ variant = AA 0.8 brim_width = 15 material_print_temperature = =default_material_print_temperature + 17 prime_tower_enable = True -retraction_combing_max_distance = 50 speed_print = 40 speed_topbottom = =math.ceil(speed_print * 25 / 40) speed_wall = =math.ceil(speed_print * 30 / 40) diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_PETG_Draft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_PETG_Draft_Print.inst.cfg index c9dc99154d..c38b26a764 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_PETG_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_PETG_Draft_Print.inst.cfg @@ -16,7 +16,6 @@ brim_width = 7 cool_fan_speed = 20 material_print_temperature = =default_material_print_temperature - 5 prime_tower_enable = True -retraction_combing_max_distance = 8 speed_print = 40 speed_topbottom = =math.ceil(speed_print * 25 / 40) speed_wall = =math.ceil(speed_print * 30 / 40) diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_PETG_Superdraft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_PETG_Superdraft_Print.inst.cfg index 67bbef5ac0..2c627b32ca 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_PETG_Superdraft_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_PETG_Superdraft_Print.inst.cfg @@ -16,7 +16,6 @@ brim_width = 7 cool_fan_speed = 20 material_print_temperature = =default_material_print_temperature - 5 prime_tower_enable = True -retraction_combing_max_distance = 8 speed_infill = =math.ceil(speed_print * 33 / 45) speed_print = 45 speed_topbottom = =math.ceil(speed_print * 30 / 45) diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_PETG_Verydraft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_PETG_Verydraft_Print.inst.cfg index e25a61b38a..036943bba7 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_PETG_Verydraft_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_PETG_Verydraft_Print.inst.cfg @@ -16,7 +16,6 @@ brim_width = 7 cool_fan_speed = 20 material_print_temperature = =default_material_print_temperature - 5 prime_tower_enable = True -retraction_combing_max_distance = 8 speed_print = 40 speed_topbottom = =math.ceil(speed_print * 25 / 40) speed_wall = =math.ceil(speed_print * 30 / 40)