mirror of
https://git.mirrors.martin98.com/https://github.com/Ultimaker/Cura
synced 2025-08-14 19:05:54 +08:00
Merge branch 'printer_linter' into printer_linter_pr_review
This commit is contained in:
commit
ae6fdfa34f
45
.github/workflows/printer-linter-format.yml
vendored
Normal file
45
.github/workflows/printer-linter-format.yml
vendored
Normal file
@ -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"
|
@ -9,6 +9,7 @@ format:
|
|||||||
format-definition-paired-coordinate-array: true
|
format-definition-paired-coordinate-array: true
|
||||||
format-definition-sort-keys: true
|
format-definition-sort-keys: true
|
||||||
format-definition-indent: 4
|
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-space-around-delimiters: true
|
||||||
format-profile-sort-keys: true
|
format-profile-sort-keys: true
|
||||||
diagnostic-mesh-file-size: 1200000
|
diagnostic-mesh-file-size: 1200000
|
48
cura/Settings/ActiveQuality.py
Normal file
48
cura/Settings/ActiveQuality.py
Normal file
@ -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()
|
@ -40,6 +40,7 @@ from cura.Settings.cura_empty_instance_containers import (empty_definition_chang
|
|||||||
empty_material_container, empty_quality_container,
|
empty_material_container, empty_quality_container,
|
||||||
empty_quality_changes_container, empty_intent_container)
|
empty_quality_changes_container, empty_intent_container)
|
||||||
from cura.UltimakerCloud.UltimakerCloudConstants import META_UM_LINKED_TO_ACCOUNT
|
from cura.UltimakerCloud.UltimakerCloudConstants import META_UM_LINKED_TO_ACCOUNT
|
||||||
|
from .ActiveQuality import ActiveQuality
|
||||||
|
|
||||||
from .CuraStackBuilder import CuraStackBuilder
|
from .CuraStackBuilder import CuraStackBuilder
|
||||||
|
|
||||||
@ -1631,33 +1632,31 @@ class MachineManager(QObject):
|
|||||||
# Examples:
|
# Examples:
|
||||||
# - "my_profile - Fine" (only based on a default quality, no intent involved)
|
# - "my_profile - Fine" (only based on a default quality, no intent involved)
|
||||||
# - "my_profile - Engineering - Fine" (based on an intent)
|
# - "my_profile - Engineering - Fine" (based on an intent)
|
||||||
@pyqtProperty("QVariantMap", notify = activeQualityDisplayNameChanged)
|
@pyqtProperty("QList<QString>", notify = activeQualityDisplayNameChanged)
|
||||||
def activeQualityDisplayNameMap(self) -> Dict[str, str]:
|
def activeQualityDisplayNameStringParts(self) -> List[str]:
|
||||||
|
return self.activeQualityDisplayNameMap().getStringParts()
|
||||||
|
|
||||||
|
@pyqtProperty("QList<QString>", notify = activeQualityDisplayNameChanged)
|
||||||
|
def activeQualityDisplayNameMainStringParts(self) -> List[str]:
|
||||||
|
return self.activeQualityDisplayNameMap().getMainStringParts()
|
||||||
|
|
||||||
|
@pyqtProperty("QList<QString>", notify = activeQualityDisplayNameChanged)
|
||||||
|
def activeQualityDisplayNameTailStringParts(self) -> List[str]:
|
||||||
|
return self.activeQualityDisplayNameMap().getTailStringParts()
|
||||||
|
|
||||||
|
def activeQualityDisplayNameMap(self) -> ActiveQuality:
|
||||||
global_stack = self._application.getGlobalContainerStack()
|
global_stack = self._application.getGlobalContainerStack()
|
||||||
if global_stack is None:
|
if global_stack is None:
|
||||||
return {"main": "",
|
return ActiveQuality()
|
||||||
"suffix": ""}
|
|
||||||
|
|
||||||
display_name = global_stack.quality.getName()
|
return ActiveQuality(
|
||||||
|
profile = global_stack.quality.getName(),
|
||||||
intent_category = self.activeIntentCategory
|
intent_category = self.activeIntentCategory,
|
||||||
if intent_category != "default":
|
intent_name = IntentCategoryModel.translation(self.activeIntentCategory, "name", self.activeIntentCategory.title()),
|
||||||
intent_display_name = IntentCategoryModel.translation(intent_category,
|
custom_profile = self.activeQualityOrQualityChangesName if global_stack.qualityChanges is not empty_quality_changes_container else None,
|
||||||
"name",
|
layer_height = self.activeQualityLayerHeight if self.isActiveQualitySupported else None,
|
||||||
intent_category.title())
|
is_experimental = self.isActiveQualityExperimental and self.isActiveQualitySupported
|
||||||
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}
|
|
||||||
|
|
||||||
@pyqtSlot(str)
|
@pyqtSlot(str)
|
||||||
def setIntentByCategory(self, intent_category: str) -> None:
|
def setIntentByCategory(self, intent_category: str) -> None:
|
||||||
@ -1776,7 +1775,9 @@ class MachineManager(QObject):
|
|||||||
@pyqtProperty(bool, notify = activeQualityGroupChanged)
|
@pyqtProperty(bool, notify = activeQualityGroupChanged)
|
||||||
def hasNotSupportedQuality(self) -> bool:
|
def hasNotSupportedQuality(self) -> bool:
|
||||||
global_container_stack = self._application.getGlobalContainerStack()
|
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)
|
@pyqtProperty(bool, notify = activeQualityGroupChanged)
|
||||||
def isActiveQualityCustom(self) -> bool:
|
def isActiveQualityCustom(self) -> bool:
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
# Copyright (c) 2022 Ultimaker B.V.
|
# Copyright (c) 2022 Ultimaker B.V.
|
||||||
# Cura is released under the terms of the LGPLv3 or higher.
|
# Cura is released under the terms of the LGPLv3 or higher.
|
||||||
import json
|
import json
|
||||||
|
from dataclasses import asdict
|
||||||
from typing import cast, List, Dict
|
from typing import cast, List, Dict
|
||||||
|
|
||||||
from Charon.VirtualFile import VirtualFile # To open UFP files.
|
from Charon.VirtualFile import VirtualFile # To open UFP files.
|
||||||
@ -225,8 +226,7 @@ class UFPWriter(MeshWriter):
|
|||||||
"changes": {},
|
"changes": {},
|
||||||
"all_settings": {},
|
"all_settings": {},
|
||||||
},
|
},
|
||||||
"intent": machine_manager.activeIntentCategory,
|
"quality": asdict(machine_manager.activeQualityDisplayNameMap()),
|
||||||
"quality": machine_manager.activeQualityOrQualityChangesName,
|
|
||||||
}
|
}
|
||||||
|
|
||||||
global_stack = cast(GlobalStack, Application.getInstance().getGlobalContainerStack())
|
global_stack = cast(GlobalStack, Application.getInstance().getGlobalContainerStack())
|
||||||
|
@ -1125,21 +1125,28 @@ class XmlMaterialProfile(InstanceContainer):
|
|||||||
id_list = list(id_list)
|
id_list = list(id_list)
|
||||||
return id_list
|
return id_list
|
||||||
|
|
||||||
|
__product_to_id_map: Optional[Dict[str, List[str]]] = None
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def getProductIdMap(cls) -> Dict[str, List[str]]:
|
def getProductIdMap(cls) -> Dict[str, List[str]]:
|
||||||
"""Gets a mapping from product names in the XML files to their definition IDs.
|
"""Gets a mapping from product names in the XML files to their definition IDs.
|
||||||
|
|
||||||
This loads the mapping from a file.
|
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"))
|
plugin_path = cast(str, PluginRegistry.getInstance().getPluginPath("XmlMaterialProfile"))
|
||||||
product_to_id_file = os.path.join(plugin_path, "product_to_id.json")
|
product_to_id_file = os.path.join(plugin_path, "product_to_id.json")
|
||||||
with open(product_to_id_file, encoding = "utf-8") as f:
|
with open(product_to_id_file, encoding = "utf-8") as f:
|
||||||
product_to_id_map = json.load(f)
|
contents = ""
|
||||||
product_to_id_map = {key: [value] for key, value in product_to_id_map.items()}
|
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.
|
#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.
|
#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
|
@staticmethod
|
||||||
def _parseCompatibleValue(value: str):
|
def _parseCompatibleValue(value: str):
|
||||||
|
@ -1,14 +1,11 @@
|
|||||||
{
|
{
|
||||||
"Ultimaker 2": "ultimaker2",
|
"Ultimaker #": "ultimaker#",
|
||||||
"Ultimaker 2 Extended": "ultimaker2_extended",
|
"Ultimaker # Extended": "ultimaker#_extended",
|
||||||
"Ultimaker 2 Extended+": "ultimaker2_extended_plus",
|
"Ultimaker # Extended+": "ultimaker#_extended_plus",
|
||||||
"Ultimaker 2 Go": "ultimaker2_go",
|
"Ultimaker # Go": "ultimaker#_go",
|
||||||
"Ultimaker 2+": "ultimaker2_plus",
|
"Ultimaker #+": "ultimaker#_plus",
|
||||||
"Ultimaker 2+ Connect": "ultimaker2_plus_connect",
|
"Ultimaker #+ Connect": "ultimaker#_plus_connect",
|
||||||
"Ultimaker 3": "ultimaker3",
|
"Ultimaker S#": "ultimaker_s#",
|
||||||
"Ultimaker 3 Extended": "ultimaker3_extended",
|
|
||||||
"Ultimaker S3": "ultimaker_s3",
|
|
||||||
"Ultimaker S5": "ultimaker_s5",
|
|
||||||
"Ultimaker Original": "ultimaker_original",
|
"Ultimaker Original": "ultimaker_original",
|
||||||
"Ultimaker Original+": "ultimaker_original_plus",
|
"Ultimaker Original+": "ultimaker_original_plus",
|
||||||
"Ultimaker Original Dual Extrusion": "ultimaker_original_dual",
|
"Ultimaker Original Dual Extrusion": "ultimaker_original_dual",
|
||||||
|
33
printer-linter/README.md
Normal file
33
printer-linter/README.md
Normal file
@ -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
|
||||||
|
|
@ -1,7 +1,4 @@
|
|||||||
from .defintion import Definition
|
|
||||||
from .diagnostic import Diagnostic
|
from .diagnostic import Diagnostic
|
||||||
from .factory import create
|
from .factory import getLinter
|
||||||
from .meshes import Meshes
|
|
||||||
from .profile import Profile
|
|
||||||
|
|
||||||
__all__ = ["Profile", "Definition", "Meshes", "Diagnostic", "create"]
|
__all__ = ["Diagnostic", "getLinter"]
|
||||||
|
@ -1,5 +1,20 @@
|
|||||||
|
from pathlib import Path
|
||||||
|
from typing import Optional, List, Dict, Any
|
||||||
|
|
||||||
|
from .replacement import Replacement
|
||||||
|
|
||||||
|
|
||||||
class Diagnostic:
|
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.file = file
|
||||||
self.diagnostic_name = diagnostic_name
|
self.diagnostic_name = diagnostic_name
|
||||||
self.message = message
|
self.message = message
|
||||||
@ -7,14 +22,13 @@ class Diagnostic:
|
|||||||
self.level = level
|
self.level = level
|
||||||
self.replacements = replacements
|
self.replacements = replacements
|
||||||
|
|
||||||
def toDict(self):
|
def toDict(self) -> Dict[str, Any]:
|
||||||
diagnostic_dict = {"DiagnosticName": self.diagnostic_name,
|
return {"DiagnosticName": self.diagnostic_name,
|
||||||
"DiagnosticMessage": {
|
"DiagnosticMessage": {
|
||||||
"Message": self.message,
|
"Message": self.message,
|
||||||
"FilePath": self.file.as_posix(),
|
"FilePath": self.file.as_posix(),
|
||||||
"FileOffset": self.offset,
|
"FileOffset": self.offset,
|
||||||
"Replacements": [] if self.replacements is None else [r.toDict() for r in self.replacements],
|
"Replacements": [] if self.replacements is None else [r.toDict() for r in self.replacements],
|
||||||
},
|
},
|
||||||
"Level": self.level
|
"Level": self.level
|
||||||
}
|
}
|
||||||
return diagnostic_dict
|
|
||||||
|
@ -1,17 +1,26 @@
|
|||||||
from .profile import Profile
|
from pathlib import Path
|
||||||
from .defintion import Definition
|
from typing import Optional
|
||||||
from .meshes import Meshes
|
|
||||||
|
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():
|
if not file.exists():
|
||||||
return None
|
return None
|
||||||
|
|
||||||
if ".inst" in file.suffixes and ".cfg" in file.suffixes:
|
if ".inst" in file.suffixes and ".cfg" in file.suffixes:
|
||||||
return Profile(file, settings)
|
return Profile(file, settings)
|
||||||
|
|
||||||
if ".def" in file.suffixes and ".json" in file.suffixes:
|
if ".def" in file.suffixes and ".json" in file.suffixes:
|
||||||
if file.stem in ("fdmprinter.def", "fdmextruder.def"):
|
if file.stem in ("fdmprinter.def", "fdmextruder.def"):
|
||||||
return None
|
return None
|
||||||
return Definition(file, settings)
|
return Definition(file, settings)
|
||||||
|
|
||||||
if file.parent.stem == "meshes":
|
if file.parent.stem == "meshes":
|
||||||
return Meshes(file, settings)
|
return Meshes(file, settings)
|
||||||
return None
|
|
||||||
|
return None
|
||||||
|
4
printer-linter/src/printerlinter/formatters/__init__.py
Normal file
4
printer-linter/src/printerlinter/formatters/__init__.py
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
from .def_json_formatter import DefJsonFormatter
|
||||||
|
from .inst_cfg_formatter import InstCfgFormatter
|
||||||
|
|
||||||
|
__all__ = ["DefJsonFormatter", "InstCfgFormatter"]
|
@ -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])))
|
16
printer-linter/src/printerlinter/formatters/formatter.py
Normal file
16
printer-linter/src/printerlinter/formatters/formatter.py
Normal file
@ -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
|
@ -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))
|
6
printer-linter/src/printerlinter/linters/__init__.py
Normal file
6
printer-linter/src/printerlinter/linters/__init__.py
Normal file
@ -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"]
|
@ -1,26 +1,23 @@
|
|||||||
import json
|
import json
|
||||||
import re
|
import re
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
|
from typing import Iterator
|
||||||
|
|
||||||
from .diagnostic import Diagnostic
|
from ..diagnostic import Diagnostic
|
||||||
from .replacement import Replacement
|
from .linter import Linter
|
||||||
|
from ..replacement import Replacement
|
||||||
|
|
||||||
|
|
||||||
class Definition:
|
class Definition(Linter):
|
||||||
def __init__(self, file, settings):
|
""" Finds issues in definition files, such as overriding default parameters """
|
||||||
self._settings = settings
|
def __init__(self, file: Path, settings: dict) -> None:
|
||||||
self._file = file
|
super().__init__(file, settings)
|
||||||
self._defs = {}
|
self._definitions = {}
|
||||||
self._getDefs(file)
|
self._loadDefinitionFiles(file)
|
||||||
|
|
||||||
self._content = self._file.read_text()
|
self._content = self._file.read_text()
|
||||||
|
self._loadBasePrinterSettings()
|
||||||
|
|
||||||
settings = {}
|
def check(self) -> Iterator[Diagnostic]:
|
||||||
for k, v in self._defs["fdmprinter"]["settings"].items():
|
|
||||||
self._getSetting(k, v, settings)
|
|
||||||
self._defs["fdmprinter"] = {"overrides": settings}
|
|
||||||
|
|
||||||
def check(self):
|
|
||||||
if self._settings["checks"].get("diagnostic-definition-redundant-override", False):
|
if self._settings["checks"].get("diagnostic-definition-redundant-override", False):
|
||||||
for check in self.checkRedefineOverride():
|
for check in self.checkRedefineOverride():
|
||||||
yield check
|
yield check
|
||||||
@ -32,9 +29,10 @@ class Definition:
|
|||||||
|
|
||||||
yield
|
yield
|
||||||
|
|
||||||
def checkRedefineOverride(self):
|
def checkRedefineOverride(self) -> Iterator[Diagnostic]:
|
||||||
definition_name = list(self._defs.keys())[0]
|
""" Checks if definition file overrides its parents settings with the same value. """
|
||||||
definition = self._defs[definition_name]
|
definition_name = list(self._definitions.keys())[0]
|
||||||
|
definition = self._definitions[definition_name]
|
||||||
if "overrides" in definition and definition_name != "fdmprinter":
|
if "overrides" in definition and definition_name != "fdmprinter":
|
||||||
for key, value_dict in definition["overrides"].items():
|
for key, value_dict in definition["overrides"].items():
|
||||||
is_redefined, value, parent = self._isDefinedInParent(key, value_dict, definition['inherits'])
|
is_redefined, value, parent = self._isDefinedInParent(key, value_dict, definition['inherits'])
|
||||||
@ -54,29 +52,27 @@ class Definition:
|
|||||||
replacement_text = "")]
|
replacement_text = "")]
|
||||||
)
|
)
|
||||||
|
|
||||||
def checkValueOutOfBounds(self):
|
def _loadDefinitionFiles(self, definition_file) -> None:
|
||||||
pass
|
""" 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 not definition_file.exists() or definition_name in self._definitions:
|
||||||
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():
|
|
||||||
return
|
return
|
||||||
self._defs[Path(file.stem).stem] = json.loads(file.read_text())
|
|
||||||
if "inherits" in self._defs[Path(file.stem).stem]:
|
# Load definition file into dictionary
|
||||||
parent_file = file.parent.joinpath(f"{self._defs[Path(file.stem).stem]['inherits']}.def.json")
|
self._definitions[definition_name] = json.loads(definition_file.read_text())
|
||||||
self._getDefs(parent_file)
|
|
||||||
|
# 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):
|
def _isDefinedInParent(self, key, value_dict, inherits_from):
|
||||||
if "overrides" not in self._defs[inherits_from]:
|
if "overrides" not in self._definitions[inherits_from]:
|
||||||
return self._isDefinedInParent(key, value_dict, self._defs[inherits_from]["inherits"])
|
return self._isDefinedInParent(key, value_dict, self._definitions[inherits_from]["inherits"])
|
||||||
|
|
||||||
parent = self._defs[inherits_from]["overrides"]
|
parent = self._definitions[inherits_from]["overrides"]
|
||||||
is_number = self._defs["fdmprinter"]["overrides"][key] in ("float", "int")
|
is_number = self._definitions["fdmprinter"]["overrides"][key] in ("float", "int")
|
||||||
for value in value_dict.values():
|
for value in value_dict.values():
|
||||||
if key in parent:
|
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]
|
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:
|
if "inherits" in parent:
|
||||||
return self._isDefinedInParent(key, value_dict, parent["inherits"])
|
return self._isDefinedInParent(key, value_dict, parent["inherits"])
|
||||||
return False, None, None
|
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}
|
20
printer-linter/src/printerlinter/linters/linter.py
Normal file
20
printer-linter/src/printerlinter/linters/linter.py
Normal file
@ -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
|
@ -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:
|
class Meshes(Linter):
|
||||||
def __init__(self, file, settings):
|
def __init__(self, file: Path, settings: dict) -> None:
|
||||||
self._settings = settings
|
""" Finds issues in model files, such as incorrect file format or too large size """
|
||||||
self._file = file
|
super().__init__(file, settings)
|
||||||
self._max_file_size = self._settings.get("diagnostic-mesh-file-size", 1e6)
|
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):
|
if self._settings["checks"].get("diagnostic-mesh-file-extension", False):
|
||||||
for check in self.checkFileFormat():
|
for check in self.checkFileFormat():
|
||||||
yield check
|
yield check
|
||||||
@ -18,7 +22,8 @@ class Meshes:
|
|||||||
|
|
||||||
yield
|
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"):
|
if self._file.suffix.lower() not in (".3mf", ".obj", ".stl"):
|
||||||
yield Diagnostic(
|
yield Diagnostic(
|
||||||
file = self._file,
|
file = self._file,
|
||||||
@ -29,7 +34,8 @@ class Meshes:
|
|||||||
)
|
)
|
||||||
yield
|
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:
|
if self._file.stat().st_size > self._max_file_size:
|
||||||
yield Diagnostic(
|
yield Diagnostic(
|
||||||
file = self._file,
|
file = self._file,
|
9
printer-linter/src/printerlinter/linters/profile.py
Normal file
9
printer-linter/src/printerlinter/linters/profile.py
Normal file
@ -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
|
@ -1,7 +0,0 @@
|
|||||||
class Profile:
|
|
||||||
def __init__(self, file, settings):
|
|
||||||
self._settings = settings
|
|
||||||
self._file = file
|
|
||||||
|
|
||||||
def check(self):
|
|
||||||
yield
|
|
@ -1,11 +1,20 @@
|
|||||||
|
from pathlib import Path
|
||||||
|
|
||||||
class Replacement:
|
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.file = file
|
||||||
self.offset = offset
|
self.offset = offset
|
||||||
self.length = length
|
self.length = length
|
||||||
self.replacement_text = replacement_text
|
self.replacement_text = replacement_text
|
||||||
|
|
||||||
def toDict(self):
|
def toDict(self) -> dict:
|
||||||
return {"FilePath": self.file.as_posix(),
|
return {"FilePath": self.file.as_posix(),
|
||||||
"Offset": self.offset,
|
"Offset": self.offset,
|
||||||
"Length": self.length,
|
"Length": self.length,
|
||||||
|
@ -1,73 +1,17 @@
|
|||||||
import configparser
|
|
||||||
import json
|
|
||||||
import re
|
|
||||||
from argparse import ArgumentParser
|
from argparse import ArgumentParser
|
||||||
from collections import OrderedDict
|
|
||||||
from os import getcwd
|
from os import getcwd
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
|
from typing import List
|
||||||
|
|
||||||
import yaml
|
import yaml
|
||||||
|
|
||||||
from printerlinter import factory
|
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):
|
def main() -> None:
|
||||||
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():
|
|
||||||
parser = ArgumentParser(
|
parser = ArgumentParser(
|
||||||
description="UltiMaker Cura printer linting, static analysis and formatting of Cura printer definitions and other resources")
|
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")
|
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")
|
parser.add_argument("Files", metavar="F", type=Path, nargs="+", help="Files or directories to format")
|
||||||
|
|
||||||
args = parser.parse_args()
|
args = parser.parse_args()
|
||||||
files = args.Files
|
files = extractFilePaths(args.Files)
|
||||||
setting_path = args.setting
|
setting_path = args.setting
|
||||||
to_format = args.format
|
to_format = args.format
|
||||||
to_fix = args.fix
|
to_fix = args.fix
|
||||||
@ -95,38 +39,78 @@ def main():
|
|||||||
with open(setting_path, "r") as f:
|
with open(setting_path, "r") as f:
|
||||||
settings = yaml.load(f, yaml.FullLoader)
|
settings = yaml.load(f, yaml.FullLoader)
|
||||||
|
|
||||||
|
full_body_check = {"Diagnostics": []}
|
||||||
|
|
||||||
if to_fix or to_diagnose:
|
if to_fix or to_diagnose:
|
||||||
full_body_check = {"Diagnostics": []}
|
|
||||||
for file in files:
|
for file in files:
|
||||||
if file.is_dir():
|
diagnostics = diagnoseIssuesWithFile(file, settings)
|
||||||
for fp in file.rglob("**/*"):
|
full_body_check["Diagnostics"].extend([d.toDict() for d in diagnostics])
|
||||||
examineFile(fp, settings, full_body_check)
|
|
||||||
else:
|
|
||||||
examineFile(file, settings, full_body_check)
|
|
||||||
|
|
||||||
results = yaml.dump(full_body_check, default_flow_style=False, indent=4, width=240)
|
results = yaml.dump(full_body_check, default_flow_style=False, indent=4, width=240)
|
||||||
|
|
||||||
if report:
|
if report:
|
||||||
report.write_text(results)
|
report.write_text(results)
|
||||||
else:
|
else:
|
||||||
print(results)
|
print(results)
|
||||||
|
|
||||||
if to_fix:
|
if to_fix:
|
||||||
for file in files:
|
for file in files:
|
||||||
if file.is_dir():
|
if f"{file.as_posix()}" in full_body_check:
|
||||||
for fp in file.rglob("**/*"):
|
applyFixesToFile(file, settings, full_body_check)
|
||||||
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_format:
|
if to_format:
|
||||||
for file in files:
|
for file in files:
|
||||||
if file.is_dir():
|
applyFormattingToFile(file, settings)
|
||||||
for fp in file.rglob("**/*"):
|
|
||||||
formatFile(fp, settings)
|
|
||||||
else:
|
def diagnoseIssuesWithFile(file: Path, settings: dict) -> List[Diagnostic]:
|
||||||
formatFile(file, settings)
|
""" 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__":
|
if __name__ == "__main__":
|
||||||
|
@ -29,7 +29,7 @@
|
|||||||
"machine_center_is_zero": { "default_value": false },
|
"machine_center_is_zero": { "default_value": false },
|
||||||
"gantry_height": { "value": "0" },
|
"gantry_height": { "value": "0" },
|
||||||
"machine_gcode_flavor": { "default_value": "RepRap (Marlin/Sprinter)" },
|
"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_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 },
|
"machine_max_acceleration_x": { "value": 3000 },
|
||||||
|
@ -86,6 +86,7 @@
|
|||||||
"enabled": false
|
"enabled": false
|
||||||
},
|
},
|
||||||
"retraction_combing": { "value": "'no_outer_surfaces'" },
|
"retraction_combing": { "value": "'no_outer_surfaces'" },
|
||||||
|
"retraction_combing_max_distance": { "value": 15 },
|
||||||
"retraction_count_max": { "value": 25 },
|
"retraction_count_max": { "value": 25 },
|
||||||
"retraction_extrusion_window": { "value": 1 },
|
"retraction_extrusion_window": { "value": 1 },
|
||||||
"roofing_layer_count": { "value": "1" },
|
"roofing_layer_count": { "value": "1" },
|
||||||
|
@ -150,13 +150,13 @@ msgctxt "@label Don't translate the XML tag <filename>!"
|
|||||||
msgid ""
|
msgid ""
|
||||||
"The file <filename>{0}</filename> already exists. Are you sure you want to "
|
"The file <filename>{0}</filename> already exists. Are you sure you want to "
|
||||||
"overwrite it?"
|
"overwrite it?"
|
||||||
msgstr "Le fichier <filename>{0}</filename> existe déjà. Êtes-vous sûr de vouloir le remplacer ?"
|
msgstr "Le fichier <filename>{0}</filename> 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:459
|
||||||
#: /Users/c.lamboo/ultimaker/Cura/cura/Settings/ContainerManager.py:462
|
#: /Users/c.lamboo/ultimaker/Cura/cura/Settings/ContainerManager.py:462
|
||||||
msgctxt "@info:status"
|
msgctxt "@info:status"
|
||||||
msgid "Invalid file URL:"
|
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
|
#: /Users/c.lamboo/ultimaker/Cura/cura/Settings/cura_empty_instance_containers.py:36
|
||||||
msgctxt "@info:not supported profile"
|
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
|
#: /Users/c.lamboo/ultimaker/Cura/cura/Settings/cura_empty_instance_containers.py:55
|
||||||
msgctxt "@info:No intent profile selected"
|
msgctxt "@info:No intent profile selected"
|
||||||
msgid "Default"
|
msgid "Default"
|
||||||
msgstr "Default"
|
msgstr "Défaut"
|
||||||
|
|
||||||
#: /Users/c.lamboo/ultimaker/Cura/cura/Settings/MachineManager.py:745
|
#: /Users/c.lamboo/ultimaker/Cura/cura/Settings/MachineManager.py:745
|
||||||
#: /Users/c.lamboo/ultimaker/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:219
|
#: /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."
|
msgctxt "@info:message Followed by a list of settings."
|
||||||
msgid ""
|
msgid ""
|
||||||
"Settings have been changed to match the current availability of extruders:"
|
"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
|
#: /Users/c.lamboo/ultimaker/Cura/cura/Settings/MachineManager.py:890
|
||||||
msgctxt "@info:title"
|
msgctxt "@info:title"
|
||||||
@ -212,7 +212,7 @@ msgctxt "@info:status Don't translate the XML tag <filename>!"
|
|||||||
msgid ""
|
msgid ""
|
||||||
"Failed to export profile to <filename>{0}</filename>: Writer plugin reported "
|
"Failed to export profile to <filename>{0}</filename>: Writer plugin reported "
|
||||||
"failure."
|
"failure."
|
||||||
msgstr "Échec de l'exportation du profil vers <filename>{0}</filename> : le plug-in du générateur a rapporté une erreur."
|
msgstr "Échec de l'exportation du profil vers <filename>{0}</filename>: le plugin du générateur a rapporté une erreur."
|
||||||
|
|
||||||
#: /Users/c.lamboo/ultimaker/Cura/cura/Settings/CuraContainerRegistry.py:171
|
#: /Users/c.lamboo/ultimaker/Cura/cura/Settings/CuraContainerRegistry.py:171
|
||||||
#, python-brace-format
|
#, python-brace-format
|
||||||
@ -229,7 +229,7 @@ msgstr "L'exportation a réussi"
|
|||||||
#, python-brace-format
|
#, python-brace-format
|
||||||
msgctxt "@info:status Don't translate the XML tags <filename>!"
|
msgctxt "@info:status Don't translate the XML tags <filename>!"
|
||||||
msgid "Failed to import profile from <filename>{0}</filename>: {1}"
|
msgid "Failed to import profile from <filename>{0}</filename>: {1}"
|
||||||
msgstr "Impossible d'importer le profil depuis <filename>{0}</filename> : {1}"
|
msgstr "Impossible d'importer le profil depuis <filename>{0}</filename>: {1}"
|
||||||
|
|
||||||
#: /Users/c.lamboo/ultimaker/Cura/cura/Settings/CuraContainerRegistry.py:209
|
#: /Users/c.lamboo/ultimaker/Cura/cura/Settings/CuraContainerRegistry.py:209
|
||||||
#, python-brace-format
|
#, python-brace-format
|
||||||
@ -248,7 +248,7 @@ msgstr "Aucun profil personnalisé à importer dans le fichier <filename>{0}</fi
|
|||||||
#, python-brace-format
|
#, python-brace-format
|
||||||
msgctxt "@info:status Don't translate the XML tags <filename>!"
|
msgctxt "@info:status Don't translate the XML tags <filename>!"
|
||||||
msgid "Failed to import profile from <filename>{0}</filename>:"
|
msgid "Failed to import profile from <filename>{0}</filename>:"
|
||||||
msgstr "Échec de l'importation du profil depuis le fichier <filename>{0}</filename> :"
|
msgstr "Échec de l'importation du profil depuis le fichier <filename>{0}</filename>:"
|
||||||
|
|
||||||
#: /Users/c.lamboo/ultimaker/Cura/cura/Settings/CuraContainerRegistry.py:252
|
#: /Users/c.lamboo/ultimaker/Cura/cura/Settings/CuraContainerRegistry.py:252
|
||||||
#: /Users/c.lamboo/ultimaker/Cura/cura/Settings/CuraContainerRegistry.py:262
|
#: /Users/c.lamboo/ultimaker/Cura/cura/Settings/CuraContainerRegistry.py:262
|
||||||
@ -309,7 +309,7 @@ msgctxt "@info:status"
|
|||||||
msgid ""
|
msgid ""
|
||||||
"Quality type '{0}' is not compatible with the current active machine "
|
"Quality type '{0}' is not compatible with the current active machine "
|
||||||
"definition '{1}'."
|
"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
|
#: /Users/c.lamboo/ultimaker/Cura/cura/Settings/CuraContainerRegistry.py:488
|
||||||
#, python-brace-format
|
#, python-brace-format
|
||||||
@ -318,8 +318,9 @@ msgid ""
|
|||||||
"Warning: The profile is not visible because its quality type '{0}' is not "
|
"Warning: The profile is not visible because its quality type '{0}' is not "
|
||||||
"available for the current configuration. Switch to a material/nozzle "
|
"available for the current configuration. Switch to a material/nozzle "
|
||||||
"combination that can use this quality type."
|
"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"
|
msgstr ""
|
||||||
" matériau/buse qui peut utiliser ce type de qualité."
|
"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
|
#: /Users/c.lamboo/ultimaker/Cura/cura/MultiplyObjectsJob.py:30
|
||||||
msgctxt "@info:status"
|
msgctxt "@info:status"
|
||||||
@ -477,7 +478,7 @@ msgstr "Pas écrasé"
|
|||||||
#: /Users/c.lamboo/ultimaker/Cura/cura/Machines/Models/IntentSelectionModel.py:61
|
#: /Users/c.lamboo/ultimaker/Cura/cura/Machines/Models/IntentSelectionModel.py:61
|
||||||
msgctxt "@label"
|
msgctxt "@label"
|
||||||
msgid "Default"
|
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/IntentTranslations.py:14
|
||||||
#: /Users/c.lamboo/ultimaker/Cura/cura/Machines/Models/IntentCategoryModel.py:45
|
#: /Users/c.lamboo/ultimaker/Cura/cura/Machines/Models/IntentCategoryModel.py:45
|
||||||
@ -580,7 +581,7 @@ msgstr "Imprimantes préréglées"
|
|||||||
#, python-brace-format
|
#, python-brace-format
|
||||||
msgctxt "@label {0} is the name of a printer that's about to be deleted."
|
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!"
|
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
|
#: /Users/c.lamboo/ultimaker/Cura/cura/Machines/Models/MaterialManagementModel.py:232
|
||||||
msgctxt "@label"
|
msgctxt "@label"
|
||||||
@ -688,7 +689,7 @@ msgstr "Volume d'impression"
|
|||||||
#: /Users/c.lamboo/ultimaker/Cura/cura/Backups/Backup.py:115
|
#: /Users/c.lamboo/ultimaker/Cura/cura/Backups/Backup.py:115
|
||||||
msgctxt "@info:backup_failed"
|
msgctxt "@info:backup_failed"
|
||||||
msgid "Could not create archive from user data directory: {}"
|
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:122
|
||||||
#: /Users/c.lamboo/ultimaker/Cura/cura/Backups/Backup.py:159
|
#: /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
|
#: /Users/c.lamboo/ultimaker/Cura/cura/Backups/Backup.py:158
|
||||||
msgctxt "@info:backup_failed"
|
msgctxt "@info:backup_failed"
|
||||||
msgid "The following error occurred while trying to restore a Cura backup:"
|
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
|
#: /Users/c.lamboo/ultimaker/Cura/cura/CrashHandler.py:107
|
||||||
msgctxt "@title:window"
|
msgctxt "@title:window"
|
||||||
@ -820,25 +821,25 @@ msgstr "OpenGL"
|
|||||||
#: /Users/c.lamboo/ultimaker/Cura/cura/CrashHandler.py:264
|
#: /Users/c.lamboo/ultimaker/Cura/cura/CrashHandler.py:264
|
||||||
msgctxt "@label"
|
msgctxt "@label"
|
||||||
msgid "Not yet initialized"
|
msgid "Not yet initialized"
|
||||||
msgstr "Non ancora inizializzato"
|
msgstr "Pas encore initialisé"
|
||||||
|
|
||||||
#: /Users/c.lamboo/ultimaker/Cura/cura/CrashHandler.py:267
|
#: /Users/c.lamboo/ultimaker/Cura/cura/CrashHandler.py:267
|
||||||
#, python-brace-format
|
#, python-brace-format
|
||||||
msgctxt "@label OpenGL version"
|
msgctxt "@label OpenGL version"
|
||||||
msgid "<li>OpenGL Version: {version}</li>"
|
msgid "<li>OpenGL Version: {version}</li>"
|
||||||
msgstr "<li>Version OpenGL : {version}</li>"
|
msgstr "<li>Version OpenGL: {version}</li>"
|
||||||
|
|
||||||
#: /Users/c.lamboo/ultimaker/Cura/cura/CrashHandler.py:268
|
#: /Users/c.lamboo/ultimaker/Cura/cura/CrashHandler.py:268
|
||||||
#, python-brace-format
|
#, python-brace-format
|
||||||
msgctxt "@label OpenGL vendor"
|
msgctxt "@label OpenGL vendor"
|
||||||
msgid "<li>OpenGL Vendor: {vendor}</li>"
|
msgid "<li>OpenGL Vendor: {vendor}</li>"
|
||||||
msgstr "<li>Revendeur OpenGL : {vendor}</li>"
|
msgstr "<li>Revendeur OpenGL: {vendor}</li>"
|
||||||
|
|
||||||
#: /Users/c.lamboo/ultimaker/Cura/cura/CrashHandler.py:269
|
#: /Users/c.lamboo/ultimaker/Cura/cura/CrashHandler.py:269
|
||||||
#, python-brace-format
|
#, python-brace-format
|
||||||
msgctxt "@label OpenGL renderer"
|
msgctxt "@label OpenGL renderer"
|
||||||
msgid "<li>OpenGL Renderer: {renderer}</li>"
|
msgid "<li>OpenGL Renderer: {renderer}</li>"
|
||||||
msgstr "<li>Moteur de rendu OpenGL : {renderer}</li>"
|
msgstr "<li>Moteur de rendu OpenGL: {renderer}</li>"
|
||||||
|
|
||||||
#: /Users/c.lamboo/ultimaker/Cura/cura/CrashHandler.py:304
|
#: /Users/c.lamboo/ultimaker/Cura/cura/CrashHandler.py:304
|
||||||
msgctxt "@title:groupbox"
|
msgctxt "@title:groupbox"
|
||||||
@ -915,7 +916,7 @@ msgstr "Modifier le G-Code"
|
|||||||
#: /Users/c.lamboo/ultimaker/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:66
|
#: /Users/c.lamboo/ultimaker/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:66
|
||||||
msgctxt "@info:status"
|
msgctxt "@info:status"
|
||||||
msgid "There are no file formats available to write with!"
|
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
|
#: /Users/c.lamboo/ultimaker/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadQueueFullMessage.py:16
|
||||||
msgctxt "@info:status"
|
msgctxt "@info:status"
|
||||||
@ -961,7 +962,7 @@ msgstr[1] "... et {0} autres"
|
|||||||
#: /Users/c.lamboo/ultimaker/Cura/plugins/UM3NetworkPrinting/src/Messages/NewPrinterDetectedMessage.py:57
|
#: /Users/c.lamboo/ultimaker/Cura/plugins/UM3NetworkPrinting/src/Messages/NewPrinterDetectedMessage.py:57
|
||||||
msgctxt "info:status"
|
msgctxt "info:status"
|
||||||
msgid "Printers added from Digital Factory:"
|
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
|
#: /Users/c.lamboo/ultimaker/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadBlockedMessage.py:15
|
||||||
msgctxt "@info:status"
|
msgctxt "@info:status"
|
||||||
@ -986,7 +987,7 @@ msgstr "Votre imprimante <b>{printer_name} </b> pourrait être connectée via le
|
|||||||
#: /Users/c.lamboo/ultimaker/Cura/plugins/UM3NetworkPrinting/src/Messages/CloudFlowMessage.py:26
|
#: /Users/c.lamboo/ultimaker/Cura/plugins/UM3NetworkPrinting/src/Messages/CloudFlowMessage.py:26
|
||||||
msgctxt "@info:title"
|
msgctxt "@info:title"
|
||||||
msgid "Are you ready for cloud printing?"
|
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
|
#: /Users/c.lamboo/ultimaker/Cura/plugins/UM3NetworkPrinting/src/Messages/CloudFlowMessage.py:30
|
||||||
msgctxt "@action"
|
msgctxt "@action"
|
||||||
@ -1060,8 +1061,8 @@ msgstr "Configurer le groupe"
|
|||||||
msgctxt "info:status"
|
msgctxt "info:status"
|
||||||
msgid "This printer is not linked to the Digital Factory:"
|
msgid "This printer is not linked to the Digital Factory:"
|
||||||
msgid_plural "These printers are 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[0] "Cette imprimante n'est pas associée à Digital Factory:"
|
||||||
msgstr[1] "Ces imprimantes ne sont pas associées à 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/Messages/RemovedPrintersMessage.py:22
|
||||||
#: /Users/c.lamboo/ultimaker/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDeviceManager.py:422
|
#: /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
|
#, python-brace-format
|
||||||
msgctxt "@message {printer_name} is replaced with the name of the printer"
|
msgctxt "@message {printer_name} is replaced with the name of the printer"
|
||||||
msgid "Are you sure you want to remove {printer_name} temporarily?"
|
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
|
#: /Users/c.lamboo/ultimaker/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDeviceManager.py:474
|
||||||
msgctxt "@title:window"
|
msgctxt "@title:window"
|
||||||
msgid "Remove printers?"
|
msgid "Remove printers?"
|
||||||
msgstr "Supprimer des imprimantes ?"
|
msgstr "Supprimer des imprimantes?"
|
||||||
|
|
||||||
#: /Users/c.lamboo/ultimaker/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDeviceManager.py:477
|
#: /Users/c.lamboo/ultimaker/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDeviceManager.py:477
|
||||||
#, python-brace-format
|
#, python-brace-format
|
||||||
@ -1196,8 +1197,8 @@ msgid_plural ""
|
|||||||
"You are about to remove {0} printers from Cura. This action cannot be "
|
"You are about to remove {0} printers from Cura. This action cannot be "
|
||||||
"undone.\n"
|
"undone.\n"
|
||||||
"Are you sure you want to continue?"
|
"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[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[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
|
#: /Users/c.lamboo/ultimaker/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDeviceManager.py:484
|
||||||
msgctxt "@label"
|
msgctxt "@label"
|
||||||
@ -1205,7 +1206,7 @@ msgid ""
|
|||||||
"You are about to remove all printers from Cura. This action cannot be "
|
"You are about to remove all printers from Cura. This action cannot be "
|
||||||
"undone.\n"
|
"undone.\n"
|
||||||
"Are you sure you want to continue?"
|
"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
|
#: /Users/c.lamboo/ultimaker/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:276
|
||||||
msgctxt "@action:button"
|
msgctxt "@action:button"
|
||||||
@ -1221,7 +1222,7 @@ msgstr "Suivre l'impression dans Ultimaker Digital Factory"
|
|||||||
#, python-brace-format
|
#, python-brace-format
|
||||||
msgctxt "@error:send"
|
msgctxt "@error:send"
|
||||||
msgid "Unknown error code when uploading print job: {0}"
|
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
|
#: /Users/c.lamboo/ultimaker/Cura/plugins/3MFWriter/__init__.py:28
|
||||||
msgctxt "@item:inlistbox"
|
msgctxt "@item:inlistbox"
|
||||||
@ -1241,7 +1242,7 @@ msgstr "Erreur d'écriture du fichier 3MF."
|
|||||||
#: /Users/c.lamboo/ultimaker/Cura/plugins/3MFWriter/ThreeMFWorkspaceWriter.py:31
|
#: /Users/c.lamboo/ultimaker/Cura/plugins/3MFWriter/ThreeMFWorkspaceWriter.py:31
|
||||||
msgctxt "@error:zip"
|
msgctxt "@error:zip"
|
||||||
msgid "3MF Writer plug-in is corrupt."
|
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
|
#: /Users/c.lamboo/ultimaker/Cura/plugins/3MFWriter/ThreeMFWorkspaceWriter.py:37
|
||||||
msgctxt "@error"
|
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
|
#: /Users/c.lamboo/ultimaker/Cura/plugins/UFPWriter/UFPWriter.py:178
|
||||||
msgctxt "@info:error"
|
msgctxt "@info:error"
|
||||||
msgid "Can't write to UFP file:"
|
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/UFPWriter/__init__.py:28
|
||||||
#: /Users/c.lamboo/ultimaker/Cura/plugins/UFPReader/__init__.py:22
|
#: /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
|
#: /Users/c.lamboo/ultimaker/Cura/plugins/Marketplace/CloudSync/LicenseModel.py:77
|
||||||
msgctxt "@title:window"
|
msgctxt "@title:window"
|
||||||
msgid "Plugin License Agreement"
|
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
|
#: /Users/c.lamboo/ultimaker/Cura/plugins/Marketplace/CloudSync/CloudPackageChecker.py:144
|
||||||
msgctxt "@info:generic"
|
msgctxt "@info:generic"
|
||||||
msgid "Do you want to sync material and software packages with your account?"
|
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/CloudPackageChecker.py:145
|
||||||
#: /Users/c.lamboo/ultimaker/Cura/plugins/Marketplace/CloudSync/DownloadPresenter.py:95
|
#: /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
|
#: /Users/c.lamboo/ultimaker/Cura/plugins/Marketplace/LocalPackageList.py:28
|
||||||
msgctxt "@label"
|
msgctxt "@label"
|
||||||
msgid "Installed Plugins"
|
msgid "Installed Plugins"
|
||||||
msgstr "Plug-ins installés"
|
msgstr "Plugins installés"
|
||||||
|
|
||||||
#: /Users/c.lamboo/ultimaker/Cura/plugins/Marketplace/LocalPackageList.py:29
|
#: /Users/c.lamboo/ultimaker/Cura/plugins/Marketplace/LocalPackageList.py:29
|
||||||
msgctxt "@label"
|
msgctxt "@label"
|
||||||
@ -1486,7 +1487,7 @@ msgstr "Matériaux installés"
|
|||||||
#: /Users/c.lamboo/ultimaker/Cura/plugins/Marketplace/LocalPackageList.py:33
|
#: /Users/c.lamboo/ultimaker/Cura/plugins/Marketplace/LocalPackageList.py:33
|
||||||
msgctxt "@label"
|
msgctxt "@label"
|
||||||
msgid "Bundled Plugins"
|
msgid "Bundled Plugins"
|
||||||
msgstr "Plug-ins groupés"
|
msgstr "Plugins groupés"
|
||||||
|
|
||||||
#: /Users/c.lamboo/ultimaker/Cura/plugins/Marketplace/LocalPackageList.py:34
|
#: /Users/c.lamboo/ultimaker/Cura/plugins/Marketplace/LocalPackageList.py:34
|
||||||
msgctxt "@label"
|
msgctxt "@label"
|
||||||
@ -1639,7 +1640,7 @@ msgctxt "@info:status"
|
|||||||
msgid ""
|
msgid ""
|
||||||
"Unable to slice with the current settings. The following settings have "
|
"Unable to slice with the current settings. The following settings have "
|
||||||
"errors: {0}"
|
"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
|
#: /Users/c.lamboo/ultimaker/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:461
|
||||||
#, python-brace-format
|
#, python-brace-format
|
||||||
@ -1647,7 +1648,7 @@ msgctxt "@info:status"
|
|||||||
msgid ""
|
msgid ""
|
||||||
"Unable to slice due to some per-model settings. The following settings have "
|
"Unable to slice due to some per-model settings. The following settings have "
|
||||||
"errors on one or more models: {error_labels}"
|
"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
|
#: /Users/c.lamboo/ultimaker/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:473
|
||||||
msgctxt "@info:status"
|
msgctxt "@info:status"
|
||||||
@ -1670,8 +1671,11 @@ msgid ""
|
|||||||
"- Fit within the build volume\n"
|
"- Fit within the build volume\n"
|
||||||
"- Are assigned to an enabled extruder\n"
|
"- Are assigned to an enabled extruder\n"
|
||||||
"- Are not all set as modifier meshes"
|
"- 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"
|
msgstr ""
|
||||||
" tous définis comme des mailles de modificateur"
|
"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:52
|
||||||
#: /Users/c.lamboo/ultimaker/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:260
|
#: /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 "
|
"The material used in this project relies on some material definitions not "
|
||||||
"available in Cura, this might produce undesirable print results. We highly "
|
"available in Cura, this might produce undesirable print results. We highly "
|
||||||
"recommend installing the full material package from the Marketplace."
|
"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"
|
msgstr ""
|
||||||
" indesiderati. Si consiglia vivamente di installare il pacchetto completo di materiali dal Marketplace."
|
"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
|
#: /Users/c.lamboo/ultimaker/Cura/plugins/3MFReader/WorkspaceDialog.py:392
|
||||||
msgctxt "@info:title"
|
msgctxt "@info:title"
|
||||||
msgid "Material profiles not installed"
|
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
|
#: /Users/c.lamboo/ultimaker/Cura/plugins/3MFReader/WorkspaceDialog.py:405
|
||||||
msgctxt "@action:button"
|
msgctxt "@action:button"
|
||||||
msgid "Install Materials"
|
msgid "Install Materials"
|
||||||
msgstr "Installa materiali"
|
msgstr "Installer les matériaux"
|
||||||
|
|
||||||
#: /Users/c.lamboo/ultimaker/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:545
|
#: /Users/c.lamboo/ultimaker/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:545
|
||||||
#, python-brace-format
|
#, python-brace-format
|
||||||
@ -1740,7 +1745,7 @@ msgctxt "@info:error Don't translate the XML tags <filename> or <message>!"
|
|||||||
msgid ""
|
msgid ""
|
||||||
"Project file <filename>{0}</filename> is suddenly inaccessible: <message>{1}"
|
"Project file <filename>{0}</filename> is suddenly inaccessible: <message>{1}"
|
||||||
"</message>."
|
"</message>."
|
||||||
msgstr "Le fichier de projet <filename>{0}</filename> est soudainement inaccessible : <message>{1}</message>."
|
msgstr "Le fichier de projet <filename>{0}</filename> est soudainement inaccessible: <message>{1}</message>."
|
||||||
|
|
||||||
#: /Users/c.lamboo/ultimaker/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:651
|
#: /Users/c.lamboo/ultimaker/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:651
|
||||||
#: /Users/c.lamboo/ultimaker/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:659
|
#: /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 <filename> or <message>!"
|
msgctxt "@info:error Don't translate the XML tags <filename> or <message>!"
|
||||||
msgid ""
|
msgid ""
|
||||||
"Project file <filename>{0}</filename> is corrupt: <message>{1}</message>."
|
"Project file <filename>{0}</filename> is corrupt: <message>{1}</message>."
|
||||||
msgstr "Le fichier de projet <filename>{0}</filename> est corrompu : <message>{1}</message>."
|
msgstr "Le fichier de projet <filename>{0}</filename> est corrompu: <message>{1}</message>."
|
||||||
|
|
||||||
#: /Users/c.lamboo/ultimaker/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:723
|
#: /Users/c.lamboo/ultimaker/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:723
|
||||||
#, python-brace-format
|
#, python-brace-format
|
||||||
@ -1791,9 +1796,11 @@ msgid ""
|
|||||||
"p>\n"
|
"p>\n"
|
||||||
"<p><a href=\"https://ultimaker.com/3D-model-assistant\">View print quality "
|
"<p><a href=\"https://ultimaker.com/3D-model-assistant\">View print quality "
|
||||||
"guide</a></p>"
|
"guide</a></p>"
|
||||||
msgstr "<p>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 :</p>\n<p>{model_names}</p>\n<p>Découvrez"
|
msgstr ""
|
||||||
" comment optimiser la qualité et la fiabilité de l'impression.</p>\n<p><a href=\"https://ultimaker.com/3D-model-assistant\">Consultez le guide de qualité"
|
"<p>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:</p>\n"
|
||||||
" d'impression</a></p>"
|
"<p>{model_names}</p>\n"
|
||||||
|
"<p>Découvrez comment optimiser la qualité et la fiabilité de l'impression.</p>\n"
|
||||||
|
"<p><a href=\"https://ultimaker.com/3D-model-assistant\">Consultez le guide de qualité d'impression</a></p>"
|
||||||
|
|
||||||
#: /Users/c.lamboo/ultimaker/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:42
|
#: /Users/c.lamboo/ultimaker/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:42
|
||||||
msgctxt "@item:inmenu"
|
msgctxt "@item:inmenu"
|
||||||
@ -1819,7 +1826,7 @@ msgstr "Connecté via USB"
|
|||||||
msgctxt "@label"
|
msgctxt "@label"
|
||||||
msgid ""
|
msgid ""
|
||||||
"A USB print is in progress, closing Cura will stop this print. Are you sure?"
|
"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
|
#: /Users/c.lamboo/ultimaker/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:135
|
||||||
msgctxt "@message"
|
msgctxt "@message"
|
||||||
@ -1926,8 +1933,9 @@ msgid ""
|
|||||||
"New features or bug-fixes may be available for your {machine_name}! If you "
|
"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 "
|
"haven't done so already, it is recommended to update the firmware on your "
|
||||||
"printer to version {latest_version}."
|
"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é"
|
msgstr ""
|
||||||
" de mettre à jour le micrologiciel de votre imprimante avec la version {latest_version}."
|
"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
|
#: /Users/c.lamboo/ultimaker/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerMessage.py:22
|
||||||
#, python-format
|
#, python-format
|
||||||
@ -2178,9 +2186,9 @@ msgid ""
|
|||||||
"to block more light coming through. For height maps lighter pixels signify "
|
"to block more light coming through. For height maps lighter pixels signify "
|
||||||
"higher terrain, so lighter pixels should correspond to thicker locations in "
|
"higher terrain, so lighter pixels should correspond to thicker locations in "
|
||||||
"the generated 3D model."
|
"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,"
|
msgstr ""
|
||||||
" 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"
|
"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 "
|
||||||
" généré."
|
"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
|
#: /Users/c.lamboo/ultimaker/Cura/plugins/ImageReader/ConfigUI.qml:205
|
||||||
msgctxt "@action:label"
|
msgctxt "@action:label"
|
||||||
@ -2202,8 +2210,8 @@ msgctxt "@info:tooltip"
|
|||||||
msgid ""
|
msgid ""
|
||||||
"For lithophanes a simple logarithmic model for translucency is available. "
|
"For lithophanes a simple logarithmic model for translucency is available. "
|
||||||
"For height maps the pixel values correspond to heights linearly."
|
"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"
|
msgstr ""
|
||||||
" aux hauteurs de façon linéaire."
|
"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
|
#: /Users/c.lamboo/ultimaker/Cura/plugins/ImageReader/ConfigUI.qml:242
|
||||||
msgctxt "@action:label"
|
msgctxt "@action:label"
|
||||||
@ -2216,8 +2224,9 @@ msgid ""
|
|||||||
"The percentage of light penetrating a print with a thickness of 1 "
|
"The percentage of light penetrating a print with a thickness of 1 "
|
||||||
"millimeter. Lowering this value increases the contrast in dark regions and "
|
"millimeter. Lowering this value increases the contrast in dark regions and "
|
||||||
"decreases the contrast in light regions of the image."
|
"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"
|
msgstr ""
|
||||||
" sombres et diminue le contraste dans les régions claires de l'image."
|
"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
|
#: /Users/c.lamboo/ultimaker/Cura/plugins/ImageReader/ConfigUI.qml:274
|
||||||
msgctxt "@action:label"
|
msgctxt "@action:label"
|
||||||
@ -2240,7 +2249,7 @@ msgstr "OK"
|
|||||||
#: /Users/c.lamboo/ultimaker/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:17
|
#: /Users/c.lamboo/ultimaker/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:17
|
||||||
msgctxt "@title:window"
|
msgctxt "@title:window"
|
||||||
msgid "Post Processing Plugin"
|
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
|
#: /Users/c.lamboo/ultimaker/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:57
|
||||||
msgctxt "@label"
|
msgctxt "@label"
|
||||||
@ -2439,8 +2448,8 @@ msgctxt "@info"
|
|||||||
msgid ""
|
msgid ""
|
||||||
"Webcam feeds for cloud printers cannot be viewed from Ultimaker Cura. Click "
|
"Webcam feeds for cloud printers cannot be viewed from Ultimaker Cura. Click "
|
||||||
"\"Manage printer\" to visit Ultimaker Digital Factory and view this webcam."
|
"\"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"
|
msgstr ""
|
||||||
" Digital Factory et voir cette webcam."
|
"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
|
#: /Users/c.lamboo/ultimaker/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:347
|
||||||
msgctxt "@label:status"
|
msgctxt "@label:status"
|
||||||
@ -2507,7 +2516,7 @@ msgstr "Premier disponible"
|
|||||||
#: /Users/c.lamboo/ultimaker/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorStage.qml:117
|
#: /Users/c.lamboo/ultimaker/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorStage.qml:117
|
||||||
msgctxt "@info"
|
msgctxt "@info"
|
||||||
msgid "Monitor your printers from everywhere using Ultimaker Digital Factory"
|
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
|
#: /Users/c.lamboo/ultimaker/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorStage.qml:129
|
||||||
msgctxt "@button"
|
msgctxt "@button"
|
||||||
@ -2527,9 +2536,9 @@ msgid ""
|
|||||||
"your printer to your WIFI network. If you don't connect Cura with your "
|
"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, you can still use a USB drive to transfer g-code files to your "
|
||||||
"printer."
|
"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"
|
msgstr ""
|
||||||
" 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"
|
"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 "
|
||||||
" g-code sur votre imprimante."
|
"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
|
#: /Users/c.lamboo/ultimaker/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:51
|
||||||
msgctxt "@label"
|
msgctxt "@label"
|
||||||
@ -2732,7 +2741,7 @@ msgstr "Profils"
|
|||||||
#: /Users/c.lamboo/ultimaker/Cura/plugins/CuraDrive/src/qml/components/BackupListItemDetails.qml:53
|
#: /Users/c.lamboo/ultimaker/Cura/plugins/CuraDrive/src/qml/components/BackupListItemDetails.qml:53
|
||||||
msgctxt "@backuplist:label"
|
msgctxt "@backuplist:label"
|
||||||
msgid "Plugins"
|
msgid "Plugins"
|
||||||
msgstr "Plug-ins"
|
msgstr "Plugins"
|
||||||
|
|
||||||
#: /Users/c.lamboo/ultimaker/Cura/plugins/CuraDrive/src/qml/components/BackupListFooter.qml:22
|
#: /Users/c.lamboo/ultimaker/Cura/plugins/CuraDrive/src/qml/components/BackupListFooter.qml:22
|
||||||
msgctxt "@button"
|
msgctxt "@button"
|
||||||
@ -2823,8 +2832,8 @@ msgctxt "@text:window"
|
|||||||
msgid ""
|
msgid ""
|
||||||
"Ultimaker Cura collects anonymous data in order to improve the print quality "
|
"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:"
|
"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"
|
msgstr ""
|
||||||
" partagées :"
|
"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
|
#: /Users/c.lamboo/ultimaker/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:107
|
||||||
msgctxt "@text:window"
|
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
|
#: /Users/c.lamboo/ultimaker/Cura/plugins/DigitalLibrary/resources/qml/SaveProjectFilesPage.qml:216
|
||||||
msgctxt "@option"
|
msgctxt "@option"
|
||||||
msgid "Save Cura project and print file"
|
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
|
#: /Users/c.lamboo/ultimaker/Cura/plugins/DigitalLibrary/resources/qml/SaveProjectFilesPage.qml:217
|
||||||
msgctxt "@option"
|
msgctxt "@option"
|
||||||
msgid "Save Cura project"
|
msgid "Save Cura project"
|
||||||
msgstr "Salva progetto Cura"
|
msgstr "Sauvegarder le projet Cura"
|
||||||
|
|
||||||
#: /Users/c.lamboo/ultimaker/Cura/plugins/UltimakerMachineActions/UMOUpgradeSelectionMachineAction.qml:30
|
#: /Users/c.lamboo/ultimaker/Cura/plugins/UltimakerMachineActions/UMOUpgradeSelectionMachineAction.qml:30
|
||||||
msgctxt "@label"
|
msgctxt "@label"
|
||||||
@ -2867,8 +2876,9 @@ msgid ""
|
|||||||
"To make sure your prints will come out great, you can now adjust your "
|
"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 "
|
"buildplate. When you click 'Move to Next Position' the nozzle will move to "
|
||||||
"the different positions that can be adjusted."
|
"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"
|
msgstr ""
|
||||||
" buse se déplacera vers les différentes positions pouvant être réglées."
|
"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
|
#: /Users/c.lamboo/ultimaker/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.qml:52
|
||||||
msgctxt "@label"
|
msgctxt "@label"
|
||||||
@ -2876,8 +2886,8 @@ msgid ""
|
|||||||
"For every position; insert a piece of paper under the nozzle and adjust the "
|
"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 "
|
"print build plate height. The print build plate height is right when the "
|
||||||
"paper is slightly gripped by the tip of the nozzle."
|
"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"
|
msgstr ""
|
||||||
" de la buse gratte légèrement le papier."
|
"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
|
#: /Users/c.lamboo/ultimaker/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.qml:67
|
||||||
msgctxt "@action:button"
|
msgctxt "@action:button"
|
||||||
@ -2892,7 +2902,7 @@ msgstr "Aller à la position suivante"
|
|||||||
#: /Users/c.lamboo/ultimaker/Cura/plugins/Marketplace/resources/qml/PackageCardHeader.qml:172
|
#: /Users/c.lamboo/ultimaker/Cura/plugins/Marketplace/resources/qml/PackageCardHeader.qml:172
|
||||||
msgctxt "@label Is followed by the name of an author"
|
msgctxt "@label Is followed by the name of an author"
|
||||||
msgid "By"
|
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/PackageCardHeader.qml:207
|
||||||
#: /Users/c.lamboo/ultimaker/Cura/plugins/Marketplace/resources/qml/OnboardBanner.qml:101
|
#: /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
|
#: /Users/c.lamboo/ultimaker/Cura/plugins/Marketplace/resources/qml/Plugins.qml:8
|
||||||
msgctxt "@header"
|
msgctxt "@header"
|
||||||
msgid "Install Plugins"
|
msgid "Install Plugins"
|
||||||
msgstr "Installer les plug-ins"
|
msgstr "Installer les plugins"
|
||||||
|
|
||||||
#: /Users/c.lamboo/ultimaker/Cura/plugins/Marketplace/resources/qml/Plugins.qml:12
|
#: /Users/c.lamboo/ultimaker/Cura/plugins/Marketplace/resources/qml/Plugins.qml:12
|
||||||
msgctxt "@text"
|
msgctxt "@text"
|
||||||
msgid ""
|
msgid ""
|
||||||
"Streamline your workflow and customize your Ultimaker Cura experience with "
|
"Streamline your workflow and customize your Ultimaker Cura experience with "
|
||||||
"plugins contributed by our amazing community of users."
|
"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
|
#: /Users/c.lamboo/ultimaker/Cura/plugins/Marketplace/resources/qml/CompatibilityDialog.qml:15
|
||||||
msgctxt "@title"
|
msgctxt "@title"
|
||||||
@ -3000,7 +3010,7 @@ msgstr "Contrat de licence du plugin"
|
|||||||
#: /Users/c.lamboo/ultimaker/Cura/plugins/Marketplace/resources/qml/LicenseDialog.qml:47
|
#: /Users/c.lamboo/ultimaker/Cura/plugins/Marketplace/resources/qml/LicenseDialog.qml:47
|
||||||
msgctxt "@text"
|
msgctxt "@text"
|
||||||
msgid "Please read and agree with the plugin licence."
|
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
|
#: /Users/c.lamboo/ultimaker/Cura/plugins/Marketplace/resources/qml/LicenseDialog.qml:70
|
||||||
msgctxt "@button"
|
msgctxt "@button"
|
||||||
@ -3075,7 +3085,7 @@ msgstr "Optimisé pour Air Manager"
|
|||||||
#: /Users/c.lamboo/ultimaker/Cura/plugins/Marketplace/resources/qml/PackagePage.qml:243
|
#: /Users/c.lamboo/ultimaker/Cura/plugins/Marketplace/resources/qml/PackagePage.qml:243
|
||||||
msgctxt "@button"
|
msgctxt "@button"
|
||||||
msgid "Visit plug-in website"
|
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
|
#: /Users/c.lamboo/ultimaker/Cura/plugins/Marketplace/resources/qml/PackagePage.qml:243
|
||||||
msgctxt "@button"
|
msgctxt "@button"
|
||||||
@ -3140,7 +3150,7 @@ msgstr "Charger plus"
|
|||||||
#: /Users/c.lamboo/ultimaker/Cura/plugins/Marketplace/resources/qml/VerifiedIcon.qml:21
|
#: /Users/c.lamboo/ultimaker/Cura/plugins/Marketplace/resources/qml/VerifiedIcon.qml:21
|
||||||
msgctxt "@info"
|
msgctxt "@info"
|
||||||
msgid "Ultimaker Verified Plug-in"
|
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
|
#: /Users/c.lamboo/ultimaker/Cura/plugins/Marketplace/resources/qml/VerifiedIcon.qml:22
|
||||||
msgctxt "@info"
|
msgctxt "@info"
|
||||||
@ -3162,12 +3172,12 @@ msgctxt "@text"
|
|||||||
msgid ""
|
msgid ""
|
||||||
"Manage your Ultimaker Cura plugins and material profiles here. Make sure to "
|
"Manage your Ultimaker Cura plugins and material profiles here. Make sure to "
|
||||||
"keep your plugins up to date and backup your setup regularly."
|
"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
|
#: /Users/c.lamboo/ultimaker/Cura/plugins/Marketplace/resources/qml/InstallMissingPackagesDialog.qml:15
|
||||||
msgctxt "@title"
|
msgctxt "@title"
|
||||||
msgid "Install missing Materials"
|
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
|
#: /Users/c.lamboo/ultimaker/Cura/plugins/Marketplace/resources/qml/Marketplace.qml:87
|
||||||
msgctxt "@title"
|
msgctxt "@title"
|
||||||
@ -3177,7 +3187,7 @@ msgstr "Chargement..."
|
|||||||
#: /Users/c.lamboo/ultimaker/Cura/plugins/Marketplace/resources/qml/Marketplace.qml:148
|
#: /Users/c.lamboo/ultimaker/Cura/plugins/Marketplace/resources/qml/Marketplace.qml:148
|
||||||
msgctxt "@button"
|
msgctxt "@button"
|
||||||
msgid "Plugins"
|
msgid "Plugins"
|
||||||
msgstr "Plug-ins"
|
msgstr "Plugins"
|
||||||
|
|
||||||
#: /Users/c.lamboo/ultimaker/Cura/plugins/Marketplace/resources/qml/Marketplace.qml:156
|
#: /Users/c.lamboo/ultimaker/Cura/plugins/Marketplace/resources/qml/Marketplace.qml:156
|
||||||
msgctxt "@button"
|
msgctxt "@button"
|
||||||
@ -3206,8 +3216,11 @@ msgid ""
|
|||||||
"- Check if the printer is turned on.\n"
|
"- Check if the printer is turned on.\n"
|
||||||
"- Check if the printer is connected to the network.\n"
|
"- Check if the printer is connected to the network.\n"
|
||||||
"- Check if you are signed in to discover cloud-connected printers."
|
"- 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"
|
msgstr ""
|
||||||
" si vous êtes connecté pour découvrir les imprimantes connectées au cloud."
|
"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
|
#: /Users/c.lamboo/ultimaker/Cura/plugins/MonitorStage/MonitorMain.qml:113
|
||||||
msgctxt "@info"
|
msgctxt "@info"
|
||||||
@ -3359,7 +3372,8 @@ msgctxt "@label"
|
|||||||
msgid ""
|
msgid ""
|
||||||
"The material used in this project is currently not installed in Cura.<br/"
|
"The material used in this project is currently not installed in Cura.<br/"
|
||||||
">Install the material profile and reopen the project."
|
">Install the material profile and reopen the project."
|
||||||
msgstr "Le matériau utilisé dans ce projet n'est actuellement pas installé dans Cura.<br/>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.<br/>Installer le profil de matériau et rouvrir le projet."
|
||||||
|
|
||||||
#: /Users/c.lamboo/ultimaker/Cura/plugins/3MFReader/WorkspaceDialog.qml:515
|
#: /Users/c.lamboo/ultimaker/Cura/plugins/3MFReader/WorkspaceDialog.qml:515
|
||||||
msgctxt "@action:button"
|
msgctxt "@action:button"
|
||||||
@ -3369,12 +3383,12 @@ msgstr "Ouvrir"
|
|||||||
#: /Users/c.lamboo/ultimaker/Cura/plugins/3MFReader/WorkspaceDialog.qml:521
|
#: /Users/c.lamboo/ultimaker/Cura/plugins/3MFReader/WorkspaceDialog.qml:521
|
||||||
msgctxt "@action:button"
|
msgctxt "@action:button"
|
||||||
msgid "Open project anyway"
|
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
|
#: /Users/c.lamboo/ultimaker/Cura/plugins/3MFReader/WorkspaceDialog.qml:530
|
||||||
msgctxt "@action:button"
|
msgctxt "@action:button"
|
||||||
msgid "Install missing material"
|
msgid "Install missing material"
|
||||||
msgstr "Installa materiale mancante"
|
msgstr "Installer le matériel manquant"
|
||||||
|
|
||||||
#: /Users/c.lamboo/ultimaker/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:41
|
#: /Users/c.lamboo/ultimaker/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:41
|
||||||
msgctxt "@label"
|
msgctxt "@label"
|
||||||
@ -3443,16 +3457,16 @@ msgid ""
|
|||||||
"Firmware is the piece of software running directly on your 3D printer. This "
|
"Firmware is the piece of software running directly on your 3D printer. This "
|
||||||
"firmware controls the step motors, regulates the temperature and ultimately "
|
"firmware controls the step motors, regulates the temperature and ultimately "
|
||||||
"makes your printer work."
|
"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,"
|
msgstr ""
|
||||||
" fait que votre machine fonctionne."
|
"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
|
#: /Users/c.lamboo/ultimaker/Cura/plugins/FirmwareUpdater/FirmwareUpdaterMachineAction.qml:43
|
||||||
msgctxt "@label"
|
msgctxt "@label"
|
||||||
msgid ""
|
msgid ""
|
||||||
"The firmware shipping with new printers works, but new versions tend to have "
|
"The firmware shipping with new printers works, but new versions tend to have "
|
||||||
"more features and improvements."
|
"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"
|
msgstr ""
|
||||||
" des améliorations."
|
"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
|
#: /Users/c.lamboo/ultimaker/Cura/plugins/FirmwareUpdater/FirmwareUpdaterMachineAction.qml:55
|
||||||
msgctxt "@action:button"
|
msgctxt "@action:button"
|
||||||
@ -3654,7 +3668,10 @@ msgid ""
|
|||||||
"This setting has a value that is different from the profile.\n"
|
"This setting has a value that is different from the profile.\n"
|
||||||
"\n"
|
"\n"
|
||||||
"Click to restore the value of the profile."
|
"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
|
#: /Users/c.lamboo/ultimaker/Cura/resources/qml/Settings/SettingItem.qml:334
|
||||||
msgctxt "@label"
|
msgctxt "@label"
|
||||||
@ -3663,7 +3680,10 @@ msgid ""
|
|||||||
"set.\n"
|
"set.\n"
|
||||||
"\n"
|
"\n"
|
||||||
"Click to restore the calculated value."
|
"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
|
#: /Users/c.lamboo/ultimaker/Cura/resources/qml/Settings/SettingView.qml:48
|
||||||
msgctxt "@label:textbox"
|
msgctxt "@label:textbox"
|
||||||
@ -3708,12 +3728,15 @@ msgid ""
|
|||||||
"value.\n"
|
"value.\n"
|
||||||
"\n"
|
"\n"
|
||||||
"Click to make these settings visible."
|
"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
|
#: /Users/c.lamboo/ultimaker/Cura/resources/qml/MainWindow/MainWindowHeader.qml:135
|
||||||
msgctxt "@action:button"
|
msgctxt "@action:button"
|
||||||
msgid "Marketplace"
|
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/MainWindow/ApplicationMenu.qml:63
|
||||||
#: /Users/c.lamboo/ultimaker/Cura/resources/qml/Menus/SettingsMenu.qml:13
|
#: /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 "
|
"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 "
|
"Factory. Make sure your printer is connected and it's running the latest "
|
||||||
"firmware."
|
"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"
|
msgstr ""
|
||||||
" le dernier micrologiciel."
|
"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
|
#: /Users/c.lamboo/ultimaker/Cura/resources/qml/Preferences/Materials/MaterialsSyncDialog.qml:585
|
||||||
msgctxt "@button"
|
msgctxt "@button"
|
||||||
@ -4156,12 +4179,12 @@ msgstr "Interface"
|
|||||||
#: /Users/c.lamboo/ultimaker/Cura/resources/qml/Preferences/GeneralPage.qml:215
|
#: /Users/c.lamboo/ultimaker/Cura/resources/qml/Preferences/GeneralPage.qml:215
|
||||||
msgctxt "@heading"
|
msgctxt "@heading"
|
||||||
msgid "-- incomplete --"
|
msgid "-- incomplete --"
|
||||||
msgstr "--complet --"
|
msgstr "-- incomplet —-"
|
||||||
|
|
||||||
#: /Users/c.lamboo/ultimaker/Cura/resources/qml/Preferences/GeneralPage.qml:261
|
#: /Users/c.lamboo/ultimaker/Cura/resources/qml/Preferences/GeneralPage.qml:261
|
||||||
msgctxt "@label"
|
msgctxt "@label"
|
||||||
msgid "Currency:"
|
msgid "Currency:"
|
||||||
msgstr "Devise :"
|
msgstr "Devise:"
|
||||||
|
|
||||||
#: /Users/c.lamboo/ultimaker/Cura/resources/qml/Preferences/GeneralPage.qml:277
|
#: /Users/c.lamboo/ultimaker/Cura/resources/qml/Preferences/GeneralPage.qml:277
|
||||||
msgctxt ""
|
msgctxt ""
|
||||||
@ -4217,8 +4240,8 @@ msgctxt "@info:tooltip"
|
|||||||
msgid ""
|
msgid ""
|
||||||
"Highlight missing or extraneous surfaces of the model using warning signs. "
|
"Highlight missing or extraneous surfaces of the model using warning signs. "
|
||||||
"The toolpaths will often be missing parts of the intended geometry."
|
"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"
|
msgstr ""
|
||||||
" de la géométrie prévue."
|
"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
|
#: /Users/c.lamboo/ultimaker/Cura/resources/qml/Preferences/GeneralPage.qml:409
|
||||||
msgctxt "@option:check"
|
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
|
#: /Users/c.lamboo/ultimaker/Cura/resources/qml/Preferences/GeneralPage.qml:569
|
||||||
msgctxt "@window:text"
|
msgctxt "@window:text"
|
||||||
msgid "Camera rendering:"
|
msgid "Camera rendering:"
|
||||||
msgstr "Rendu caméra :"
|
msgstr "Rendu caméra:"
|
||||||
|
|
||||||
#: /Users/c.lamboo/ultimaker/Cura/resources/qml/Preferences/GeneralPage.qml:576
|
#: /Users/c.lamboo/ultimaker/Cura/resources/qml/Preferences/GeneralPage.qml:576
|
||||||
msgid "Perspective"
|
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
|
#: /Users/c.lamboo/ultimaker/Cura/resources/qml/Preferences/GeneralPage.qml:646
|
||||||
msgctxt "@option:check"
|
msgctxt "@option:check"
|
||||||
msgid "Clear buildplate before loading model into the single instance"
|
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
|
#: /Users/c.lamboo/ultimaker/Cura/resources/qml/Preferences/GeneralPage.qml:656
|
||||||
msgctxt "@info:tooltip"
|
msgctxt "@info:tooltip"
|
||||||
@ -4446,8 +4469,9 @@ msgid ""
|
|||||||
"When you have made changes to a profile and switched to a different one, a "
|
"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 "
|
"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."
|
"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"
|
msgstr ""
|
||||||
" les modifications. Vous pouvez aussi choisir une option par défaut, et le dialogue ne s'affichera plus."
|
"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/Preferences/GeneralPage.qml:801
|
||||||
#: /Users/c.lamboo/ultimaker/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedPrintSetup.qml:36
|
#: /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 "
|
"Should anonymous data about your print be sent to Ultimaker? Note, no "
|
||||||
"models, IP addresses or other personally identifiable information is sent or "
|
"models, IP addresses or other personally identifiable information is sent or "
|
||||||
"stored."
|
"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"
|
msgstr ""
|
||||||
" permettant de vous identifier personnellement ne seront envoyés ou stockés."
|
"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
|
#: /Users/c.lamboo/ultimaker/Cura/resources/qml/Preferences/GeneralPage.qml:867
|
||||||
msgctxt "@option:check"
|
msgctxt "@option:check"
|
||||||
@ -4537,8 +4562,8 @@ msgctxt "@info:tooltip"
|
|||||||
msgid ""
|
msgid ""
|
||||||
"Should an automatic check for new plugins be done every time Cura is "
|
"Should an automatic check for new plugins be done every time Cura is "
|
||||||
"started? It is highly recommended that you do not disable this!"
|
"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"
|
msgstr ""
|
||||||
" cette fonction !"
|
"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
|
#: /Users/c.lamboo/ultimaker/Cura/resources/qml/Preferences/GeneralPage.qml:962
|
||||||
msgctxt "@option:check"
|
msgctxt "@option:check"
|
||||||
@ -4814,17 +4839,17 @@ msgstr "Connectez-vous à la plateforme Ultimaker"
|
|||||||
#: /Users/c.lamboo/ultimaker/Cura/resources/qml/WelcomePages/CloudContent.qml:123
|
#: /Users/c.lamboo/ultimaker/Cura/resources/qml/WelcomePages/CloudContent.qml:123
|
||||||
msgctxt "@text"
|
msgctxt "@text"
|
||||||
msgid "Add material settings and plugins from the Marketplace"
|
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
|
#: /Users/c.lamboo/ultimaker/Cura/resources/qml/WelcomePages/CloudContent.qml:149
|
||||||
msgctxt "@text"
|
msgctxt "@text"
|
||||||
msgid "Backup and sync your material settings and plugins"
|
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
|
#: /Users/c.lamboo/ultimaker/Cura/resources/qml/WelcomePages/CloudContent.qml:175
|
||||||
msgctxt "@text"
|
msgctxt "@text"
|
||||||
msgid "Share ideas and get help from 48,000+ users in the Ultimaker Community"
|
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
|
#: /Users/c.lamboo/ultimaker/Cura/resources/qml/WelcomePages/CloudContent.qml:189
|
||||||
msgctxt "@button"
|
msgctxt "@button"
|
||||||
@ -4972,7 +4997,9 @@ msgctxt "@text"
|
|||||||
msgid ""
|
msgid ""
|
||||||
"Please follow these steps to set up Ultimaker Cura. This will only take a "
|
"Please follow these steps to set up Ultimaker Cura. This will only take a "
|
||||||
"few moments."
|
"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
|
#: /Users/c.lamboo/ultimaker/Cura/resources/qml/WelcomePages/WelcomeContent.qml:82
|
||||||
msgctxt "@button"
|
msgctxt "@button"
|
||||||
@ -5164,7 +5191,7 @@ msgstr "Sélectionner tous les modèles"
|
|||||||
#: /Users/c.lamboo/ultimaker/Cura/resources/qml/Actions.qml:393
|
#: /Users/c.lamboo/ultimaker/Cura/resources/qml/Actions.qml:393
|
||||||
msgctxt "@action:inmenu menubar:edit"
|
msgctxt "@action:inmenu menubar:edit"
|
||||||
msgid "Clear Build Plate"
|
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
|
#: /Users/c.lamboo/ultimaker/Cura/resources/qml/Actions.qml:403
|
||||||
msgctxt "@action:inmenu menubar:file"
|
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
|
#: /Users/c.lamboo/ultimaker/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationItem.qml:138
|
||||||
msgctxt "@label"
|
msgctxt "@label"
|
||||||
msgid "Marketplace"
|
msgid "Marketplace"
|
||||||
msgstr "Marché en ligne"
|
msgstr "Marketplace"
|
||||||
|
|
||||||
#: /Users/c.lamboo/ultimaker/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml:106
|
#: /Users/c.lamboo/ultimaker/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml:106
|
||||||
msgctxt "@tooltip"
|
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
|
#: /Users/c.lamboo/ultimaker/Cura/resources/qml/Dialogs/ChoosePrinterDialog.qml:17
|
||||||
msgctxt "@title:window"
|
msgctxt "@title:window"
|
||||||
msgid "Select Printer"
|
msgid "Select Printer"
|
||||||
msgstr "Sélectionner une imprimante"
|
msgstr "Sélectionner l’imprimante"
|
||||||
|
|
||||||
#: /Users/c.lamboo/ultimaker/Cura/resources/qml/Dialogs/ChoosePrinterDialog.qml:54
|
#: /Users/c.lamboo/ultimaker/Cura/resources/qml/Dialogs/ChoosePrinterDialog.qml:54
|
||||||
msgctxt "@title:label"
|
msgctxt "@title:label"
|
||||||
@ -5543,8 +5570,9 @@ msgid ""
|
|||||||
"We have found one or more project file(s) within the files you have "
|
"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 "
|
"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?"
|
"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"
|
msgstr ""
|
||||||
" fois. Nous vous conseillons de n'importer que les modèles de ces fichiers. Souhaitez-vous continuer ?"
|
"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
|
#: /Users/c.lamboo/ultimaker/Cura/resources/qml/Dialogs/OpenFilesIncludingProjectsDialog.qml:64
|
||||||
msgctxt "@action:button"
|
msgctxt "@action:button"
|
||||||
@ -5589,8 +5617,10 @@ msgid ""
|
|||||||
"You have customized some profile settings. Would you like to Keep these "
|
"You have customized some profile settings. Would you like to Keep these "
|
||||||
"changed settings after switching profiles? Alternatively, you can discard "
|
"changed settings after switching profiles? Alternatively, you can discard "
|
||||||
"the changes to load the defaults from '%1'."
|
"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"
|
msgstr ""
|
||||||
" annuler les modifications pour charger les valeurs par défaut de '%1'."
|
"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
|
#: /Users/c.lamboo/ultimaker/Cura/resources/qml/Dialogs/DiscardOrKeepProfileChangesDialog.qml:85
|
||||||
msgctxt "@title:column"
|
msgctxt "@title:column"
|
||||||
@ -5672,7 +5702,9 @@ msgctxt "@info:credit"
|
|||||||
msgid ""
|
msgid ""
|
||||||
"Cura is developed by Ultimaker B.V. in cooperation with the community.\n"
|
"Cura is developed by Ultimaker B.V. in cooperation with the community.\n"
|
||||||
"Cura proudly uses the following open source projects:"
|
"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
|
#: /Users/c.lamboo/ultimaker/Cura/resources/qml/Dialogs/AboutDialog.qml:138
|
||||||
msgctxt "@label Description for application component"
|
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"
|
msgstr "Prise en charge de la bibliothèque pour le calcul scientifique"
|
||||||
|
|
||||||
#: /Users/c.lamboo/ultimaker/Cura/resources/qml/Dialogs/AboutDialog.qml:171
|
#: /Users/c.lamboo/ultimaker/Cura/resources/qml/Dialogs/AboutDialog.qml:171
|
||||||
|
#, fuzzy
|
||||||
msgctxt "@Label Description for application dependency"
|
msgctxt "@Label Description for application dependency"
|
||||||
msgid "Python Error tracking library"
|
msgid "Python Error tracking library"
|
||||||
msgstr "Bibliothèque de suivi des erreurs Python"
|
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
|
#: /Users/c.lamboo/ultimaker/Cura/resources/qml/ApplicationSwitcher/ApplicationSwitcherPopup.qml:55
|
||||||
msgctxt "@tooltip:button"
|
msgctxt "@tooltip:button"
|
||||||
msgid "Extend Ultimaker Cura with plugins and material profiles."
|
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
|
#: /Users/c.lamboo/ultimaker/Cura/resources/qml/ApplicationSwitcher/ApplicationSwitcherPopup.qml:62
|
||||||
msgctxt "@tooltip:button"
|
msgctxt "@tooltip:button"
|
||||||
@ -5946,7 +5979,7 @@ msgstr "Le profil personnalisé <b>%1</b> remplace certains paramètres."
|
|||||||
#: /Users/c.lamboo/ultimaker/Cura/resources/qml/PrintSetupSelector/Recommended/ProfileWarningReset.qml:79
|
#: /Users/c.lamboo/ultimaker/Cura/resources/qml/PrintSetupSelector/Recommended/ProfileWarningReset.qml:79
|
||||||
msgctxt "@info"
|
msgctxt "@info"
|
||||||
msgid "Some settings were changed."
|
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:78
|
||||||
#: /Users/c.lamboo/ultimaker/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedInfillDensitySelector.qml:254
|
#: /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
|
#: /Users/c.lamboo/ultimaker/Cura/resources/qml/PrintSetupSelector/Recommended/UnsupportedProfileIndication.qml:31
|
||||||
msgctxt "@error"
|
msgctxt "@error"
|
||||||
msgid "Configuration not supported"
|
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
|
#: /Users/c.lamboo/ultimaker/Cura/resources/qml/PrintSetupSelector/Recommended/UnsupportedProfileIndication.qml:39
|
||||||
msgctxt "@message:text %1 is the name the printer uses for 'nozzle'."
|
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
|
#: /Users/c.lamboo/ultimaker/Cura/resources/qml/PrintSetupSelector/Recommended/UnsupportedProfileIndication.qml:47
|
||||||
msgctxt "@button:label"
|
msgctxt "@button:label"
|
||||||
msgid "Learn more"
|
msgid "Learn more"
|
||||||
msgstr "Ulteriori informazioni"
|
msgstr "En savoir plus"
|
||||||
|
|
||||||
#: /Users/c.lamboo/ultimaker/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedAdhesionSelector.qml:27
|
#: /Users/c.lamboo/ultimaker/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedAdhesionSelector.qml:27
|
||||||
msgctxt "@label"
|
msgctxt "@label"
|
||||||
@ -5987,13 +6020,13 @@ msgctxt "@label"
|
|||||||
msgid ""
|
msgid ""
|
||||||
"Enable printing a brim or raft. This will add a flat area around or under "
|
"Enable printing a brim or raft. This will add a flat area around or under "
|
||||||
"your object which is easy to cut off afterwards."
|
"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"
|
msgstr ""
|
||||||
" suite."
|
"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
|
#: /Users/c.lamboo/ultimaker/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedResolutionSelector.qml:27
|
||||||
msgctxt "@label"
|
msgctxt "@label"
|
||||||
msgid "Resolution"
|
msgid "Resolution"
|
||||||
msgstr "Risoluzione"
|
msgstr "Résolution"
|
||||||
|
|
||||||
#: /Users/c.lamboo/ultimaker/Cura/resources/qml/PrintSetupSelector/PrintSetupSelector.qml:20
|
#: /Users/c.lamboo/ultimaker/Cura/resources/qml/PrintSetupSelector/PrintSetupSelector.qml:20
|
||||||
msgctxt "@label shown when we load a Gcode file"
|
msgctxt "@label shown when we load a Gcode file"
|
||||||
@ -6037,7 +6070,10 @@ msgid ""
|
|||||||
"profile.\n"
|
"profile.\n"
|
||||||
"\n"
|
"\n"
|
||||||
"Click to open the profile manager."
|
"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
|
#: /Users/c.lamboo/ultimaker/Cura/resources/qml/PrintSetupSelector/Custom/QualitiesWithIntentMenu.qml:158
|
||||||
msgctxt "@label:header"
|
msgctxt "@label:header"
|
||||||
@ -6059,8 +6095,8 @@ msgctxt "@tooltip"
|
|||||||
msgid ""
|
msgid ""
|
||||||
"The target temperature of the heated bed. The bed will heat up or cool down "
|
"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."
|
"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"
|
msgstr ""
|
||||||
" sera éteint."
|
"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
|
#: /Users/c.lamboo/ultimaker/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:88
|
||||||
msgctxt "@tooltip"
|
msgctxt "@tooltip"
|
||||||
@ -6090,8 +6126,9 @@ msgid ""
|
|||||||
"Heat the bed in advance before printing. You can continue adjusting your "
|
"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 "
|
"print while it is heating, and you won't have to wait for the bed to heat up "
|
||||||
"when you're ready to print."
|
"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"
|
msgstr ""
|
||||||
" plateau chauffe lorsque vous serez prêt à lancer l'impression."
|
"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
|
#: /Users/c.lamboo/ultimaker/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:40
|
||||||
msgctxt "@label"
|
msgctxt "@label"
|
||||||
@ -6103,8 +6140,9 @@ msgctxt "@tooltip"
|
|||||||
msgid ""
|
msgid ""
|
||||||
"The target temperature of the hotend. The hotend will heat up or cool down "
|
"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."
|
"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,"
|
msgstr ""
|
||||||
" le chauffage de l'extrémité chauffante sera coupé."
|
"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
|
#: /Users/c.lamboo/ultimaker/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:105
|
||||||
msgctxt "@tooltip"
|
msgctxt "@tooltip"
|
||||||
@ -6122,8 +6160,9 @@ msgid ""
|
|||||||
"Heat the hotend in advance before printing. You can continue adjusting your "
|
"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 "
|
"print while it is heating, and you won't have to wait for the hotend to heat "
|
||||||
"up when you're ready to print."
|
"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"
|
msgstr ""
|
||||||
" un temps d'attente lorsque vous serez prêt à lancer l'impression."
|
"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
|
#: /Users/c.lamboo/ultimaker/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:335
|
||||||
msgctxt "@tooltip"
|
msgctxt "@tooltip"
|
||||||
@ -6175,7 +6214,7 @@ msgctxt "@tooltip of G-code command input"
|
|||||||
msgid ""
|
msgid ""
|
||||||
"Send a custom G-code command to the connected printer. Press 'enter' to send "
|
"Send a custom G-code command to the connected printer. Press 'enter' to send "
|
||||||
"the command."
|
"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
|
#: /Users/c.lamboo/ultimaker/Cura/resources/qml/Cura.qml:250
|
||||||
msgctxt "@label"
|
msgctxt "@label"
|
||||||
@ -6196,7 +6235,7 @@ msgstr "Fermeture de %1"
|
|||||||
#: /Users/c.lamboo/ultimaker/Cura/resources/qml/Cura.qml:597
|
#: /Users/c.lamboo/ultimaker/Cura/resources/qml/Cura.qml:597
|
||||||
msgctxt "@label %1 is the application name"
|
msgctxt "@label %1 is the application name"
|
||||||
msgid "Are you sure you want to exit %1?"
|
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
|
#: /Users/c.lamboo/ultimaker/Cura/resources/qml/Cura.qml:740
|
||||||
msgctxt "@window:title"
|
msgctxt "@window:title"
|
||||||
@ -6214,8 +6253,9 @@ msgid ""
|
|||||||
"We have found one or more G-Code files within the files you have selected. "
|
"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 "
|
"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."
|
"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"
|
msgstr ""
|
||||||
" vous souhaitez ouvrir un fichier G-Code, veuillez ne sélectionner qu'un seul fichier de ce type."
|
"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
|
#: /Users/c.lamboo/ultimaker/Cura/resources/qml/Cura.qml:829
|
||||||
msgctxt "@title:window"
|
msgctxt "@title:window"
|
||||||
@ -6233,8 +6273,10 @@ msgid ""
|
|||||||
"- Add material profiles and plug-ins from the Marketplace\n"
|
"- Add material profiles and plug-ins from the Marketplace\n"
|
||||||
"- Back-up and sync your material profiles and plug-ins\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"
|
"- 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-"
|
msgstr ""
|
||||||
" Partagez vos idées et obtenez l'aide de plus de 48 000 utilisateurs de la communauté Ultimaker"
|
"- 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
|
#: /Users/c.lamboo/ultimaker/Cura/resources/qml/Account/GeneralOperations.qml:58
|
||||||
msgctxt "@button"
|
msgctxt "@button"
|
||||||
|
@ -56,7 +56,7 @@ UM.Dialog
|
|||||||
UM.Label
|
UM.Label
|
||||||
{
|
{
|
||||||
id: infoText
|
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.left: parent.left
|
||||||
anchors.right: parent.right
|
anchors.right: parent.right
|
||||||
wrapMode: Text.WordWrap
|
wrapMode: Text.WordWrap
|
||||||
@ -83,7 +83,7 @@ UM.Dialog
|
|||||||
|
|
||||||
columnHeaders: [
|
columnHeaders: [
|
||||||
catalog.i18nc("@title:column", "Profile settings"),
|
catalog.i18nc("@title:column", "Profile settings"),
|
||||||
Cura.MachineManager.activeQualityDisplayNameMap["main"],
|
Cura.MachineManager.activeQualityDisplayNameMainStringParts.join(" - "),
|
||||||
catalog.i18nc("@title:column", "Current changes")
|
catalog.i18nc("@title:column", "Current changes")
|
||||||
]
|
]
|
||||||
model: UM.TableModel
|
model: UM.TableModel
|
||||||
|
@ -67,7 +67,7 @@ Item
|
|||||||
UM.Label
|
UM.Label
|
||||||
{
|
{
|
||||||
id: textLabel
|
id: textLabel
|
||||||
text: Cura.MachineManager.activeQualityDisplayNameMap["main"]
|
text: Cura.MachineManager.activeQualityDisplayNameMainStringParts.join(" - ")
|
||||||
Layout.margins: 0
|
Layout.margins: 0
|
||||||
Layout.maximumWidth: Math.floor(parent.width * 0.7) // Always leave >= 30% for the rest of the row.
|
Layout.maximumWidth: Math.floor(parent.width * 0.7) // Always leave >= 30% for the rest of the row.
|
||||||
height: contentHeight
|
height: contentHeight
|
||||||
@ -77,7 +77,19 @@ Item
|
|||||||
|
|
||||||
UM.Label
|
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")
|
color: UM.Theme.getColor("text_detail")
|
||||||
Layout.margins: 0
|
Layout.margins: 0
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
@ -85,32 +97,6 @@ Item
|
|||||||
height: contentHeight
|
height: contentHeight
|
||||||
elide: Text.ElideRight
|
elide: Text.ElideRight
|
||||||
wrapMode: Text.NoWrap
|
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
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -17,26 +17,8 @@ RowLayout
|
|||||||
{
|
{
|
||||||
source: UM.Theme.getIcon("Sliders", "medium")
|
source: UM.Theme.getIcon("Sliders", "medium")
|
||||||
iconSize: UM.Theme.getSize("button_icon").width
|
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: Cura.MachineManager.activeQualityDisplayNameStringParts.join(" - ")
|
||||||
{
|
|
||||||
text += " - " + layerHeight.properties.value + "mm"
|
|
||||||
text += Cura.MachineManager.isActiveQualityExperimental ? " - " + catalog.i18nc("@label", "Experimental") : ""
|
|
||||||
}
|
|
||||||
return text
|
|
||||||
}
|
|
||||||
return ""
|
|
||||||
}
|
|
||||||
font: UM.Theme.getFont("medium")
|
font: UM.Theme.getFont("medium")
|
||||||
elide: Text.ElideMiddle
|
elide: Text.ElideMiddle
|
||||||
wrapMode: Text.NoWrap
|
wrapMode: Text.NoWrap
|
||||||
|
@ -18,5 +18,4 @@ cool_min_layer_time_fan_speed_max = 15
|
|||||||
cool_min_speed = 15
|
cool_min_speed = 15
|
||||||
infill_sparse_density = 20
|
infill_sparse_density = 20
|
||||||
speed_print = 30
|
speed_print = 30
|
||||||
top_bottom_thickness = 0.72
|
top_bottom_thickness = 0.72
|
||||||
retraction_combing_max_distance = 50
|
|
@ -17,7 +17,6 @@ cool_min_layer_time = 3
|
|||||||
cool_min_layer_time_fan_speed_max = 15
|
cool_min_layer_time_fan_speed_max = 15
|
||||||
cool_min_speed = 10
|
cool_min_speed = 10
|
||||||
infill_sparse_density = 20
|
infill_sparse_density = 20
|
||||||
retraction_combing_max_distance = 50
|
|
||||||
retraction_prime_speed = =retraction_speed
|
retraction_prime_speed = =retraction_speed
|
||||||
speed_print = 45
|
speed_print = 45
|
||||||
speed_travel = 150
|
speed_travel = 150
|
||||||
|
@ -17,7 +17,6 @@ cool_min_layer_time = 2
|
|||||||
cool_min_layer_time_fan_speed_max = 15
|
cool_min_layer_time_fan_speed_max = 15
|
||||||
cool_min_speed = 15
|
cool_min_speed = 15
|
||||||
infill_sparse_density = 20
|
infill_sparse_density = 20
|
||||||
retraction_combing_max_distance = 50
|
|
||||||
retraction_prime_speed = =retraction_speed
|
retraction_prime_speed = =retraction_speed
|
||||||
speed_print = 45
|
speed_print = 45
|
||||||
speed_wall = =math.ceil(speed_print * 30 / 45)
|
speed_wall = =math.ceil(speed_print * 30 / 45)
|
||||||
|
@ -17,7 +17,6 @@ cool_min_layer_time = 3
|
|||||||
cool_min_layer_time_fan_speed_max = 15
|
cool_min_layer_time_fan_speed_max = 15
|
||||||
cool_min_speed = 10
|
cool_min_speed = 10
|
||||||
infill_sparse_density = 20
|
infill_sparse_density = 20
|
||||||
retraction_combing_max_distance = 50
|
|
||||||
retraction_prime_speed = =retraction_speed
|
retraction_prime_speed = =retraction_speed
|
||||||
speed_print = 45
|
speed_print = 45
|
||||||
speed_wall = =math.ceil(speed_print * 30 / 45)
|
speed_wall = =math.ceil(speed_print * 30 / 45)
|
||||||
|
@ -17,7 +17,6 @@ cool_min_layer_time = 5
|
|||||||
cool_min_layer_time_fan_speed_max = 20
|
cool_min_layer_time_fan_speed_max = 20
|
||||||
cool_min_speed = 8
|
cool_min_speed = 8
|
||||||
infill_sparse_density = 20
|
infill_sparse_density = 20
|
||||||
retraction_combing_max_distance = 50
|
|
||||||
retraction_prime_speed = =retraction_speed
|
retraction_prime_speed = =retraction_speed
|
||||||
speed_print = 40
|
speed_print = 40
|
||||||
top_bottom_thickness = 1.2
|
top_bottom_thickness = 1.2
|
||||||
|
@ -18,5 +18,4 @@ cool_min_layer_time_fan_speed_max = 25
|
|||||||
cool_min_speed = 8
|
cool_min_speed = 8
|
||||||
infill_sparse_density = 20
|
infill_sparse_density = 20
|
||||||
speed_print = 40
|
speed_print = 40
|
||||||
top_bottom_thickness = 1.2
|
top_bottom_thickness = 1.2
|
||||||
retraction_combing_max_distance = 50
|
|
@ -20,7 +20,6 @@ infill_overlap = =0 if infill_sparse_density > 80 else 5
|
|||||||
infill_sparse_density = 20
|
infill_sparse_density = 20
|
||||||
layer_0_z_overlap = 0.22
|
layer_0_z_overlap = 0.22
|
||||||
raft_airgap = 0.37
|
raft_airgap = 0.37
|
||||||
retraction_combing_max_distance = 50
|
|
||||||
retraction_prime_speed = =retraction_speed
|
retraction_prime_speed = =retraction_speed
|
||||||
speed_print = 25
|
speed_print = 25
|
||||||
speed_topbottom = =math.ceil(speed_print * 20 / 25)
|
speed_topbottom = =math.ceil(speed_print * 20 / 25)
|
||||||
|
@ -20,7 +20,6 @@ infill_overlap = =0 if infill_sparse_density > 80 else 5
|
|||||||
infill_sparse_density = 20
|
infill_sparse_density = 20
|
||||||
layer_0_z_overlap = 0.22
|
layer_0_z_overlap = 0.22
|
||||||
raft_airgap = 0.37
|
raft_airgap = 0.37
|
||||||
retraction_combing_max_distance = 50
|
|
||||||
retraction_prime_speed = =retraction_speed
|
retraction_prime_speed = =retraction_speed
|
||||||
speed_print = 35
|
speed_print = 35
|
||||||
speed_topbottom = =math.ceil(speed_print * 20 / 35)
|
speed_topbottom = =math.ceil(speed_print * 20 / 35)
|
||||||
|
@ -20,7 +20,6 @@ infill_overlap = =0 if infill_sparse_density > 80 else 5
|
|||||||
infill_sparse_density = 20
|
infill_sparse_density = 20
|
||||||
layer_0_z_overlap = 0.22
|
layer_0_z_overlap = 0.22
|
||||||
raft_airgap = 0.37
|
raft_airgap = 0.37
|
||||||
retraction_combing_max_distance = 50
|
|
||||||
retraction_prime_speed = =retraction_speed
|
retraction_prime_speed = =retraction_speed
|
||||||
speed_print = 25
|
speed_print = 25
|
||||||
speed_topbottom = =math.ceil(speed_print * 20 / 25)
|
speed_topbottom = =math.ceil(speed_print * 20 / 25)
|
||||||
|
@ -20,7 +20,6 @@ infill_overlap = =0 if infill_sparse_density > 80 else 5
|
|||||||
infill_sparse_density = 20
|
infill_sparse_density = 20
|
||||||
layer_0_z_overlap = 0.22
|
layer_0_z_overlap = 0.22
|
||||||
raft_airgap = 0.37
|
raft_airgap = 0.37
|
||||||
retraction_combing_max_distance = 50
|
|
||||||
retraction_prime_speed = =retraction_speed
|
retraction_prime_speed = =retraction_speed
|
||||||
speed_print = 35
|
speed_print = 35
|
||||||
speed_topbottom = =math.ceil(speed_print * 20 / 35)
|
speed_topbottom = =math.ceil(speed_print * 20 / 35)
|
||||||
|
@ -27,5 +27,4 @@ speed_wall_x = =speed_print
|
|||||||
support_angle = 45
|
support_angle = 45
|
||||||
support_enable = True
|
support_enable = True
|
||||||
support_z_distance = 0.26
|
support_z_distance = 0.26
|
||||||
top_bottom_thickness = 1.2
|
top_bottom_thickness = 1.2
|
||||||
retraction_combing_max_distance = 50
|
|
@ -28,4 +28,3 @@ support_angle = 45
|
|||||||
support_enable = True
|
support_enable = True
|
||||||
support_z_distance = 0.26
|
support_z_distance = 0.26
|
||||||
top_bottom_thickness = 1.2
|
top_bottom_thickness = 1.2
|
||||||
retraction_combing_max_distance = 50
|
|
||||||
|
@ -18,5 +18,4 @@ cool_min_layer_time_fan_speed_max = 25
|
|||||||
cool_min_speed = 15
|
cool_min_speed = 15
|
||||||
infill_sparse_density = 20
|
infill_sparse_density = 20
|
||||||
speed_print = 30
|
speed_print = 30
|
||||||
top_bottom_thickness = 0.72
|
top_bottom_thickness = 0.72
|
||||||
retraction_combing_max_distance = 8
|
|
@ -24,5 +24,4 @@ top_bottom_thickness = 0.75
|
|||||||
speed_wall_0 = =math.ceil(speed_print * 30 / 45)
|
speed_wall_0 = =math.ceil(speed_print * 30 / 45)
|
||||||
speed_topbottom = =math.ceil(speed_print * 30 / 45)
|
speed_topbottom = =math.ceil(speed_print * 30 / 45)
|
||||||
speed_wall_x = =math.ceil(speed_print * 40 / 45)
|
speed_wall_x = =math.ceil(speed_print * 40 / 45)
|
||||||
speed_infill = =math.ceil(speed_print * 45 / 45)
|
speed_infill = =math.ceil(speed_print * 45 / 45)
|
||||||
retraction_combing_max_distance = 8
|
|
@ -24,5 +24,4 @@ top_bottom_thickness = 0.75
|
|||||||
speed_wall_0 = =math.ceil(speed_print * 30 / 45)
|
speed_wall_0 = =math.ceil(speed_print * 30 / 45)
|
||||||
speed_topbottom = =math.ceil(speed_print * 30 / 45)
|
speed_topbottom = =math.ceil(speed_print * 30 / 45)
|
||||||
speed_wall_x = =math.ceil(speed_print * 40 / 45)
|
speed_wall_x = =math.ceil(speed_print * 40 / 45)
|
||||||
speed_infill = =math.ceil(speed_print * 45 / 45)
|
speed_infill = =math.ceil(speed_print * 45 / 45)
|
||||||
retraction_combing_max_distance = 8
|
|
@ -19,5 +19,4 @@ cool_min_speed = 10
|
|||||||
infill_sparse_density = 20
|
infill_sparse_density = 20
|
||||||
speed_print = 45
|
speed_print = 45
|
||||||
speed_wall = =math.ceil(speed_print * 30 / 45)
|
speed_wall = =math.ceil(speed_print * 30 / 45)
|
||||||
top_bottom_thickness = 0.8
|
top_bottom_thickness = 0.8
|
||||||
retraction_combing_max_distance = 8
|
|
@ -18,5 +18,4 @@ cool_min_layer_time_fan_speed_max = 20
|
|||||||
cool_min_speed = 8
|
cool_min_speed = 8
|
||||||
infill_sparse_density = 20
|
infill_sparse_density = 20
|
||||||
speed_print = 40
|
speed_print = 40
|
||||||
top_bottom_thickness = 1.2
|
top_bottom_thickness = 1.2
|
||||||
retraction_combing_max_distance = 8
|
|
@ -18,5 +18,4 @@ cool_min_layer_time_fan_speed_max = 25
|
|||||||
cool_min_speed = 8
|
cool_min_speed = 8
|
||||||
infill_sparse_density = 20
|
infill_sparse_density = 20
|
||||||
speed_print = 40
|
speed_print = 40
|
||||||
top_bottom_thickness = 1.2
|
top_bottom_thickness = 1.2
|
||||||
retraction_combing_max_distance = 8
|
|
@ -16,5 +16,4 @@ speed_infill = =math.ceil(speed_print * 40 / 55)
|
|||||||
speed_topbottom = =math.ceil(speed_print * 30 / 55)
|
speed_topbottom = =math.ceil(speed_print * 30 / 55)
|
||||||
top_bottom_thickness = 0.8
|
top_bottom_thickness = 0.8
|
||||||
material_print_temperature = =default_material_print_temperature - 5
|
material_print_temperature = =default_material_print_temperature - 5
|
||||||
retraction_combing_max_distance = 8
|
|
||||||
retraction_combing = all
|
retraction_combing = all
|
||||||
|
@ -20,5 +20,4 @@ speed_print = 60
|
|||||||
speed_topbottom = =math.ceil(speed_print * 35 / 60)
|
speed_topbottom = =math.ceil(speed_print * 35 / 60)
|
||||||
speed_wall = =math.ceil(speed_print * 45 / 60)
|
speed_wall = =math.ceil(speed_print * 45 / 60)
|
||||||
speed_wall_0 = =math.ceil(speed_wall * 35 / 45)
|
speed_wall_0 = =math.ceil(speed_wall * 35 / 45)
|
||||||
retraction_combing_max_distance = 8
|
|
||||||
retraction_combing = all
|
retraction_combing = all
|
||||||
|
@ -21,5 +21,4 @@ speed_topbottom = =math.ceil(speed_print * 30 / 60)
|
|||||||
speed_wall = =math.ceil(speed_print * 40 / 60)
|
speed_wall = =math.ceil(speed_print * 40 / 60)
|
||||||
speed_wall_0 = =math.ceil(speed_wall * 30 / 40)
|
speed_wall_0 = =math.ceil(speed_wall * 30 / 40)
|
||||||
speed_infill = =math.ceil(speed_print * 50 / 60)
|
speed_infill = =math.ceil(speed_print * 50 / 60)
|
||||||
retraction_combing_max_distance = 8
|
|
||||||
retraction_combing = all
|
retraction_combing = all
|
||||||
|
@ -21,5 +21,4 @@ speed_print = 55
|
|||||||
speed_topbottom = =math.ceil(speed_print * 30 / 55)
|
speed_topbottom = =math.ceil(speed_print * 30 / 55)
|
||||||
speed_wall = =math.ceil(speed_print * 30 / 55)
|
speed_wall = =math.ceil(speed_print * 30 / 55)
|
||||||
speed_infill = =math.ceil(speed_print * 45 / 55)
|
speed_infill = =math.ceil(speed_print * 45 / 55)
|
||||||
retraction_combing_max_distance = 8
|
|
||||||
retraction_combing = all
|
retraction_combing = all
|
||||||
|
@ -18,5 +18,4 @@ prime_tower_enable = True
|
|||||||
speed_print = 40
|
speed_print = 40
|
||||||
speed_topbottom = =math.ceil(speed_print * 25 / 40)
|
speed_topbottom = =math.ceil(speed_print * 25 / 40)
|
||||||
speed_wall = =math.ceil(speed_print * 30 / 40)
|
speed_wall = =math.ceil(speed_print * 30 / 40)
|
||||||
retraction_combing_max_distance = 8
|
|
||||||
retraction_combing = all
|
retraction_combing = all
|
||||||
|
@ -21,5 +21,4 @@ speed_topbottom = =math.ceil(speed_print * 30 / 45)
|
|||||||
speed_wall = =math.ceil(speed_print * 33 / 45)
|
speed_wall = =math.ceil(speed_print * 33 / 45)
|
||||||
speed_wall_0 = =math.ceil(speed_wall * 30 / 40)
|
speed_wall_0 = =math.ceil(speed_wall * 30 / 40)
|
||||||
speed_infill = =math.ceil(speed_print * 33 / 45)
|
speed_infill = =math.ceil(speed_print * 33 / 45)
|
||||||
retraction_combing_max_distance = 8
|
|
||||||
retraction_combing = all
|
retraction_combing = all
|
||||||
|
@ -19,5 +19,4 @@ prime_tower_enable = True
|
|||||||
speed_print = 40
|
speed_print = 40
|
||||||
speed_topbottom = =math.ceil(speed_print * 25 / 40)
|
speed_topbottom = =math.ceil(speed_print * 25 / 40)
|
||||||
speed_wall = =math.ceil(speed_print * 30 / 40)
|
speed_wall = =math.ceil(speed_print * 30 / 40)
|
||||||
retraction_combing_max_distance = 8
|
|
||||||
retraction_combing = all
|
retraction_combing = all
|
||||||
|
@ -12,7 +12,6 @@ material = generic_cpe
|
|||||||
variant = AA 0.25
|
variant = AA 0.25
|
||||||
|
|
||||||
[values]
|
[values]
|
||||||
retraction_combing_max_distance = 50
|
|
||||||
speed_infill = =math.ceil(speed_print * 40 / 55)
|
speed_infill = =math.ceil(speed_print * 40 / 55)
|
||||||
speed_topbottom = =math.ceil(speed_print * 30 / 55)
|
speed_topbottom = =math.ceil(speed_print * 30 / 55)
|
||||||
top_bottom_thickness = 0.8
|
top_bottom_thickness = 0.8
|
||||||
|
@ -13,7 +13,6 @@ variant = AA 0.25
|
|||||||
|
|
||||||
[values]
|
[values]
|
||||||
material_print_temperature = =default_material_print_temperature - 5
|
material_print_temperature = =default_material_print_temperature - 5
|
||||||
retraction_combing_max_distance = 8
|
|
||||||
speed_infill = =math.ceil(speed_print * 40 / 55)
|
speed_infill = =math.ceil(speed_print * 40 / 55)
|
||||||
speed_topbottom = =math.ceil(speed_print * 30 / 55)
|
speed_topbottom = =math.ceil(speed_print * 30 / 55)
|
||||||
top_bottom_thickness = 0.8
|
top_bottom_thickness = 0.8
|
||||||
|
@ -23,7 +23,6 @@ material_print_temperature = =default_material_print_temperature + 10
|
|||||||
multiple_mesh_overlap = 0
|
multiple_mesh_overlap = 0
|
||||||
prime_tower_enable = True
|
prime_tower_enable = True
|
||||||
prime_tower_wipe_enabled = True
|
prime_tower_wipe_enabled = True
|
||||||
retraction_combing_max_distance = 50
|
|
||||||
retraction_hop = 0.2
|
retraction_hop = 0.2
|
||||||
retraction_hop_enabled = False
|
retraction_hop_enabled = False
|
||||||
retraction_hop_only_when_collides = True
|
retraction_hop_only_when_collides = True
|
||||||
|
@ -23,7 +23,6 @@ material_print_temperature = =default_material_print_temperature + 10
|
|||||||
multiple_mesh_overlap = 0
|
multiple_mesh_overlap = 0
|
||||||
prime_tower_enable = True
|
prime_tower_enable = True
|
||||||
prime_tower_wipe_enabled = True
|
prime_tower_wipe_enabled = True
|
||||||
retraction_combing_max_distance = 50
|
|
||||||
retraction_hop = 0.2
|
retraction_hop = 0.2
|
||||||
retraction_hop_enabled = False
|
retraction_hop_enabled = False
|
||||||
retraction_hop_only_when_collides = True
|
retraction_hop_only_when_collides = True
|
||||||
|
@ -25,7 +25,6 @@ material_print_temperature = =default_material_print_temperature + 2
|
|||||||
multiple_mesh_overlap = 0
|
multiple_mesh_overlap = 0
|
||||||
prime_tower_enable = True
|
prime_tower_enable = True
|
||||||
prime_tower_wipe_enabled = True
|
prime_tower_wipe_enabled = True
|
||||||
retraction_combing_max_distance = 50
|
|
||||||
retraction_hop = 0.2
|
retraction_hop = 0.2
|
||||||
retraction_hop_enabled = False
|
retraction_hop_enabled = False
|
||||||
retraction_hop_only_when_collides = True
|
retraction_hop_only_when_collides = True
|
||||||
|
@ -25,7 +25,6 @@ material_print_temperature = =default_material_print_temperature + 5
|
|||||||
multiple_mesh_overlap = 0
|
multiple_mesh_overlap = 0
|
||||||
prime_tower_enable = True
|
prime_tower_enable = True
|
||||||
prime_tower_wipe_enabled = True
|
prime_tower_wipe_enabled = True
|
||||||
retraction_combing_max_distance = 50
|
|
||||||
retraction_hop = 0.2
|
retraction_hop = 0.2
|
||||||
retraction_hop_enabled = False
|
retraction_hop_enabled = False
|
||||||
retraction_hop_only_when_collides = True
|
retraction_hop_only_when_collides = True
|
||||||
|
@ -16,7 +16,6 @@ infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'triangles'
|
|||||||
material_final_print_temperature = =material_print_temperature - 10
|
material_final_print_temperature = =material_print_temperature - 10
|
||||||
material_initial_print_temperature = =material_print_temperature - 5
|
material_initial_print_temperature = =material_print_temperature - 5
|
||||||
material_print_temperature = =default_material_print_temperature + 10
|
material_print_temperature = =default_material_print_temperature + 10
|
||||||
retraction_combing_max_distance = 50
|
|
||||||
retraction_prime_speed = =retraction_speed
|
retraction_prime_speed = =retraction_speed
|
||||||
skin_overlap = 20
|
skin_overlap = 20
|
||||||
speed_infill = =math.ceil(speed_print * 50 / 60)
|
speed_infill = =math.ceil(speed_print * 50 / 60)
|
||||||
|
@ -17,7 +17,6 @@ infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'triangles'
|
|||||||
material_final_print_temperature = =material_print_temperature - 10
|
material_final_print_temperature = =material_print_temperature - 10
|
||||||
material_initial_print_temperature = =material_print_temperature - 5
|
material_initial_print_temperature = =material_print_temperature - 5
|
||||||
material_print_temperature = =default_material_print_temperature + 5
|
material_print_temperature = =default_material_print_temperature + 5
|
||||||
retraction_combing_max_distance = 50
|
|
||||||
retraction_prime_speed = =retraction_speed
|
retraction_prime_speed = =retraction_speed
|
||||||
speed_infill = =math.ceil(speed_print * 50 / 60)
|
speed_infill = =math.ceil(speed_print * 50 / 60)
|
||||||
speed_print = 60
|
speed_print = 60
|
||||||
|
@ -19,7 +19,6 @@ machine_nozzle_heat_up_speed = 1.5
|
|||||||
material_final_print_temperature = =material_print_temperature - 10
|
material_final_print_temperature = =material_print_temperature - 10
|
||||||
material_initial_print_temperature = =material_print_temperature - 5
|
material_initial_print_temperature = =material_print_temperature - 5
|
||||||
material_print_temperature = =default_material_print_temperature - 5
|
material_print_temperature = =default_material_print_temperature - 5
|
||||||
retraction_combing_max_distance = 50
|
|
||||||
retraction_prime_speed = =retraction_speed
|
retraction_prime_speed = =retraction_speed
|
||||||
speed_infill = =math.ceil(speed_print * 40 / 50)
|
speed_infill = =math.ceil(speed_print * 40 / 50)
|
||||||
speed_print = 50
|
speed_print = 50
|
||||||
|
@ -17,7 +17,6 @@ machine_nozzle_cool_down_speed = 0.85
|
|||||||
machine_nozzle_heat_up_speed = 1.5
|
machine_nozzle_heat_up_speed = 1.5
|
||||||
material_final_print_temperature = =material_print_temperature - 10
|
material_final_print_temperature = =material_print_temperature - 10
|
||||||
material_initial_print_temperature = =material_print_temperature - 5
|
material_initial_print_temperature = =material_print_temperature - 5
|
||||||
retraction_combing_max_distance = 50
|
|
||||||
retraction_prime_speed = =retraction_speed
|
retraction_prime_speed = =retraction_speed
|
||||||
speed_infill = =math.ceil(speed_print * 45 / 55)
|
speed_infill = =math.ceil(speed_print * 45 / 55)
|
||||||
speed_print = 55
|
speed_print = 55
|
||||||
|
@ -16,7 +16,6 @@ infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'triangles'
|
|||||||
material_final_print_temperature = =material_print_temperature - 5
|
material_final_print_temperature = =material_print_temperature - 5
|
||||||
material_initial_print_temperature = =material_print_temperature
|
material_initial_print_temperature = =material_print_temperature
|
||||||
material_print_temperature = =default_material_print_temperature + 5
|
material_print_temperature = =default_material_print_temperature + 5
|
||||||
retraction_combing_max_distance = 8
|
|
||||||
skin_overlap = 20
|
skin_overlap = 20
|
||||||
speed_infill = =math.ceil(speed_print * 50 / 60)
|
speed_infill = =math.ceil(speed_print * 50 / 60)
|
||||||
speed_print = 60
|
speed_print = 60
|
||||||
|
@ -17,7 +17,6 @@ infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'triangles'
|
|||||||
material_final_print_temperature = =material_print_temperature - 10
|
material_final_print_temperature = =material_print_temperature - 10
|
||||||
material_initial_print_temperature = =material_print_temperature - 5
|
material_initial_print_temperature = =material_print_temperature - 5
|
||||||
material_print_temperature = =default_material_print_temperature
|
material_print_temperature = =default_material_print_temperature
|
||||||
retraction_combing_max_distance = 8
|
|
||||||
speed_infill = =math.ceil(speed_print * 50 / 60)
|
speed_infill = =math.ceil(speed_print * 50 / 60)
|
||||||
speed_print = 60
|
speed_print = 60
|
||||||
speed_topbottom = =math.ceil(speed_print * 30 / 60)
|
speed_topbottom = =math.ceil(speed_print * 30 / 60)
|
||||||
|
@ -19,7 +19,6 @@ machine_nozzle_heat_up_speed = 1.5
|
|||||||
material_final_print_temperature = =material_print_temperature - 15
|
material_final_print_temperature = =material_print_temperature - 15
|
||||||
material_initial_print_temperature = =material_print_temperature - 10
|
material_initial_print_temperature = =material_print_temperature - 10
|
||||||
material_print_temperature = =default_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_infill = =math.ceil(speed_print * 40 / 50)
|
||||||
speed_print = 50
|
speed_print = 50
|
||||||
speed_topbottom = =math.ceil(speed_print * 30 / 50)
|
speed_topbottom = =math.ceil(speed_print * 30 / 50)
|
||||||
|
@ -18,7 +18,6 @@ machine_nozzle_heat_up_speed = 1.5
|
|||||||
material_final_print_temperature = =material_print_temperature - 15
|
material_final_print_temperature = =material_print_temperature - 15
|
||||||
material_initial_print_temperature = =material_print_temperature - 10
|
material_initial_print_temperature = =material_print_temperature - 10
|
||||||
material_print_temperature = =default_material_print_temperature - 5
|
material_print_temperature = =default_material_print_temperature - 5
|
||||||
retraction_combing_max_distance = 8
|
|
||||||
speed_infill = =math.ceil(speed_print * 45 / 55)
|
speed_infill = =math.ceil(speed_print * 45 / 55)
|
||||||
speed_print = 55
|
speed_print = 55
|
||||||
speed_topbottom = =math.ceil(speed_print * 30 / 55)
|
speed_topbottom = =math.ceil(speed_print * 30 / 55)
|
||||||
|
@ -18,7 +18,6 @@ machine_nozzle_cool_down_speed = 0.9
|
|||||||
machine_nozzle_heat_up_speed = 1.4
|
machine_nozzle_heat_up_speed = 1.4
|
||||||
material_print_temperature = =default_material_print_temperature - 10
|
material_print_temperature = =default_material_print_temperature - 10
|
||||||
prime_tower_enable = True
|
prime_tower_enable = True
|
||||||
retraction_combing_max_distance = 50
|
|
||||||
retraction_hop = 0.1
|
retraction_hop = 0.1
|
||||||
retraction_hop_enabled = False
|
retraction_hop_enabled = False
|
||||||
skin_overlap = 0
|
skin_overlap = 0
|
||||||
|
@ -18,7 +18,6 @@ machine_nozzle_cool_down_speed = 0.9
|
|||||||
machine_nozzle_heat_up_speed = 1.4
|
machine_nozzle_heat_up_speed = 1.4
|
||||||
material_print_temperature = =default_material_print_temperature - 5
|
material_print_temperature = =default_material_print_temperature - 5
|
||||||
prime_tower_enable = True
|
prime_tower_enable = True
|
||||||
retraction_combing_max_distance = 50
|
|
||||||
retraction_hop = 0.1
|
retraction_hop = 0.1
|
||||||
retraction_hop_enabled = False
|
retraction_hop_enabled = False
|
||||||
skin_overlap = 0
|
skin_overlap = 0
|
||||||
|
@ -18,7 +18,6 @@ machine_nozzle_cool_down_speed = 0.9
|
|||||||
machine_nozzle_heat_up_speed = 1.4
|
machine_nozzle_heat_up_speed = 1.4
|
||||||
material_print_temperature = =default_material_print_temperature - 7
|
material_print_temperature = =default_material_print_temperature - 7
|
||||||
prime_tower_enable = True
|
prime_tower_enable = True
|
||||||
retraction_combing_max_distance = 50
|
|
||||||
retraction_hop = 0.1
|
retraction_hop = 0.1
|
||||||
retraction_hop_enabled = False
|
retraction_hop_enabled = False
|
||||||
skin_overlap = 0
|
skin_overlap = 0
|
||||||
|
@ -15,7 +15,6 @@ variant = AA 0.8
|
|||||||
brim_width = 15
|
brim_width = 15
|
||||||
material_print_temperature = =default_material_print_temperature + 15
|
material_print_temperature = =default_material_print_temperature + 15
|
||||||
prime_tower_enable = True
|
prime_tower_enable = True
|
||||||
retraction_combing_max_distance = 50
|
|
||||||
speed_print = 40
|
speed_print = 40
|
||||||
speed_topbottom = =math.ceil(speed_print * 25 / 40)
|
speed_topbottom = =math.ceil(speed_print * 25 / 40)
|
||||||
speed_wall = =math.ceil(speed_print * 30 / 40)
|
speed_wall = =math.ceil(speed_print * 30 / 40)
|
||||||
|
@ -15,7 +15,6 @@ variant = AA 0.8
|
|||||||
brim_width = 15
|
brim_width = 15
|
||||||
material_print_temperature = =default_material_print_temperature + 20
|
material_print_temperature = =default_material_print_temperature + 20
|
||||||
prime_tower_enable = True
|
prime_tower_enable = True
|
||||||
retraction_combing_max_distance = 50
|
|
||||||
speed_infill = =math.ceil(speed_print * 33 / 45)
|
speed_infill = =math.ceil(speed_print * 33 / 45)
|
||||||
speed_print = 45
|
speed_print = 45
|
||||||
speed_topbottom = =math.ceil(speed_print * 30 / 45)
|
speed_topbottom = =math.ceil(speed_print * 30 / 45)
|
||||||
|
@ -15,7 +15,6 @@ variant = AA 0.8
|
|||||||
brim_width = 15
|
brim_width = 15
|
||||||
material_print_temperature = =default_material_print_temperature + 17
|
material_print_temperature = =default_material_print_temperature + 17
|
||||||
prime_tower_enable = True
|
prime_tower_enable = True
|
||||||
retraction_combing_max_distance = 50
|
|
||||||
speed_print = 40
|
speed_print = 40
|
||||||
speed_topbottom = =math.ceil(speed_print * 25 / 40)
|
speed_topbottom = =math.ceil(speed_print * 25 / 40)
|
||||||
speed_wall = =math.ceil(speed_print * 30 / 40)
|
speed_wall = =math.ceil(speed_print * 30 / 40)
|
||||||
|
@ -16,7 +16,6 @@ brim_width = 7
|
|||||||
cool_fan_speed = 20
|
cool_fan_speed = 20
|
||||||
material_print_temperature = =default_material_print_temperature - 5
|
material_print_temperature = =default_material_print_temperature - 5
|
||||||
prime_tower_enable = True
|
prime_tower_enable = True
|
||||||
retraction_combing_max_distance = 8
|
|
||||||
speed_print = 40
|
speed_print = 40
|
||||||
speed_topbottom = =math.ceil(speed_print * 25 / 40)
|
speed_topbottom = =math.ceil(speed_print * 25 / 40)
|
||||||
speed_wall = =math.ceil(speed_print * 30 / 40)
|
speed_wall = =math.ceil(speed_print * 30 / 40)
|
||||||
|
@ -16,7 +16,6 @@ brim_width = 7
|
|||||||
cool_fan_speed = 20
|
cool_fan_speed = 20
|
||||||
material_print_temperature = =default_material_print_temperature - 5
|
material_print_temperature = =default_material_print_temperature - 5
|
||||||
prime_tower_enable = True
|
prime_tower_enable = True
|
||||||
retraction_combing_max_distance = 8
|
|
||||||
speed_infill = =math.ceil(speed_print * 33 / 45)
|
speed_infill = =math.ceil(speed_print * 33 / 45)
|
||||||
speed_print = 45
|
speed_print = 45
|
||||||
speed_topbottom = =math.ceil(speed_print * 30 / 45)
|
speed_topbottom = =math.ceil(speed_print * 30 / 45)
|
||||||
|
@ -16,7 +16,6 @@ brim_width = 7
|
|||||||
cool_fan_speed = 20
|
cool_fan_speed = 20
|
||||||
material_print_temperature = =default_material_print_temperature - 5
|
material_print_temperature = =default_material_print_temperature - 5
|
||||||
prime_tower_enable = True
|
prime_tower_enable = True
|
||||||
retraction_combing_max_distance = 8
|
|
||||||
speed_print = 40
|
speed_print = 40
|
||||||
speed_topbottom = =math.ceil(speed_print * 25 / 40)
|
speed_topbottom = =math.ceil(speed_print * 25 / 40)
|
||||||
speed_wall = =math.ceil(speed_print * 30 / 40)
|
speed_wall = =math.ceil(speed_print * 30 / 40)
|
||||||
|
@ -12,7 +12,6 @@ material = generic_cpe
|
|||||||
variant = AA 0.25
|
variant = AA 0.25
|
||||||
|
|
||||||
[values]
|
[values]
|
||||||
retraction_combing_max_distance = 50
|
|
||||||
speed_infill = =math.ceil(speed_print * 40 / 55)
|
speed_infill = =math.ceil(speed_print * 40 / 55)
|
||||||
speed_topbottom = =math.ceil(speed_print * 30 / 55)
|
speed_topbottom = =math.ceil(speed_print * 30 / 55)
|
||||||
top_bottom_thickness = 0.8
|
top_bottom_thickness = 0.8
|
||||||
|
@ -13,7 +13,6 @@ variant = AA 0.25
|
|||||||
|
|
||||||
[values]
|
[values]
|
||||||
material_print_temperature = =default_material_print_temperature - 5
|
material_print_temperature = =default_material_print_temperature - 5
|
||||||
retraction_combing_max_distance = 8
|
|
||||||
speed_infill = =math.ceil(speed_print * 40 / 55)
|
speed_infill = =math.ceil(speed_print * 40 / 55)
|
||||||
speed_topbottom = =math.ceil(speed_print * 30 / 55)
|
speed_topbottom = =math.ceil(speed_print * 30 / 55)
|
||||||
top_bottom_thickness = 0.8
|
top_bottom_thickness = 0.8
|
||||||
|
@ -23,7 +23,6 @@ material_print_temperature = =default_material_print_temperature + 10
|
|||||||
multiple_mesh_overlap = 0
|
multiple_mesh_overlap = 0
|
||||||
prime_tower_enable = True
|
prime_tower_enable = True
|
||||||
prime_tower_wipe_enabled = True
|
prime_tower_wipe_enabled = True
|
||||||
retraction_combing_max_distance = 50
|
|
||||||
retraction_hop = 0.2
|
retraction_hop = 0.2
|
||||||
retraction_hop_enabled = False
|
retraction_hop_enabled = False
|
||||||
retraction_hop_only_when_collides = True
|
retraction_hop_only_when_collides = True
|
||||||
|
@ -23,7 +23,6 @@ material_print_temperature = =default_material_print_temperature + 10
|
|||||||
multiple_mesh_overlap = 0
|
multiple_mesh_overlap = 0
|
||||||
prime_tower_enable = True
|
prime_tower_enable = True
|
||||||
prime_tower_wipe_enabled = True
|
prime_tower_wipe_enabled = True
|
||||||
retraction_combing_max_distance = 50
|
|
||||||
retraction_hop = 0.2
|
retraction_hop = 0.2
|
||||||
retraction_hop_enabled = False
|
retraction_hop_enabled = False
|
||||||
retraction_hop_only_when_collides = True
|
retraction_hop_only_when_collides = True
|
||||||
|
@ -25,7 +25,6 @@ material_print_temperature = =default_material_print_temperature + 2
|
|||||||
multiple_mesh_overlap = 0
|
multiple_mesh_overlap = 0
|
||||||
prime_tower_enable = True
|
prime_tower_enable = True
|
||||||
prime_tower_wipe_enabled = True
|
prime_tower_wipe_enabled = True
|
||||||
retraction_combing_max_distance = 50
|
|
||||||
retraction_hop = 0.2
|
retraction_hop = 0.2
|
||||||
retraction_hop_enabled = False
|
retraction_hop_enabled = False
|
||||||
retraction_hop_only_when_collides = True
|
retraction_hop_only_when_collides = True
|
||||||
|
@ -25,7 +25,6 @@ material_print_temperature = =default_material_print_temperature + 5
|
|||||||
multiple_mesh_overlap = 0
|
multiple_mesh_overlap = 0
|
||||||
prime_tower_enable = True
|
prime_tower_enable = True
|
||||||
prime_tower_wipe_enabled = True
|
prime_tower_wipe_enabled = True
|
||||||
retraction_combing_max_distance = 50
|
|
||||||
retraction_hop = 0.2
|
retraction_hop = 0.2
|
||||||
retraction_hop_enabled = False
|
retraction_hop_enabled = False
|
||||||
retraction_hop_only_when_collides = True
|
retraction_hop_only_when_collides = True
|
||||||
|
@ -16,7 +16,6 @@ infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'triangles'
|
|||||||
material_final_print_temperature = =material_print_temperature - 10
|
material_final_print_temperature = =material_print_temperature - 10
|
||||||
material_initial_print_temperature = =material_print_temperature - 5
|
material_initial_print_temperature = =material_print_temperature - 5
|
||||||
material_print_temperature = =default_material_print_temperature + 10
|
material_print_temperature = =default_material_print_temperature + 10
|
||||||
retraction_combing_max_distance = 50
|
|
||||||
retraction_prime_speed = =retraction_speed
|
retraction_prime_speed = =retraction_speed
|
||||||
skin_overlap = 20
|
skin_overlap = 20
|
||||||
speed_infill = =math.ceil(speed_print * 50 / 60)
|
speed_infill = =math.ceil(speed_print * 50 / 60)
|
||||||
|
@ -17,7 +17,6 @@ infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'triangles'
|
|||||||
material_final_print_temperature = =material_print_temperature - 10
|
material_final_print_temperature = =material_print_temperature - 10
|
||||||
material_initial_print_temperature = =material_print_temperature - 5
|
material_initial_print_temperature = =material_print_temperature - 5
|
||||||
material_print_temperature = =default_material_print_temperature + 5
|
material_print_temperature = =default_material_print_temperature + 5
|
||||||
retraction_combing_max_distance = 50
|
|
||||||
retraction_prime_speed = =retraction_speed
|
retraction_prime_speed = =retraction_speed
|
||||||
speed_infill = =math.ceil(speed_print * 50 / 60)
|
speed_infill = =math.ceil(speed_print * 50 / 60)
|
||||||
speed_print = 60
|
speed_print = 60
|
||||||
|
@ -19,7 +19,6 @@ machine_nozzle_heat_up_speed = 1.5
|
|||||||
material_final_print_temperature = =material_print_temperature - 10
|
material_final_print_temperature = =material_print_temperature - 10
|
||||||
material_initial_print_temperature = =material_print_temperature - 5
|
material_initial_print_temperature = =material_print_temperature - 5
|
||||||
material_print_temperature = =default_material_print_temperature - 5
|
material_print_temperature = =default_material_print_temperature - 5
|
||||||
retraction_combing_max_distance = 50
|
|
||||||
retraction_prime_speed = =retraction_speed
|
retraction_prime_speed = =retraction_speed
|
||||||
speed_infill = =math.ceil(speed_print * 40 / 50)
|
speed_infill = =math.ceil(speed_print * 40 / 50)
|
||||||
speed_print = 50
|
speed_print = 50
|
||||||
|
@ -17,7 +17,6 @@ machine_nozzle_cool_down_speed = 0.85
|
|||||||
machine_nozzle_heat_up_speed = 1.5
|
machine_nozzle_heat_up_speed = 1.5
|
||||||
material_final_print_temperature = =material_print_temperature - 10
|
material_final_print_temperature = =material_print_temperature - 10
|
||||||
material_initial_print_temperature = =material_print_temperature - 5
|
material_initial_print_temperature = =material_print_temperature - 5
|
||||||
retraction_combing_max_distance = 50
|
|
||||||
retraction_prime_speed = =retraction_speed
|
retraction_prime_speed = =retraction_speed
|
||||||
speed_infill = =math.ceil(speed_print * 45 / 55)
|
speed_infill = =math.ceil(speed_print * 45 / 55)
|
||||||
speed_print = 55
|
speed_print = 55
|
||||||
|
@ -16,7 +16,6 @@ infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'triangles'
|
|||||||
material_final_print_temperature = =material_print_temperature - 5
|
material_final_print_temperature = =material_print_temperature - 5
|
||||||
material_initial_print_temperature = =material_print_temperature
|
material_initial_print_temperature = =material_print_temperature
|
||||||
material_print_temperature = =default_material_print_temperature + 5
|
material_print_temperature = =default_material_print_temperature + 5
|
||||||
retraction_combing_max_distance = 8
|
|
||||||
skin_overlap = 20
|
skin_overlap = 20
|
||||||
speed_infill = =math.ceil(speed_print * 50 / 60)
|
speed_infill = =math.ceil(speed_print * 50 / 60)
|
||||||
speed_print = 60
|
speed_print = 60
|
||||||
|
@ -17,7 +17,6 @@ infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'triangles'
|
|||||||
material_final_print_temperature = =material_print_temperature - 10
|
material_final_print_temperature = =material_print_temperature - 10
|
||||||
material_initial_print_temperature = =material_print_temperature - 5
|
material_initial_print_temperature = =material_print_temperature - 5
|
||||||
material_print_temperature = =default_material_print_temperature
|
material_print_temperature = =default_material_print_temperature
|
||||||
retraction_combing_max_distance = 8
|
|
||||||
speed_infill = =math.ceil(speed_print * 50 / 60)
|
speed_infill = =math.ceil(speed_print * 50 / 60)
|
||||||
speed_print = 60
|
speed_print = 60
|
||||||
speed_topbottom = =math.ceil(speed_print * 30 / 60)
|
speed_topbottom = =math.ceil(speed_print * 30 / 60)
|
||||||
|
@ -19,7 +19,6 @@ machine_nozzle_heat_up_speed = 1.5
|
|||||||
material_final_print_temperature = =material_print_temperature - 15
|
material_final_print_temperature = =material_print_temperature - 15
|
||||||
material_initial_print_temperature = =material_print_temperature - 10
|
material_initial_print_temperature = =material_print_temperature - 10
|
||||||
material_print_temperature = =default_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_infill = =math.ceil(speed_print * 40 / 50)
|
||||||
speed_print = 50
|
speed_print = 50
|
||||||
speed_topbottom = =math.ceil(speed_print * 30 / 50)
|
speed_topbottom = =math.ceil(speed_print * 30 / 50)
|
||||||
|
@ -18,7 +18,6 @@ machine_nozzle_heat_up_speed = 1.5
|
|||||||
material_final_print_temperature = =material_print_temperature - 15
|
material_final_print_temperature = =material_print_temperature - 15
|
||||||
material_initial_print_temperature = =material_print_temperature - 10
|
material_initial_print_temperature = =material_print_temperature - 10
|
||||||
material_print_temperature = =default_material_print_temperature - 5
|
material_print_temperature = =default_material_print_temperature - 5
|
||||||
retraction_combing_max_distance = 8
|
|
||||||
speed_infill = =math.ceil(speed_print * 45 / 55)
|
speed_infill = =math.ceil(speed_print * 45 / 55)
|
||||||
speed_print = 55
|
speed_print = 55
|
||||||
speed_topbottom = =math.ceil(speed_print * 30 / 55)
|
speed_topbottom = =math.ceil(speed_print * 30 / 55)
|
||||||
|
@ -18,7 +18,6 @@ machine_nozzle_cool_down_speed = 0.9
|
|||||||
machine_nozzle_heat_up_speed = 1.4
|
machine_nozzle_heat_up_speed = 1.4
|
||||||
material_print_temperature = =default_material_print_temperature - 10
|
material_print_temperature = =default_material_print_temperature - 10
|
||||||
prime_tower_enable = True
|
prime_tower_enable = True
|
||||||
retraction_combing_max_distance = 50
|
|
||||||
retraction_hop = 0.1
|
retraction_hop = 0.1
|
||||||
retraction_hop_enabled = False
|
retraction_hop_enabled = False
|
||||||
skin_overlap = 0
|
skin_overlap = 0
|
||||||
|
@ -18,7 +18,6 @@ machine_nozzle_cool_down_speed = 0.9
|
|||||||
machine_nozzle_heat_up_speed = 1.4
|
machine_nozzle_heat_up_speed = 1.4
|
||||||
material_print_temperature = =default_material_print_temperature - 5
|
material_print_temperature = =default_material_print_temperature - 5
|
||||||
prime_tower_enable = True
|
prime_tower_enable = True
|
||||||
retraction_combing_max_distance = 50
|
|
||||||
retraction_hop = 0.1
|
retraction_hop = 0.1
|
||||||
retraction_hop_enabled = False
|
retraction_hop_enabled = False
|
||||||
skin_overlap = 0
|
skin_overlap = 0
|
||||||
|
@ -18,7 +18,6 @@ machine_nozzle_cool_down_speed = 0.9
|
|||||||
machine_nozzle_heat_up_speed = 1.4
|
machine_nozzle_heat_up_speed = 1.4
|
||||||
material_print_temperature = =default_material_print_temperature - 7
|
material_print_temperature = =default_material_print_temperature - 7
|
||||||
prime_tower_enable = True
|
prime_tower_enable = True
|
||||||
retraction_combing_max_distance = 50
|
|
||||||
retraction_hop = 0.1
|
retraction_hop = 0.1
|
||||||
retraction_hop_enabled = False
|
retraction_hop_enabled = False
|
||||||
skin_overlap = 0
|
skin_overlap = 0
|
||||||
|
@ -15,7 +15,6 @@ variant = AA 0.8
|
|||||||
brim_width = 15
|
brim_width = 15
|
||||||
material_print_temperature = =default_material_print_temperature + 15
|
material_print_temperature = =default_material_print_temperature + 15
|
||||||
prime_tower_enable = True
|
prime_tower_enable = True
|
||||||
retraction_combing_max_distance = 50
|
|
||||||
speed_print = 40
|
speed_print = 40
|
||||||
speed_topbottom = =math.ceil(speed_print * 25 / 40)
|
speed_topbottom = =math.ceil(speed_print * 25 / 40)
|
||||||
speed_wall = =math.ceil(speed_print * 30 / 40)
|
speed_wall = =math.ceil(speed_print * 30 / 40)
|
||||||
|
@ -15,7 +15,6 @@ variant = AA 0.8
|
|||||||
brim_width = 15
|
brim_width = 15
|
||||||
material_print_temperature = =default_material_print_temperature + 20
|
material_print_temperature = =default_material_print_temperature + 20
|
||||||
prime_tower_enable = True
|
prime_tower_enable = True
|
||||||
retraction_combing_max_distance = 50
|
|
||||||
speed_infill = =math.ceil(speed_print * 33 / 45)
|
speed_infill = =math.ceil(speed_print * 33 / 45)
|
||||||
speed_print = 45
|
speed_print = 45
|
||||||
speed_topbottom = =math.ceil(speed_print * 30 / 45)
|
speed_topbottom = =math.ceil(speed_print * 30 / 45)
|
||||||
|
@ -15,7 +15,6 @@ variant = AA 0.8
|
|||||||
brim_width = 15
|
brim_width = 15
|
||||||
material_print_temperature = =default_material_print_temperature + 17
|
material_print_temperature = =default_material_print_temperature + 17
|
||||||
prime_tower_enable = True
|
prime_tower_enable = True
|
||||||
retraction_combing_max_distance = 50
|
|
||||||
speed_print = 40
|
speed_print = 40
|
||||||
speed_topbottom = =math.ceil(speed_print * 25 / 40)
|
speed_topbottom = =math.ceil(speed_print * 25 / 40)
|
||||||
speed_wall = =math.ceil(speed_print * 30 / 40)
|
speed_wall = =math.ceil(speed_print * 30 / 40)
|
||||||
|
@ -16,7 +16,6 @@ brim_width = 7
|
|||||||
cool_fan_speed = 20
|
cool_fan_speed = 20
|
||||||
material_print_temperature = =default_material_print_temperature - 5
|
material_print_temperature = =default_material_print_temperature - 5
|
||||||
prime_tower_enable = True
|
prime_tower_enable = True
|
||||||
retraction_combing_max_distance = 8
|
|
||||||
speed_print = 40
|
speed_print = 40
|
||||||
speed_topbottom = =math.ceil(speed_print * 25 / 40)
|
speed_topbottom = =math.ceil(speed_print * 25 / 40)
|
||||||
speed_wall = =math.ceil(speed_print * 30 / 40)
|
speed_wall = =math.ceil(speed_print * 30 / 40)
|
||||||
|
@ -16,7 +16,6 @@ brim_width = 7
|
|||||||
cool_fan_speed = 20
|
cool_fan_speed = 20
|
||||||
material_print_temperature = =default_material_print_temperature - 5
|
material_print_temperature = =default_material_print_temperature - 5
|
||||||
prime_tower_enable = True
|
prime_tower_enable = True
|
||||||
retraction_combing_max_distance = 8
|
|
||||||
speed_infill = =math.ceil(speed_print * 33 / 45)
|
speed_infill = =math.ceil(speed_print * 33 / 45)
|
||||||
speed_print = 45
|
speed_print = 45
|
||||||
speed_topbottom = =math.ceil(speed_print * 30 / 45)
|
speed_topbottom = =math.ceil(speed_print * 30 / 45)
|
||||||
|
@ -16,7 +16,6 @@ brim_width = 7
|
|||||||
cool_fan_speed = 20
|
cool_fan_speed = 20
|
||||||
material_print_temperature = =default_material_print_temperature - 5
|
material_print_temperature = =default_material_print_temperature - 5
|
||||||
prime_tower_enable = True
|
prime_tower_enable = True
|
||||||
retraction_combing_max_distance = 8
|
|
||||||
speed_print = 40
|
speed_print = 40
|
||||||
speed_topbottom = =math.ceil(speed_print * 25 / 40)
|
speed_topbottom = =math.ceil(speed_print * 25 / 40)
|
||||||
speed_wall = =math.ceil(speed_print * 30 / 40)
|
speed_wall = =math.ceil(speed_print * 30 / 40)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user