Merge branch 'master-2019-12-17' into update_imade3d_jellybox_support

# Conflicts (resolved):
#	resources/quality/imade3d_jellybox/PETG/jbo_generic_petg_0.4_coarse.inst.cfg
#	resources/quality/imade3d_jellybox/PLA/jbo_generic_pla_0.4_coarse.inst.cfg
#	resources/quality/imade3d_jellybox/imade3d_jellybox_coarse.inst.cfg
This commit is contained in:
Filip Goc 2019-07-17 02:19:45 +02:00
commit 13df255477
1217 changed files with 24789 additions and 30254 deletions

View File

@ -8,11 +8,11 @@ assignees: ''
---
<!--
The following template is useful for filing new issues. Processing an issue will go much faster when this is filled out, and issues which do not use this template WILL BE REMOVED.
Processing an issue will go much faster when this is filled out, and issues which do not use this template WILL BE REMOVED and no fix will be considered!
Before filing, PLEASE check if the issue already exists (either open or closed) by using the search bar on the issues page. If it does, comment there. Even if it's closed, we can reopen it based on your comment.
Also, please note the application version in the title of the issue. For example: "[3.2.1] Cannot connect to 3rd-party printer". Please do not write things like "Request:" or "[BUG]" in the title; this is what labels are for.
Also, please note the application version in the title of the issue. For example: "[3.2.1] Cannot connect to 3rd-party printer". Please do NOT write things like "Request:" or "[BUG]" in the title; this is what labels are for.
It is also helpful to attach a project (.3mf or .curaproject) file and Cura log file so we can debug issues quicker. Information about how to find the log file can be found at https://github.com/Ultimaker/Cura#logging-issues
@ -21,7 +21,7 @@ To upload a project, try changing the extension to e.g. .curaproject.3mf.zip so
Thank you for using Cura!
-->
**Application Version**
**Application version**
<!-- The version of the application this issue occurs with -->
**Platform**
@ -30,11 +30,14 @@ Thank you for using Cura!
**Printer**
<!-- Which printer was selected in Cura? If possible, please attach project file as .curaproject.3mf.zip -->
**Actual Results**
**Reproduction steps**
<!-- How did you encounter the bug? -->
**Actual results**
<!-- What happens after the above steps have been followed -->
**Expected results**
<!-- What should happen after the above steps have been followed -->
**Additional Information**
<!-- Extra information relevant to the issue, like screenshots -->
**Additional information**
<!-- Extra information relevant to the issue, like screenshots. Don't forget to attach the log files with this issue report. -->

View File

@ -20,11 +20,12 @@ set(CURA_APP_NAME "cura" CACHE STRING "Short name of Cura, used for configuratio
set(CURA_APP_DISPLAY_NAME "Ultimaker Cura" CACHE STRING "Display name of Cura")
set(CURA_VERSION "master" CACHE STRING "Version name of Cura")
set(CURA_BUILDTYPE "" CACHE STRING "Build type of Cura, eg. 'PPA'")
set(CURA_SDK_VERSION "" CACHE STRING "SDK version of Cura")
set(CURA_CLOUD_API_ROOT "" CACHE STRING "Alternative Cura cloud API root")
set(CURA_CLOUD_API_VERSION "" CACHE STRING "Alternative Cura cloud API version")
set(CURA_CLOUD_ACCOUNT_API_ROOT "" CACHE STRING "Alternative Cura cloud account API version")
configure_file(${CMAKE_SOURCE_DIR}/cura.desktop.in ${CMAKE_BINARY_DIR}/cura.desktop @ONLY)
configure_file(cura/CuraVersion.py.in CuraVersion.py @ONLY)

View File

@ -42,9 +42,7 @@ try:
except ImportError:
CuraDebugMode = DEFAULT_CURA_DEBUG_MODE
try:
from cura.CuraVersion import CuraSDKVersion # type: ignore
if CuraSDKVersion == "":
CuraSDKVersion = DEFAULT_CURA_SDK_VERSION
except ImportError:
CuraSDKVersion = DEFAULT_CURA_SDK_VERSION
# Each release has a fixed SDK version coupled with it. It doesn't make sense to make it configurable because, for
# example Cura 3.2 with SDK version 6.1 will not work. So the SDK version is hard-coded here and left out of the
# CuraVersion.py.in template.
CuraSDKVersion = "6.1.0"

View File

@ -1,12 +1,18 @@
#Copyright (c) 2019 Ultimaker B.V.
#Cura is released under the terms of the LGPLv3 or higher.
import numpy
import copy
from typing import Optional, Tuple, TYPE_CHECKING
from UM.Math.Polygon import Polygon
if TYPE_CHECKING:
from UM.Scene.SceneNode import SceneNode
## Polygon representation as an array for use with Arrange
class ShapeArray:
def __init__(self, arr, offset_x, offset_y, scale = 1):
def __init__(self, arr: numpy.array, offset_x: float, offset_y: float, scale: float = 1) -> None:
self.arr = arr
self.offset_x = offset_x
self.offset_y = offset_y
@ -16,7 +22,7 @@ class ShapeArray:
# \param vertices
# \param scale scale the coordinates
@classmethod
def fromPolygon(cls, vertices, scale = 1):
def fromPolygon(cls, vertices: numpy.array, scale: float = 1) -> "ShapeArray":
# scale
vertices = vertices * scale
# flip y, x -> x, y
@ -42,7 +48,7 @@ class ShapeArray:
# \param min_offset offset for the offset ShapeArray
# \param scale scale the coordinates
@classmethod
def fromNode(cls, node, min_offset, scale = 0.5, include_children = False):
def fromNode(cls, node: "SceneNode", min_offset: float, scale: float = 0.5, include_children: bool = False) -> Tuple[Optional["ShapeArray"], Optional["ShapeArray"]]:
transform = node._transformation
transform_x = transform._data[0][3]
transform_y = transform._data[2][3]
@ -88,7 +94,7 @@ class ShapeArray:
# \param shape numpy format shape, [x-size, y-size]
# \param vertices
@classmethod
def arrayFromPolygon(cls, shape, vertices):
def arrayFromPolygon(cls, shape: Tuple[int, int], vertices: numpy.array) -> numpy.array:
base_array = numpy.zeros(shape, dtype = numpy.int32) # Initialize your array of zeros
fill = numpy.ones(base_array.shape) * True # Initialize boolean array defining shape fill
@ -111,9 +117,9 @@ class ShapeArray:
# \param p2 2-tuple with x, y for point 2
# \param base_array boolean array to project the line on
@classmethod
def _check(cls, p1, p2, base_array):
def _check(cls, p1: numpy.array, p2: numpy.array, base_array: numpy.array) -> bool:
if p1[0] == p2[0] and p1[1] == p2[1]:
return
return False
idxs = numpy.indices(base_array.shape) # Create 3D array of indices
p1 = p1.astype(float)
@ -132,4 +138,3 @@ class ShapeArray:
max_col_idx = (idxs[0] - p1[0]) / (p2[0] - p1[0]) * (p2[1] - p1[1]) + p1[1]
sign = numpy.sign(p2[0] - p1[0])
return idxs[1] * sign <= max_col_idx * sign

View File

@ -727,48 +727,17 @@ class BuildVolume(SceneNode):
self._error_areas = []
extruder_manager = ExtruderManager.getInstance()
used_extruders = extruder_manager.getUsedExtruderStacks()
used_extruders = ExtruderManager.getInstance().getUsedExtruderStacks()
disallowed_border_size = self.getEdgeDisallowedSize()
if not used_extruders:
# If no extruder is used, assume that the active extruder is used (else nothing is drawn)
if extruder_manager.getActiveExtruderStack():
used_extruders = [extruder_manager.getActiveExtruderStack()]
else:
used_extruders = [self._global_container_stack]
result_areas = self._computeDisallowedAreasStatic(disallowed_border_size, used_extruders) #Normal machine disallowed areas can always be added.
result_areas = self._computeDisallowedAreasStatic(disallowed_border_size, used_extruders) # Normal machine disallowed areas can always be added.
prime_areas = self._computeDisallowedAreasPrimeBlob(disallowed_border_size, used_extruders)
result_areas_no_brim = self._computeDisallowedAreasStatic(0, used_extruders) #Where the priming is not allowed to happen. This is not added to the result, just for collision checking.
prime_disallowed_areas = copy.deepcopy(result_areas_no_brim)
result_areas_no_brim = self._computeDisallowedAreasStatic(0, used_extruders) # Where the priming is not allowed to happen. This is not added to the result, just for collision checking.
#Check if prime positions intersect with disallowed areas.
# Check if prime positions intersect with disallowed areas.
for extruder in used_extruders:
extruder_id = extruder.getId()
collision = False
for prime_polygon in prime_areas[extruder_id]:
for disallowed_polygon in prime_disallowed_areas[extruder_id]:
if prime_polygon.intersectsPolygon(disallowed_polygon) is not None:
collision = True
break
if collision:
break
#Also check other prime positions (without additional offset).
for other_extruder_id in prime_areas:
if extruder_id == other_extruder_id: #It is allowed to collide with itself.
continue
for other_prime_polygon in prime_areas[other_extruder_id]:
if prime_polygon.intersectsPolygon(other_prime_polygon):
collision = True
break
if collision:
break
if collision:
break
result_areas[extruder_id].extend(prime_areas[extruder_id])
result_areas_no_brim[extruder_id].extend(prime_areas[extruder_id])
@ -776,28 +745,23 @@ class BuildVolume(SceneNode):
for area in nozzle_disallowed_areas:
polygon = Polygon(numpy.array(area, numpy.float32))
polygon_disallowed_border = polygon.getMinkowskiHull(Polygon.approximatedCircle(disallowed_border_size))
result_areas[extruder_id].append(polygon_disallowed_border) #Don't perform the offset on these.
#polygon_minimal_border = polygon.getMinkowskiHull(5)
result_areas_no_brim[extruder_id].append(polygon) # no brim
result_areas[extruder_id].append(polygon_disallowed_border) # Don't perform the offset on these.
result_areas_no_brim[extruder_id].append(polygon) # No brim
# Add prime tower location as disallowed area.
if len(used_extruders) > 1: #No prime tower in single-extrusion.
if len([x for x in used_extruders if x.isEnabled]) > 1: #No prime tower if only one extruder is enabled
if len([x for x in used_extruders if x.isEnabled]) > 1: # No prime tower if only one extruder is enabled
prime_tower_collision = False
prime_tower_areas = self._computeDisallowedAreasPrinted(used_extruders)
for extruder_id in prime_tower_areas:
for i_area, prime_tower_area in enumerate(prime_tower_areas[extruder_id]):
for area_index, prime_tower_area in enumerate(prime_tower_areas[extruder_id]):
for area in result_areas[extruder_id]:
if prime_tower_area.intersectsPolygon(area) is not None:
prime_tower_collision = True
break
if prime_tower_collision: #Already found a collision.
if prime_tower_collision: # Already found a collision.
break
if (ExtruderManager.getInstance().getResolveOrValue("prime_tower_brim_enable") and
ExtruderManager.getInstance().getResolveOrValue("adhesion_type") != "raft"):
prime_tower_areas[extruder_id][i_area] = prime_tower_area.getMinkowskiHull(
Polygon.approximatedCircle(disallowed_border_size))
if self._global_container_stack.getProperty("prime_tower_brim_enable", "value") and self._global_container_stack.getProperty("adhesion_type", "value") != "raft":
prime_tower_areas[extruder_id][area_index] = prime_tower_area.getMinkowskiHull(Polygon.approximatedCircle(disallowed_border_size))
if not prime_tower_collision:
result_areas[extruder_id].extend(prime_tower_areas[extruder_id])
result_areas_no_brim[extruder_id].extend(prime_tower_areas[extruder_id])
@ -806,7 +770,7 @@ class BuildVolume(SceneNode):
self._has_errors = len(self._error_areas) > 0
self._disallowed_areas = []
self._disallowed_areas = [] # type: List[Polygon]
for extruder_id in result_areas:
self._disallowed_areas.extend(result_areas[extruder_id])
self._disallowed_areas_no_brim = []
@ -823,11 +787,14 @@ class BuildVolume(SceneNode):
# where that extruder may not print.
def _computeDisallowedAreasPrinted(self, used_extruders):
result = {}
adhesion_extruder = None #type: ExtruderStack
for extruder in used_extruders:
if int(extruder.getProperty("extruder_nr", "value")) == int(self._global_container_stack.getProperty("adhesion_extruder_nr", "value")):
adhesion_extruder = extruder
result[extruder.getId()] = []
#Currently, the only normally printed object is the prime tower.
if ExtruderManager.getInstance().getResolveOrValue("prime_tower_enable"):
# Currently, the only normally printed object is the prime tower.
if self._global_container_stack.getProperty("prime_tower_enable", "value"):
prime_tower_size = self._global_container_stack.getProperty("prime_tower_size", "value")
machine_width = self._global_container_stack.getProperty("machine_width", "value")
machine_depth = self._global_container_stack.getProperty("machine_depth", "value")
@ -837,27 +804,19 @@ class BuildVolume(SceneNode):
prime_tower_x = prime_tower_x - machine_width / 2 #Offset by half machine_width and _depth to put the origin in the front-left.
prime_tower_y = prime_tower_y + machine_depth / 2
if (ExtruderManager.getInstance().getResolveOrValue("prime_tower_brim_enable") and
ExtruderManager.getInstance().getResolveOrValue("adhesion_type") != "raft"):
if adhesion_extruder is not None and self._global_container_stack.getProperty("prime_tower_brim_enable", "value") and self._global_container_stack.getProperty("adhesion_type", "value") != "raft":
brim_size = (
extruder.getProperty("brim_line_count", "value") *
extruder.getProperty("skirt_brim_line_width", "value") / 100.0 *
extruder.getProperty("initial_layer_line_width_factor", "value")
adhesion_extruder.getProperty("brim_line_count", "value") *
adhesion_extruder.getProperty("skirt_brim_line_width", "value") / 100.0 *
adhesion_extruder.getProperty("initial_layer_line_width_factor", "value")
)
prime_tower_x -= brim_size
prime_tower_y += brim_size
if self._global_container_stack.getProperty("prime_tower_circular", "value"):
radius = prime_tower_size / 2
prime_tower_area = Polygon.approximatedCircle(radius)
prime_tower_area = prime_tower_area.translate(prime_tower_x - radius, prime_tower_y - radius)
else:
prime_tower_area = Polygon([
[prime_tower_x - prime_tower_size, prime_tower_y - prime_tower_size],
[prime_tower_x, prime_tower_y - prime_tower_size],
[prime_tower_x, prime_tower_y],
[prime_tower_x - prime_tower_size, prime_tower_y],
])
prime_tower_area = prime_tower_area.getMinkowskiHull(Polygon.approximatedCircle(0))
for extruder in used_extruders:
result[extruder.getId()].append(prime_tower_area) #The prime tower location is the same for each extruder, regardless of offset.
@ -915,9 +874,12 @@ class BuildVolume(SceneNode):
# for.
# \return A dictionary with for each used extruder ID the disallowed areas
# where that extruder may not print.
def _computeDisallowedAreasStatic(self, border_size, used_extruders):
#Convert disallowed areas to polygons and dilate them.
def _computeDisallowedAreasStatic(self, border_size:float, used_extruders: List["ExtruderStack"]) -> Dict[str, List[Polygon]]:
# Convert disallowed areas to polygons and dilate them.
machine_disallowed_polygons = []
if self._global_container_stack is None:
return {}
for area in self._global_container_stack.getProperty("machine_disallowed_areas", "value"):
polygon = Polygon(numpy.array(area, numpy.float32))
polygon = polygon.getMinkowskiHull(Polygon.approximatedCircle(border_size))
@ -928,7 +890,7 @@ class BuildVolume(SceneNode):
nozzle_offsetting_for_disallowed_areas = self._global_container_stack.getMetaDataEntry(
"nozzle_offsetting_for_disallowed_areas", True)
result = {}
result = {} # type: Dict[str, List[Polygon]]
for extruder in used_extruders:
extruder_id = extruder.getId()
offset_x = extruder.getProperty("machine_nozzle_offset_x", "value")
@ -937,13 +899,13 @@ class BuildVolume(SceneNode):
offset_y = extruder.getProperty("machine_nozzle_offset_y", "value")
if offset_y is None:
offset_y = 0
offset_y = -offset_y #Y direction of g-code is the inverse of Y direction of Cura's scene space.
offset_y = -offset_y # Y direction of g-code is the inverse of Y direction of Cura's scene space.
result[extruder_id] = []
for polygon in machine_disallowed_polygons:
result[extruder_id].append(polygon.translate(offset_x, offset_y)) #Compensate for the nozzle offset of this extruder.
result[extruder_id].append(polygon.translate(offset_x, offset_y)) # Compensate for the nozzle offset of this extruder.
#Add the border around the edge of the build volume.
# Add the border around the edge of the build volume.
left_unreachable_border = 0
right_unreachable_border = 0
top_unreachable_border = 0
@ -951,7 +913,8 @@ class BuildVolume(SceneNode):
# Only do nozzle offsetting if needed
if nozzle_offsetting_for_disallowed_areas:
#The build volume is defined as the union of the area that all extruders can reach, so we need to know the relative offset to all extruders.
# The build volume is defined as the union of the area that all extruders can reach, so we need to know
# the relative offset to all extruders.
for other_extruder in ExtruderManager.getInstance().getActiveExtruderStacks():
other_offset_x = other_extruder.getProperty("machine_nozzle_offset_x", "value")
if other_offset_x is None:
@ -1035,8 +998,8 @@ class BuildVolume(SceneNode):
[ half_machine_width - border_size, 0]
], numpy.float32)))
result[extruder_id].append(Polygon(numpy.array([
[ half_machine_width,-half_machine_depth],
[-half_machine_width,-half_machine_depth],
[ half_machine_width, -half_machine_depth],
[-half_machine_width, -half_machine_depth],
[ 0, -half_machine_depth + border_size]
], numpy.float32)))
@ -1163,7 +1126,7 @@ class BuildVolume(SceneNode):
_raft_settings = ["adhesion_type", "raft_base_thickness", "raft_interface_thickness", "raft_surface_layers", "raft_surface_thickness", "raft_airgap", "layer_0_z_overlap"]
_extra_z_settings = ["retraction_hop_enabled", "retraction_hop"]
_prime_settings = ["extruder_prime_pos_x", "extruder_prime_pos_y", "extruder_prime_pos_z", "prime_blob_enable"]
_tower_settings = ["prime_tower_enable", "prime_tower_circular", "prime_tower_size", "prime_tower_position_x", "prime_tower_position_y", "prime_tower_brim_enable"]
_tower_settings = ["prime_tower_enable", "prime_tower_size", "prime_tower_position_x", "prime_tower_position_y", "prime_tower_brim_enable"]
_ooze_shield_settings = ["ooze_shield_enabled", "ooze_shield_dist"]
_distance_settings = ["infill_wipe_dist", "travel_avoid_distance", "support_offset", "support_enable", "travel_avoid_other_parts", "travel_avoid_supports"]
_extruder_settings = ["support_enable", "support_bottom_enable", "support_roof_enable", "support_infill_extruder_nr", "support_extruder_nr_layer_0", "support_bottom_extruder_nr", "support_roof_extruder_nr", "brim_line_count", "adhesion_extruder_nr", "adhesion_type"] #Settings that can affect which extruders are used.

View File

@ -144,7 +144,7 @@ class CuraApplication(QtApplication):
# SettingVersion represents the set of settings available in the machine/extruder definitions.
# You need to make sure that this version number needs to be increased if there is any non-backwards-compatible
# changes of the settings.
SettingVersion = 7
SettingVersion = 8
Created = False

View File

@ -6,7 +6,6 @@ CuraAppDisplayName = "@CURA_APP_DISPLAY_NAME@"
CuraVersion = "@CURA_VERSION@"
CuraBuildType = "@CURA_BUILDTYPE@"
CuraDebugMode = True if "@_cura_debugmode@" == "ON" else False
CuraSDKVersion = "@CURA_SDK_VERSION@"
CuraCloudAPIRoot = "@CURA_CLOUD_API_ROOT@"
CuraCloudAPIVersion = "@CURA_CLOUD_API_VERSION@"
CuraCloudAccountAPIRoot = "@CURA_CLOUD_ACCOUNT_API_ROOT@"

View File

@ -283,7 +283,7 @@ class CuraContainerRegistry(ContainerRegistry):
profile.addInstance(new_instance)
profile.setDirty(True)
global_profile.removeInstance(qc_setting_key, postpone_emit=True)
global_profile.removeInstance(qc_setting_key, postpone_emit = True)
extruder_profiles.append(profile)
for profile in extruder_profiles:

View File

@ -205,7 +205,7 @@ class ExtruderManager(QObject):
# list.
#
# \return A list of extruder stacks.
def getUsedExtruderStacks(self) -> List["ContainerStack"]:
def getUsedExtruderStacks(self) -> List["ExtruderStack"]:
global_stack = self._application.getGlobalContainerStack()
container_registry = ContainerRegistry.getInstance()

View File

@ -986,8 +986,9 @@ class MachineManager(QObject):
self._application.globalContainerStackChanged.emit()
self.forceUpdateAllSettings()
# Note that this function is deprecated, but the decorators for this don't play well together!
# @deprecated("use Cura.MachineManager.activeMachine.extruders instead", "4.2")
@pyqtSlot(int, result = QObject)
@deprecated("use Cura.MachineManager.activeMachine.extruders instead", "4.2")
def getExtruder(self, position: int) -> Optional[ExtruderStack]:
if self._global_container_stack:
return self._global_container_stack.extruders.get(str(position))
@ -1111,9 +1112,17 @@ class MachineManager(QObject):
def _onRootMaterialChanged(self) -> None:
self._current_root_material_id = {}
changed = False
if self._global_container_stack:
for position in self._global_container_stack.extruders:
self._current_root_material_id[position] = self._global_container_stack.extruders[position].material.getMetaDataEntry("base_file")
material_id = self._global_container_stack.extruders[position].material.getMetaDataEntry("base_file")
if position not in self._current_root_material_id or material_id != self._current_root_material_id[position]:
changed = True
self._current_root_material_id[position] = material_id
if changed:
self.activeMaterialChanged.emit()
@pyqtProperty("QVariant", notify = rootMaterialChanged)
def currentRootMaterialId(self) -> Dict[str, str]:

View File

@ -419,13 +419,17 @@ class ThreeMFWorkspaceReader(WorkspaceReader):
if parser.has_option("metadata", "enabled"):
extruder_info.enabled = parser["metadata"]["enabled"]
if variant_id not in ("empty", "empty_variant"):
if variant_id in instance_container_info_dict:
extruder_info.variant_info = instance_container_info_dict[variant_id]
if material_id not in ("empty", "empty_material"):
root_material_id = reverse_material_id_dict[material_id]
extruder_info.root_material_id = root_material_id
definition_changes_id = parser["containers"][str(_ContainerIndexes.DefinitionChanges)]
if definition_changes_id not in ("empty", "empty_definition_changes"):
extruder_info.definition_changes_info = instance_container_info_dict[definition_changes_id]
user_changes_id = parser["containers"][str(_ContainerIndexes.UserChanges)]
if user_changes_id not in ("empty", "empty_user_changes"):
extruder_info.user_changes_info = instance_container_info_dict[user_changes_id]
@ -905,6 +909,10 @@ class ThreeMFWorkspaceReader(WorkspaceReader):
continue
extruder_info = self._machine_info.extruder_info_dict[position]
if extruder_info.variant_info is None:
# If there is no variant_info, try to use the default variant. Otherwise, leave it be.
node = variant_manager.getDefaultVariantNode(global_stack.definition, VariantType.NOZZLE, global_stack)
if node is not None and node.getContainer() is not None:
extruder_stack.variant = node.getContainer()
continue
parser = extruder_info.variant_info.parser

View File

@ -1,11 +1,14 @@
# Copyright (c) 2018 Ultimaker B.V.
# Copyright (c) 2019 Ultimaker B.V.
# Cura is released under the terms of the LGPLv3 or higher.
import configparser
from typing import List, Optional, Tuple
from UM.PluginRegistry import PluginRegistry
from UM.Logger import Logger
from UM.Settings.ContainerFormatError import ContainerFormatError
from UM.Settings.InstanceContainer import InstanceContainer # The new profile to make.
from cura.CuraApplication import CuraApplication
from cura.ReaderWriters.ProfileReader import ProfileReader
import zipfile
@ -17,23 +20,26 @@ import zipfile
class CuraProfileReader(ProfileReader):
## Initialises the cura profile reader.
# This does nothing since the only other function is basically stateless.
def __init__(self):
def __init__(self) -> None:
super().__init__()
## Reads a cura profile from a file and returns it.
#
# \param file_name The file to read the cura profile from.
# \return The cura profile that was in the file, if any. If the file could
# not be read or didn't contain a valid profile, \code None \endcode is
# \return The cura profiles that were in the file, if any. If the file
# could not be read or didn't contain a valid profile, ``None`` is
# returned.
def read(self, file_name):
def read(self, file_name: str) -> List[Optional[InstanceContainer]]:
try:
with zipfile.ZipFile(file_name, "r") as archive:
results = []
results = [] # type: List[Optional[InstanceContainer]]
for profile_id in archive.namelist():
with archive.open(profile_id) as f:
serialized = f.read()
profile = self._loadProfile(serialized.decode("utf-8"), profile_id)
upgraded_profiles = self._upgradeProfile(serialized.decode("utf-8"), profile_id) #After upgrading it may split into multiple profiles.
for upgraded_profile in upgraded_profiles:
serialization, new_id = upgraded_profile
profile = self._loadProfile(serialization, new_id)
if profile is not None:
results.append(profile)
return results
@ -41,15 +47,16 @@ class CuraProfileReader(ProfileReader):
except zipfile.BadZipFile:
# It must be an older profile from Cura 2.1.
with open(file_name, encoding = "utf-8") as fhandle:
serialized = fhandle.read()
return [self._loadProfile(serialized, profile_id) for serialized, profile_id in self._upgradeProfile(serialized, file_name)]
serialized_bytes = fhandle.read()
return [self._loadProfile(serialized, profile_id) for serialized, profile_id in self._upgradeProfile(serialized_bytes, file_name)]
## Convert a profile from an old Cura to this Cura if needed.
#
# \param serialized \type{str} The profile data to convert in the serialized on-disk format.
# \param profile_id \type{str} The name of the profile.
# \return \type{List[Tuple[str,str]]} List of serialized profile strings and matching profile names.
def _upgradeProfile(self, serialized, profile_id):
# \param serialized The profile data to convert in the serialized on-disk
# format.
# \param profile_id The name of the profile.
# \return List of serialized profile strings and matching profile names.
def _upgradeProfile(self, serialized: str, profile_id: str) -> List[Tuple[str, str]]:
parser = configparser.ConfigParser(interpolation = None)
parser.read_string(serialized)
@ -61,18 +68,19 @@ class CuraProfileReader(ProfileReader):
return []
version = int(parser["general"]["version"])
setting_version = int(parser["metadata"].get("setting_version", "0"))
if InstanceContainer.Version != version:
name = parser["general"]["name"]
return self._upgradeProfileVersion(serialized, name, version)
return self._upgradeProfileVersion(serialized, name, version, setting_version)
else:
return [(serialized, profile_id)]
## Load a profile from a serialized string.
#
# \param serialized \type{str} The profile data to read.
# \param profile_id \type{str} The name of the profile.
# \return \type{InstanceContainer|None}
def _loadProfile(self, serialized, profile_id):
# \param serialized The profile data to read.
# \param profile_id The name of the profile.
# \return The profile that was stored in the string.
def _loadProfile(self, serialized: str, profile_id: str) -> Optional[InstanceContainer]:
# Create an empty profile.
profile = InstanceContainer(profile_id)
profile.setMetaDataEntry("type", "quality_changes")
@ -88,21 +96,31 @@ class CuraProfileReader(ProfileReader):
## Upgrade a serialized profile to the current profile format.
#
# \param serialized \type{str} The profile data to convert.
# \param profile_id \type{str} The name of the profile.
# \param source_version \type{int} The profile version of 'serialized'.
# \return \type{List[Tuple[str,str]]} List of serialized profile strings and matching profile names.
def _upgradeProfileVersion(self, serialized, profile_id, source_version):
converter_plugins = PluginRegistry.getInstance().getAllMetaData(filter={"version_upgrade": {} }, active_only=True)
# \param serialized The profile data to convert.
# \param profile_id The name of the profile.
# \param source_version The profile version of 'serialized'.
# \return List of serialized profile strings and matching profile names.
def _upgradeProfileVersion(self, serialized: str, profile_id: str, main_version: int, setting_version: int) -> List[Tuple[str, str]]:
source_version = main_version * 1000000 + setting_version
source_format = ("profile", source_version)
profile_convert_funcs = [plugin["version_upgrade"][source_format][2] for plugin in converter_plugins
if source_format in plugin["version_upgrade"] and plugin["version_upgrade"][source_format][1] == InstanceContainer.Version]
if not profile_convert_funcs:
from UM.VersionUpgradeManager import VersionUpgradeManager
results = VersionUpgradeManager.getInstance().updateFilesData("quality_changes", source_version, [serialized], [profile_id])
if results is None:
return []
filenames, outputs = profile_convert_funcs[0](serialized, profile_id)
if filenames is None and outputs is None:
serialized = results.files_data[0]
parser = configparser.ConfigParser(interpolation = None)
parser.read_string(serialized)
if "general" not in parser:
Logger.log("w", "Missing required section 'general'.")
return []
return list(zip(outputs, filenames))
new_source_version = results.version
if int(new_source_version / 1000000) != InstanceContainer.Version or new_source_version % 1000000 != CuraApplication.SettingVersion:
Logger.log("e", "Failed to upgrade profile [%s]", profile_id)
if int(parser["general"]["version"]) != InstanceContainer.Version:
Logger.log("e", "Failed to upgrade profile [%s]", profile_id)
return []
return [(serialized, profile_id)]

View File

@ -97,7 +97,7 @@ Rectangle
horizontalCenter: parent.horizontalCenter
}
visible: isNetworkConfigured && !isConnected
text: catalog.i18nc("@info", "Please make sure your printer has a connection:\n- Check if the printer is turned on.\n- Check if the printer is connected to the network.")
text: catalog.i18nc("@info", "Please make sure your printer has a connection:\n- Check if the printer is turned on.\n- Check if the printer is connected to the network.\n- Check if you are signed in to discover cloud-connected printers.")
font: UM.Theme.getFont("medium")
color: UM.Theme.getColor("monitor_text_primary")
wrapMode: Text.WordWrap

View File

@ -81,7 +81,7 @@ Item
enabled: visible && !(printJob.state == "pausing" || printJob.state == "resuming");
onClicked: {
if (printJob.state == "paused") {
printJob.setState("print");
printJob.setState("resume");
popUp.close();
return;
}

View File

@ -22,10 +22,6 @@ Item
// The print job which all other data is derived from
property var printJob: null
// If the printer is a cloud printer or not. Other items base their enabled state off of this boolean. In the future
// they might not need to though.
property bool cloudConnection: Cura.MachineManager.activeMachineIsUsingCloudConnection
width: parent.width
height: childrenRect.height
@ -217,7 +213,7 @@ Item
}
width: 32 * screenScaleFactor // TODO: Theme!
height: 32 * screenScaleFactor // TODO: Theme!
enabled: !cloudConnection
enabled: OutputDevice.supportsPrintJobActions
onClicked: enabled ? contextMenu.switchPopupState() : {}
visible:
{
@ -250,7 +246,7 @@ Item
MonitorInfoBlurb
{
id: contextMenuDisabledInfo
text: catalog.i18nc("@info", "These options are not available because you are monitoring a cloud printer.")
text: catalog.i18nc("@info", "Please update your printer's firmware to manage the queue remotely.")
target: contextMenuButton
}
}

View File

@ -172,8 +172,7 @@ Item
}
width: 36 * screenScaleFactor // TODO: Theme!
height: 36 * screenScaleFactor // TODO: Theme!
enabled: !cloudConnection
enabled: OutputDevice.supportsPrintJobActions
onClicked: enabled ? contextMenu.switchPopupState() : {}
visible:
{
@ -206,7 +205,7 @@ Item
MonitorInfoBlurb
{
id: contextMenuDisabledInfo
text: catalog.i18nc("@info", "These options are not available because you are monitoring a cloud printer.")
text: catalog.i18nc("@info", "Please update your printer's firmware to manage the queue remotely.")
target: contextMenuButton
}
@ -244,7 +243,6 @@ Item
}
}
// Divider
Rectangle
{

View File

@ -42,7 +42,6 @@ Item
}
height: 18 * screenScaleFactor // TODO: Theme!
width: childrenRect.width
visible: !cloudConnection
UM.RecolorImage
{
@ -65,7 +64,7 @@ Item
color: UM.Theme.getColor("monitor_text_link")
font: UM.Theme.getFont("medium") // 14pt, regular
linkColor: UM.Theme.getColor("monitor_text_link")
text: catalog.i18nc("@label link to connect manager", "Go to Cura Connect")
text: catalog.i18nc("@label link to connect manager", "Manage in browser")
renderType: Text.NativeRendering
}
}
@ -73,9 +72,7 @@ Item
MouseArea
{
anchors.fill: manageQueueLabel
enabled: !cloudConnection
hoverEnabled: !cloudConnection
onClicked: Cura.MachineManager.printerOutputDevices[0].openPrintJobControlPanel()
onClicked: OutputDevice.openPrintJobControlPanel()
onEntered:
{
manageQueueText.font.underline = true
@ -98,6 +95,22 @@ Item
}
spacing: 18 * screenScaleFactor // TODO: Theme!
Label
{
text: catalog.i18nc("@label", "There are no print jobs in the queue. Slice and send a job to add one.")
color: UM.Theme.getColor("monitor_text_primary")
elide: Text.ElideRight
font: UM.Theme.getFont("medium") // 14pt, regular
anchors.verticalCenter: parent.verticalCenter
width: 600 * screenScaleFactor // TODO: Theme! (Should match column size)
// FIXED-LINE-HEIGHT:
height: 18 * screenScaleFactor // TODO: Theme!
verticalAlignment: Text.AlignVCenter
renderType: Text.NativeRendering
visible: printJobList.count === 0
}
Label
{
text: catalog.i18nc("@label", "Print jobs")
@ -111,6 +124,7 @@ Item
height: 18 * screenScaleFactor // TODO: Theme!
verticalAlignment: Text.AlignVCenter
renderType: Text.NativeRendering
visible: printJobList.count > 0
}
Label
@ -126,6 +140,7 @@ Item
height: 18 * screenScaleFactor // TODO: Theme!
verticalAlignment: Text.AlignVCenter
renderType: Text.NativeRendering
visible: printJobList.count > 0
}
Label
@ -141,6 +156,7 @@ Item
height: 18 * screenScaleFactor // TODO: Theme!
verticalAlignment: Text.AlignVCenter
renderType: Text.NativeRendering
visible: printJobList.count > 0
}
}
@ -184,89 +200,4 @@ Item
spacing: 6 // TODO: Theme!
}
}
Rectangle
{
anchors
{
horizontalCenter: parent.horizontalCenter
top: printJobQueueHeadings.bottom
topMargin: 12 * screenScaleFactor // TODO: Theme!
}
height: 48 * screenScaleFactor // TODO: Theme!
width: parent.width
color: UM.Theme.getColor("monitor_card_background")
border.color: UM.Theme.getColor("monitor_card_border")
radius: 2 * screenScaleFactor // TODO: Theme!
visible: printJobList.model.length == 0
Row
{
anchors
{
left: parent.left
leftMargin: 18 * screenScaleFactor // TODO: Theme!
verticalCenter: parent.verticalCenter
}
spacing: 18 * screenScaleFactor // TODO: Theme!
height: 18 * screenScaleFactor // TODO: Theme!
Label
{
text: i18n.i18nc("@info", "All jobs are printed.")
color: UM.Theme.getColor("monitor_text_primary")
font: UM.Theme.getFont("medium") // 14pt, regular
renderType: Text.NativeRendering
}
Item
{
id: viewPrintHistoryLabel
height: 18 * screenScaleFactor // TODO: Theme!
width: childrenRect.width
visible: !cloudConnection
UM.RecolorImage
{
id: printHistoryIcon
anchors.verticalCenter: parent.verticalCenter
color: UM.Theme.getColor("monitor_text_link")
source: UM.Theme.getIcon("external_link")
width: 16 * screenScaleFactor // TODO: Theme! (Y U NO USE 18 LIKE ALL OTHER ICONS?!)
height: 16 * screenScaleFactor // TODO: Theme! (Y U NO USE 18 LIKE ALL OTHER ICONS?!)
}
Label
{
id: viewPrintHistoryText
anchors
{
left: printHistoryIcon.right
leftMargin: 6 * screenScaleFactor // TODO: Theme!
verticalCenter: printHistoryIcon.verticalCenter
}
color: UM.Theme.getColor("monitor_text_link")
font: UM.Theme.getFont("medium") // 14pt, regular
linkColor: UM.Theme.getColor("monitor_text_link")
text: catalog.i18nc("@label link to connect manager", "View print history")
renderType: Text.NativeRendering
}
MouseArea
{
anchors.fill: parent
hoverEnabled: true
onClicked: Cura.MachineManager.printerOutputDevices[0].openPrintJobControlPanel()
onEntered:
{
viewPrintHistoryText.font.underline = true
}
onExited:
{
viewPrintHistoryText.font.underline = false
}
}
}
}
}
}

View File

@ -96,6 +96,21 @@ class CloudApiClient:
reply = self._manager.post(self._createEmptyRequest(url), b"")
self._addCallback(reply, on_finished, CloudPrintResponse)
## Send a print job action to the cluster for the given print job.
# \param cluster_id: The ID of the cluster.
# \param cluster_job_id: The ID of the print job within the cluster.
# \param action: The name of the action to execute.
def doPrintJobAction(self, cluster_id: str, cluster_job_id: str, action: str, data: Optional[Dict[str, Any]] = None) -> None:
body = b""
if data:
try:
body = json.dumps({"data": data}).encode()
except JSONDecodeError as err:
Logger.log("w", "Could not encode body: %s", err)
return
url = "{}/clusters/{}/print_jobs/{}/action/{}".format(self.CLUSTER_API_ROOT, cluster_id, cluster_job_id, action)
self._manager.post(self._createEmptyRequest(url), body)
## We override _createEmptyRequest in order to add the user credentials.
# \param url: The URL to request
# \param content_type: The type of the body contents.

View File

@ -1,5 +1,6 @@
# Copyright (c) 2018 Ultimaker B.V.
# Cura is released under the terms of the LGPLv3 or higher.
from cura.PrinterOutput.Models.PrintJobOutputModel import PrintJobOutputModel
from cura.PrinterOutput.PrinterOutputController import PrinterOutputController
from typing import TYPE_CHECKING
@ -13,10 +14,13 @@ class CloudOutputController(PrinterOutputController):
# The cloud connection only supports fetching the printer and queue status and adding a job to the queue.
# To let the UI know this we mark all features below as False.
self.can_pause = False
self.can_abort = False
self.can_pause = True
self.can_abort = True
self.can_pre_heat_bed = False
self.can_pre_heat_hotends = False
self.can_send_raw_gcode = False
self.can_control_manually = False
self.can_update_firmware = False
def setJobState(self, job: "PrintJobOutputModel", state: str):
self._output_device.setJobState(job.key, state)

View File

@ -6,6 +6,7 @@ from time import time
from typing import Dict, List, Optional, Set, cast
from PyQt5.QtCore import QObject, QUrl, pyqtProperty, pyqtSignal, pyqtSlot
from PyQt5.QtGui import QDesktopServices
from UM import i18nCatalog
from UM.Backend.Backend import BackendState
@ -15,6 +16,7 @@ from UM.Message import Message
from UM.PluginRegistry import PluginRegistry
from UM.Qt.Duration import Duration, DurationFormat
from UM.Scene.SceneNode import SceneNode
from UM.Version import Version
from cura.CuraApplication import CuraApplication
from cura.PrinterOutput.NetworkedPrinterOutputDevice import AuthState, NetworkedPrinterOutputDevice
@ -33,8 +35,7 @@ from .Models.CloudPrintResponse import CloudPrintResponse
from .Models.CloudPrintJobResponse import CloudPrintJobResponse
from .Models.CloudClusterPrinterStatus import CloudClusterPrinterStatus
from .Models.CloudClusterPrintJobStatus import CloudClusterPrintJobStatus
from .Utils import findChanges, formatDateCompleted, formatTimeCompleted
from .Utils import formatDateCompleted, formatTimeCompleted
I18N_CATALOG = i18nCatalog("cura")
@ -44,10 +45,12 @@ I18N_CATALOG = i18nCatalog("cura")
# As such, those methods have been implemented here.
# Note that this device represents a single remote cluster, not a list of multiple clusters.
class CloudOutputDevice(NetworkedPrinterOutputDevice):
# The interval with which the remote clusters are checked
CHECK_CLUSTER_INTERVAL = 10.0 # seconds
# The minimum version of firmware that support print job actions over cloud.
PRINT_JOB_ACTIONS_MIN_VERSION = Version("5.3.0")
# Signal triggered when the print jobs in the queue were changed.
printJobsChanged = pyqtSignal()
@ -75,8 +78,8 @@ class CloudOutputDevice(NetworkedPrinterOutputDevice):
b"cluster_size": b"1" # cloud devices are always clusters of at least one
}
super().__init__(device_id = cluster.cluster_id, address = "",
connection_type = ConnectionType.CloudConnection, properties = properties, parent = parent)
super().__init__(device_id=cluster.cluster_id, address="",
connection_type=ConnectionType.CloudConnection, properties=properties, parent=parent)
self._api = api_client
self._cluster = cluster
@ -174,9 +177,10 @@ class CloudOutputDevice(NetworkedPrinterOutputDevice):
# Show an error message if we're already sending a job.
if self._progress.visible:
message = Message(
text = I18N_CATALOG.i18nc("@info:status", "Sending new jobs (temporarily) blocked, still sending the previous print job."),
title = I18N_CATALOG.i18nc("@info:title", "Cloud error"),
lifetime = 10
text=I18N_CATALOG.i18nc("@info:status",
"Sending new jobs (temporarily) blocked, still sending the previous print job."),
title=I18N_CATALOG.i18nc("@info:title", "Cloud error"),
lifetime=10
)
message.show()
return
@ -198,9 +202,9 @@ class CloudOutputDevice(NetworkedPrinterOutputDevice):
self._tool_path = mesh
request = CloudPrintJobUploadRequest(
job_name = file_name or mesh_format.file_extension,
file_size = len(mesh),
content_type = mesh_format.mime_type,
job_name=file_name or mesh_format.file_extension,
file_size=len(mesh),
content_type=mesh_format.mime_type,
)
self._api.requestUpload(request, self._onPrintJobCreated)
@ -232,65 +236,74 @@ class CloudOutputDevice(NetworkedPrinterOutputDevice):
self._updatePrintJobs(status.print_jobs)
## Updates the local list of printers with the list received from the cloud.
# \param jobs: The printers received from the cloud.
def _updatePrinters(self, printers: List[CloudClusterPrinterStatus]) -> None:
previous = {p.key: p for p in self._printers} # type: Dict[str, PrinterOutputModel]
received = {p.uuid: p for p in printers} # type: Dict[str, CloudClusterPrinterStatus]
removed_printers, added_printers, updated_printers = findChanges(previous, received)
# \param remote_printers: The printers received from the cloud.
def _updatePrinters(self, remote_printers: List[CloudClusterPrinterStatus]) -> None:
# Keep track of the new printers to show.
# We create a new list instead of changing the existing one to get the correct order.
new_printers = []
# Check which printers need to be created or updated.
for index, printer_data in enumerate(remote_printers):
printer = next(iter(printer for printer in self._printers if printer.key == printer_data.uuid), None)
if not printer:
new_printers.append(printer_data.createOutputModel(CloudOutputController(self)))
else:
printer_data.updateOutputModel(printer)
new_printers.append(printer)
# Check which printers need to be removed (de-referenced).
remote_printers_keys = [printer_data.uuid for printer_data in remote_printers]
removed_printers = [printer for printer in self._printers if printer.key not in remote_printers_keys]
for removed_printer in removed_printers:
if self._active_printer == removed_printer:
if self._active_printer and self._active_printer.key == removed_printer.key:
self.setActivePrinter(None)
self._printers.remove(removed_printer)
for added_printer in added_printers:
self._printers.append(added_printer.createOutputModel(CloudOutputController(self)))
for model, printer in updated_printers:
printer.updateOutputModel(model)
# Always have an active printer
if self._printers and not self._active_printer:
self._printers = new_printers
if self._printers and not self.activePrinter:
self.setActivePrinter(self._printers[0])
if added_printers or removed_printers:
self.printersChanged.emit()
## Updates the local list of print jobs with the list received from the cloud.
# \param jobs: The print jobs received from the cloud.
def _updatePrintJobs(self, jobs: List[CloudClusterPrintJobStatus]) -> None:
received = {j.uuid: j for j in jobs} # type: Dict[str, CloudClusterPrintJobStatus]
previous = {j.key: j for j in self._print_jobs} # type: Dict[str, UM3PrintJobOutputModel]
# \param remote_jobs: The print jobs received from the cloud.
def _updatePrintJobs(self, remote_jobs: List[CloudClusterPrintJobStatus]) -> None:
removed_jobs, added_jobs, updated_jobs = findChanges(previous, received)
# Keep track of the new print jobs to show.
# We create a new list instead of changing the existing one to get the correct order.
new_print_jobs = []
# Check which print jobs need to be created or updated.
for index, print_job_data in enumerate(remote_jobs):
print_job = next(
iter(print_job for print_job in self._print_jobs if print_job.key == print_job_data.uuid), None)
if not print_job:
new_print_jobs.append(self._createPrintJobModel(print_job_data))
else:
print_job_data.updateOutputModel(print_job)
if print_job_data.printer_uuid:
self._updateAssignedPrinter(print_job, print_job_data.printer_uuid)
new_print_jobs.append(print_job)
# Check which print job need to be removed (de-referenced).
remote_job_keys = [print_job_data.uuid for print_job_data in remote_jobs]
removed_jobs = [print_job for print_job in self._print_jobs if print_job.key not in remote_job_keys]
for removed_job in removed_jobs:
if removed_job.assignedPrinter:
removed_job.assignedPrinter.updateActivePrintJob(None)
removed_job.stateChanged.disconnect(self._onPrintJobStateChanged)
self._print_jobs.remove(removed_job)
for added_job in added_jobs:
self._addPrintJob(added_job)
for model, job in updated_jobs:
job.updateOutputModel(model)
if job.printer_uuid:
self._updateAssignedPrinter(model, job.printer_uuid)
# We only have to update when jobs are added or removed
# updated jobs push their changes via their output model
if added_jobs or removed_jobs:
self._print_jobs = new_print_jobs
self.printJobsChanged.emit()
## Registers a new print job received via the cloud API.
# \param job: The print job received.
def _addPrintJob(self, job: CloudClusterPrintJobStatus) -> None:
model = job.createOutputModel(CloudOutputController(self))
## Create a new print job model based on the remote status of the job.
# \param remote_job: The remote print job data.
def _createPrintJobModel(self, remote_job: CloudClusterPrintJobStatus) -> UM3PrintJobOutputModel:
model = remote_job.createOutputModel(CloudOutputController(self))
model.stateChanged.connect(self._onPrintJobStateChanged)
if job.printer_uuid:
self._updateAssignedPrinter(model, job.printer_uuid)
self._print_jobs.append(model)
if remote_job.printer_uuid:
self._updateAssignedPrinter(model, remote_job.printer_uuid)
return model
## Handles the event of a change in a print job state
def _onPrintJobStateChanged(self) -> None:
@ -300,13 +313,14 @@ class CloudOutputDevice(NetworkedPrinterOutputDevice):
if job.state == "wait_cleanup" and job.key not in self._finished_jobs and job.owner == user_name:
self._finished_jobs.add(job.key)
Message(
title = I18N_CATALOG.i18nc("@info:status", "Print finished"),
text = (I18N_CATALOG.i18nc("@info:status", "Printer '{printer_name}' has finished printing '{job_name}'.").format(
printer_name = job.assignedPrinter.name,
job_name = job.name
title=I18N_CATALOG.i18nc("@info:status", "Print finished"),
text=(I18N_CATALOG.i18nc("@info:status",
"Printer '{printer_name}' has finished printing '{job_name}'.").format(
printer_name=job.assignedPrinter.name,
job_name=job.name
) if job.assignedPrinter else
I18N_CATALOG.i18nc("@info:status", "The print job '{job_name}' was finished.").format(
job_name = job.name
job_name=job.name
)),
).show()
@ -317,7 +331,6 @@ class CloudOutputDevice(NetworkedPrinterOutputDevice):
Logger.log("w", "Missing printer %s for job %s in %s", model.assignedPrinter, model.key,
[p.key for p in self._printers])
return
printer.updateActivePrintJob(model)
model.updateAssignedPrinter(printer)
@ -327,7 +340,8 @@ class CloudOutputDevice(NetworkedPrinterOutputDevice):
self._progress.show()
self._uploaded_print_job = job_response
tool_path = cast(bytes, self._tool_path)
self._api.uploadToolPath(job_response, tool_path, self._onPrintJobUploaded, self._progress.update, self._onUploadError)
self._api.uploadToolPath(job_response, tool_path, self._onPrintJobUploaded, self._progress.update,
self._onUploadError)
## Requests the print to be sent to the printer when we finished uploading the mesh.
def _onPrintJobUploaded(self) -> None:
@ -341,9 +355,9 @@ class CloudOutputDevice(NetworkedPrinterOutputDevice):
self._progress.hide()
self._uploaded_print_job = None
Message(
text = message or I18N_CATALOG.i18nc("@info:text", "Could not upload the data to the printer."),
title = I18N_CATALOG.i18nc("@info:title", "Cloud error"),
lifetime = 10
text=message or I18N_CATALOG.i18nc("@info:text", "Could not upload the data to the printer."),
title=I18N_CATALOG.i18nc("@info:title", "Cloud error"),
lifetime=10
).show()
self.writeError.emit()
@ -353,15 +367,24 @@ class CloudOutputDevice(NetworkedPrinterOutputDevice):
Logger.log("d", "The cluster will be printing this print job with the ID %s", response.cluster_job_id)
self._progress.hide()
Message(
text = I18N_CATALOG.i18nc("@info:status", "Print job was successfully sent to the printer."),
title = I18N_CATALOG.i18nc("@info:title", "Data Sent"),
lifetime = 5
text=I18N_CATALOG.i18nc("@info:status", "Print job was successfully sent to the printer."),
title=I18N_CATALOG.i18nc("@info:title", "Data Sent"),
lifetime=5
).show()
self.writeFinished.emit()
## Whether the printer that this output device represents supports print job actions via the cloud.
@pyqtProperty(bool, notify=_clusterPrintersChanged)
def supportsPrintJobActions(self) -> bool:
if not self._printers:
return False
version_number = self.printers[0].firmwareVersion.split(".")
firmware_version = Version([version_number[0], version_number[1], version_number[2]])
return firmware_version >= self.PRINT_JOB_ACTIONS_MIN_VERSION
## Gets the number of printers in the cluster.
# We use a minimum of 1 because cloud devices are always a cluster and printer discovery needs it.
@pyqtProperty(int, notify = _clusterPrintersChanged)
@pyqtProperty(int, notify=_clusterPrintersChanged)
def clusterSize(self) -> int:
return max(1, len(self._printers))
@ -371,7 +394,7 @@ class CloudOutputDevice(NetworkedPrinterOutputDevice):
return self._printers
## Get the active printer in the UI (monitor page).
@pyqtProperty(QObject, notify = activePrinterChanged)
@pyqtProperty(QObject, notify=activePrinterChanged)
def activePrinter(self) -> Optional[PrinterOutputModel]:
return self._active_printer
@ -383,38 +406,67 @@ class CloudOutputDevice(NetworkedPrinterOutputDevice):
self.activePrinterChanged.emit()
## Get remote print jobs.
@pyqtProperty("QVariantList", notify = printJobsChanged)
@pyqtProperty("QVariantList", notify=printJobsChanged)
def printJobs(self) -> List[UM3PrintJobOutputModel]:
return self._print_jobs
## Get remote print jobs that are still in the print queue.
@pyqtProperty("QVariantList", notify = printJobsChanged)
@pyqtProperty("QVariantList", notify=printJobsChanged)
def queuedPrintJobs(self) -> List[UM3PrintJobOutputModel]:
return [print_job for print_job in self._print_jobs
if print_job.state == "queued" or print_job.state == "error"]
## Get remote print jobs that are assigned to a printer.
@pyqtProperty("QVariantList", notify = printJobsChanged)
@pyqtProperty("QVariantList", notify=printJobsChanged)
def activePrintJobs(self) -> List[UM3PrintJobOutputModel]:
return [print_job for print_job in self._print_jobs if
print_job.assignedPrinter is not None and print_job.state != "queued"]
@pyqtSlot(int, result = str)
## Set the remote print job state.
def setJobState(self, print_job_uuid: str, state: str) -> None:
self._api.doPrintJobAction(self._cluster.cluster_id, print_job_uuid, state)
@pyqtSlot(str)
def sendJobToTop(self, print_job_uuid: str) -> None:
self._api.doPrintJobAction(self._cluster.cluster_id, print_job_uuid, "move",
{"list": "queued", "to_position": 0})
@pyqtSlot(str)
def deleteJobFromQueue(self, print_job_uuid: str) -> None:
self._api.doPrintJobAction(self._cluster.cluster_id, print_job_uuid, "remove")
@pyqtSlot(str)
def forceSendJob(self, print_job_uuid: str) -> None:
self._api.doPrintJobAction(self._cluster.cluster_id, print_job_uuid, "force")
@pyqtSlot(int, result=str)
def formatDuration(self, seconds: int) -> str:
return Duration(seconds).getDisplayString(DurationFormat.Format.Short)
@pyqtSlot(int, result = str)
@pyqtSlot(int, result=str)
def getTimeCompleted(self, time_remaining: int) -> str:
return formatTimeCompleted(time_remaining)
@pyqtSlot(int, result = str)
@pyqtSlot(int, result=str)
def getDateCompleted(self, time_remaining: int) -> str:
return formatDateCompleted(time_remaining)
@pyqtProperty(bool, notify=printJobsChanged)
def receivedPrintJobs(self) -> bool:
return bool(self._print_jobs)
@pyqtSlot()
def openPrintJobControlPanel(self) -> None:
QDesktopServices.openUrl(QUrl("https://mycloud.ultimaker.com"))
@pyqtSlot()
def openPrinterControlPanel(self) -> None:
QDesktopServices.openUrl(QUrl("https://mycloud.ultimaker.com"))
## TODO: The following methods are required by the monitor page QML, but are not actually available using cloud.
# TODO: We fake the methods here to not break the monitor page.
@pyqtProperty(QUrl, notify = _clusterPrintersChanged)
@pyqtProperty(QUrl, notify=_clusterPrintersChanged)
def activeCameraUrl(self) -> "QUrl":
return QUrl()
@ -422,30 +474,6 @@ class CloudOutputDevice(NetworkedPrinterOutputDevice):
def setActiveCameraUrl(self, camera_url: "QUrl") -> None:
pass
@pyqtProperty(bool, notify = printJobsChanged)
def receivedPrintJobs(self) -> bool:
return bool(self._print_jobs)
@pyqtSlot()
def openPrintJobControlPanel(self) -> None:
pass
@pyqtSlot()
def openPrinterControlPanel(self) -> None:
pass
@pyqtSlot(str)
def sendJobToTop(self, print_job_uuid: str) -> None:
pass
@pyqtSlot(str)
def deleteJobFromQueue(self, print_job_uuid: str) -> None:
pass
@pyqtSlot(str)
def forceSendJob(self, print_job_uuid: str) -> None:
pass
@pyqtProperty("QVariantList", notify = _clusterPrintersChanged)
@pyqtProperty("QVariantList", notify=_clusterPrintersChanged)
def connectedPrintersTypeCount(self) -> List[Dict[str, str]]:
return []

View File

@ -91,7 +91,6 @@ class CloudClusterPrintJobStatus(BaseCloudModel):
def createOutputModel(self, controller: CloudOutputController) -> UM3PrintJobOutputModel:
model = UM3PrintJobOutputModel(controller, self.uuid, self.name)
self.updateOutputModel(model)
return model
## Creates a new configuration model

View File

@ -140,6 +140,11 @@ class ClusterUM3OutputDevice(NetworkedPrinterOutputDevice):
if self._printer_selection_dialog is not None:
self._printer_selection_dialog.show()
## Whether the printer that this output device represents supports print job actions via the local network.
@pyqtProperty(bool, constant=True)
def supportsPrintJobActions(self) -> bool:
return True
@pyqtProperty(int, constant=True)
def clusterSize(self) -> int:
return self._cluster_size
@ -385,6 +390,13 @@ class ClusterUM3OutputDevice(NetworkedPrinterOutputDevice):
data = "{\"force\": true}"
self.put("print_jobs/{uuid}".format(uuid=print_job_uuid), data, on_finished=None)
# Set the remote print job state.
def setJobState(self, print_job_uuid: str, state: str) -> None:
# We rewrite 'resume' to 'print' here because we are using the old print job action endpoints.
action = "print" if state == "resume" else state
data = "{\"action\": \"%s\"}" % action
self.put("print_jobs/%s/action" % print_job_uuid, data, on_finished=None)
def _printJobStateChanged(self) -> None:
username = self._getUserName()

View File

@ -7,6 +7,7 @@ MYPY = False
if MYPY:
from cura.PrinterOutput.Models.PrintJobOutputModel import PrintJobOutputModel
class ClusterUM3PrinterOutputController(PrinterOutputController):
def __init__(self, output_device):
super().__init__(output_device)
@ -15,6 +16,5 @@ class ClusterUM3PrinterOutputController(PrinterOutputController):
self.can_control_manually = False
self.can_send_raw_gcode = False
def setJobState(self, job: "PrintJobOutputModel", state: str):
data = "{\"action\": \"%s\"}" % state
self._output_device.put("print_jobs/%s/action" % job.key, data, on_finished=None)
def setJobState(self, job: "PrintJobOutputModel", state: str) -> None:
self._output_device.setJobState(job.key, state)

View File

@ -72,9 +72,9 @@ class TestCloudOutputDevice(TestCase):
controller_fields = {
"_output_device": self.device,
"can_abort": False,
"can_abort": True,
"can_control_manually": False,
"can_pause": False,
"can_pause": True,
"can_pre_heat_bed": False,
"can_pre_heat_hotends": False,
"can_send_raw_gcode": False,

View File

@ -0,0 +1,331 @@
# Copyright (c) 2019 Ultimaker B.V.
# Cura is released under the terms of the LGPLv3 or higher.
import configparser
import io
import os.path #To get the file ID.
from typing import Dict, List, Tuple
from UM.VersionUpgrade import VersionUpgrade
_renamed_settings = {
"support_minimal_diameter": "support_tower_maximum_supported_diameter"
} #type: Dict[str, str]
_removed_settings = ["prime_tower_circular", "max_feedrate_z_override"] # type: List[str]
_renamed_profiles = {
#Include CreawsomeMod profiles here as well for the people who installed that.
#Definitions.
"creawsome_base": "creality_base",
"creawsome_cr10": "creality_cr10",
"creawsome_cr10mini": "creality_cr10mini",
"creawsome_cr10s": "creality_cr10s",
"creawsome_cr10s4": "creality_cr10s4",
"creawsome_cr10s5": "creality_cr10s5",
"creawsome_cr10spro": "creality_cr10spro",
"creawsome_cr20": "creality_cr20",
"creawsome_cr20pro": "creality_cr20pro",
"creawsome_ender2": "creality_ender2",
"creawsome_ender3": "creality_ender3",
"creawsome_ender4": "creality_ender4",
"creawsome_ender5": "creality_ender5",
#Extruder definitions.
"creawsome_base_extruder_0": "creality_base_extruder_0",
#Variants.
"creawsome_base_0.2": "creality_base_0.2",
"creawsome_base_0.3": "creality_base_0.3",
"creawsome_base_0.4": "creality_base_0.4",
"creawsome_base_0.5": "creality_base_0.5",
"creawsome_base_0.6": "creality_base_0.6",
"creawsome_base_0.8": "creality_base_0.8",
"creawsome_base_1.0": "creality_base_1.0",
"creawsome_cr10_0.2": "creality_cr10_0.2",
"creawsome_cr10_0.3": "creality_cr10_0.3",
"creawsome_cr10_0.4": "creality_cr10_0.4",
"creawsome_cr10_0.5": "creality_cr10_0.5",
"creawsome_cr10_0.6": "creality_cr10_0.6",
"creawsome_cr10_0.8": "creality_cr10_0.8",
"creawsome_cr10_1.0": "creality_cr10_1.0",
"creawsome_cr10mini_0.2": "creality_cr10mini_0.2",
"creawsome_cr10mini_0.3": "creality_cr10mini_0.3",
"creawsome_cr10mini_0.4": "creality_cr10mini_0.4",
"creawsome_cr10mini_0.5": "creality_cr10mini_0.5",
"creawsome_cr10mini_0.6": "creality_cr10mini_0.6",
"creawsome_cr10mini_0.8": "creality_cr10mini_0.8",
"creawsome_cr10mini_1.0": "creality_cr10mini_1.0",
"creawsome_cr10s4_0.2": "creality_cr10s4_0.2",
"creawsome_cr10s4_0.3": "creality_cr10s4_0.3",
"creawsome_cr10s4_0.4": "creality_cr10s4_0.4",
"creawsome_cr10s4_0.5": "creality_cr10s4_0.5",
"creawsome_cr10s4_0.6": "creality_cr10s4_0.6",
"creawsome_cr10s4_0.8": "creality_cr10s4_0.8",
"creawsome_cr10s4_1.0": "creality_cr10s4_1.0",
"creawsome_cr10s5_0.2": "creality_cr10s5_0.2",
"creawsome_cr10s5_0.3": "creality_cr10s5_0.3",
"creawsome_cr10s5_0.4": "creality_cr10s5_0.4",
"creawsome_cr10s5_0.5": "creality_cr10s5_0.5",
"creawsome_cr10s5_0.6": "creality_cr10s5_0.6",
"creawsome_cr10s5_0.8": "creality_cr10s5_0.8",
"creawsome_cr10s5_1.0": "creality_cr10s5_1.0",
"creawsome_cr10s_0.2": "creality_cr10s_0.2",
"creawsome_cr10s_0.3": "creality_cr10s_0.3",
"creawsome_cr10s_0.4": "creality_cr10s_0.4",
"creawsome_cr10s_0.5": "creality_cr10s_0.5",
"creawsome_cr10s_0.6": "creality_cr10s_0.6",
"creawsome_cr10s_0.8": "creality_cr10s_0.8",
"creawsome_cr10s_1.0": "creality_cr10s_1.0",
"creawsome_cr10spro_0.2": "creality_cr10spro_0.2",
"creawsome_cr10spro_0.3": "creality_cr10spro_0.3",
"creawsome_cr10spro_0.4": "creality_cr10spro_0.4",
"creawsome_cr10spro_0.5": "creality_cr10spro_0.5",
"creawsome_cr10spro_0.6": "creality_cr10spro_0.6",
"creawsome_cr10spro_0.8": "creality_cr10spro_0.8",
"creawsome_cr10spro_1.0": "creality_cr10spro_1.0",
"creawsome_cr20_0.2": "creality_cr20_0.2",
"creawsome_cr20_0.3": "creality_cr20_0.3",
"creawsome_cr20_0.4": "creality_cr20_0.4",
"creawsome_cr20_0.5": "creality_cr20_0.5",
"creawsome_cr20_0.6": "creality_cr20_0.6",
"creawsome_cr20_0.8": "creality_cr20_0.8",
"creawsome_cr20_1.0": "creality_cr20_1.0",
"creawsome_cr20pro_0.2": "creality_cr20pro_0.2",
"creawsome_cr20pro_0.3": "creality_cr20pro_0.3",
"creawsome_cr20pro_0.4": "creality_cr20pro_0.4",
"creawsome_cr20pro_0.5": "creality_cr20pro_0.5",
"creawsome_cr20pro_0.6": "creality_cr20pro_0.6",
"creawsome_cr20pro_0.8": "creality_cr20pro_0.8",
"creawsome_cr20pro_1.0": "creality_cr20pro_1.0",
"creawsome_ender2_0.2": "creality_ender2_0.2",
"creawsome_ender2_0.3": "creality_ender2_0.3",
"creawsome_ender2_0.4": "creality_ender2_0.4",
"creawsome_ender2_0.5": "creality_ender2_0.5",
"creawsome_ender2_0.6": "creality_ender2_0.6",
"creawsome_ender2_0.8": "creality_ender2_0.8",
"creawsome_ender2_1.0": "creality_ender2_1.0",
"creawsome_ender3_0.2": "creality_ender3_0.2",
"creawsome_ender3_0.3": "creality_ender3_0.3",
"creawsome_ender3_0.4": "creality_ender3_0.4",
"creawsome_ender3_0.5": "creality_ender3_0.5",
"creawsome_ender3_0.6": "creality_ender3_0.6",
"creawsome_ender3_0.8": "creality_ender3_0.8",
"creawsome_ender3_1.0": "creality_ender3_1.0",
"creawsome_ender4_0.2": "creality_ender4_0.2",
"creawsome_ender4_0.3": "creality_ender4_0.3",
"creawsome_ender4_0.4": "creality_ender4_0.4",
"creawsome_ender4_0.5": "creality_ender4_0.5",
"creawsome_ender4_0.6": "creality_ender4_0.6",
"creawsome_ender4_0.8": "creality_ender4_0.8",
"creawsome_ender4_1.0": "creality_ender4_1.0",
"creawsome_ender5_0.2": "creality_ender5_0.2",
"creawsome_ender5_0.3": "creality_ender5_0.3",
"creawsome_ender5_0.4": "creality_ender5_0.4",
"creawsome_ender5_0.5": "creality_ender5_0.5",
"creawsome_ender5_0.6": "creality_ender5_0.6",
"creawsome_ender5_0.8": "creality_ender5_0.8",
"creawsome_ender5_1.0": "creality_ender5_1.0",
#Upgrade for people who had the original Creality profiles from 4.1 and earlier.
"creality_cr10_extruder_0": "creality_base_extruder_0",
"creality_cr10s4_extruder_0": "creality_base_extruder_0",
"creality_cr10s5_extruder_0": "creality_base_extruder_0",
"creality_ender3_extruder_0": "creality_base_extruder_0"
}
#For legacy Creality printers, select the correct quality profile depending on the material.
_creality_quality_per_material = {
#Since legacy Creality printers didn't have different variants, we always pick the 0.4mm variant.
"generic_abs_175": {
"high": "base_0.4_ABS_super",
"normal": "base_0.4_ABS_super",
"fast": "base_0.4_ABS_super",
"draft": "base_0.4_ABS_standard",
"extra_fast": "base_0.4_ABS_low",
"coarse": "base_0.4_ABS_low",
"extra_coarse": "base_0.4_ABS_low"
},
"generic_petg_175": {
"high": "base_0.4_PETG_super",
"normal": "base_0.4_PETG_super",
"fast": "base_0.4_PETG_super",
"draft": "base_0.4_PETG_standard",
"extra_fast": "base_0.4_PETG_low",
"coarse": "base_0.4_PETG_low",
"extra_coarse": "base_0.4_PETG_low"
},
"generic_pla_175": {
"high": "base_0.4_PLA_super",
"normal": "base_0.4_PLA_super",
"fast": "base_0.4_PLA_super",
"draft": "base_0.4_PLA_standard",
"extra_fast": "base_0.4_PLA_low",
"coarse": "base_0.4_PLA_low",
"extra_coarse": "base_0.4_PLA_low"
},
"generic_tpu_175": {
"high": "base_0.4_TPU_super",
"normal": "base_0.4_TPU_super",
"fast": "base_0.4_TPU_super",
"draft": "base_0.4_TPU_standard",
"extra_fast": "base_0.4_TPU_standard",
"coarse": "base_0.4_TPU_standard",
"extra_coarse": "base_0.4_TPU_standard"
},
"empty_material": { #For the global stack.
"high": "base_global_super",
"normal": "base_global_super",
"fast": "base_global_super",
"draft": "base_global_standard",
"extra_fast": "base_global_low",
"coarse": "base_global_low",
"extra_coarse": "base_global_low"
}
}
#Default variant to select for legacy Creality printers, now that we have variants.
_default_variants = {
"creality_cr10_extruder_0": "creality_cr10_0.4",
"creality_cr10s4_extruder_0": "creality_cr10s4_0.4",
"creality_cr10s5_extruder_0": "creality_cr10s5_0.4",
"creality_ender3_extruder_0": "creality_ender3_0.4"
}
#Whether the quality changes profile belongs to one of the upgraded printers can only be recognised by how they start.
#If they are, they must use the creality base definition so that they still belong to those printers.
_quality_changes_to_creality_base = {
"creality_cr10_extruder_0",
"creality_cr10s4_extruder_0",
"creality_cr10s5_extruder_0",
"creality_ender3_extruder_0"
"creality_cr10",
"creality_cr10s4",
"creality_cr10s5",
"creality_ender3",
}
_creality_limited_quality_type = {
"high": "super",
"normal": "super",
"fast": "super",
"draft": "draft",
"extra_fast": "draft",
"coarse": "draft",
"extra_coarse": "draft"
}
## Upgrades configurations from the state they were in at version 4.1 to the
# state they should be in at version 4.2.
class VersionUpgrade41to42(VersionUpgrade):
## Gets the version number from a CFG file in Uranium's 4.1 format.
#
# Since the format may change, this is implemented for the 4.1 format only
# and needs to be included in the version upgrade system rather than
# globally in Uranium.
#
# \param serialised The serialised form of a CFG file.
# \return The version number stored in the CFG file.
# \raises ValueError The format of the version number in the file is
# incorrect.
# \raises KeyError The format of the file is incorrect.
def getCfgVersion(self, serialised: str) -> int:
parser = configparser.ConfigParser(interpolation = None)
parser.read_string(serialised)
format_version = int(parser.get("general", "version")) #Explicitly give an exception when this fails. That means that the file format is not recognised.
setting_version = int(parser.get("metadata", "setting_version", fallback = "0"))
return format_version * 1000000 + setting_version
## Upgrades instance containers to have the new version
# number.
#
# This renames the renamed settings in the containers.
def upgradeInstanceContainer(self, serialized: str, filename: str) -> Tuple[List[str], List[str]]:
parser = configparser.ConfigParser(interpolation = None)
parser.read_string(serialized)
#Update version number.
parser["metadata"]["setting_version"] = "8"
#Rename settings.
if "values" in parser:
for old_name, new_name in _renamed_settings.items():
if old_name in parser["values"]:
parser["values"][new_name] = parser["values"][old_name]
del parser["values"][old_name]
#Remove settings.
for key in _removed_settings:
if key in parser["values"]:
del parser["values"][key]
#For quality-changes profiles made for Creality printers, change the definition to the creality_base and make sure that the quality is something we have a profile for.
if parser["metadata"].get("type", "") == "quality_changes":
for possible_printer in _quality_changes_to_creality_base:
if os.path.basename(filename).startswith(possible_printer + "_"):
parser["general"]["definition"] = "creality_base"
parser["metadata"]["quality_type"] = _creality_limited_quality_type.get(parser["metadata"]["quality_type"], "draft")
break
result = io.StringIO()
parser.write(result)
return [filename], [result.getvalue()]
## Upgrades Preferences to have the new version number.
#
# This renames the renamed settings in the list of visible settings.
def upgradePreferences(self, serialized: str, filename: str) -> Tuple[List[str], List[str]]:
parser = configparser.ConfigParser(interpolation = None)
parser.read_string(serialized)
#Update version number.
parser["metadata"]["setting_version"] = "8"
#Renamed settings.
if "visible_settings" in parser["general"]:
visible_settings = parser["general"]["visible_settings"]
visible_setting_set = set(visible_settings.split(";"))
for old_name, new_name in _renamed_settings.items():
if old_name in visible_setting_set:
visible_setting_set.remove(old_name)
visible_setting_set.add(new_name)
for removed_key in _removed_settings:
if removed_key in visible_setting_set:
visible_setting_set.remove(removed_key)
parser["general"]["visible_settings"] = ";".join(visible_setting_set)
result = io.StringIO()
parser.write(result)
return [filename], [result.getvalue()]
## Upgrades stacks to have the new version number.
def upgradeStack(self, serialized: str, filename: str) -> Tuple[List[str], List[str]]:
parser = configparser.ConfigParser(interpolation = None)
parser.read_string(serialized)
#Update version number.
parser["metadata"]["setting_version"] = "8"
#Change renamed profiles.
if "containers" in parser:
#For legacy Creality printers, change the variant to 0.4.
definition_id = parser["containers"]["6"]
if parser["metadata"].get("type", "machine") == "extruder_train":
if parser["containers"]["4"] == "empty_variant": #Necessary for people entering from CreawsomeMod who already had a variant.
if definition_id in _default_variants:
parser["containers"]["4"] = _default_variants[definition_id]
if definition_id == "creality_cr10_extruder_0": #We can't disambiguate between Creality CR-10 and Creality-CR10S since they share the same extruder definition. Have to go by the name.
if "cr-10s" in parser["metadata"].get("machine", "Creality CR-10").lower(): #Not perfect, since the user can change this name :(
parser["containers"]["4"] = "creality_cr10s_0.4"
#Also change the quality to go along with it.
material_id = parser["containers"]["3"]
old_quality_id = parser["containers"]["2"]
if material_id in _creality_quality_per_material and old_quality_id in _creality_quality_per_material[material_id]:
parser["containers"]["2"] = _creality_quality_per_material[material_id][old_quality_id]
stack_copy = {} # type: Dict[str, str] #Make a copy so that we don't modify the dict we're iterating over.
stack_copy.update(parser["containers"])
for position, profile_id in stack_copy.items():
if profile_id in _renamed_profiles:
parser["containers"][position] = _renamed_profiles[profile_id]
result = io.StringIO()
parser.write(result)
return [filename], [result.getvalue()]

View File

@ -0,0 +1,59 @@
# Copyright (c) 2019 Ultimaker B.V.
# Cura is released under the terms of the LGPLv3 or higher.
from typing import Any, Dict, TYPE_CHECKING
from . import VersionUpgrade41to42
if TYPE_CHECKING:
from UM.Application import Application
upgrade = VersionUpgrade41to42.VersionUpgrade41to42()
def getMetaData() -> Dict[str, Any]:
return {
"version_upgrade": {
# From To Upgrade function
("preferences", 6000007): ("preferences", 6000008, upgrade.upgradePreferences),
("machine_stack", 4000007): ("machine_stack", 4000008, upgrade.upgradeStack),
("extruder_train", 4000007): ("extruder_train", 4000008, upgrade.upgradeStack),
("definition_changes", 4000007): ("definition_changes", 4000008, upgrade.upgradeInstanceContainer),
("quality_changes", 4000007): ("quality_changes", 4000008, upgrade.upgradeInstanceContainer),
("quality", 4000007): ("quality", 4000008, upgrade.upgradeInstanceContainer),
("user", 4000007): ("user", 4000008, upgrade.upgradeInstanceContainer),
},
"sources": {
"preferences": {
"get_version": upgrade.getCfgVersion,
"location": {"."}
},
"machine_stack": {
"get_version": upgrade.getCfgVersion,
"location": {"./machine_instances"}
},
"extruder_train": {
"get_version": upgrade.getCfgVersion,
"location": {"./extruders"}
},
"definition_changes": {
"get_version": upgrade.getCfgVersion,
"location": {"./definition_changes"}
},
"quality_changes": {
"get_version": upgrade.getCfgVersion,
"location": {"./quality_changes"}
},
"quality": {
"get_version": upgrade.getCfgVersion,
"location": {"./quality"}
},
"user": {
"get_version": upgrade.getCfgVersion,
"location": {"./user"}
}
}
}
def register(app: "Application") -> Dict[str, Any]:
return { "version_upgrade": upgrade }

View File

@ -0,0 +1,8 @@
{
"name": "Version Upgrade 4.1 to 4.2",
"author": "Ultimaker B.V.",
"version": "1.0.0",
"description": "Upgrades configurations from Cura 4.1 to Cura 4.2.",
"api": "6.0",
"i18n-catalog": "cura"
}

View File

@ -63,9 +63,19 @@ class XmlMaterialProfile(InstanceContainer):
Logger.log("w", "Can't change metadata {key} of material {material_id} because it's read-only.".format(key = key, material_id = self.getId()))
return
# Some metadata such as diameter should also be instantiated to be a setting. Go though all values for the
# "properties" field and apply the new values to SettingInstances as well.
new_setting_values_dict = {}
if key == "properties":
for k, v in value.items():
if k in self.__material_properties_setting_map:
new_setting_values_dict[self.__material_properties_setting_map[k]] = v
# Prevent recursion
if not apply_to_all:
super().setMetaDataEntry(key, value)
for k, v in new_setting_values_dict.items():
self.setProperty(k, "value", v)
return
# Get the MaterialGroup
@ -74,17 +84,23 @@ class XmlMaterialProfile(InstanceContainer):
material_group = material_manager.getMaterialGroup(root_material_id)
if not material_group: #If the profile is not registered in the registry but loose/temporary, it will not have a base file tree.
super().setMetaDataEntry(key, value)
for k, v in new_setting_values_dict.items():
self.setProperty(k, "value", v)
return
# Update the root material container
root_material_container = material_group.root_material_node.getContainer()
if root_material_container is not None:
root_material_container.setMetaDataEntry(key, value, apply_to_all = False)
for k, v in new_setting_values_dict.items():
root_material_container.setProperty(k, "value", v)
# Update all containers derived from it
for node in material_group.derived_material_node_list:
container = node.getContainer()
if container is not None:
container.setMetaDataEntry(key, value, apply_to_all = False)
for k, v in new_setting_values_dict.items():
container.setProperty(k, "value", v)
## Overridden from InstanceContainer, similar to setMetaDataEntry.
# without this function the setName would only set the name of the specific nozzle / material / machine combination container
@ -1180,6 +1196,13 @@ class XmlMaterialProfile(InstanceContainer):
"surface energy": "material_surface_energy",
"shrinkage percentage": "material_shrinkage_percentage",
"build volume temperature": "build_volume_temperature",
"anti ooze retracted position": "material_anti_ooze_retracted_position",
"anti ooze retract speed": "material_anti_ooze_retraction_speed",
"break preparation retracted position": "material_break_preparation_retracted_position",
"break preparation speed": "material_break_preparation_speed",
"break retracted position": "material_break_retracted_position",
"break speed": "material_break_speed",
"break temperature": "material_break_temperature"
}
__unmapped_settings = [
"hardware compatible",

View File

@ -5,7 +5,7 @@
"inherits": "fdmprinter",
"metadata": {
"visible": true,
"author": "na",
"author": "unknown",
"manufacturer": "BIBO",
"category": "Other",
"file_formats": "text/x-gcode",

View File

@ -0,0 +1,263 @@
{
"name": "Creawsome Base Printer",
"version": 2,
"inherits": "fdmprinter",
"overrides": {
"machine_name": { "default_value": "Creawsome Base Printer" },
"machine_start_gcode": { "default_value": "M201 X500.00 Y500.00 Z100.00 E5000.00 ;Setup machine max acceleration\nM203 X500.00 Y500.00 Z10.00 E50.00 ;Setup machine max feedrate\nM204 P500.00 R1000.00 T500.00 ;Setup Print/Retract/Travel acceleration\nM205 X8.00 Y8.00 Z0.40 E5.00 ;Setup Jerk\nM220 S100 ;Reset Feedrate\nM221 S100 ;Reset Flowrate\n\nG28 ;Home\n\nG92 E0 ;Reset Extruder\nG1 Z2.0 F3000 ;Move Z Axis up\nG1 X10.1 Y20 Z0.28 F5000.0 ;Move to start position\nG1 X10.1 Y200.0 Z0.28 F1500.0 E15 ;Draw the first line\nG1 X10.4 Y200.0 Z0.28 F5000.0 ;Move to side a little\nG1 X10.4 Y20 Z0.28 F1500.0 E30 ;Draw the second line\nG92 E0 ;Reset Extruder\nG1 Z2.0 F3000 ;Move Z Axis up\n"},
"machine_end_gcode": { "default_value": "G91 ;Relative positionning\nG1 E-2 F2700 ;Retract a bit\nG1 E-2 Z0.2 F2400 ;Retract and raise Z\nG1 X5 Y5 F3000 ;Wipe out\nG1 Z10 ;Raise Z more\nG90 ;Absolute positionning\n\nG1 X0 Y{machine_depth} ;Present print\nM106 S0 ;Turn-off fan\nM104 S0 ;Turn-off hotend\nM140 S0 ;Turn-off bed\n\nM84 X Y E ;Disable all steppers but Z\n" },
"machine_max_feedrate_x": { "value": 500 },
"machine_max_feedrate_y": { "value": 500 },
"machine_max_feedrate_z": { "value": 5 },
"machine_max_feedrate_e": { "value": 50 },
"machine_max_acceleration_x": { "value": 500 },
"machine_max_acceleration_y": { "value": 500 },
"machine_max_acceleration_z": { "value": 100 },
"machine_max_acceleration_e": { "value": 5000 },
"machine_acceleration": { "value": 500 },
"machine_max_jerk_xy": { "value": 10 },
"machine_max_jerk_z": { "value": 0.4 },
"machine_max_jerk_e": { "value": 5 },
"machine_heated_bed": { "default_value": true },
"material_diameter": { "default_value": 1.75 },
"acceleration_print": { "value": 500 },
"acceleration_travel": { "value": 500 },
"acceleration_travel_layer_0": { "value": "acceleration_travel" },
"acceleration_roofing": { "enabled": "acceleration_enabled and roofing_layer_count > 0 and top_layers > 0" },
"jerk_print": { "value": 8 },
"jerk_travel": { "value": "jerk_print" },
"jerk_travel_layer_0": { "value": "jerk_travel" },
"acceleration_enabled": { "value": false },
"jerk_enabled": { "value": false },
"speed_print": { "value": 50.0 } ,
"speed_infill": { "value": "speed_print" },
"speed_wall": { "value": "speed_print / 2" },
"speed_wall_0": { "value": "speed_wall" },
"speed_wall_x": { "value": "speed_wall" },
"speed_topbottom": { "value": "speed_print / 2" },
"speed_roofing": { "value": "speed_topbottom" },
"speed_travel": { "value": "150.0 if speed_print < 60 else 250.0 if speed_print > 100 else speed_print * 2.5" },
"speed_layer_0": { "value": 20.0 },
"speed_print_layer_0": { "value": "speed_layer_0" },
"speed_travel_layer_0": { "value": "100 if speed_layer_0 < 20 else 150 if speed_layer_0 > 30 else speed_layer_0 * 5" },
"speed_prime_tower": { "value": "speed_topbottom" },
"speed_support": { "value": "speed_wall_0" },
"speed_support_interface": { "value": "speed_topbottom" },
"skirt_brim_speed": { "value": "speed_layer_0" },
"line_width": { "value": "machine_nozzle_size * 1.1"},
"material_initial_print_temperature": { "value": "material_print_temperature"},
"material_final_print_temperature": { "value": "material_print_temperature"},
"material_flow": { "value": 100},
"z_seam_type": { "value": "'back'"},
"z_seam_corner": { "value": "'z_seam_corner_none'"},
"infill_sparse_density": { "value": "20"},
"infill_pattern": { "value": "'lines' if infill_sparse_density > 50 else 'cubic'"},
"infill_before_walls": { "value": false },
"infill_overlap": { "value": 30.0 },
"skin_overlap": { "value": 10.0 },
"infill_wipe_dist": { "value": 0.0 },
"wall_0_wipe_dist": { "value": 0.0 },
"fill_perimeter_gaps": { "value": "'everywhere'" },
"fill_outline_gaps": { "value": false },
"filter_out_tiny_gaps": { "value": false },
"retraction_speed": {
"maximum_value_warning": "machine_max_feedrate_e if retraction_enable else float('inf')",
"maximum_value": 200
},
"retraction_retract_speed": {
"maximum_value_warning": "machine_max_feedrate_e if retraction_enable else float('inf')",
"maximum_value": 200
},
"retraction_prime_speed": {
"maximum_value_warning": "machine_max_feedrate_e if retraction_enable else float('inf')",
"maximum_value": 200
},
"retraction_hop_enabled": { "value": "support_enable" },
"retraction_hop": { "value": 0.2 },
"retraction_combing": { "value": "'off' if retraction_hop_enabled else 'infill'"},
"retraction_combing_max_distance": { "value": 30},
"travel_avoid_other_parts": { "value": true },
"travel_avoid_supports": { "value": true },
"travel_retract_before_outer_wall": { "value": true },
"retraction_enable": { "value": true },
"retraction_count_max": { "value": 100 },
"retraction_extrusion_window": { "value": 10 },
"retraction_min_travel": { "value": 1.5 },
"cool_fan_full_at_height": { "value": "layer_height_0 + 2 * layer_height" },
"cool_fan_enabled": { "value": true },
"cool_min_layer_time": { "value": 10 },
"adhesion_type": { "value": "'none' if support_enable else 'skirt'" },
"brim_replaces_support": { "value": false},
"skirt_gap": { "value": 10.0 },
"skirt_line_count": { "value": 4 },
"adaptive_layer_height_variation": { "value": 0.04},
"adaptive_layer_height_variation_step": { "value": 0.04 },
"meshfix_maximum_resolution": { "value": "0.05" },
"meshfix_maximum_travel_resolution": { "value": "meshfix_maximum_resolution" },
"support_type": { "value": "'buildplate'"},
"support_angle": { "value": "math.floor(math.degrees(math.atan(line_width/2.0/layer_height)))" },
"support_pattern": { "value": "'zigzag'" },
"support_infill_rate": { "value": "0 if support_tree_enable else 20" },
"support_use_towers": { "value": false },
"support_xy_distance": { "value": "wall_line_width_0 * 2" },
"support_xy_distance_overhang": { "value": "wall_line_width_0" },
"support_z_distance": { "value": "layer_height if layer_height >= 0.16 else layer_height*2" },
"support_xy_overrides_z": { "value": "'xy_overrides_z'" },
"support_wall_count": { "value": 1},
"support_brim_enable": { "value": true},
"support_brim_width": { "value": 4},
"support_interface_enable": { "value": true },
"support_interface_height": { "value": "layer_height * 4" },
"support_interface_density": { "value": 33.333 },
"support_interface_pattern": { "value": "'grid'" },
"support_interface_skip_height": { "value": 0.2},
"minimum_support_area": { "value": 10},
"minimum_interface_area": { "value": 10}
},
"metadata": {
"visible": false,
"author": "trouch.com",
"manufacturer": "Creality3D",
"file_formats": "text/x-gcode",
"first_start_actions": ["MachineSettingsAction"],
"machine_extruder_trains": {
"0": "creality_base_extruder_0"
},
"has_materials": true,
"has_variants": true,
"has_machine_quality": true,
"has_machine_materials": true,
"variants_name": "Nozzle Size",
"preferred_variant_name": "0.4mm Nozzle",
"preferred_quality_type": "standard",
"preferred_material": "generic_pla",
"exclude_materials": [
"Vertex_Delta_ABS",
"Vertex_Delta_PET",
"Vertex_Delta_PLA",
"Vertex_Delta_TPU",
"chromatik_pla",
"dsm_arnitel2045_175",
"dsm_novamid1070_175",
"fabtotum_abs",
"fabtotum_nylon",
"fabtotum_pla",
"fabtotum_tpu",
"fiberlogy_hd_pla",
"filo3d_pla",
"filo3d_pla_green",
"filo3d_pla_red",
"generic_abs",
"generic_bam",
"generic_cffcpe",
"generic_cffpa",
"generic_cpe",
"generic_cpe_plus",
"generic_gffcpe",
"generic_gffpa",
"generic_hips",
"generic_nylon",
"generic_pc",
"generic_petg",
"generic_pla",
"generic_pp",
"generic_pva",
"generic_tough_pla",
"generic_tpu",
"imade3d_petg_green",
"imade3d_petg_pink",
"imade3d_pla_green",
"imade3d_pla_pink",
"innofill_innoflex60_175",
"octofiber_pla",
"polyflex_pla",
"polymax_pla",
"polyplus_pla",
"polywood_pla",
"structur3d_dap100silicone",
"tizyx_abs",
"tizyx_pla",
"tizyx_pla_bois",
"ultimaker_abs_black",
"ultimaker_abs_blue",
"ultimaker_abs_green",
"ultimaker_abs_grey",
"ultimaker_abs_orange",
"ultimaker_abs_pearl-gold",
"ultimaker_abs_red",
"ultimaker_abs_silver-metallic",
"ultimaker_abs_white",
"ultimaker_abs_yellow",
"ultimaker_bam",
"ultimaker_cpe_black",
"ultimaker_cpe_blue",
"ultimaker_cpe_dark-grey",
"ultimaker_cpe_green",
"ultimaker_cpe_light-grey",
"ultimaker_cpe_plus_black",
"ultimaker_cpe_plus_transparent",
"ultimaker_cpe_plus_white",
"ultimaker_cpe_red",
"ultimaker_cpe_transparent",
"ultimaker_cpe_white",
"ultimaker_cpe_yellow",
"ultimaker_nylon_black",
"ultimaker_nylon_transparent",
"ultimaker_pc_black",
"ultimaker_pc_transparent",
"ultimaker_pc_white",
"ultimaker_pla_black",
"ultimaker_pla_blue",
"ultimaker_pla_green",
"ultimaker_pla_magenta",
"ultimaker_pla_orange",
"ultimaker_pla_pearl-white",
"ultimaker_pla_red",
"ultimaker_pla_silver-metallic",
"ultimaker_pla_transparent",
"ultimaker_pla_white",
"ultimaker_pla_yellow",
"ultimaker_pp_transparent",
"ultimaker_pva",
"ultimaker_tough_pla_black",
"ultimaker_tough_pla_green",
"ultimaker_tough_pla_red",
"ultimaker_tough_pla_white",
"ultimaker_tpu_black",
"ultimaker_tpu_blue",
"ultimaker_tpu_red",
"ultimaker_tpu_white",
"verbatim_bvoh_175",
"zyyx_pro_flex",
"zyyx_pro_pla"
]
}
}

View File

@ -1,95 +1,32 @@
{
"name": "Creality CR-10",
"version": 2,
"inherits": "fdmprinter",
"metadata": {
"visible": true,
"author": "Michael Wildermuth",
"manufacturer": "Creality3D",
"file_formats": "text/x-gcode",
"preferred_quality_type": "draft",
"machine_extruder_trains":
{
"0": "creality_cr10_extruder_0"
}
},
"inherits": "creality_base",
"overrides": {
"machine_width": {
"default_value": 300
},
"machine_height": {
"default_value": 400
},
"machine_depth": {
"default_value": 300
},
"machine_head_polygon": {
"default_value": [
[-30, 34],
[-30, -32],
[30, -32],
[30, 34]
"machine_name": { "default_value": "Creality CR-10" },
"machine_width": { "default_value": 300 },
"machine_depth": { "default_value": 300 },
"machine_height": { "default_value": 400 },
"machine_head_polygon": { "default_value": [
[-26, 34],
[-26, -32],
[22, -32],
[22, 34]
]
},
"layer_height_0": {
"default_value": 0.2
"machine_head_with_fans_polygon": { "default_value": [
[-26, 34],
[-26, -32],
[32, -32],
[32, 34]
]
},
"top_bottom_thickness": {
"default_value": 0.6
"gantry_height": { "value": 25 }
},
"top_bottom_pattern_0": {
"default_value": "concentric"
},
"infill_pattern": {
"value": "'triangles'"
},
"retraction_enable": {
"default_value": true
},
"retraction_amount": {
"default_value": 5
},
"retraction_speed": {
"default_value": 40
},
"cool_min_layer_time": {
"default_value": 10
},
"adhesion_type": {
"default_value": "skirt"
},
"skirt_line_count": {
"default_value": 4
},
"skirt_gap": {
"default_value": 5
},
"machine_end_gcode": {
"default_value": "G91\nG1 F1800 E-3\nG1 F3000 Z10\nG90\nG28 X0 Y0 ; home x and y axis\nM106 S0 ; turn off cooling fan\nM104 S0 ; turn off extruder\nM140 S0 ; turn off bed\nM84 ; disable motors"
},
"machine_heated_bed": {
"default_value": true
},
"gantry_height": {
"value": "30"
},
"acceleration_enabled": {
"default_value": true
},
"acceleration_print": {
"default_value": 500
},
"acceleration_travel": {
"default_value": 500
},
"jerk_enabled": {
"default_value": true
},
"jerk_print": {
"default_value": 8
},
"jerk_travel": {
"default_value": 8
}
"metadata": {
"quality_definition": "creality_base",
"visible": true
}
}

View File

@ -0,0 +1,32 @@
{
"name": "Creality CR-10 Mini",
"version": 2,
"inherits": "creality_base",
"overrides": {
"machine_name": { "default_value": "Creality CR-10 Mini" },
"machine_width": { "default_value": 300 },
"machine_depth": { "default_value": 220 },
"machine_height": { "default_value": 300 },
"machine_head_polygon": { "default_value": [
[-26, 34],
[-26, -32],
[22, -32],
[22, 34]
]
},
"machine_head_with_fans_polygon": { "default_value": [
[-26, 34],
[-26, -32],
[32, -32],
[32, 34]
]
},
"gantry_height": { "value": 25 }
},
"metadata": {
"quality_definition": "creality_base",
"visible": true
}
}

View File

@ -1,5 +1,11 @@
{
"name": "Creality CR-10S",
"version": 2,
"inherits": "creality_cr10"
"inherits": "creality_cr10",
"overrides": {
"machine_name": { "default_value": "Creality CR-10S" }
},
"metadata": {
"quality_definition": "creality_base"
}
}

View File

@ -1,26 +1,32 @@
{
"name": "Creality CR-10 S4",
"name": "Creality CR-10S4",
"version": 2,
"inherits": "creality_cr10",
"metadata": {
"visible": true,
"author": "Michael Wildermuth",
"manufacturer": "Creality3D",
"file_formats": "text/x-gcode",
"machine_extruder_trains":
{
"0": "creality_cr10s4_extruder_0"
}
},
"inherits": "creality_base",
"overrides": {
"machine_width": {
"default_value": 400
"machine_name": { "default_value": "Creality CR-10S4" },
"machine_width": { "default_value": 400 },
"machine_depth": { "default_value": 400 },
"machine_height": { "default_value": 400 },
"machine_head_polygon": { "default_value": [
[-26, 34],
[-26, -32],
[22, -32],
[22, 34]
]
},
"machine_height": {
"default_value": 400
"machine_head_with_fans_polygon": { "default_value": [
[-26, 34],
[-26, -32],
[32, -32],
[32, 34]
]
},
"machine_depth": {
"default_value": 400
}
"gantry_height": { "value": 25 }
},
"metadata": {
"quality_definition": "creality_base",
"visible": true
}
}

View File

@ -1,26 +1,32 @@
{
"name": "Creality CR-10 S5",
"name": "Creality CR-10S5",
"version": 2,
"inherits": "creality_cr10",
"metadata": {
"visible": true,
"author": "Michael Wildermuth",
"manufacturer": "Creality3D",
"file_formats": "text/x-gcode",
"machine_extruder_trains":
{
"0": "creality_cr10s5_extruder_0"
}
},
"inherits": "creality_base",
"overrides": {
"machine_width": {
"default_value": 500
"machine_name": { "default_value": "Creality CR-10S5" },
"machine_width": { "default_value": 500 },
"machine_depth": { "default_value": 500 },
"machine_height": { "default_value": 500 },
"machine_head_polygon": { "default_value": [
[-26, 34],
[-26, -32],
[22, -32],
[22, 34]
]
},
"machine_height": {
"default_value": 500
"machine_head_with_fans_polygon": { "default_value": [
[-26, 34],
[-26, -32],
[32, -32],
[32, 34]
]
},
"machine_depth": {
"default_value": 500
}
"gantry_height": { "value": 25 }
},
"metadata": {
"quality_definition": "creality_base",
"visible": true
}
}

View File

@ -0,0 +1,31 @@
{
"name": "Creality CR-10S Pro",
"version": 2,
"inherits": "creality_cr10",
"overrides": {
"machine_name": { "default_value": "Creality CR-10S Pro" },
"machine_start_gcode": { "default_value": "M201 X500.00 Y500.00 Z100.00 E5000.00 ;Setup machine max acceleration\nM203 X500.00 Y500.00 Z10.00 E50.00 ;Setup machine max feedrate\nM204 P500.00 R1000.00 T500.00 ;Setup Print/Retract/Travel acceleration\nM205 X8.00 Y8.00 Z0.40 E5.00 ;Setup Jerk\nM220 S100 ;Reset Feedrate\nM221 S100 ;Reset Flowrate\n\nG28 ;Home\nM420 S1 Z2 ;Enable ABL using saved Mesh and Fade Height\n\nG92 E0 ;Reset Extruder\nG1 Z2.0 F3000 ;Move Z Axis up\nG1 X10.1 Y20 Z0.28 F5000.0 ;Move to start position\nG1 X10.1 Y200.0 Z0.28 F1500.0 E15 ;Draw the first line\nG1 X10.4 Y200.0 Z0.28 F5000.0 ;Move to side a little\nG1 X10.4 Y20 Z0.28 F1500.0 E30 ;Draw the second line\nG92 E0 ;Reset Extruder\nG1 Z2.0 F3000 ;Move Z Axis up\n"},
"machine_head_polygon": { "default_value": [
[-44, 34],
[-44, -34],
[18, -34],
[18, 34]
]
},
"machine_head_with_fans_polygon": { "default_value": [
[-44, 34],
[-44, -34],
[38, -34],
[38, 34]
]
},
"gantry_height": { "value": 30 }
},
"metadata": {
"quality_definition": "creality_base",
"platform": "creality_cr10spro.stl",
"platform_offset": [ -150, 0, 150]
}
}

View File

@ -0,0 +1,32 @@
{
"name": "Creality CR-20",
"version": 2,
"inherits": "creality_base",
"overrides": {
"machine_name": { "default_value": "Creality CR-20" },
"machine_width": { "default_value": 220 },
"machine_depth": { "default_value": 220 },
"machine_height": { "default_value": 250 },
"machine_head_polygon": { "default_value": [
[-26, 34],
[-26, -32],
[22, -32],
[22, 34]
]
},
"machine_head_with_fans_polygon": { "default_value": [
[-26, 34],
[-26, -32],
[32, -32],
[32, 34]
]
},
"gantry_height": { "value": 25 }
},
"metadata": {
"quality_definition": "creality_base",
"visible": true
}
}

View File

@ -0,0 +1,13 @@
{
"name": "Creality CR-20 Pro",
"version": 2,
"inherits": "creality_cr20",
"overrides": {
"machine_name": { "default_value": "Creality CR-20 Pro" },
"machine_start_gcode": { "default_value": "M201 X500.00 Y500.00 Z100.00 E5000.00 ;Setup machine max acceleration\nM203 X500.00 Y500.00 Z10.00 E50.00 ;Setup machine max feedrate\nM204 P500.00 R1000.00 T500.00 ;Setup Print/Retract/Travel acceleration\nM205 X8.00 Y8.00 Z0.40 E5.00 ;Setup Jerk\nM220 S100 ;Reset Feedrate\nM221 S100 ;Reset Flowrate\n\nG28 ;Home\nM420 S1 Z2 ;Enable ABL using saved Mesh and Fade Height\n\nG92 E0 ;Reset Extruder\nG1 Z2.0 F3000 ;Move Z Axis up\nG1 X10.1 Y20 Z0.28 F5000.0 ;Move to start position\nG1 X10.1 Y200.0 Z0.28 F1500.0 E15 ;Draw the first line\nG1 X10.4 Y200.0 Z0.28 F5000.0 ;Move to side a little\nG1 X10.4 Y20 Z0.28 F1500.0 E30 ;Draw the second line\nG92 E0 ;Reset Extruder\nG1 Z2.0 F3000 ;Move Z Axis up\n"}
},
"metadata": {
"quality_definition": "creality_base"
}
}

View File

@ -0,0 +1,33 @@
{
"name": "Creality Ender-2",
"version": 2,
"inherits": "creality_base",
"overrides": {
"machine_name": { "default_value": "Creality Ender-2" },
"machine_start_gcode": { "default_value": "M201 X500.00 Y500.00 Z100.00 E5000.00 ;Setup machine max acceleration\nM203 X500.00 Y500.00 Z10.00 E50.00 ;Setup machine max feedrate\nM204 P500.00 R1000.00 T500.00 ;Setup Print/Retract/Travel acceleration\nM205 X8.00 Y8.00 Z0.40 E5.00 ;Setup Jerk\nM220 S100 ;Reset Feedrate\nM221 S100 ;Reset Flowrate\n\nG28 ;Home\n\nG92 E0 ;Reset Extruder\nG1 Z2.0 F3000 ;Move Z Axis up\nG1 X10.1 Y20 Z0.28 F5000.0 ;Move to start position\nG1 X10.1 Y100.0 Z0.28 F1500.0 E8 ;Draw the first line\nG1 X10.4 Y100.0 Z0.28 F5000.0 ;Move to side a little\nG1 X10.4 Y20 Z0.28 F1500.0 E15 ;Draw the second line\nG92 E0 ;Reset Extruder\nG1 Z2.0 F3000 ;Move Z Axis up\n"},
"machine_width": { "default_value": 150 },
"machine_depth": { "default_value": 150 },
"machine_height": { "default_value": 200 },
"machine_head_polygon": { "default_value": [
[-26, 34],
[-26, -32],
[22, -32],
[22, 34]
]
},
"machine_head_with_fans_polygon": { "default_value": [
[-26, 34],
[-26, -32],
[32, -32],
[32, 34]
]
},
"gantry_height": { "value": 25 }
},
"metadata": {
"quality_definition": "creality_base",
"visible": true
}
}

111
resources/definitions/creality_ender3.def.json Executable file → Normal file
View File

@ -1,99 +1,32 @@
{
"name": "Creality Ender-3",
"version": 2,
"inherits": "fdmprinter",
"metadata": {
"visible": true,
"author": "Sacha Telgenhof",
"manufacturer": "Creality3D",
"file_formats": "text/x-gcode",
"platform": "creality_ender3_platform.stl",
"preferred_quality_type": "draft",
"machine_extruder_trains":
{
"0": "creality_ender3_extruder_0"
}
},
"inherits": "creality_base",
"overrides": {
"machine_name": {
"default_value": "Creality Ender-3"
},
"machine_width": {
"default_value": 235
},
"machine_height": {
"default_value": 250
},
"machine_depth": {
"default_value": 235
},
"machine_heated_bed": {
"default_value": true
},
"gantry_height": {
"value": "30"
},
"machine_head_polygon": {
"default_value": [
[-30, 34],
[-30, -32],
[30, -32],
[30, 34]
"machine_name": { "default_value": "Creality Ender-3" },
"machine_width": { "default_value": 220 },
"machine_depth": { "default_value": 220 },
"machine_height": { "default_value": 250 },
"machine_head_polygon": { "default_value": [
[-26, 34],
[-26, -32],
[22, -32],
[22, 34]
]
},
"material_diameter": {
"default_value": 1.75
"machine_head_with_fans_polygon": { "default_value": [
[-26, 34],
[-26, -32],
[32, -32],
[32, 34]
]
},
"acceleration_enabled": {
"default_value": true
"gantry_height": { "value": 25 }
},
"acceleration_print": {
"default_value": 500
},
"acceleration_travel": {
"value": "acceleration_print"
},
"jerk_enabled": {
"default_value": true
},
"jerk_print": {
"value": "10"
},
"jerk_travel": {
"value": "jerk_print"
},
"machine_max_jerk_z": {
"default_value": 0.3
},
"layer_height_0": {
"default_value": 0.2
},
"adhesion_type": {
"default_value": "skirt"
},
"top_bottom_thickness": {
"default_value": 0.6
},
"retraction_amount": {
"default_value": 6
},
"retraction_speed": {
"default_value": 25
},
"cool_min_layer_time": {
"default_value": 10
},
"skirt_line_count": {
"default_value": 4
},
"skirt_gap": {
"default_value": 5
},
"machine_start_gcode": {
"default_value": "; Ender 3 Custom Start G-code\nG28 ; Home all axes\nG92 E0 ; Reset Extruder\nG1 Z2.0 F3000 ; Move Z Axis up little to prevent scratching of Heat Bed\nG1 X0.1 Y20 Z0.3 F5000.0 ; Move to start position\nG1 X0.1 Y200.0 Z0.3 F1500.0 E15 ; Draw the first line\nG1 X0.4 Y200.0 Z0.3 F5000.0 ; Move to side a little\nG1 X0.4 Y20 Z0.3 F1500.0 E30 ; Draw the second line\nG92 E0 ; Reset Extruder\nG1 Z2.0 F3000 ; Move Z Axis up little to prevent scratching of Heat Bed\n; End of custom start GCode"
},
"machine_end_gcode": {
"default_value": "; Ender 3 Custom End G-code\nG4 ; Wait\nM220 S100 ; Reset Speed factor override percentage to default (100%)\nM221 S100 ; Reset Extrude factor override percentage to default (100%)\nG91 ; Set coordinates to relative\nG1 F1800 E-3 ; Retract filament 3 mm to prevent oozing\nG1 F3000 Z20 ; Move Z Axis up 20 mm to allow filament ooze freely\nG90 ; Set coordinates to absolute\nG1 X0 Y{machine_depth} F1000 ; Move Heat Bed to the front for easy print removal\nM84 ; Disable stepper motors\n; End of custom end GCode"
}
"metadata": {
"quality_definition": "creality_base",
"visible": true
}
}

View File

@ -0,0 +1,34 @@
{
"name": "Creality Ender-4",
"version": 2,
"inherits": "creality_base",
"overrides": {
"machine_name": { "default_value": "Creality Ender-4" },
"machine_width": { "default_value": 452 },
"machine_depth": { "default_value": 468 },
"machine_height": { "default_value": 482 },
"machine_head_polygon": { "default_value": [
[-26, 34],
[-26, -32],
[22, -32],
[22, 34]
]
},
"machine_head_with_fans_polygon": { "default_value": [
[-26, 34],
[-26, -32],
[32, -32],
[32, 34]
]
},
"gantry_height": { "value": 25 },
"speed_print": { "value": 80.0 }
},
"metadata": {
"quality_definition": "creality_base",
"visible": true
}
}

View File

@ -0,0 +1,35 @@
{
"name": "Creality Ender-5",
"version": 2,
"inherits": "creality_base",
"overrides": {
"machine_name": { "default_value": "Creality Ender-5" },
"machine_end_gcode": { "default_value": "G91 ;Relative positionning\nG1 E-2 F2700 ;Retract a bit\nG1 E-2 Z0.2 F2400 ;Retract and raise Z\nG1 X5 Y5 F3000 ;Wipe out\nG1 Z10 ;Raise Z more\nG90 ;Absolute positionning\n\nG1 X0 Y0 ;Present print\nM106 S0 ;Turn-off fan\nM104 S0 ;Turn-off hotend\nM140 S0 ;Turn-off bed\n\nM84 X Y E ;Disable all steppers but Z\n" },
"machine_width": { "default_value": 220 },
"machine_depth": { "default_value": 220 },
"machine_height": { "default_value": 300 },
"machine_head_polygon": { "default_value": [
[-26, 34],
[-26, -32],
[22, -32],
[22, 34]
]
},
"machine_head_with_fans_polygon": { "default_value": [
[-26, 34],
[-26, -32],
[32, -32],
[32, 34]
]
},
"gantry_height": { "value": 25 },
"speed_print": { "value": 80.0 }
},
"metadata": {
"quality_definition": "creality_base",
"visible": true
}
}

View File

@ -5,7 +5,7 @@
"metadata": {
"visible": true,
"author": "Ultimaker",
"manufacturer": "Danny Lu",
"manufacturer": "Custom",
"file_formats": "text/x-gcode",
"platform_offset": [ 0, 0, 0],
"machine_extruder_trains":

View File

@ -5,7 +5,7 @@
"metadata": {
"visible": true,
"author": "nliaudat",
"manufacturer": "EasyArts (discontinued)",
"manufacturer": "EasyArts",
"file_formats": "text/x-gcode",
"machine_extruder_trains":
{

View File

@ -0,0 +1,121 @@
{
"name": "Erzay3D",
"version": 2,
"inherits": "fdmprinter",
"metadata": {
"visible": true,
"author": "Alexander Kirsanov",
"manufacturer": "Robokinetika",
"category": "Other",
"file_formats": "text/x-gcode",
"machine_extruder_trains":
{
"0": "erzay3d_extruder_0"
}
},
"overrides": {
"machine_start_gcode" : { "default_value": "G28\nG1 Z15.0 F6000\nG92 E0" },
"machine_shape": { "default_value": "elliptic"},
"machine_name": { "default_value": "Erzay3D" },
"machine_depth": { "default_value": 210 },
"machine_width": { "default_value": 210 },
"machine_height": { "default_value": 230 },
"machine_gcode_flavor": { "default_value": "RepRap (Marlin/Sprinter)" },
"machine_center_is_zero": { "default_value": true },
"machine_extruder_count": { "default_value": 1 },
"machine_nozzle_size": { "default_value": 0.4 },
"material_diameter": { "default_value": 1.75 },
"machine_heated_bed": { "default_value": true },
"material_bed_temp_wait": { "default_value": true },
"material_print_temp_wait": { "default_value": true },
"material_print_temp_prepend": { "default_value": true },
"machine_buildplate_type": { "default_value": "glass" },
"machine_nozzle_head_distance": { "default_value": 2.5 },
"machine_heat_zone_length": { "default_value": 12.5 },
"machine_max_feedrate_x": { "default_value": 200 },
"machine_max_feedrate_y": { "default_value": 200 },
"machine_max_feedrate_z": { "default_value": 200 },
"machine_max_feedrate_e": { "default_value": 50 },
"machine_max_acceleration_x": { "default_value": 3000 },
"machine_max_acceleration_y": { "default_value": 3000 },
"machine_max_acceleration_z": { "default_value": 3000 },
"machine_max_acceleration_e": { "default_value": 3000 },
"machine_acceleration": { "default_value": 1000 },
"machine_max_jerk_xy": { "default_value": 10 },
"machine_max_jerk_z": { "default_value": 10 },
"machine_max_jerk_e": { "default_value": 10 },
"machine_steps_per_mm_x": { "default_value": 1600 },
"machine_steps_per_mm_y": { "default_value": 1600 },
"machine_steps_per_mm_z": { "default_value": 1600 },
"machine_steps_per_mm_e": { "default_value": 174 },
"machine_feeder_wheel_diameter": { "default_value": 12 },
"layer_height": { "default_value": 0.2 },
"layer_height_0": { "default_value": 0.2 },
"ironing_pattern": { "default_value": "concentric" },
"ironing_flow": { "default_value": 7.0 },
"roofing_pattern": { "default_value": "concentric" },
"infill_sparse_density": { "default_value": 20 },
"infill_line_distance": { "default_value": 4 },
"default_material_print_temperature": { "default_value": 220 },
"material_print_temperature": { "default_value": 220 },
"material_print_temperature_layer_0": { "default_value": 220 },
"material_initial_print_temperature": { "default_value": 220 },
"material_final_print_temperature": { "default_value": 220 },
"retraction_amount": { "default_value": 6.5 },
"speed_print": { "default_value": 40 },
"speed_infill": { "default_value": 60 },
"speed_wall": { "default_value": 20 },
"speed_wall_0": { "default_value": 20 },
"speed_wall_x": { "default_value": 40 },
"speed_roofing": { "default_value": 20 },
"speed_topbottom": { "default_value": 20 },
"speed_support": { "default_value": 40 },
"speed_support_infill": { "default_value": 40 },
"speed_support_interface": { "default_value": 25 },
"speed_support_roof": { "default_value": 25 },
"speed_support_bottom": { "default_value": 25 },
"speed_prime_tower": { "default_value": 40 },
"speed_travel": { "default_value": 100 },
"speed_layer_0": { "default_value": 20 },
"speed_print_layer_0": { "default_value": 20 },
"speed_travel_layer_0": { "default_value": 80 },
"skirt_brim_speed": { "default_value": 20 },
"speed_equalize_flow_enabled": { "default_value": true },
"speed_equalize_flow_max": { "default_value": 100 },
"acceleration_print": { "default_value": 1000 },
"acceleration_infill": { "default_value": 3000 },
"acceleration_wall": { "default_value": 1000 },
"acceleration_wall_0": { "default_value": 1000 },
"acceleration_wall_x": { "default_value": 1000 },
"acceleration_roofing": { "default_value": 1000 },
"acceleration_topbottom": { "default_value": 1000 },
"acceleration_support": { "default_value": 1000 },
"acceleration_support_infill": { "default_value": 1000 },
"acceleration_support_interface": { "default_value": 1000 },
"acceleration_support_roof": { "default_value": 1000 },
"acceleration_support_bottom": { "default_value": 1000 },
"acceleration_prime_tower": { "default_value": 1000 },
"acceleration_travel": { "default_value": 1500 },
"acceleration_layer_0": { "default_value": 1000 },
"acceleration_print_layer_0": { "default_value": 1000 },
"acceleration_travel_layer_0": { "default_value": 1000 },
"acceleration_skirt_brim": { "default_value": 1000 },
"jerk_print": { "default_value": 10 },
"support_angle": { "default_value": 65 },
"support_brim_enable": { "default_value": true },
"adhesion_type": { "default_value": "skirt" },
"brim_outside_only": { "default_value": false },
"meshfix_maximum_resolution": { "default_value": 0.05 }
}
}

View File

@ -6,7 +6,7 @@
"type": "extruder",
"author": "Ultimaker",
"manufacturer": "Unknown",
"setting_version": 7,
"setting_version": 8,
"visible": false,
"position": "0"
},

View File

@ -7,7 +7,7 @@
"author": "Ultimaker",
"category": "Other",
"manufacturer": "Unknown",
"setting_version": 7,
"setting_version": 8,
"file_formats": "text/x-gcode;application/x-stl-ascii;application/x-stl-binary;application/x-wavefront-obj;application/x3g",
"visible": false,
"has_materials": true,
@ -963,6 +963,8 @@
"maximum_value_warning": "2 * machine_nozzle_size",
"settable_per_mesh": false,
"settable_per_extruder": true
}
}
},
"initial_layer_line_width_factor":
{
@ -977,8 +979,6 @@
"settable_per_extruder": true
}
}
}
}
},
"shell":
{
@ -1426,7 +1426,7 @@
"z_seam_corner":
{
"label": "Seam Corner Preference",
"description": "Control whether corners on the model outline influence the position of the seam. None means that corners have no influence on the seam position. Hide Seam makes the seam more likely to occur on an inside corner. Expose Seam makes the seam more likely to occur on an outside corner. Hide or Expose Seam makes the seam more likely to occur at an inside or outside corner.",
"description": "Control whether corners on the model outline influence the position of the seam. None means that corners have no influence on the seam position. Hide Seam makes the seam more likely to occur on an inside corner. Expose Seam makes the seam more likely to occur on an outside corner. Hide or Expose Seam makes the seam more likely to occur at an inside or outside corner. Smart Hiding allows both inside and outside corners, but chooses inside corners more frequently, if appropriate.",
"type": "enum",
"options":
{
@ -1454,8 +1454,8 @@
},
"skin_no_small_gaps_heuristic":
{
"label": "Ignore Small Z Gaps",
"description": "When the model has small vertical gaps, about 5% extra computation time can be spent on generating top and bottom skin in these narrow spaces. In such case, disable the setting.",
"label": "No Skin in Z Gaps",
"description": "When the model has small vertical gaps of only a few layers, there should normally be skin around those layers in the narrow space. Enable this setting to not generate skin if the vertical gap is very small. This improves printing time and slicing time, but technically leaves infill exposed to the air.",
"type": "bool",
"default_value": false,
"enabled": "top_layers > 0 or bottom_layers > 0",
@ -1591,6 +1591,36 @@
"enabled": "resolveOrValue('jerk_enabled') and ironing_enabled",
"limit_to_extruder": "top_bottom_extruder_nr",
"settable_per_mesh": true
},
"skin_overlap":
{
"label": "Skin Overlap Percentage",
"description": "Adjust the amount of overlap between the walls and (the endpoints of) the skin-centerlines, as a percentage of the line widths of the skin lines and the innermost wall. A slight overlap allows the walls to connect firmly to the skin. Note that, given an equal skin and wall line-width, any percentage over 50% may already cause any skin to go past the wall, because at that point the position of the nozzle of the skin-extruder may already reach past the middle of the wall.",
"unit": "%",
"type": "float",
"default_value": 5,
"minimum_value_warning": "-50",
"maximum_value_warning": "100",
"value": "5 if top_bottom_pattern != 'concentric' else 0",
"enabled": "(top_layers > 0 or bottom_layers > 0) and top_bottom_pattern != 'concentric'",
"limit_to_extruder": "top_bottom_extruder_nr",
"settable_per_mesh": true,
"children":
{
"skin_overlap_mm":
{
"label": "Skin Overlap",
"description": "Adjust the amount of overlap between the walls and (the endpoints of) the skin-centerlines. A slight overlap allows the walls to connect firmly to the skin. Note that, given an equal skin and wall line-width, any value over half the width of the wall may already cause any skin to go past the wall, because at that point the position of the nozzle of the skin-extruder may already reach past the middle of the wall.",
"unit": "mm",
"type": "float",
"default_value": 0.02,
"minimum_value_warning": "-0.5 * machine_nozzle_size",
"maximum_value_warning": "machine_nozzle_size",
"value": "0.5 * (skin_line_width + (wall_line_width_x if wall_line_count > 1 else wall_line_width_0)) * skin_overlap / 100 if top_bottom_pattern != 'concentric' else 0",
"enabled": "(top_layers > 0 or bottom_layers > 0) and top_bottom_pattern != 'concentric'",
"settable_per_mesh": true
}
}
}
}
},
@ -1790,36 +1820,6 @@
}
}
},
"skin_overlap":
{
"label": "Skin Overlap Percentage",
"description": "Adjust the amount of overlap between the walls and (the endpoints of) the skin-centerlines, as a percentage of the line widths of the skin lines and the innermost wall. A slight overlap allows the walls to connect firmly to the skin. Note that, given an equal skin and wall line-width, any percentage over 50% may already cause any skin to go past the wall, because at that point the position of the nozzle of the skin-extruder may already reach past the middle of the wall.",
"unit": "%",
"type": "float",
"default_value": 5,
"minimum_value_warning": "-50",
"maximum_value_warning": "100",
"value": "5 if top_bottom_pattern != 'concentric' else 0",
"enabled": "(top_layers > 0 or bottom_layers > 0) and top_bottom_pattern != 'concentric'",
"limit_to_extruder": "top_bottom_extruder_nr",
"settable_per_mesh": true,
"children":
{
"skin_overlap_mm":
{
"label": "Skin Overlap",
"description": "Adjust the amount of overlap between the walls and (the endpoints of) the skin-centerlines. A slight overlap allows the walls to connect firmly to the skin. Note that, given an equal skin and wall line-width, any value over half the width of the wall may already cause any skin to go past the wall, because at that point the position of the nozzle of the skin-extruder may already reach past the middle of the wall.",
"unit": "mm",
"type": "float",
"default_value": 0.02,
"minimum_value_warning": "-0.5 * machine_nozzle_size",
"maximum_value_warning": "machine_nozzle_size",
"value": "0.5 * (skin_line_width + (wall_line_width_x if wall_line_count > 1 else wall_line_width_0)) * skin_overlap / 100 if top_bottom_pattern != 'concentric' else 0",
"enabled": "(top_layers > 0 or bottom_layers > 0) and top_bottom_pattern != 'concentric'",
"settable_per_mesh": true
}
}
},
"infill_wipe_dist":
{
"label": "Infill Wipe Distance",
@ -2063,7 +2063,7 @@
"description": "The temperature of the environment to print in. If this is 0, the build volume temperature will not be adjusted.",
"unit": "°C",
"type": "float",
"default_value": 35,
"default_value": 0,
"resolve": "min(extruderValues('build_volume_temperature'))",
"minimum_value": "-273.15",
"minimum_value_warning": "0",
@ -2234,6 +2234,107 @@
"settable_per_mesh": false,
"settable_per_extruder": true
},
"material_crystallinity":
{
"label": "Crystalline Material",
"description": "Is this material the type that breaks off cleanly when heated (crystalline), or is it the type that produces long intertwined polymer chains (non-crystalline)?",
"type": "bool",
"default_value": false,
"enabled": false,
"settable_per_mesh": false,
"settable_per_extruder": true
},
"material_anti_ooze_retracted_position":
{
"label": "Anti-ooze Retracted Position",
"description": "How far the material needs to be retracted before it stops oozing.",
"type": "float",
"unit": "mm",
"default_value": 4,
"enabled": false,
"minimum_value_warning": "0",
"maximum_value_warning": "retraction_amount",
"settable_per_mesh": false,
"settable_per_extruder": true
},
"material_anti_ooze_retraction_speed":
{
"label": "Anti-ooze Retraction Speed",
"description": "How fast the material needs to be retracted during a filament switch to prevent oozing.",
"type": "float",
"unit": "mm/s",
"default_value": 5,
"enabled": false,
"minimum_value": "0",
"maximum_value": "machine_max_feedrate_e",
"settable_per_mesh": false,
"settable_per_extruder": true
},
"material_break_preparation_retracted_position":
{
"label": "Break Preparation Retracted Position",
"description": "How far the filament can be stretched before it breaks, while heated.",
"type": "float",
"unit": "mm",
"default_value": 16,
"enabled": false,
"minimum_value_warning": "0",
"maximum_value_warning": "retraction_amount * 4",
"settable_per_mesh": false,
"settable_per_extruder": true
},
"material_break_preparation_speed":
{
"label": "Break Preparation Retraction Speed",
"description": "How fast the filament needs to be retracted just before breaking it off in a retraction.",
"type": "float",
"unit": "mm/s",
"default_value": 2,
"enabled": false,
"minimum_value": "0",
"maximum_value": "machine_max_feedrate_e",
"settable_per_mesh": false,
"settable_per_extruder": true
},
"material_break_retracted_position":
{
"label": "Break Retracted Position",
"description": "How far to retract the filament in order to break it cleanly.",
"type": "float",
"unit": "mm",
"default_value": 50,
"enabled": false,
"minimum_value_warning": "0",
"maximum_value_warning": "100",
"settable_per_mesh": false,
"settable_per_extruder": true
},
"material_break_speed":
{
"label": "Break Retraction Speed",
"description": "The speed at which to retract the filament in order to break it cleanly.",
"type": "float",
"unit": "mm/s",
"default_value": 25,
"enabled": false,
"minimum_value": "0",
"maximum_value": "machine_max_feedrate_e",
"settable_per_mesh": false,
"settable_per_extruder": true
},
"material_break_temperature":
{
"label": "Break Temperature",
"description": "The temperature at which the filament is broken for a clean break.",
"type": "float",
"unit": "°C",
"default_value": 50,
"enabled": false,
"minimum_value": "-273.15",
"maximum_value_warning": "300",
"settable_per_mesh": false,
"settable_per_extruder": true
},
"material_flow":
{
"label": "Flow",
@ -2245,15 +2346,202 @@
"minimum_value_warning": "50",
"maximum_value_warning": "150",
"enabled": "machine_gcode_flavor != \"UltiGCode\"",
"settable_per_mesh": true,
"children":
{
"wall_material_flow":
{
"label": "Wall Flow",
"description": "Flow compensation on wall lines.",
"unit": "%",
"type": "float",
"default_value": 100,
"value": "material_flow",
"minimum_value": "5",
"minimum_value_warning": "50",
"maximum_value_warning": "150",
"limit_to_extruder": "wall_0_extruder_nr if wall_x_extruder_nr == wall_0_extruder_nr else -1",
"settable_per_mesh": true,
"children":
{
"wall_0_material_flow":
{
"label": "Outer Wall Flow",
"description": "Flow compensation on the outermost wall line.",
"unit": "%",
"type": "float",
"default_value": 100,
"value": "wall_material_flow",
"minimum_value": "5",
"minimum_value_warning": "50",
"maximum_value_warning": "150",
"limit_to_extruder": "wall_0_extruder_nr",
"settable_per_mesh": true
},
"wall_x_material_flow":
{
"label": "Inner Wall(s) Flow",
"description": "Flow compensation on wall lines for all wall lines except the outermost one.",
"unit": "%",
"type": "float",
"default_value": 100,
"value": "wall_material_flow",
"minimum_value": "5",
"minimum_value_warning": "50",
"maximum_value_warning": "150",
"limit_to_extruder": "wall_x_extruder_nr",
"settable_per_mesh": true
}
}
},
"skin_material_flow":
{
"label": "Top/Bottom Flow",
"description": "Flow compensation on top/bottom lines.",
"unit": "%",
"type": "float",
"default_value": 100,
"value": "material_flow",
"minimum_value": "5",
"minimum_value_warning": "50",
"maximum_value_warning": "150",
"enabled": "top_layers > 0 or bottom_layers > 0",
"limit_to_extruder": "top_bottom_extruder_nr",
"settable_per_mesh": true
},
"roofing_material_flow":
{
"label": "Top Surface Skin Flow",
"description": "Flow compensation on lines of the areas at the top of the print.",
"unit": "%",
"type": "float",
"default_value": 100,
"value": "skin_material_flow",
"minimum_value": "5",
"minimum_value_warning": "50",
"maximum_value_warning": "150",
"limit_to_extruder": "roofing_extruder_nr",
"settable_per_mesh": true,
"enabled": "roofing_layer_count > 0 and top_layers > 0"
},
"infill_material_flow":
{
"label": "Infill Flow",
"description": "Flow compensation on infill lines.",
"unit": "%",
"type": "float",
"default_value": 100,
"value": "material_flow",
"minimum_value": "5",
"minimum_value_warning": "50",
"maximum_value_warning": "150",
"enabled": "infill_sparse_density > 0",
"limit_to_extruder": "infill_extruder_nr",
"settable_per_mesh": true
},
"skirt_brim_material_flow":
{
"label": "Skirt/Brim Flow",
"description": "Flow compensation on skirt or brim lines.",
"unit": "%",
"type": "float",
"default_value": 100,
"value": "material_flow",
"minimum_value": "5",
"minimum_value_warning": "50",
"maximum_value_warning": "150",
"enabled": "resolveOrValue('adhesion_type') == 'skirt' or resolveOrValue('adhesion_type') == 'brim'",
"settable_per_mesh": false,
"settable_per_extruder": true
},
"support_material_flow":
{
"label": "Support Flow",
"description": "Flow compensation on support structure lines.",
"unit": "%",
"type": "float",
"default_value": 100,
"value": "material_flow",
"minimum_value": "5",
"minimum_value_warning": "50",
"maximum_value_warning": "150",
"limit_to_extruder": "support_infill_extruder_nr",
"settable_per_mesh": false,
"settable_per_extruder": true
},
"support_interface_material_flow":
{
"label": "Support Interface Flow",
"description": "Flow compensation on lines of support roof or floor.",
"unit": "%",
"type": "float",
"default_value": 100,
"value": "material_flow",
"minimum_value": "5",
"minimum_value_warning": "50",
"maximum_value_warning": "150",
"enabled": "support_enable and support_interface_enable",
"limit_to_extruder": "support_interface_extruder_nr",
"settable_per_mesh": false,
"settable_per_extruder": true,
"children":
{
"support_roof_material_flow":
{
"label": "Support Roof Flow",
"description": "Flow compensation on support roof lines.",
"unit": "%",
"type": "float",
"default_value": 100,
"value": "extruderValue(support_roof_extruder_nr, 'support_interface_material_flow')",
"minimum_value": "5",
"minimum_value_warning": "50",
"maximum_value_warning": "150",
"enabled": "support_enable and support_roof_enable",
"limit_to_extruder": "support_roof_extruder_nr",
"settable_per_mesh": false,
"settable_per_extruder": true
},
"support_bottom_material_flow":
{
"label": "Support Floor Flow",
"description": "Flow compensation on support floor lines.",
"unit": "%",
"type": "float",
"default_value": 100,
"value": "extruderValue(support_bottom_extruder_nr, 'support_interface_material_flow')",
"minimum_value": "5",
"minimum_value_warning": "50",
"maximum_value_warning": "150",
"enabled": "support_enable and support_bottom_enable",
"limit_to_extruder": "support_bottom_extruder_nr",
"settable_per_mesh": false,
"settable_per_extruder": true
}
}
},
"prime_tower_flow":
{
"label": "Prime Tower Flow",
"description": "Flow compensation on prime tower lines.",
"unit": "%",
"type": "float",
"default_value": 100,
"value": "material_flow",
"minimum_value": "5",
"minimum_value_warning": "50",
"maximum_value_warning": "150",
"settable_per_mesh": false,
"settable_per_extruder": true
}
}
},
"material_flow_layer_0":
{
"label": "Initial Layer Flow",
"description": "Flow compensation for the first layer: the amount of material extruded on the initial layer is multiplied by this value.",
"unit": "%",
"default_value": 100,
"value": "material_flow",
"type": "float",
"minimum_value": "0.0001",
"minimum_value_warning": "50",
@ -2398,7 +2686,7 @@
"limit_support_retractions":
{
"label": "Limit Support Retractions",
"description": "Omit retraction when moving from support to support in a straight line. Enabling this setting saves print time, but can lead to excesive stringing within the support structure.",
"description": "Omit retraction when moving from support to support in a straight line. Enabling this setting saves print time, but can lead to excessive stringing within the support structure.",
"type": "bool",
"default_value": true,
"enabled": "retraction_enable and (support_enable or support_tree_enable)",
@ -2797,19 +3085,6 @@
"settable_per_mesh": false,
"settable_per_extruder": true
},
"max_feedrate_z_override":
{
"label": "Maximum Z Speed",
"description": "The maximum speed with which the build plate is moved. Setting this to zero causes the print to use the firmware defaults for the maximum z speed.",
"unit": "mm/s",
"type": "float",
"default_value": 0,
"minimum_value": "0",
"maximum_value": "299792458000",
"maximum_value_warning": "machine_max_feedrate_z",
"settable_per_mesh": false,
"settable_per_extruder": true
},
"speed_slowdown_layers":
{
"label": "Number of Slower Layers",
@ -4580,10 +4855,10 @@
"enabled": "support_enable and support_use_towers",
"settable_per_mesh": true
},
"support_minimal_diameter":
"support_tower_maximum_supported_diameter":
{
"label": "Minimum Diameter",
"description": "Minimum diameter in the X/Y directions of a small area which is to be supported by a specialized support tower.",
"label": "Maximum Tower-Supported Diameter",
"description": "Maximum diameter in the X/Y directions of a small area which is to be supported by a specialized support tower.",
"unit": "mm",
"type": "float",
"default_value": 3.0,
@ -4635,11 +4910,11 @@
"label": "Enable Prime Blob",
"description": "Whether to prime the filament with a blob before printing. Turning this setting on will ensure that the extruder will have material ready at the nozzle before printing. Printing Brim or Skirt can act like priming too, in which case turning this setting off saves some time.",
"type": "bool",
"resolve": "any(extruderValues('prime_blob_enable'))",
"default_value": false,
"settable_per_mesh": false,
"settable_per_extruder": true,
"enabled": false
"enabled": false,
"warning_value": "True if resolveOrValue('print_sequence') == 'one_at_a_time' else None"
},
"extruder_prime_pos_x":
{
@ -5281,17 +5556,6 @@
"settable_per_mesh": false,
"settable_per_extruder": false
},
"prime_tower_circular":
{
"label": "Circular Prime Tower",
"description": "Make the prime tower as a circular shape.",
"type": "bool",
"enabled": "resolveOrValue('prime_tower_enable')",
"default_value": true,
"resolve": "any(extruderValues('prime_tower_circular'))",
"settable_per_mesh": false,
"settable_per_extruder": false
},
"prime_tower_size":
{
"label": "Prime Tower Size",
@ -5316,7 +5580,7 @@
"type": "float",
"default_value": 6,
"minimum_value": "0",
"maximum_value_warning": "((resolveOrValue('prime_tower_size') * 0.5) ** 2 * 3.14159 * resolveOrValue('layer_height') if prime_tower_circular else resolveOrValue('prime_tower_size') ** 2 * resolveOrValue('layer_height')) - sum(extruderValues('prime_tower_min_volume')) + prime_tower_min_volume",
"maximum_value_warning": "(resolveOrValue('prime_tower_size') * 0.5) ** 2 * 3.14159 * resolveOrValue('layer_height')",
"enabled": "resolveOrValue('prime_tower_enable')",
"settable_per_mesh": false,
"settable_per_extruder": true
@ -5349,21 +5613,6 @@
"settable_per_mesh": false,
"settable_per_extruder": false
},
"prime_tower_flow":
{
"label": "Prime Tower Flow",
"description": "Flow compensation: the amount of material extruded is multiplied by this value.",
"type": "float",
"unit": "%",
"enabled": "resolveOrValue('prime_tower_enable')",
"default_value": 100,
"value": "material_flow",
"minimum_value": "0.0001",
"minimum_value_warning": "50",
"maximum_value_warning": "150",
"settable_per_mesh": false,
"settable_per_extruder": true
},
"prime_tower_wipe_enabled":
{
"label": "Wipe Inactive Nozzle on Prime Tower",
@ -5667,7 +5916,7 @@
"smooth_spiralized_contours":
{
"label": "Smooth Spiralized Contours",
"description": "Smooth the spiralized contours to reduce the visibility of the Z seam (the Z-seam should be barely visible on the print but will still be visible in the layer view). Note that smoothing will tend to blur fine surface details.",
"description": "Smooth the spiralized contours to reduce the visibility of the Z seam (the Z seam should be barely visible on the print but will still be visible in the layer view). Note that smoothing will tend to blur fine surface details.",
"type": "bool",
"default_value": true,
"enabled": "magic_spiralize",
@ -6410,7 +6659,7 @@
"type": "float",
"default_value": 5,
"minimum_value": "0.1",
"maximum_value": "math.sqrt(machine_max_feedrate_x ** 2 + machine_max_feedrate_y ** 2 + max(max_feedrate_z_override, machine_max_feedrate_z) ** 2)",
"maximum_value": "math.sqrt(machine_max_feedrate_x ** 2 + machine_max_feedrate_y ** 2 + machine_max_feedrate_z ** 2)",
"maximum_value_warning": "50",
"enabled": "wireframe_enabled",
"settable_per_mesh": false,
@ -6442,7 +6691,7 @@
"type": "float",
"default_value": 5,
"minimum_value": "0.1",
"maximum_value": "math.sqrt(machine_max_feedrate_x ** 2 + machine_max_feedrate_y ** 2 + max(max_feedrate_z_override, machine_max_feedrate_z) ** 2)",
"maximum_value": "math.sqrt(machine_max_feedrate_x ** 2 + machine_max_feedrate_y ** 2 + machine_max_feedrate_z ** 2)",
"maximum_value_warning": "50",
"enabled": "wireframe_enabled",
"value": "wireframe_printspeed",
@ -6458,7 +6707,7 @@
"type": "float",
"default_value": 5,
"minimum_value": "0.1",
"maximum_value": "math.sqrt(machine_max_feedrate_x ** 2 + machine_max_feedrate_y ** 2 + max(max_feedrate_z_override, machine_max_feedrate_z) ** 2)",
"maximum_value": "math.sqrt(machine_max_feedrate_x ** 2 + machine_max_feedrate_y ** 2 + machine_max_feedrate_z ** 2)",
"maximum_value_warning": "50",
"enabled": "wireframe_enabled",
"value": "wireframe_printspeed",

View File

@ -0,0 +1,78 @@
{
"id": "flsun_qq_s",
"version": 2,
"name": "FLSUN QQ-S",
"inherits": "fdmprinter",
"metadata": {
"visible": true,
"author": "Cataldo URSO",
"manufacturer": "FLSUN",
"file_formats": "text/x-gcode",
"has_materials": true,
"preferred_quality_type": "draft",
"machine_extruder_trains": {
"0": "flsun_qq_s_extruder_0"
}
},
"overrides": {
"machine_center_is_zero": {
"default_value": true
},
"machine_shape": {
"default_value": "elliptic"
},
"machine_width": {
"default_value": 260
},
"machine_depth": {
"default_value": 260
},
"machine_height": {
"default_value": 370
},
"z_seam_type": {
"default_value": "back"
},
"top_thickness": {
"default_value": 5
},
"bottom_layers": {
"default_value": 4
},
"gantry_height": {
"default_value": 0
},
"machine_nozzle_size": {
"default_value": 0.4
},
"material_diameter": {
"default_value": 1.75
},
"machine_start_gcode": {
"default_value": "G21\nG90\nM82\nM107 T0\nM190 S{material_bed_temperature}\nM109 S{material_print_temperature} T0\nG28\nG92 E0\nG0 E3 F200\nG92 E0\n"
},
"machine_end_gcode": {
"default_value": "M107 T0\nM104 S0\nM104 S0 T1\nM140 S0\nG92 E0\nG91\nG1 E-1 F300 \nG1 Z+0.5 E-5 X-20 Y-20 F9000\nG28 X0 Y0\nM84 ;steppers off\nG90 ;absolute positioning\n"
},
"infill_sparse_density": {
"default_value": 10
},
"machine_head_with_fans_polygon": {
"default_value": [
[0, 0],
[0, 0],
[0, 0],
[0, 0]
]
},
"retraction_enable": {
"default_value": true
},
"machine_heated_bed": {
"default_value": true
},
"machine_gcode_flavor": {
"default_value": "Repetier"
}
}
}

View File

@ -0,0 +1,132 @@
{
"id": "geeetech_a30",
"version": 2,
"name": "Geeetech A30",
"inherits": "fdmprinter",
"metadata": {
"author": "William & Cataldo URSO",
"manufacturer": "Shenzhen Geeetech Technology",
"setting_version": 8,
"file_formats": "text/x-gcode",
"visible": true,
"has_materials": true,
"preferred_quality_type": "draft",
"machine_extruder_trains": {
"0": "geeetech_a30_extruder_0"
}
},
"overrides": {
"machine_name": {
"default_value": "Geeetech A30"
},
"machine_start_gcode": {
"default_value": "G28 ;Home\nM190 S{material_bed_temperature}\nM109 S{material_print_temperature} T0\nG1 Z15.0 F6000 ;Move the platform down 15mm\nG92 E0\nG1 F200 E3\nG92 E0"
},
"machine_end_gcode": {
"default_value": "M104 S0;Cooling the heat end\nM140 S0;Cooling the heat bed\nG92 E1\nG1 E-1 F300\nG28 X0 Y0;Home X axis and Y axis\nM84"
},
"machine_width": {
"default_value": 320
},
"machine_height": {
"default_value": 420
},
"machine_depth": {
"default_value": 320
},
"machine_heated_bed": {
"default_value": true
},
"machine_center_is_zero": {
"default_value": false
},
"material_diameter": {
"default_value": 1.75
},
"material_bed_temperature": {
"default_value": 60
},
"machine_nozzle_size": {
"default_value": 0.4
},
"layer_height": {
"default_value": 0.1
},
"layer_height_0": {
"default_value": 0.3
},
"retraction_amount": {
"default_value": 2
},
"retraction_speed": {
"default_value": 25
},
"retraction_retract_speed": {
"default_value": 25
},
"retraction_prime_speed": {
"default_value": 25
},
"adhesion_type": {
"default_value": "skirt"
},
"machine_head_polygon": {
"default_value": [
[-75, 35],
[18, 35],
[18, -18],
[-75, -18]
]
},
"machine_head_with_fans_polygon": {
"default_value": [
[-75, 35],
[18, 35],
[18, -18],
[-75, -18]
]
},
"gantry_height": {
"default_value": 55
},
"machine_max_feedrate_x": {
"default_value": 300
},
"machine_max_feedrate_y": {
"default_value": 300
},
"machine_max_feedrate_z": {
"default_value": 7
},
"machine_max_feedrate_e": {
"default_value": 50
},
"machine_max_acceleration_x": {
"default_value": 2000
},
"machine_max_acceleration_y": {
"default_value": 2000
},
"machine_max_acceleration_z": {
"default_value": 100
},
"machine_max_acceleration_e": {
"default_value": 10000
},
"machine_acceleration": {
"default_value": 2000
},
"machine_max_jerk_xy": {
"default_value": 10
},
"machine_max_jerk_z": {
"default_value": 1
},
"machine_max_jerk_e": {
"default_value": 5
},
"machine_gcode_flavor": {
"default_value": "Repetier"
}
}
}

View File

@ -50,13 +50,8 @@
"machine_gcode_flavor": {"default_value": "RepRap (RepRap)" },
"material_print_temp_wait": {"default_value": true},
"material_bed_temp_wait": {"default_value": true },
"prime_tower_enable": {"default_value": false },
"prime_tower_size": {"value": 20.6 },
"prime_tower_position_x": {"value": 125 },
"prime_tower_position_y": {"value": 70 },
"prime_blob_enable": {"default_value": false },
"machine_max_feedrate_z": {"default_value": 1200 },
"machine_start_gcode": {"default_value": "\n;Neither MaukCC nor any of MaukCC representatives has any liabilities or gives any warranties on this .gcode file, or on any or all objects made with this .gcode file.\n\nM117 Homing Y ......\nG28 Y\nM117 Homing X ......\nG28 X\nM117 Homing Z ......\nG28 Z F100\n\nG1 X150 Y10 F9000\nG30 H0\nM340 P0 S1500\n\nG1 X-20 Y-100 F9000;go to wipe point\nG1 Z0 F900\nG1 Z0.2 F900\nG1 Y-50 F9000\nG1 X150 Y10 F9000\nM117 HMS434 Printing ...\n\n" },
"machine_start_gcode": {"default_value": "\n;Neither MaukCC nor any of MaukCC representatives has any liabilities or gives any warranties on this .gcode file, or on any or all objects made with this .gcode file.\n\nM117 Homing Y ......\nG28 Y\nM117 Homing X ......\nG28 X\nM117 Homing Z ......\nG28 Z F100\n\nG1 X-44 Y-100 F9000;go to wipe point\nG1 Z0 F900\nG1 Z0.2 F900\nM117 HMS434 Printing ...\n\n" },
"machine_end_gcode": {"default_value": "" },
"retraction_extra_prime_amount": {"minimum_value_warning": "-2.0" },
@ -94,7 +89,7 @@
"maximum_value_warning": "material_print_temperature + 15"},
"material_final_print_temperature": {"value": "material_print_temperature"},
"material_bed_temperature_layer_0": {"value": "material_bed_temperature + 1"},
"material_flow": {"value": "120 if infill_sparse_density < 95 else 115"},
"material_flow": {"value": "100"},
"retraction_amount": {"value": "1"},
"retraction_speed": {"value": "20"},
"retraction_prime_speed": {"value": "8"},
@ -112,7 +107,6 @@
"speed_travel": {"value": "100"},
"speed_travel_layer_0": {"value": "speed_travel"},
"speed_support_interface": {"value": "speed_topbottom"},
"max_feedrate_z_override": {"value": 10},
"speed_slowdown_layers": {"value": 1},
"acceleration_print": {"value": 200},
"acceleration_travel": {"value": 200},

View File

@ -5,7 +5,7 @@
"metadata": {
"visible": true,
"author": "Claudio Sampaio (Patola)",
"manufacturer": "Other",
"manufacturer": "Johann",
"file_formats": "text/x-gcode",
"platform": "kossel_platform.stl",
"platform_offset": [0, -0.25, 0],

View File

@ -5,7 +5,7 @@
"metadata": {
"visible": true,
"author": "Chris Petersen",
"manufacturer": "OpenBeam",
"manufacturer": "Johann",
"file_formats": "text/x-gcode",
"platform": "kossel_pro_build_platform.stl",
"platform_offset": [0, -0.25, 0],

View File

@ -4,8 +4,8 @@
"inherits": "fdmprinter",
"metadata": {
"visible": true,
"author": "NA",
"manufacturer": "NA",
"author": "unknown",
"manufacturer": "MAKEiT 3D",
"file_formats": "text/x-gcode",
"has_materials": false,
"machine_extruder_trains":

View File

@ -4,8 +4,8 @@
"inherits": "fdmprinter",
"metadata": {
"visible": true,
"author": "NA",
"manufacturer": "NA",
"author": "unknown",
"manufacturer": "MAKEiT 3D",
"file_formats": "text/x-gcode",
"has_materials": false,
"machine_extruder_trains":

View File

@ -0,0 +1,66 @@
{
"name": "NWA3D A31",
"version": 2,
"inherits": "fdmprinter",
"metadata": {
"visible": true,
"author": "DragonJe",
"manufacturer": "NWA 3D LLC",
"file_formats": "text/x-gcode",
"platform_offset": [0, 0, 0],
"has_materials": true,
"has_variants": true,
"variants_name": "Nozzle Size",
"preferred_variant_name": "Standard 0.4mm",
"has_machine_materials": true,
"has_variant_materials": false,
"preferred_quality_type": "normal",
"has_machine_quality": true,
"preferred_material": "generic_pla",
"machine_extruder_trains":
{
"0": "nwa3d_a31_extruder_0"
}
},
"overrides": {
"machine_name": {
"default_value": "NWA3D A31"
},
"machine_width": {
"default_value": 300
},
"machine_height": {
"default_value": 400
},
"machine_depth": {
"default_value": 300
},
"machine_head_polygon": {
"default_value": [
[-30, 34],
[-30, -32],
[30, -32],
[30, 34]
]
},
"gantry_height": {
"value": "30"
},
"machine_heated_bed": {
"default_value": true
},
"material_diameter": {
"default_value": 1.75
},
"machine_gcode_flavor": {
"default_value": "RepRap (Marlin/Sprinter)"
},
"machine_start_gcode": {
"default_value": "G28 ; Home\nG1 Z15.0 F6000 ; Move Z axis up 15mm\n ; Prime the extruder\nG92 E0\nG1 F200 E3\nG92 E0"
},
"machine_end_gcode": {
"default_value": "M104 S0\nM140 S0\n ; Retract the filament\nG92 E1\nG1 E-1 F300\nG28 X0 Y0\nM84"
}
}
}

View File

@ -126,9 +126,6 @@
"adhesion_type": {
"value": "'none'"
},
"acceleration_enabled": {
"value": "False"
},
"print_sequence": {
"enabled": false
},
@ -251,10 +248,6 @@
"expand_skins_expand_distance": {
"value": "( wall_line_width_0 + (wall_line_count - 1) * wall_line_width_x ) / 2"
},
"max_feedrate_z_override": {
"value": 0,
"enabled": false
},
"flow_rate_max_extrusion_offset": {
"enabled": false
},

View File

@ -5,7 +5,7 @@
"metadata": {
"visible": true,
"author": "Quillford",
"manufacturer": "Prusajr",
"manufacturer": "Prusa3D",
"file_formats": "text/x-gcode",
"platform": "prusai3_platform.stl",
"machine_extruder_trains":

View File

@ -5,7 +5,7 @@
"metadata": {
"visible": true,
"author": "Apsu, Nounours2099",
"manufacturer": "Prusa Research",
"manufacturer": "Prusa3D",
"file_formats": "text/x-gcode",
"platform": "prusai3_platform.stl",
"has_materials": true,

View File

@ -5,7 +5,7 @@
"metadata": {
"visible": true,
"author": "guigashm",
"manufacturer": "Prusajr",
"manufacturer": "Prusa3D",
"file_formats": "text/x-gcode",
"platform": "prusai3_xl_platform.stl",
"machine_extruder_trains":

View File

@ -5,7 +5,7 @@
"metadata": {
"visible": true,
"author": "Stereotech",
"manufacturer": "Other",
"manufacturer": "Stereotech LLC.",
"file_formats": "text/x-gcode",
"platform": "stereotech_start.stl",
"icon": "icon_ultimaker2",

View File

@ -0,0 +1,137 @@
{
"version": 2,
"name": "Strateo3D",
"inherits": "fdmprinter",
"metadata":
{
"author": "M.K",
"manufacturer": "eMotionTech",
"category": "Other",
"visible": true,
"file_formats": "text/x-gcode",
"has_machine_quality": true,
"has_materials": true,
"has_machine_materials": true,
"has_variants": true,
"preferred_variant_name": "Standard 0.6",
"preferred_quality_type": "e",
"variants_name": "Print Head",
"machine_extruder_trains":
{
"0": "strateo3d_right_extruder",
"1": "strateo3d_left_extruder"
}
},
"overrides":
{
"machine_name": { "default_value": "Strateo3D" },
"machine_width": { "default_value": 600 },
"machine_depth": { "default_value": 420 },
"machine_height": { "default_value": 495 },
"machine_heated_bed": { "default_value": true },
"machine_center_is_zero": { "default_value": false },
"machine_head_with_fans_polygon": { "default_value": [ [ -76, -51.8 ] , [ 25, -51.8 ] , [ 25, 38.2 ] , [ -76, 38.2 ] ] },
"gantry_height": { "default_value": 40 },
"machine_extruder_count": { "default_value": 2 },
"machine_gcode_flavor": { "default_value": "Marlin" },
"machine_start_gcode": { "default_value": "G28 \nG90 G1 X300 Y210 Z15 F6000 \nG92 E0" },
"machine_end_gcode": { "default_value": "T1 \nM104 S0 \nT0 \nM104 S0 \nM140 S0 \nM141 S0 \nG91 \nG0 E-1 F1500 \nG0 z1 \nG90 \nG28 \nM801.2 \nM801.0 \nM84" },
"extruder_prime_pos_y": {"minimum_value": "0", "maximum_value": "machine_depth"},
"extruder_prime_pos_x": {"minimum_value": "0", "maximum_value": "machine_width"},
"machine_heat_zone_length": { "default_value": 7 },
"default_material_print_temperature": { "maximum_value_warning": "350" },
"material_print_temperature": { "maximum_value_warning": "350" },
"material_print_temperature_layer_0": { "maximum_value_warning": "350" },
"material_bed_temperature": { "maximum_value": "130" },
"material_bed_temperature_layer_0": { "maximum_value": "130" },
"extruder_prime_pos_abs": { "default_value": true },
"machine_acceleration": { "default_value": 2000 },
"acceleration_enabled": { "value": false },
"acceleration_layer_0": { "value": "acceleration_topbottom" },
"acceleration_prime_tower": { "value": "math.ceil(acceleration_print * 1000 / 2000)" },
"acceleration_print": { "value": "2000" },
"acceleration_support": { "value": "acceleration_print" },
"acceleration_support_interface": { "value": "acceleration_topbottom" },
"acceleration_topbottom": { "value": "math.ceil(acceleration_print * 1000 / 2000)" },
"acceleration_wall": { "value": "math.ceil(acceleration_print * 1500 / 2000)" },
"acceleration_wall_0": { "value": "math.ceil(acceleration_wall * 1000 / 1500)" },
"adaptive_layer_height_variation": { "default_value": 0.1 },
"adaptive_layer_height_variation_step": { "default_value": 0.05 },
"adhesion_type": { "default_value": "skirt" },
"expand_skins_expand_distance": { "value": "wall_line_width_0 + wall_line_count * wall_line_width_x" },
"gradual_infill_step_height": { "value": "layer_height*10" },
"gradual_support_infill_step_height": { "value": "layer_height*7" },
"infill_before_walls": { "default_value": false },
"infill_overlap": { "value": "0" },
"infill_wipe_dist": { "value": "0" },
"jerk_enabled": { "value": "False" },
"jerk_layer_0": { "value": "jerk_topbottom" },
"jerk_prime_tower": { "value": "math.ceil(jerk_print * 15 / 25)" },
"jerk_print": { "value": "25" },
"jerk_support": { "value": "math.ceil(jerk_print * 15 / 25)" },
"jerk_support_interface": { "value": "jerk_topbottom" },
"jerk_topbottom": { "value": "math.ceil(jerk_print * 5 / 25)" },
"jerk_wall": { "value": "math.ceil(jerk_print * 10 / 25)" },
"jerk_wall_0": { "value": "math.ceil(jerk_wall * 5 / 10)" },
"layer_start_x": { "value": "sum(extruderValues('machine_extruder_start_pos_x')) / len(extruderValues('machine_extruder_start_pos_x'))" },
"layer_start_y": { "value": "sum(extruderValues('machine_extruder_start_pos_y')) / len(extruderValues('machine_extruder_start_pos_y'))" },
"machine_min_cool_heat_time_window": { "value": "15" },
"machine_nozzle_cool_down_speed": { "default_value": 0.50 },
"machine_nozzle_heat_up_speed": { "default_value": 2.25 },
"material_final_print_temperature": { "value": "material_print_temperature - 10" },
"material_flow": { "default_value": 93 },
"material_flow_layer_0": { "value": "math.ceil(material_flow*1)" },
"material_initial_print_temperature": { "value": "material_print_temperature - 5" },
"meshfix_maximum_resolution": { "value": "0.03" },
"optimize_wall_printing_order": { "value": "True" },
"prime_blob_enable": { "enabled": false, "default_value": false },
"prime_tower_min_volume": { "default_value": 35 },
"prime_tower_position_x": { "value": "machine_width/2 - max(extruderValue(adhesion_extruder_nr, 'brim_width') * extruderValue(adhesion_extruder_nr, 'initial_layer_line_width_factor') / 100 if adhesion_type == 'brim' else (extruderValue(adhesion_extruder_nr, 'raft_margin') if adhesion_type == 'raft' else (extruderValue(adhesion_extruder_nr, 'skirt_gap') if adhesion_type == 'skirt' else 0)), max(extruderValues('travel_avoid_distance'))) - max(extruderValues('support_offset')) - sum(extruderValues('skirt_brim_line_width')) * extruderValue(adhesion_extruder_nr, 'initial_layer_line_width_factor') / 100 - (resolveOrValue('draft_shield_dist') if resolveOrValue('draft_shield_enabled') else 0) - 1" },
"prime_tower_position_y": { "value": "machine_depth - prime_tower_size - max(extruderValue(adhesion_extruder_nr, 'brim_width') * extruderValue(adhesion_extruder_nr, 'initial_layer_line_width_factor') / 100 if adhesion_type == 'brim' else (extruderValue(adhesion_extruder_nr, 'raft_margin') if adhesion_type == 'raft' else (extruderValue(adhesion_extruder_nr, 'skirt_gap') if adhesion_type == 'skirt' else 0)), max(extruderValues('travel_avoid_distance'))) - max(extruderValues('support_offset')) - sum(extruderValues('skirt_brim_line_width')) * extruderValue(adhesion_extruder_nr, 'initial_layer_line_width_factor') / 100 - (resolveOrValue('draft_shield_dist') if resolveOrValue('draft_shield_enabled') else 0) - 1" },
"retraction_amount": { "default_value": 1.5 },
"retraction_combing": { "default_value": "all" },
"retraction_combing_max_distance": { "default_value": 5 },
"retraction_count_max": { "default_value": 15 },
"retraction_hop": { "value": "2" },
"retraction_hop_enabled": { "value": "extruders_enabled_count > 1" },
"retraction_hop_only_when_collides": { "value": "True" },
"retraction_min_travel": { "value": "3*line_width" },
"retraction_prime_speed": { "value": "retraction_speed-10" },
"retraction_speed": { "default_value": 25 },
"skin_overlap": { "value": "10" },
"skirt_brim_minimal_length": { "default_value": 333 },
"speed_layer_0": { "value": "20" },
"speed_travel_layer_0": { "value": "100" },
"speed_prime_tower": { "value": "speed_topbottom" },
"speed_print": { "value": "50" },
"speed_support": { "value": "speed_wall" },
"speed_support_interface": { "value": "speed_topbottom" },
"speed_topbottom": { "value": "math.ceil(speed_print * 20/35)" },
"speed_travel": { "value": "150" },
"speed_wall": { "value": "math.ceil(speed_print * 3/4)" },
"speed_wall_0": { "value": "math.ceil(speed_wall * 2/3)" },
"speed_wall_x": { "value": "speed_wall" },
"support_angle": { "value": "50" },
"support_bottom_distance": {"value": "extruderValue(support_bottom_extruder_nr if support_bottom_enable else support_infill_extruder_nr, 'support_z_distance/2') if support_type == 'everywhere' else 0", "maximum_value_warning": "machine_nozzle_size*1.5" },
"support_interface_enable": { "default_value": true },
"support_interface_height": { "value": "layer_height*3" },
"support_interface_offset": { "value": "support_offset" },
"support_top_distance": {"value": "extruderValue(support_roof_extruder_nr if support_roof_enable else support_infill_extruder_nr, 'support_z_distance')", "maximum_value_warning": "machine_nozzle_size*1.5" },
"support_use_towers": { "default_value": true },
"support_xy_distance": { "value": "line_width * 1.7" },
"support_xy_distance_overhang": { "value": "wall_line_width_0" },
"support_z_distance": { "value": "layer_height*2", "maximum_value_warning": "machine_nozzle_size*1.5" },
"switch_extruder_prime_speed": { "value": "retraction_prime_speed" },
"switch_extruder_retraction_amount": { "value": "7" },
"switch_extruder_retraction_speeds": {"value": "retraction_retract_speed"},
"top_bottom_thickness": { "value": "3*layer_height", "minimum_value_warning": "layer_height*2" },
"top_thickness": { "value": "top_bottom_thickness" },
"top_layers": { "value": "0 if infill_sparse_density == 100 else math.ceil(round(top_thickness / resolveOrValue('layer_height'), 4))"},
"bottom_thickness": { "value": "top_bottom_thickness-2*layer_height+layer_height_0" },
"bottom_layers": { "value": "999999 if infill_sparse_density == 100 else math.ceil(round(((bottom_thickness-resolveOrValue('layer_height_0')) / resolveOrValue('layer_height'))+1, 4))"},
"travel_avoid_distance": { "value": "3 if extruders_enabled_count > 1 else machine_nozzle_tip_outer_diameter / 2 * 1.5" },
"wall_thickness": { "value": "wall_line_width_0 + wall_line_width_x" }
}
}

View File

@ -1,6 +1,6 @@
{
"version": 2,
"name": "Discov3ry Complete (Ultimaker 2+)",
"name": "Discov3ry Complete",
"inherits": "fdmprinter",
"metadata": {
"author": "Andrew Finkle, CTO",

View File

@ -1,6 +1,6 @@
{
"version": 2,
"name": "Type A Machines Series 1 2014",
"name": "Series 1 2014",
"inherits": "fdmprinter",
"metadata": {
"visible": true,

View File

@ -69,6 +69,13 @@
"machine_end_gcode":
{
"default_value": "M104 S0\nM140 S0\nG91\nG1 E-5 F300\nG1 Z+3 F3000\nG1 Y245 F3000\nM84"
}
},
"acceleration_enabled": {"value": "False"},
"acceleration_print": {"value": "1500"},
"z_seam_type": {"default_value": "back"},
"z_seam_x": {"value": "127.5"},
"z_seam_y": {"value": "250"},
"retraction_combing": {"default_value": "off"}
}
}

View File

@ -52,6 +52,13 @@
"machine_end_gcode":
{
"default_value": "M104 S0\nM140 S0\nG91\nG1 E-5 F300\nG1 Z+3 F3000\nG1 Y245 F3000\nM84"
}
},
"acceleration_enabled": {"value": "False"},
"acceleration_print": {"value": "1500"},
"z_seam_type": {"default_value": "back"},
"z_seam_x": {"value": "127.5"},
"z_seam_y": {"value": "250"},
"retraction_combing": {"default_value": "off"}
}
}

View File

@ -47,6 +47,14 @@
"machine_end_gcode":
{
"default_value": "M104 S0\nM140 S0\nG91\nG1 E-5 F300\nG1 Z+3 F3000\nG1 Y245 F3000\nM84"
}
},
"acceleration_enabled": {"value": "False"},
"acceleration_print": {"value": "1500"},
"z_seam_type": {"default_value": "back"},
"z_seam_x": {"value": "127.5"},
"z_seam_y": {"value": "250"},
"retraction_combing": {"default_value": "off"}
}
}

View File

@ -79,7 +79,7 @@
"prime_tower_position_x": { "value": "machine_depth - max(extruderValue(adhesion_extruder_nr, 'brim_width') * extruderValue(adhesion_extruder_nr, 'initial_layer_line_width_factor') / 100 if adhesion_type == 'brim' else (extruderValue(adhesion_extruder_nr, 'raft_margin') if adhesion_type == 'raft' else (extruderValue(adhesion_extruder_nr, 'skirt_gap') if adhesion_type == 'skirt' else 0)), max(extruderValues('travel_avoid_distance'))) - max(extruderValues('support_offset')) - sum(extruderValues('skirt_brim_line_width')) - 30" },
"prime_tower_wipe_enabled": { "default_value": false },
"prime_blob_enable": { "enabled": true, "default_value": true },
"prime_blob_enable": { "enabled": true, "default_value": true, "value": "resolveOrValue('print_sequence') != 'one_at_a_time'" },
"acceleration_enabled": { "value": "True" },
"acceleration_layer_0": { "value": "acceleration_topbottom" },

View File

@ -3,10 +3,10 @@
"version": 2,
"inherits": "fdmprinter",
"metadata": {
"manufacturer": "Velleman nv",
"manufacturer": "Velleman N.V.",
"file_formats": "text/x-gcode",
"visible": true,
"author": "Velleman",
"author": "Velleman N.V.",
"has_machine_quality": true,
"has_materials": true,
"machine_extruder_trains":

View File

@ -4,7 +4,7 @@
"inherits": "fdmprinter",
"metadata": {
"visible": true,
"manufacturer": "Velleman",
"manufacturer": "Velleman N.V.",
"file_formats": "text/x-gcode",
"platform": "Vertex_build_panel.stl",
"platform_offset": [0, -3, 0],

View File

@ -4,7 +4,7 @@
"inherits": "fdmprinter",
"metadata": {
"visible": true,
"manufacturer": "Velleman",
"manufacturer": "Velleman N.V.",
"file_formats": "text/x-gcode",
"platform": "Vertex_build_panel.stl",
"platform_offset": [0, -3, 0],

View File

@ -5,7 +5,7 @@
"metadata": {
"visible": true,
"author": "Ultimaker",
"manufacturer": "Unknown",
"manufacturer": "Zone3D",
"file_formats": "text/x-gcode",
"platform_offset": [ 0, 0, 0],
"machine_extruder_trains":

View File

@ -1,10 +1,9 @@
{
"id": "creality_cr10_extruder_0",
"version": 2,
"name": "Extruder 1",
"inherits": "fdmextruder",
"metadata": {
"machine": "creality_cr10",
"machine": "creality_base",
"position": "0"
},
@ -12,5 +11,6 @@
"extruder_nr": { "default_value": 0 },
"machine_nozzle_size": { "default_value": 0.4 },
"material_diameter": { "default_value": 1.75 }
}
}

View File

@ -1,10 +1,10 @@
{
"id": "creality_cr10s4_extruder_0",
"id": "erzay3d_extruder_0",
"version": 2,
"name": "Extruder 1",
"inherits": "fdmextruder",
"metadata": {
"machine": "creality_cr10s4",
"machine": "erzay3d",
"position": "0"
},

View File

@ -1,10 +1,10 @@
{
"id": "creality_cr10s5_extruder_0",
"id": "flsun_qq_s_extruder_0",
"version": 2,
"name": "Extruder 1",
"inherits": "fdmextruder",
"metadata": {
"machine": "creality_cr10s5",
"machine": "flsun_qq_s",
"position": "0"
},

View File

@ -1,10 +1,10 @@
{
"id": "creality_ender3_extruder_0",
"id": "geeetech_a30_extruder_0",
"version": 2,
"name": "Extruder 1",
"inherits": "fdmextruder",
"metadata": {
"machine": "creality_ender3",
"machine": "geeetech_a30",
"position": "0"
},

View File

@ -17,10 +17,10 @@
"machine_nozzle_offset_y": { "default_value": 0.0 },
"material_diameter": { "default_value": 1.75 },
"machine_extruder_start_code": {
"default_value": "\nM109 T0 S{material_print_temperature}\nG1 X-18 Y-50 F9000\nG1 X150 Y10 F9000\n\n"
"default_value": "\n;changing to tool1\nM109 T0 S{material_print_temperature}\nG1 X-18 Y-50 F9000\nG1 X150 Y10 F9000\n\n"
},
"machine_extruder_end_code": {
"default_value": "\nG1 X150 Y10 F9000\nG1 X-20 Y-50 F9000\nG1 Y-100 F3000\n\n"
"default_value": "\nG1 X150 Y10 F9000\nG1 X-20 Y-50 F9000\nG1 Y-100 F3000\n; ending tool1\n\n"
}
}
}

View File

@ -17,10 +17,10 @@
"machine_nozzle_offset_y": { "default_value": 0.0 },
"material_diameter": { "default_value": 1.75 },
"machine_extruder_start_code": {
"default_value": "\nM109 T1 S{material_print_temperature}\nG1 X-18 Y-50 F9000\nG1 X150 Y10 F9000\n\n"
"default_value": "\n;changing to tool2\nM109 T1 S{material_print_temperature}\nG1 X-18 Y-50 F9000\nG1 X150 Y10 F9000\n\n"
},
"machine_extruder_end_code": {
"default_value": "\nG1 X150 Y10 F9000\nG1 X-20 Y-50 F9000\nG1 Y-100 F3000\n\n"
"default_value": "\nG1 X150 Y10 F9000\nG1 X-20 Y-50 F9000\nG1 Y-100 F3000\n; ending tool2\n\n"
}
}
}

View File

@ -17,10 +17,10 @@
"machine_nozzle_offset_y": { "default_value": 0.0 },
"material_diameter": { "default_value": 1.75 },
"machine_extruder_start_code": {
"default_value": ""
"default_value": "\n;changing to tool3"
},
"machine_extruder_end_code": {
"default_value": ""
"default_value": "\n;ending tool3"
}
}
}

View File

@ -17,10 +17,10 @@
"machine_nozzle_offset_y": { "default_value": 0.0 },
"material_diameter": { "default_value": 1.75 },
"machine_extruder_start_code": {
"default_value": ""
"default_value": "\n;changing to tool4"
},
"machine_extruder_end_code": {
"default_value": ""
"default_value": "\n;ending tool4"
}
}
}

View File

@ -17,10 +17,10 @@
"machine_nozzle_offset_y": { "default_value": 0.0 },
"material_diameter": { "default_value": 1.75 },
"machine_extruder_start_code": {
"default_value": ""
"default_value": "\n;changing to tool5"
},
"machine_extruder_end_code": {
"default_value": ""
"default_value": "\n;ending tool5"
}
}
}

View File

@ -17,10 +17,10 @@
"machine_nozzle_offset_y": { "default_value": 0.0 },
"material_diameter": { "default_value": 1.75 },
"machine_extruder_start_code": {
"default_value": ""
"default_value": "\n;changing to tool6"
},
"machine_extruder_end_code": {
"default_value": ""
"default_value": "\n;ending tool6"
}
}
}

View File

@ -17,10 +17,10 @@
"machine_nozzle_offset_y": { "default_value": 0.0 },
"material_diameter": { "default_value": 1.75 },
"machine_extruder_start_code": {
"default_value": ""
"default_value": "\n;changing to tool7"
},
"machine_extruder_end_code": {
"default_value": ""
"default_value": "\n;ending tool7"
}
}
}

View File

@ -17,10 +17,10 @@
"machine_nozzle_offset_y": { "default_value": 0.0 },
"material_diameter": { "default_value": 1.75 },
"machine_extruder_start_code": {
"default_value": ""
"default_value": "\n;changing to tool8"
},
"machine_extruder_end_code": {
"default_value": ""
"default_value": "\n;ending tool8"
}
}
}

View File

@ -0,0 +1,16 @@
{
"id": "nwa3d_a31_extruder_0",
"version": 2,
"name": "Standard 0.4mm",
"inherits": "fdmextruder",
"metadata": {
"machine": "nwa3d_a31",
"position": "0"
},
"overrides": {
"extruder_nr": { "default_value": 0 },
"machine_nozzle_size": { "default_value": 0.4 },
"material_diameter": { "default_value": 1.75 }
}
}

View File

@ -0,0 +1,17 @@
{
"id": "strateo3d_left_extruder",
"version": 2,
"name": "Left Extruder 2",
"inherits": "fdmextruder",
"metadata": {
"machine": "strateo3d",
"position": "1"
},
"overrides": {
"extruder_nr": { "default_value": 1, "maximum_value": "1" },
"material_diameter": { "default_value": 1.75 },
"machine_nozzle_offset_x": { "default_value": 0 },
"machine_nozzle_offset_y": { "default_value": 0 }
}
}

View File

@ -0,0 +1,17 @@
{
"id": "strateo3d_right_extruder",
"version": 2,
"name": "Right Extruder 1",
"inherits": "fdmextruder",
"metadata": {
"machine": "strateo3d",
"position": "0"
},
"overrides": {
"extruder_nr": { "default_value": 0, "maximum_value": "1" },
"material_diameter": { "default_value": 1.75 },
"machine_nozzle_offset_x": { "default_value": 0 },
"machine_nozzle_offset_y": { "default_value": 0 }
}
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Cura 4.1\n"
"Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n"
"POT-Creation-Date: 2019-05-14 12:48+0000\n"
"POT-Creation-Date: 2019-07-16 14:38+0000\n"
"PO-Revision-Date: 2019-03-13 14:00+0200\n"
"Last-Translator: Bothof <info@bothof.nl>\n"
"Language-Team: German\n"

View File

@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Cura 4.1\n"
"Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n"
"POT-Creation-Date: 2019-05-14 12:48+0000\n"
"POT-Creation-Date: 2019-07-16 14:38+0000\n"
"PO-Revision-Date: 2019-03-13 14:00+0200\n"
"Last-Translator: Bothof <info@bothof.nl>\n"
"Language-Team: German\n"
@ -57,7 +57,9 @@ msgctxt "machine_start_gcode description"
msgid ""
"G-code commands to be executed at the very start - separated by \n"
"."
msgstr "G-Code-Befehle, die zu Beginn ausgeführt werden sollen getrennt durch \n."
msgstr ""
"G-Code-Befehle, die zu Beginn ausgeführt werden sollen getrennt durch \n"
"."
#: fdmprinter.def.json
msgctxt "machine_end_gcode label"
@ -69,7 +71,9 @@ msgctxt "machine_end_gcode description"
msgid ""
"G-code commands to be executed at the very end - separated by \n"
"."
msgstr "G-Code-Befehle, die am Ende ausgeführt werden sollen getrennt durch \n."
msgstr ""
"G-Code-Befehle, die am Ende ausgeführt werden sollen getrennt durch \n"
"."
#: fdmprinter.def.json
msgctxt "material_guid label"
@ -333,8 +337,8 @@ msgstr "Die Mindestzeit, die ein Extruder inaktiv sein muss, bevor die Düse abk
#: fdmprinter.def.json
msgctxt "machine_gcode_flavor label"
msgid "G-code Flavour"
msgstr "G-Code-Variante"
msgid "G-code Flavor"
msgstr ""
#: fdmprinter.def.json
msgctxt "machine_gcode_flavor description"
@ -1293,8 +1297,8 @@ msgstr "Präferenz Nahtkante"
#: fdmprinter.def.json
msgctxt "z_seam_corner description"
msgid "Control whether corners on the model outline influence the position of the seam. None means that corners have no influence on the seam position. Hide Seam makes the seam more likely to occur on an inside corner. Expose Seam makes the seam more likely to occur on an outside corner. Hide or Expose Seam makes the seam more likely to occur at an inside or outside corner."
msgstr "Definieren Sie, ob Kanten am Modell-Umriss die Nahtposition beeinflussen. Keine bedeutet, dass Kanten keinen Einfluss auf die Nahtposition haben. Naht verbergen lässt die Naht mit höherer Wahrscheinlichkeit an einer innenliegenden Kante auftreten. Naht offenlegen lässt die Naht mit höherer Wahrscheinlichkeit an einer Außenkante auftreten. Naht verbergen oder offenlegen lässt die Naht mit höherer Wahrscheinlichkeit an einer innenliegenden oder außenliegenden Kante auftreten."
msgid "Control whether corners on the model outline influence the position of the seam. None means that corners have no influence on the seam position. Hide Seam makes the seam more likely to occur on an inside corner. Expose Seam makes the seam more likely to occur on an outside corner. Hide or Expose Seam makes the seam more likely to occur at an inside or outside corner. Smart Hiding allows both inside and outside corners, but chooses inside corners more frequently, if appropriate."
msgstr ""
#: fdmprinter.def.json
msgctxt "z_seam_corner option z_seam_corner_none"
@ -1316,6 +1320,11 @@ msgctxt "z_seam_corner option z_seam_corner_any"
msgid "Hide or Expose Seam"
msgstr "Naht verbergen oder offenlegen"
#: fdmprinter.def.json
msgctxt "z_seam_corner option z_seam_corner_weighted"
msgid "Smart Hiding"
msgstr ""
#: fdmprinter.def.json
msgctxt "z_seam_relative label"
msgid "Z Seam Relative"
@ -1328,13 +1337,13 @@ msgstr "Bei Aktivierung sind die Z-Naht-Koordinaten relativ zur Mitte der jeweil
#: fdmprinter.def.json
msgctxt "skin_no_small_gaps_heuristic label"
msgid "Ignore Small Z Gaps"
msgstr "Schmale Z-Lücken ignorieren"
msgid "No Skin in Z Gaps"
msgstr ""
#: fdmprinter.def.json
msgctxt "skin_no_small_gaps_heuristic description"
msgid "When the model has small vertical gaps, about 5% extra computation time can be spent on generating top and bottom skin in these narrow spaces. In such case, disable the setting."
msgstr "Wenn das Modell schmale vertikale Lücken hat, kann etwa 5 % zusätzliche Rechenzeit aufgewendet werden, um eine obere und untere Außenhaut in diesen engen Räumen zu generieren. In diesem Fall deaktivieren Sie die Einstellung."
msgid "When the model has small vertical gaps of only a few layers, there should normally be skin around those layers in the narrow space. Enable this setting to not generate skin if the vertical gap is very small. This improves printing time and slicing time, but technically leaves infill exposed to the air."
msgstr ""
#: fdmprinter.def.json
msgctxt "skin_outline_count label"
@ -1631,7 +1640,9 @@ msgctxt "infill_wall_line_count description"
msgid ""
"Add extra walls around the infill area. Such walls can make top/bottom skin lines sag down less which means you need less top/bottom skin layers for the same quality at the cost of some extra material.\n"
"This feature can combine with the Connect Infill Polygons to connect all the infill into a single extrusion path without the need for travels or retractions if configured right."
msgstr "Fügen Sie zusätzliche Wände um den Füllbereich hinzu. Derartige Wände können zu einem verringerten Absacken der oberen/unteren Außenhautlinien beitragen, was bedeutet, dass Sie weniger Außenhautschichten oben/unten bei derselben Qualität von Kosten für zusätzliches Material benötigen.\n Diese Funktion ist verknüpfbar mit „Füllungspolygone verbinden“, um alle Füllungen mit einem einzigen Extrusionspfad zu verbinden, ohne dass hierzu Vorwärtsbewegungen oder Rückzüge erforderlich sind, sofern die richtige Konfiguration gewählt wurde."
msgstr ""
"Fügen Sie zusätzliche Wände um den Füllbereich hinzu. Derartige Wände können zu einem verringerten Absacken der oberen/unteren Außenhautlinien beitragen, was bedeutet, dass Sie weniger Außenhautschichten oben/unten bei derselben Qualität von Kosten für zusätzliches Material benötigen.\n"
" Diese Funktion ist verknüpfbar mit „Füllungspolygone verbinden“, um alle Füllungen mit einem einzigen Extrusionspfad zu verbinden, ohne dass hierzu Vorwärtsbewegungen oder Rückzüge erforderlich sind, sofern die richtige Konfiguration gewählt wurde."
#: fdmprinter.def.json
msgctxt "sub_div_rad_add label"
@ -1870,8 +1881,8 @@ msgstr "Temperatur Druckabmessung"
#: fdmprinter.def.json
msgctxt "build_volume_temperature description"
msgid "The temperature used for build volume. If this is 0, the build volume temperature will not be adjusted."
msgstr "Die für die Druckabmessung verwendete Temperatur. Wenn dieser Wert 0 beträgt, wird die Temperatur der Druckabmessung nicht angepasst."
msgid "The temperature of the environment to print in. If this is 0, the build volume temperature will not be adjusted."
msgstr ""
#: fdmprinter.def.json
msgctxt "material_print_temperature label"
@ -1983,6 +1994,86 @@ msgctxt "material_shrinkage_percentage description"
msgid "Shrinkage ratio in percentage."
msgstr "Schrumpfungsverhältnis in Prozent."
#: fdmprinter.def.json
msgctxt "material_crystallinity label"
msgid "Crystalline Material"
msgstr ""
#: fdmprinter.def.json
msgctxt "material_crystallinity description"
msgid "Is this material the type that breaks off cleanly when heated (crystalline), or is it the type that produces long intertwined polymer chains (non-crystalline)?"
msgstr ""
#: fdmprinter.def.json
msgctxt "material_anti_ooze_retracted_position label"
msgid "Anti-ooze Retracted Position"
msgstr ""
#: fdmprinter.def.json
msgctxt "material_anti_ooze_retracted_position description"
msgid "How far the material needs to be retracted before it stops oozing."
msgstr ""
#: fdmprinter.def.json
msgctxt "material_anti_ooze_retraction_speed label"
msgid "Anti-ooze Retraction Speed"
msgstr ""
#: fdmprinter.def.json
msgctxt "material_anti_ooze_retraction_speed description"
msgid "How fast the material needs to be retracted during a filament switch to prevent oozing."
msgstr ""
#: fdmprinter.def.json
msgctxt "material_break_preparation_retracted_position label"
msgid "Break Preparation Retracted Position"
msgstr ""
#: fdmprinter.def.json
msgctxt "material_break_preparation_retracted_position description"
msgid "How far the filament can be stretched before it breaks, while heated."
msgstr ""
#: fdmprinter.def.json
msgctxt "material_break_preparation_speed label"
msgid "Break Preparation Retraction Speed"
msgstr ""
#: fdmprinter.def.json
msgctxt "material_break_preparation_speed description"
msgid "How fast the filament needs to be retracted just before breaking it off in a retraction."
msgstr ""
#: fdmprinter.def.json
msgctxt "material_break_retracted_position label"
msgid "Break Retracted Position"
msgstr ""
#: fdmprinter.def.json
msgctxt "material_break_retracted_position description"
msgid "How far to retract the filament in order to break it cleanly."
msgstr ""
#: fdmprinter.def.json
msgctxt "material_break_speed label"
msgid "Break Retraction Speed"
msgstr ""
#: fdmprinter.def.json
msgctxt "material_break_speed description"
msgid "The speed at which to retract the filament in order to break it cleanly."
msgstr ""
#: fdmprinter.def.json
msgctxt "material_break_temperature label"
msgid "Break Temperature"
msgstr ""
#: fdmprinter.def.json
msgctxt "material_break_temperature description"
msgid "The temperature at which the filament is broken for a clean break."
msgstr ""
#: fdmprinter.def.json
msgctxt "material_flow label"
msgid "Flow"
@ -1993,6 +2084,126 @@ msgctxt "material_flow description"
msgid "Flow compensation: the amount of material extruded is multiplied by this value."
msgstr "Fluss-Kompensation: Die extrudierte Materialmenge wird mit diesem Wert multipliziert."
#: fdmprinter.def.json
msgctxt "wall_material_flow label"
msgid "Wall Flow"
msgstr ""
#: fdmprinter.def.json
msgctxt "wall_material_flow description"
msgid "Flow compensation on wall lines."
msgstr ""
#: fdmprinter.def.json
msgctxt "wall_0_material_flow label"
msgid "Outer Wall Flow"
msgstr ""
#: fdmprinter.def.json
msgctxt "wall_0_material_flow description"
msgid "Flow compensation on the outermost wall line."
msgstr ""
#: fdmprinter.def.json
msgctxt "wall_x_material_flow label"
msgid "Inner Wall(s) Flow"
msgstr ""
#: fdmprinter.def.json
msgctxt "wall_x_material_flow description"
msgid "Flow compensation on wall lines for all wall lines except the outermost one."
msgstr ""
#: fdmprinter.def.json
msgctxt "skin_material_flow label"
msgid "Top/Bottom Flow"
msgstr ""
#: fdmprinter.def.json
msgctxt "skin_material_flow description"
msgid "Flow compensation on top/bottom lines."
msgstr ""
#: fdmprinter.def.json
msgctxt "roofing_material_flow label"
msgid "Top Surface Skin Flow"
msgstr ""
#: fdmprinter.def.json
msgctxt "roofing_material_flow description"
msgid "Flow compensation on lines of the areas at the top of the print."
msgstr ""
#: fdmprinter.def.json
msgctxt "infill_material_flow label"
msgid "Infill Flow"
msgstr ""
#: fdmprinter.def.json
msgctxt "infill_material_flow description"
msgid "Flow compensation on infill lines."
msgstr ""
#: fdmprinter.def.json
msgctxt "skirt_brim_material_flow label"
msgid "Skirt/Brim Flow"
msgstr ""
#: fdmprinter.def.json
msgctxt "skirt_brim_material_flow description"
msgid "Flow compensation on skirt or brim lines."
msgstr ""
#: fdmprinter.def.json
msgctxt "support_material_flow label"
msgid "Support Flow"
msgstr ""
#: fdmprinter.def.json
msgctxt "support_material_flow description"
msgid "Flow compensation on support structure lines."
msgstr ""
#: fdmprinter.def.json
msgctxt "support_interface_material_flow label"
msgid "Support Interface Flow"
msgstr ""
#: fdmprinter.def.json
msgctxt "support_interface_material_flow description"
msgid "Flow compensation on lines of support roof or floor."
msgstr ""
#: fdmprinter.def.json
msgctxt "support_roof_material_flow label"
msgid "Support Roof Flow"
msgstr ""
#: fdmprinter.def.json
msgctxt "support_roof_material_flow description"
msgid "Flow compensation on support roof lines."
msgstr ""
#: fdmprinter.def.json
msgctxt "support_bottom_material_flow label"
msgid "Support Floor Flow"
msgstr ""
#: fdmprinter.def.json
msgctxt "support_bottom_material_flow description"
msgid "Flow compensation on support floor lines."
msgstr ""
#: fdmprinter.def.json
msgctxt "prime_tower_flow label"
msgid "Prime Tower Flow"
msgstr "Fluss Einzugsturm"
#: fdmprinter.def.json
msgctxt "prime_tower_flow description"
msgid "Flow compensation on prime tower lines."
msgstr ""
#: fdmprinter.def.json
msgctxt "material_flow_layer_0 label"
msgid "Initial Layer Flow"
@ -2110,8 +2321,8 @@ msgstr "Stützstruktur-Einzüge einschränken"
#: fdmprinter.def.json
msgctxt "limit_support_retractions description"
msgid "Omit retraction when moving from support to support in a straight line. Enabling this setting saves print time, but can lead to excesive stringing within the support structure."
msgstr "Lassen Sie den Einzug beim Vorgehen von Stützstruktur zu Stützstruktur in einer geraden Linie aus. Die Aktivierung dieser Einstellung spart Druckzeit, kann jedoch zu übermäßigem Fadenziehen innerhalb der Stützstruktur führen."
msgid "Omit retraction when moving from support to support in a straight line. Enabling this setting saves print time, but can lead to excessive stringing within the support structure."
msgstr ""
#: fdmprinter.def.json
msgctxt "material_standby_temperature label"
@ -2163,6 +2374,16 @@ msgctxt "switch_extruder_prime_speed description"
msgid "The speed at which the filament is pushed back after a nozzle switch retraction."
msgstr "Die Geschwindigkeit, mit der das Filament während eines Düsenschaltereinzugs zurückgeschoben wird."
#: fdmprinter.def.json
msgctxt "switch_extruder_extra_prime_amount label"
msgid "Nozzle Switch Extra Prime Amount"
msgstr ""
#: fdmprinter.def.json
msgctxt "switch_extruder_extra_prime_amount description"
msgid "Extra material to prime after nozzle switching."
msgstr ""
#: fdmprinter.def.json
msgctxt "speed label"
msgid "Speed"
@ -2354,14 +2575,14 @@ msgid "The speed at which the skirt and brim are printed. Normally this is done
msgstr "Die Geschwindigkeit, mit der die Skirt- und Brim-Elemente gedruckt werden. Normalerweise wird dafür die Geschwindigkeit der Basisschicht verwendet. In machen Fällen kann es jedoch vorteilhaft sein, das Skirt- oder Brim-Element mit einer anderen Geschwindigkeit zu drucken."
#: fdmprinter.def.json
msgctxt "max_feedrate_z_override label"
msgid "Maximum Z Speed"
msgstr "Maximale Z-Geschwindigkeit"
msgctxt "speed_z_hop label"
msgid "Z Hop Speed"
msgstr ""
#: fdmprinter.def.json
msgctxt "max_feedrate_z_override description"
msgid "The maximum speed with which the build plate is moved. Setting this to zero causes the print to use the firmware defaults for the maximum z speed."
msgstr "Die maximale Geschwindigkeit, mit der die Druckplatte bewegt wird. Eine Einstellung auf Null veranlasst die Verwendung der Firmware-Grundeinstellungen für die maximale Z-Geschwindigkeit."
msgctxt "speed_z_hop description"
msgid "The speed at which the vertical Z movement is made for Z Hops. This is typically lower than the print speed since the build plate or machine's gantry is harder to move."
msgstr ""
#: fdmprinter.def.json
msgctxt "speed_slowdown_layers label"
@ -3415,8 +3636,8 @@ msgstr "Abstand für Zusammenführung der Stützstrukturen"
#: fdmprinter.def.json
msgctxt "support_join_distance description"
msgid "The maximum distance between support structures in the X/Y directions. When seperate structures are closer together than this value, the structures merge into one."
msgstr "Der Maximalabstand zwischen Stützstrukturen in der X- und Y-Richtung. Wenn sich einzelne Strukturen näher aneinander befinden, als dieser Wert, werden diese Strukturen in eine einzige Struktur zusammengefügt."
msgid "The maximum distance between support structures in the X/Y directions. When separate structures are closer together than this value, the structures merge into one."
msgstr ""
#: fdmprinter.def.json
msgctxt "support_offset label"
@ -3794,14 +4015,14 @@ msgid "The diameter of a special tower."
msgstr "Der Durchmesser eines speziellen Pfeilers."
#: fdmprinter.def.json
msgctxt "support_minimal_diameter label"
msgid "Minimum Diameter"
msgstr "Mindestdurchmesser"
msgctxt "support_tower_maximum_supported_diameter label"
msgid "Maximum Tower-Supported Diameter"
msgstr ""
#: fdmprinter.def.json
msgctxt "support_minimal_diameter description"
msgid "Minimum diameter in the X/Y directions of a small area which is to be supported by a specialized support tower."
msgstr "Der Mindestdurchmesser in den X/Y-Richtungen eines kleinen Bereichs, der durch einen speziellen Stützpfeiler gestützt wird."
msgctxt "support_tower_maximum_supported_diameter description"
msgid "Maximum diameter in the X/Y directions of a small area which is to be supported by a specialized support tower."
msgstr ""
#: fdmprinter.def.json
msgctxt "support_tower_roof_angle label"
@ -3923,7 +4144,9 @@ msgctxt "skirt_gap description"
msgid ""
"The horizontal distance between the skirt and the first layer of the print.\n"
"This is the minimum distance. Multiple skirt lines will extend outwards from this distance."
msgstr "Der horizontale Abstand zwischen dem Skirt und der ersten Schicht des Drucks.\nEs handelt sich dabei um den Mindestabstand. Ab diesem Abstand werden mehrere Skirt-Linien in äußerer Richtung angebracht."
msgstr ""
"Der horizontale Abstand zwischen dem Skirt und der ersten Schicht des Drucks.\n"
"Es handelt sich dabei um den Mindestabstand. Ab diesem Abstand werden mehrere Skirt-Linien in äußerer Richtung angebracht."
#: fdmprinter.def.json
msgctxt "skirt_brim_minimal_length label"
@ -4295,16 +4518,6 @@ msgctxt "prime_tower_enable description"
msgid "Print a tower next to the print which serves to prime the material after each nozzle switch."
msgstr "Drucken Sie einen Turm neben dem Druck, der zum Einziehen des Materials nach jeder Düsenschaltung dient."
#: fdmprinter.def.json
msgctxt "prime_tower_circular label"
msgid "Circular Prime Tower"
msgstr "Einzugsturm kreisförmig"
#: fdmprinter.def.json
msgctxt "prime_tower_circular description"
msgid "Make the prime tower as a circular shape."
msgstr "Macht den Einzugsturm zu einer Kreisform."
#: fdmprinter.def.json
msgctxt "prime_tower_size label"
msgid "Prime Tower Size"
@ -4345,16 +4558,6 @@ msgctxt "prime_tower_position_y description"
msgid "The y coordinate of the position of the prime tower."
msgstr "Die Y-Koordinate der Position des Einzugsturms."
#: fdmprinter.def.json
msgctxt "prime_tower_flow label"
msgid "Prime Tower Flow"
msgstr "Fluss Einzugsturm"
#: fdmprinter.def.json
msgctxt "prime_tower_flow description"
msgid "Flow compensation: the amount of material extruded is multiplied by this value."
msgstr "Fluss-Kompensation: Die extrudierte Materialmenge wird mit diesem Wert multipliziert."
#: fdmprinter.def.json
msgctxt "prime_tower_wipe_enabled label"
msgid "Wipe Inactive Nozzle on Prime Tower"
@ -4657,8 +4860,8 @@ msgstr "Spiralisieren der äußeren Konturen glätten"
#: fdmprinter.def.json
msgctxt "smooth_spiralized_contours description"
msgid "Smooth the spiralized contours to reduce the visibility of the Z seam (the Z-seam should be barely visible on the print but will still be visible in the layer view). Note that smoothing will tend to blur fine surface details."
msgstr "Glättet die spiralförmigen Konturen, um die Sichtbarkeit der Z-Naht zu reduzieren (die Z-Naht sollte auf dem Druck kaum sichtbar sein, ist jedoch in der Schichtenansicht erkennbar). Beachten Sie, dass das Glätten dazu neigt, feine Oberflächendetails zu verwischen."
msgid "Smooth the spiralized contours to reduce the visibility of the Z seam (the Z seam should be barely visible on the print but will still be visible in the layer view). Note that smoothing will tend to blur fine surface details."
msgstr ""
#: fdmprinter.def.json
msgctxt "relative_extrusion label"
@ -5157,8 +5360,8 @@ msgstr "Konische Stützstruktur aktivieren"
#: fdmprinter.def.json
msgctxt "support_conical_enabled description"
msgid "Experimental feature: Make support areas smaller at the bottom than at the overhang."
msgstr "Experimentelle Funktion: Macht die Bereiche der Stützstruktur am Boden kleiner als beim Überhang."
msgid "Make support areas smaller at the bottom than at the overhang."
msgstr ""
#: fdmprinter.def.json
msgctxt "support_conical_angle label"
@ -5390,7 +5593,9 @@ msgctxt "wireframe_up_half_speed description"
msgid ""
"Distance of an upward move which is extruded with half speed.\n"
"This can cause better adhesion to previous layers, while not heating the material in those layers too much. Only applies to Wire Printing."
msgstr "Die Strecke einer Aufwärtsbewegung, die mit halber Geschwindigkeit extrudiert wird.\nDies kann zu einer besseren Haftung an vorhergehenden Schichten führen, während gleichzeitig ein Überhitzen des Materials in diesen Schichten vermieden wird. Dies gilt nur für das Drucken mit Drahtstruktur."
msgstr ""
"Die Strecke einer Aufwärtsbewegung, die mit halber Geschwindigkeit extrudiert wird.\n"
"Dies kann zu einer besseren Haftung an vorhergehenden Schichten führen, während gleichzeitig ein Überhitzen des Materials in diesen Schichten vermieden wird. Dies gilt nur für das Drucken mit Drahtstruktur."
#: fdmprinter.def.json
msgctxt "wireframe_top_jump label"
@ -5957,6 +6162,70 @@ msgctxt "mesh_rotation_matrix description"
msgid "Transformation matrix to be applied to the model when loading it from file."
msgstr "Transformationsmatrix, die beim Laden aus der Datei auf das Modell angewandt wird."
#~ msgctxt "machine_gcode_flavor label"
#~ msgid "G-code Flavour"
#~ msgstr "G-Code-Variante"
#~ msgctxt "z_seam_corner description"
#~ msgid "Control whether corners on the model outline influence the position of the seam. None means that corners have no influence on the seam position. Hide Seam makes the seam more likely to occur on an inside corner. Expose Seam makes the seam more likely to occur on an outside corner. Hide or Expose Seam makes the seam more likely to occur at an inside or outside corner."
#~ msgstr "Definieren Sie, ob Kanten am Modell-Umriss die Nahtposition beeinflussen. Keine bedeutet, dass Kanten keinen Einfluss auf die Nahtposition haben. Naht verbergen lässt die Naht mit höherer Wahrscheinlichkeit an einer innenliegenden Kante auftreten. Naht offenlegen lässt die Naht mit höherer Wahrscheinlichkeit an einer Außenkante auftreten. Naht verbergen oder offenlegen lässt die Naht mit höherer Wahrscheinlichkeit an einer innenliegenden oder außenliegenden Kante auftreten."
#~ msgctxt "skin_no_small_gaps_heuristic label"
#~ msgid "Ignore Small Z Gaps"
#~ msgstr "Schmale Z-Lücken ignorieren"
#~ msgctxt "skin_no_small_gaps_heuristic description"
#~ msgid "When the model has small vertical gaps, about 5% extra computation time can be spent on generating top and bottom skin in these narrow spaces. In such case, disable the setting."
#~ msgstr "Wenn das Modell schmale vertikale Lücken hat, kann etwa 5 % zusätzliche Rechenzeit aufgewendet werden, um eine obere und untere Außenhaut in diesen engen Räumen zu generieren. In diesem Fall deaktivieren Sie die Einstellung."
#~ msgctxt "build_volume_temperature description"
#~ msgid "The temperature used for build volume. If this is 0, the build volume temperature will not be adjusted."
#~ msgstr "Die für die Druckabmessung verwendete Temperatur. Wenn dieser Wert 0 beträgt, wird die Temperatur der Druckabmessung nicht angepasst."
#~ msgctxt "limit_support_retractions description"
#~ msgid "Omit retraction when moving from support to support in a straight line. Enabling this setting saves print time, but can lead to excesive stringing within the support structure."
#~ msgstr "Lassen Sie den Einzug beim Vorgehen von Stützstruktur zu Stützstruktur in einer geraden Linie aus. Die Aktivierung dieser Einstellung spart Druckzeit, kann jedoch zu übermäßigem Fadenziehen innerhalb der Stützstruktur führen."
#~ msgctxt "max_feedrate_z_override label"
#~ msgid "Maximum Z Speed"
#~ msgstr "Maximale Z-Geschwindigkeit"
#~ msgctxt "max_feedrate_z_override description"
#~ msgid "The maximum speed with which the build plate is moved. Setting this to zero causes the print to use the firmware defaults for the maximum z speed."
#~ msgstr "Die maximale Geschwindigkeit, mit der die Druckplatte bewegt wird. Eine Einstellung auf Null veranlasst die Verwendung der Firmware-Grundeinstellungen für die maximale Z-Geschwindigkeit."
#~ msgctxt "support_join_distance description"
#~ msgid "The maximum distance between support structures in the X/Y directions. When seperate structures are closer together than this value, the structures merge into one."
#~ msgstr "Der Maximalabstand zwischen Stützstrukturen in der X- und Y-Richtung. Wenn sich einzelne Strukturen näher aneinander befinden, als dieser Wert, werden diese Strukturen in eine einzige Struktur zusammengefügt."
#~ msgctxt "support_minimal_diameter label"
#~ msgid "Minimum Diameter"
#~ msgstr "Mindestdurchmesser"
#~ msgctxt "support_minimal_diameter description"
#~ msgid "Minimum diameter in the X/Y directions of a small area which is to be supported by a specialized support tower."
#~ msgstr "Der Mindestdurchmesser in den X/Y-Richtungen eines kleinen Bereichs, der durch einen speziellen Stützpfeiler gestützt wird."
#~ msgctxt "prime_tower_circular label"
#~ msgid "Circular Prime Tower"
#~ msgstr "Einzugsturm kreisförmig"
#~ msgctxt "prime_tower_circular description"
#~ msgid "Make the prime tower as a circular shape."
#~ msgstr "Macht den Einzugsturm zu einer Kreisform."
#~ msgctxt "prime_tower_flow description"
#~ msgid "Flow compensation: the amount of material extruded is multiplied by this value."
#~ msgstr "Fluss-Kompensation: Die extrudierte Materialmenge wird mit diesem Wert multipliziert."
#~ msgctxt "smooth_spiralized_contours description"
#~ msgid "Smooth the spiralized contours to reduce the visibility of the Z seam (the Z-seam should be barely visible on the print but will still be visible in the layer view). Note that smoothing will tend to blur fine surface details."
#~ msgstr "Glättet die spiralförmigen Konturen, um die Sichtbarkeit der Z-Naht zu reduzieren (die Z-Naht sollte auf dem Druck kaum sichtbar sein, ist jedoch in der Schichtenansicht erkennbar). Beachten Sie, dass das Glätten dazu neigt, feine Oberflächendetails zu verwischen."
#~ msgctxt "support_conical_enabled description"
#~ msgid "Experimental feature: Make support areas smaller at the bottom than at the overhang."
#~ msgstr "Experimentelle Funktion: Macht die Bereiche der Stützstruktur am Boden kleiner als beim Überhang."
#~ msgctxt "extruders_enabled_count label"
#~ msgid "Number of Extruders that are enabled"
#~ msgstr "Anzahl der aktivierten Extruder"
@ -6162,7 +6431,6 @@ msgstr "Transformationsmatrix, die beim Laden aus der Datei auf das Modell angew
#~ "Gcode commands to be executed at the very start - separated by \n"
#~ "."
#~ msgstr ""
#~ "Gcode-Befehle, die zu Beginn ausgeführt werden sollen getrennt durch \n"
#~ "."
@ -6175,7 +6443,6 @@ msgstr "Transformationsmatrix, die beim Laden aus der Datei auf das Modell angew
#~ "Gcode commands to be executed at the very end - separated by \n"
#~ "."
#~ msgstr ""
#~ "Gcode-Befehle, die Am Ende ausgeführt werden sollen getrennt durch \n"
#~ "."
@ -6232,7 +6499,6 @@ msgstr "Transformationsmatrix, die beim Laden aus der Datei auf das Modell angew
#~ "The horizontal distance between the skirt and the first layer of the print.\n"
#~ "This is the minimum distance, multiple skirt lines will extend outwards from this distance."
#~ msgstr ""
#~ "Der horizontale Abstand zwischen dem Skirt und der ersten Schicht des Drucks.\n"
#~ "Es handelt sich dabei um den Mindestabstand. Ab diesem Abstand werden Skirt-Linien in äußerer Richtung angebracht."

File diff suppressed because it is too large Load Diff

View File

@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Cura 4.1\n"
"Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n"
"POT-Creation-Date: 2019-05-14 12:48+0000\n"
"POT-Creation-Date: 2019-07-16 14:38+0000\n"
"PO-Revision-Date: 2019-03-13 14:00+0200\n"
"Last-Translator: Bothof <info@bothof.nl>\n"
"Language-Team: Spanish\n"

View File

@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Cura 4.1\n"
"Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n"
"POT-Creation-Date: 2019-05-14 12:48+0000\n"
"POT-Creation-Date: 2019-07-16 14:38+0000\n"
"PO-Revision-Date: 2019-05-28 09:34+0200\n"
"Last-Translator: Bothof <info@bothof.nl>\n"
"Language-Team: Spanish\n"
@ -337,8 +337,8 @@ msgstr "Tiempo mínimo que un extrusor debe permanecer inactivo antes de que la
#: fdmprinter.def.json
msgctxt "machine_gcode_flavor label"
msgid "G-code Flavour"
msgstr "Tipo de GCode"
msgid "G-code Flavor"
msgstr ""
#: fdmprinter.def.json
msgctxt "machine_gcode_flavor description"
@ -1297,8 +1297,8 @@ msgstr "Preferencia de esquina de costura"
#: fdmprinter.def.json
msgctxt "z_seam_corner description"
msgid "Control whether corners on the model outline influence the position of the seam. None means that corners have no influence on the seam position. Hide Seam makes the seam more likely to occur on an inside corner. Expose Seam makes the seam more likely to occur on an outside corner. Hide or Expose Seam makes the seam more likely to occur at an inside or outside corner."
msgstr "Controlar si las esquinas del contorno del modelo influyen en la posición de la costura. «Ninguno» significa que las esquinas no influyen en la posición de la costura. «Ocultar costura» significa que es probable que la costura se realice en una esquina interior. «Mostrar costura» significa que es probable que la costura sea en una esquina exterior. «Ocultar o mostrar costura» significa que es probable que la costura se realice en una esquina interior o exterior."
msgid "Control whether corners on the model outline influence the position of the seam. None means that corners have no influence on the seam position. Hide Seam makes the seam more likely to occur on an inside corner. Expose Seam makes the seam more likely to occur on an outside corner. Hide or Expose Seam makes the seam more likely to occur at an inside or outside corner. Smart Hiding allows both inside and outside corners, but chooses inside corners more frequently, if appropriate."
msgstr ""
#: fdmprinter.def.json
msgctxt "z_seam_corner option z_seam_corner_none"
@ -1320,6 +1320,11 @@ msgctxt "z_seam_corner option z_seam_corner_any"
msgid "Hide or Expose Seam"
msgstr "Ocultar o mostrar costura"
#: fdmprinter.def.json
msgctxt "z_seam_corner option z_seam_corner_weighted"
msgid "Smart Hiding"
msgstr ""
#: fdmprinter.def.json
msgctxt "z_seam_relative label"
msgid "Z Seam Relative"
@ -1332,13 +1337,13 @@ msgstr "Cuando se habilita, las coordenadas de la costura en z son relativas al
#: fdmprinter.def.json
msgctxt "skin_no_small_gaps_heuristic label"
msgid "Ignore Small Z Gaps"
msgstr "Ignorar los pequeños huecos en Z"
msgid "No Skin in Z Gaps"
msgstr ""
#: fdmprinter.def.json
msgctxt "skin_no_small_gaps_heuristic description"
msgid "When the model has small vertical gaps, about 5% extra computation time can be spent on generating top and bottom skin in these narrow spaces. In such case, disable the setting."
msgstr "Cuando el modelo tiene pequeños huecos verticales, el tiempo de cálculo puede aumentar alrededor de un 5 % para generar el forro superior e inferior en estos espacios estrechos. En tal caso, desactive este ajuste."
msgid "When the model has small vertical gaps of only a few layers, there should normally be skin around those layers in the narrow space. Enable this setting to not generate skin if the vertical gap is very small. This improves printing time and slicing time, but technically leaves infill exposed to the air."
msgstr ""
#: fdmprinter.def.json
msgctxt "skin_outline_count label"
@ -1876,8 +1881,8 @@ msgstr "Temperatura de volumen de impresión"
#: fdmprinter.def.json
msgctxt "build_volume_temperature description"
msgid "The temperature used for build volume. If this is 0, the build volume temperature will not be adjusted."
msgstr "La temperatura utilizada para el volumen de impresión. Si el valor es 0, la temperatura de volumen de impresión no se ajustará."
msgid "The temperature of the environment to print in. If this is 0, the build volume temperature will not be adjusted."
msgstr ""
#: fdmprinter.def.json
msgctxt "material_print_temperature label"
@ -1989,6 +1994,86 @@ msgctxt "material_shrinkage_percentage description"
msgid "Shrinkage ratio in percentage."
msgstr "Índice de compresión en porcentaje."
#: fdmprinter.def.json
msgctxt "material_crystallinity label"
msgid "Crystalline Material"
msgstr ""
#: fdmprinter.def.json
msgctxt "material_crystallinity description"
msgid "Is this material the type that breaks off cleanly when heated (crystalline), or is it the type that produces long intertwined polymer chains (non-crystalline)?"
msgstr ""
#: fdmprinter.def.json
msgctxt "material_anti_ooze_retracted_position label"
msgid "Anti-ooze Retracted Position"
msgstr ""
#: fdmprinter.def.json
msgctxt "material_anti_ooze_retracted_position description"
msgid "How far the material needs to be retracted before it stops oozing."
msgstr ""
#: fdmprinter.def.json
msgctxt "material_anti_ooze_retraction_speed label"
msgid "Anti-ooze Retraction Speed"
msgstr ""
#: fdmprinter.def.json
msgctxt "material_anti_ooze_retraction_speed description"
msgid "How fast the material needs to be retracted during a filament switch to prevent oozing."
msgstr ""
#: fdmprinter.def.json
msgctxt "material_break_preparation_retracted_position label"
msgid "Break Preparation Retracted Position"
msgstr ""
#: fdmprinter.def.json
msgctxt "material_break_preparation_retracted_position description"
msgid "How far the filament can be stretched before it breaks, while heated."
msgstr ""
#: fdmprinter.def.json
msgctxt "material_break_preparation_speed label"
msgid "Break Preparation Retraction Speed"
msgstr ""
#: fdmprinter.def.json
msgctxt "material_break_preparation_speed description"
msgid "How fast the filament needs to be retracted just before breaking it off in a retraction."
msgstr ""
#: fdmprinter.def.json
msgctxt "material_break_retracted_position label"
msgid "Break Retracted Position"
msgstr ""
#: fdmprinter.def.json
msgctxt "material_break_retracted_position description"
msgid "How far to retract the filament in order to break it cleanly."
msgstr ""
#: fdmprinter.def.json
msgctxt "material_break_speed label"
msgid "Break Retraction Speed"
msgstr ""
#: fdmprinter.def.json
msgctxt "material_break_speed description"
msgid "The speed at which to retract the filament in order to break it cleanly."
msgstr ""
#: fdmprinter.def.json
msgctxt "material_break_temperature label"
msgid "Break Temperature"
msgstr ""
#: fdmprinter.def.json
msgctxt "material_break_temperature description"
msgid "The temperature at which the filament is broken for a clean break."
msgstr ""
#: fdmprinter.def.json
msgctxt "material_flow label"
msgid "Flow"
@ -1999,6 +2084,126 @@ msgctxt "material_flow description"
msgid "Flow compensation: the amount of material extruded is multiplied by this value."
msgstr "Compensación de flujo: la cantidad de material extruido se multiplica por este valor."
#: fdmprinter.def.json
msgctxt "wall_material_flow label"
msgid "Wall Flow"
msgstr ""
#: fdmprinter.def.json
msgctxt "wall_material_flow description"
msgid "Flow compensation on wall lines."
msgstr ""
#: fdmprinter.def.json
msgctxt "wall_0_material_flow label"
msgid "Outer Wall Flow"
msgstr ""
#: fdmprinter.def.json
msgctxt "wall_0_material_flow description"
msgid "Flow compensation on the outermost wall line."
msgstr ""
#: fdmprinter.def.json
msgctxt "wall_x_material_flow label"
msgid "Inner Wall(s) Flow"
msgstr ""
#: fdmprinter.def.json
msgctxt "wall_x_material_flow description"
msgid "Flow compensation on wall lines for all wall lines except the outermost one."
msgstr ""
#: fdmprinter.def.json
msgctxt "skin_material_flow label"
msgid "Top/Bottom Flow"
msgstr ""
#: fdmprinter.def.json
msgctxt "skin_material_flow description"
msgid "Flow compensation on top/bottom lines."
msgstr ""
#: fdmprinter.def.json
msgctxt "roofing_material_flow label"
msgid "Top Surface Skin Flow"
msgstr ""
#: fdmprinter.def.json
msgctxt "roofing_material_flow description"
msgid "Flow compensation on lines of the areas at the top of the print."
msgstr ""
#: fdmprinter.def.json
msgctxt "infill_material_flow label"
msgid "Infill Flow"
msgstr ""
#: fdmprinter.def.json
msgctxt "infill_material_flow description"
msgid "Flow compensation on infill lines."
msgstr ""
#: fdmprinter.def.json
msgctxt "skirt_brim_material_flow label"
msgid "Skirt/Brim Flow"
msgstr ""
#: fdmprinter.def.json
msgctxt "skirt_brim_material_flow description"
msgid "Flow compensation on skirt or brim lines."
msgstr ""
#: fdmprinter.def.json
msgctxt "support_material_flow label"
msgid "Support Flow"
msgstr ""
#: fdmprinter.def.json
msgctxt "support_material_flow description"
msgid "Flow compensation on support structure lines."
msgstr ""
#: fdmprinter.def.json
msgctxt "support_interface_material_flow label"
msgid "Support Interface Flow"
msgstr ""
#: fdmprinter.def.json
msgctxt "support_interface_material_flow description"
msgid "Flow compensation on lines of support roof or floor."
msgstr ""
#: fdmprinter.def.json
msgctxt "support_roof_material_flow label"
msgid "Support Roof Flow"
msgstr ""
#: fdmprinter.def.json
msgctxt "support_roof_material_flow description"
msgid "Flow compensation on support roof lines."
msgstr ""
#: fdmprinter.def.json
msgctxt "support_bottom_material_flow label"
msgid "Support Floor Flow"
msgstr ""
#: fdmprinter.def.json
msgctxt "support_bottom_material_flow description"
msgid "Flow compensation on support floor lines."
msgstr ""
#: fdmprinter.def.json
msgctxt "prime_tower_flow label"
msgid "Prime Tower Flow"
msgstr "Flujo de la torre auxiliar"
#: fdmprinter.def.json
msgctxt "prime_tower_flow description"
msgid "Flow compensation on prime tower lines."
msgstr ""
#: fdmprinter.def.json
msgctxt "material_flow_layer_0 label"
msgid "Initial Layer Flow"
@ -2116,8 +2321,8 @@ msgstr "Limitar las retracciones de soporte"
#: fdmprinter.def.json
msgctxt "limit_support_retractions description"
msgid "Omit retraction when moving from support to support in a straight line. Enabling this setting saves print time, but can lead to excesive stringing within the support structure."
msgstr "Omitir la retracción al moverse de soporte a soporte en línea recta. Habilitar este ajuste ahorra tiempo de impresión pero puede ocasionar un encordado excesivo en la estructura de soporte."
msgid "Omit retraction when moving from support to support in a straight line. Enabling this setting saves print time, but can lead to excessive stringing within the support structure."
msgstr ""
#: fdmprinter.def.json
msgctxt "material_standby_temperature label"
@ -2169,6 +2374,16 @@ msgctxt "switch_extruder_prime_speed description"
msgid "The speed at which the filament is pushed back after a nozzle switch retraction."
msgstr "Velocidad a la que se retrae el filamento durante una retracción del cambio de tobera."
#: fdmprinter.def.json
msgctxt "switch_extruder_extra_prime_amount label"
msgid "Nozzle Switch Extra Prime Amount"
msgstr ""
#: fdmprinter.def.json
msgctxt "switch_extruder_extra_prime_amount description"
msgid "Extra material to prime after nozzle switching."
msgstr ""
#: fdmprinter.def.json
msgctxt "speed label"
msgid "Speed"
@ -2360,14 +2575,14 @@ msgid "The speed at which the skirt and brim are printed. Normally this is done
msgstr "Velocidad a la que se imprimen la falda y el borde. Normalmente, esto se hace a la velocidad de la capa inicial, pero a veces es posible que se prefiera imprimir la falda o el borde a una velocidad diferente."
#: fdmprinter.def.json
msgctxt "max_feedrate_z_override label"
msgid "Maximum Z Speed"
msgstr "Velocidad máxima de Z"
msgctxt "speed_z_hop label"
msgid "Z Hop Speed"
msgstr ""
#: fdmprinter.def.json
msgctxt "max_feedrate_z_override description"
msgid "The maximum speed with which the build plate is moved. Setting this to zero causes the print to use the firmware defaults for the maximum z speed."
msgstr "Velocidad máxima a la que se mueve la placa de impresión. Definir este valor en 0 hace que la impresión utilice los valores predeterminados de la velocidad máxima de Z."
msgctxt "speed_z_hop description"
msgid "The speed at which the vertical Z movement is made for Z Hops. This is typically lower than the print speed since the build plate or machine's gantry is harder to move."
msgstr ""
#: fdmprinter.def.json
msgctxt "speed_slowdown_layers label"
@ -3421,8 +3636,8 @@ msgstr "Distancia de unión del soporte"
#: fdmprinter.def.json
msgctxt "support_join_distance description"
msgid "The maximum distance between support structures in the X/Y directions. When seperate structures are closer together than this value, the structures merge into one."
msgstr "Distancia máxima entre las estructuras del soporte en las direcciones X/Y. Cuando estructuras separadas están más cerca entre sí que de este valor, las estructuras se combinan en una."
msgid "The maximum distance between support structures in the X/Y directions. When separate structures are closer together than this value, the structures merge into one."
msgstr ""
#: fdmprinter.def.json
msgctxt "support_offset label"
@ -3800,14 +4015,14 @@ msgid "The diameter of a special tower."
msgstr "Diámetro de una torre especial."
#: fdmprinter.def.json
msgctxt "support_minimal_diameter label"
msgid "Minimum Diameter"
msgstr "Diámetro mínimo"
msgctxt "support_tower_maximum_supported_diameter label"
msgid "Maximum Tower-Supported Diameter"
msgstr ""
#: fdmprinter.def.json
msgctxt "support_minimal_diameter description"
msgid "Minimum diameter in the X/Y directions of a small area which is to be supported by a specialized support tower."
msgstr "Diámetro mínimo en las direcciones X/Y de una pequeña área que soportará una torre de soporte especializada."
msgctxt "support_tower_maximum_supported_diameter description"
msgid "Maximum diameter in the X/Y directions of a small area which is to be supported by a specialized support tower."
msgstr ""
#: fdmprinter.def.json
msgctxt "support_tower_roof_angle label"
@ -4303,16 +4518,6 @@ msgctxt "prime_tower_enable description"
msgid "Print a tower next to the print which serves to prime the material after each nozzle switch."
msgstr "Imprimir una torre junto a la impresión que sirve para preparar el material tras cada cambio de tobera."
#: fdmprinter.def.json
msgctxt "prime_tower_circular label"
msgid "Circular Prime Tower"
msgstr "Torre auxiliar circular"
#: fdmprinter.def.json
msgctxt "prime_tower_circular description"
msgid "Make the prime tower as a circular shape."
msgstr "Hacer que la torre auxiliar sea circular."
#: fdmprinter.def.json
msgctxt "prime_tower_size label"
msgid "Prime Tower Size"
@ -4353,16 +4558,6 @@ msgctxt "prime_tower_position_y description"
msgid "The y coordinate of the position of the prime tower."
msgstr "Coordenada Y de la posición de la torre auxiliar."
#: fdmprinter.def.json
msgctxt "prime_tower_flow label"
msgid "Prime Tower Flow"
msgstr "Flujo de la torre auxiliar"
#: fdmprinter.def.json
msgctxt "prime_tower_flow description"
msgid "Flow compensation: the amount of material extruded is multiplied by this value."
msgstr "Compensación de flujo: la cantidad de material extruido se multiplica por este valor."
#: fdmprinter.def.json
msgctxt "prime_tower_wipe_enabled label"
msgid "Wipe Inactive Nozzle on Prime Tower"
@ -4665,8 +4860,8 @@ msgstr "Contornos espiralizados suaves"
#: fdmprinter.def.json
msgctxt "smooth_spiralized_contours description"
msgid "Smooth the spiralized contours to reduce the visibility of the Z seam (the Z-seam should be barely visible on the print but will still be visible in the layer view). Note that smoothing will tend to blur fine surface details."
msgstr "Suavice los contornos espiralizados para reducir la visibilidad de la costura Z (la costura Z debería ser apenas visible en la impresora pero seguirá siendo visible en la vista de capas). Tenga en cuenta que la suavización tenderá a desdibujar detalles finos de la superficie."
msgid "Smooth the spiralized contours to reduce the visibility of the Z seam (the Z seam should be barely visible on the print but will still be visible in the layer view). Note that smoothing will tend to blur fine surface details."
msgstr ""
#: fdmprinter.def.json
msgctxt "relative_extrusion label"
@ -5165,8 +5360,8 @@ msgstr "Activar soporte cónico"
#: fdmprinter.def.json
msgctxt "support_conical_enabled description"
msgid "Experimental feature: Make support areas smaller at the bottom than at the overhang."
msgstr "Función experimental: hace áreas de soporte más pequeñas en la parte inferior que en el voladizo."
msgid "Make support areas smaller at the bottom than at the overhang."
msgstr ""
#: fdmprinter.def.json
msgctxt "support_conical_angle label"
@ -5967,6 +6162,70 @@ msgctxt "mesh_rotation_matrix description"
msgid "Transformation matrix to be applied to the model when loading it from file."
msgstr "Matriz de transformación que se aplicará al modelo cuando se cargue desde el archivo."
#~ msgctxt "machine_gcode_flavor label"
#~ msgid "G-code Flavour"
#~ msgstr "Tipo de GCode"
#~ msgctxt "z_seam_corner description"
#~ msgid "Control whether corners on the model outline influence the position of the seam. None means that corners have no influence on the seam position. Hide Seam makes the seam more likely to occur on an inside corner. Expose Seam makes the seam more likely to occur on an outside corner. Hide or Expose Seam makes the seam more likely to occur at an inside or outside corner."
#~ msgstr "Controlar si las esquinas del contorno del modelo influyen en la posición de la costura. «Ninguno» significa que las esquinas no influyen en la posición de la costura. «Ocultar costura» significa que es probable que la costura se realice en una esquina interior. «Mostrar costura» significa que es probable que la costura sea en una esquina exterior. «Ocultar o mostrar costura» significa que es probable que la costura se realice en una esquina interior o exterior."
#~ msgctxt "skin_no_small_gaps_heuristic label"
#~ msgid "Ignore Small Z Gaps"
#~ msgstr "Ignorar los pequeños huecos en Z"
#~ msgctxt "skin_no_small_gaps_heuristic description"
#~ msgid "When the model has small vertical gaps, about 5% extra computation time can be spent on generating top and bottom skin in these narrow spaces. In such case, disable the setting."
#~ msgstr "Cuando el modelo tiene pequeños huecos verticales, el tiempo de cálculo puede aumentar alrededor de un 5 % para generar el forro superior e inferior en estos espacios estrechos. En tal caso, desactive este ajuste."
#~ msgctxt "build_volume_temperature description"
#~ msgid "The temperature used for build volume. If this is 0, the build volume temperature will not be adjusted."
#~ msgstr "La temperatura utilizada para el volumen de impresión. Si el valor es 0, la temperatura de volumen de impresión no se ajustará."
#~ msgctxt "limit_support_retractions description"
#~ msgid "Omit retraction when moving from support to support in a straight line. Enabling this setting saves print time, but can lead to excesive stringing within the support structure."
#~ msgstr "Omitir la retracción al moverse de soporte a soporte en línea recta. Habilitar este ajuste ahorra tiempo de impresión pero puede ocasionar un encordado excesivo en la estructura de soporte."
#~ msgctxt "max_feedrate_z_override label"
#~ msgid "Maximum Z Speed"
#~ msgstr "Velocidad máxima de Z"
#~ msgctxt "max_feedrate_z_override description"
#~ msgid "The maximum speed with which the build plate is moved. Setting this to zero causes the print to use the firmware defaults for the maximum z speed."
#~ msgstr "Velocidad máxima a la que se mueve la placa de impresión. Definir este valor en 0 hace que la impresión utilice los valores predeterminados de la velocidad máxima de Z."
#~ msgctxt "support_join_distance description"
#~ msgid "The maximum distance between support structures in the X/Y directions. When seperate structures are closer together than this value, the structures merge into one."
#~ msgstr "Distancia máxima entre las estructuras del soporte en las direcciones X/Y. Cuando estructuras separadas están más cerca entre sí que de este valor, las estructuras se combinan en una."
#~ msgctxt "support_minimal_diameter label"
#~ msgid "Minimum Diameter"
#~ msgstr "Diámetro mínimo"
#~ msgctxt "support_minimal_diameter description"
#~ msgid "Minimum diameter in the X/Y directions of a small area which is to be supported by a specialized support tower."
#~ msgstr "Diámetro mínimo en las direcciones X/Y de una pequeña área que soportará una torre de soporte especializada."
#~ msgctxt "prime_tower_circular label"
#~ msgid "Circular Prime Tower"
#~ msgstr "Torre auxiliar circular"
#~ msgctxt "prime_tower_circular description"
#~ msgid "Make the prime tower as a circular shape."
#~ msgstr "Hacer que la torre auxiliar sea circular."
#~ msgctxt "prime_tower_flow description"
#~ msgid "Flow compensation: the amount of material extruded is multiplied by this value."
#~ msgstr "Compensación de flujo: la cantidad de material extruido se multiplica por este valor."
#~ msgctxt "smooth_spiralized_contours description"
#~ msgid "Smooth the spiralized contours to reduce the visibility of the Z seam (the Z-seam should be barely visible on the print but will still be visible in the layer view). Note that smoothing will tend to blur fine surface details."
#~ msgstr "Suavice los contornos espiralizados para reducir la visibilidad de la costura Z (la costura Z debería ser apenas visible en la impresora pero seguirá siendo visible en la vista de capas). Tenga en cuenta que la suavización tenderá a desdibujar detalles finos de la superficie."
#~ msgctxt "support_conical_enabled description"
#~ msgid "Experimental feature: Make support areas smaller at the bottom than at the overhang."
#~ msgstr "Función experimental: hace áreas de soporte más pequeñas en la parte inferior que en el voladizo."
#~ msgctxt "extruders_enabled_count label"
#~ msgid "Number of Extruders that are enabled"
#~ msgstr "Número de extrusores habilitados"

View File

@ -3,7 +3,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Uranium json setting files\n"
"Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n"
"POT-Creation-Date: 2019-05-14 12:48+0000\n"
"POT-Creation-Date: 2019-07-16 14:38+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE\n"

View File

@ -3,7 +3,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Uranium json setting files\n"
"Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n"
"POT-Creation-Date: 2019-05-14 12:48+0000\n"
"POT-Creation-Date: 2019-07-16 14:38+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE\n"
@ -362,7 +362,7 @@ msgstr ""
#: fdmprinter.def.json
msgctxt "machine_gcode_flavor label"
msgid "G-code Flavour"
msgid "G-code Flavor"
msgstr ""
#: fdmprinter.def.json
@ -1448,7 +1448,9 @@ msgid ""
"seam. None means that corners have no influence on the seam position. Hide "
"Seam makes the seam more likely to occur on an inside corner. Expose Seam "
"makes the seam more likely to occur on an outside corner. Hide or Expose "
"Seam makes the seam more likely to occur at an inside or outside corner."
"Seam makes the seam more likely to occur at an inside or outside corner. "
"Smart Hiding allows both inside and outside corners, but chooses inside "
"corners more frequently, if appropriate."
msgstr ""
#: fdmprinter.def.json
@ -1471,6 +1473,11 @@ msgctxt "z_seam_corner option z_seam_corner_any"
msgid "Hide or Expose Seam"
msgstr ""
#: fdmprinter.def.json
msgctxt "z_seam_corner option z_seam_corner_weighted"
msgid "Smart Hiding"
msgstr ""
#: fdmprinter.def.json
msgctxt "z_seam_relative label"
msgid "Z Seam Relative"
@ -1486,15 +1493,17 @@ msgstr ""
#: fdmprinter.def.json
msgctxt "skin_no_small_gaps_heuristic label"
msgid "Ignore Small Z Gaps"
msgid "No Skin in Z Gaps"
msgstr ""
#: fdmprinter.def.json
msgctxt "skin_no_small_gaps_heuristic description"
msgid ""
"When the model has small vertical gaps, about 5% extra computation time can "
"be spent on generating top and bottom skin in these narrow spaces. In such "
"case, disable the setting."
"When the model has small vertical gaps of only a few layers, there should "
"normally be skin around those layers in the narrow space. Enable this "
"setting to not generate skin if the vertical gap is very small. This "
"improves printing time and slicing time, but technically leaves infill "
"exposed to the air."
msgstr ""
#: fdmprinter.def.json
@ -2151,8 +2160,8 @@ msgstr ""
#: fdmprinter.def.json
msgctxt "build_volume_temperature description"
msgid ""
"The temperature used for build volume. If this is 0, the build volume "
"temperature will not be adjusted."
"The temperature of the environment to print in. If this is 0, the build "
"volume temperature will not be adjusted."
msgstr ""
#: fdmprinter.def.json
@ -2278,6 +2287,94 @@ msgctxt "material_shrinkage_percentage description"
msgid "Shrinkage ratio in percentage."
msgstr ""
#: fdmprinter.def.json
msgctxt "material_crystallinity label"
msgid "Crystalline Material"
msgstr ""
#: fdmprinter.def.json
msgctxt "material_crystallinity description"
msgid ""
"Is this material the type that breaks off cleanly when heated (crystalline), "
"or is it the type that produces long intertwined polymer chains (non-"
"crystalline)?"
msgstr ""
#: fdmprinter.def.json
msgctxt "material_anti_ooze_retracted_position label"
msgid "Anti-ooze Retracted Position"
msgstr ""
#: fdmprinter.def.json
msgctxt "material_anti_ooze_retracted_position description"
msgid "How far the material needs to be retracted before it stops oozing."
msgstr ""
#: fdmprinter.def.json
msgctxt "material_anti_ooze_retraction_speed label"
msgid "Anti-ooze Retraction Speed"
msgstr ""
#: fdmprinter.def.json
msgctxt "material_anti_ooze_retraction_speed description"
msgid ""
"How fast the material needs to be retracted during a filament switch to "
"prevent oozing."
msgstr ""
#: fdmprinter.def.json
msgctxt "material_break_preparation_retracted_position label"
msgid "Break Preparation Retracted Position"
msgstr ""
#: fdmprinter.def.json
msgctxt "material_break_preparation_retracted_position description"
msgid "How far the filament can be stretched before it breaks, while heated."
msgstr ""
#: fdmprinter.def.json
msgctxt "material_break_preparation_speed label"
msgid "Break Preparation Retraction Speed"
msgstr ""
#: fdmprinter.def.json
msgctxt "material_break_preparation_speed description"
msgid ""
"How fast the filament needs to be retracted just before breaking it off in a "
"retraction."
msgstr ""
#: fdmprinter.def.json
msgctxt "material_break_retracted_position label"
msgid "Break Retracted Position"
msgstr ""
#: fdmprinter.def.json
msgctxt "material_break_retracted_position description"
msgid "How far to retract the filament in order to break it cleanly."
msgstr ""
#: fdmprinter.def.json
msgctxt "material_break_speed label"
msgid "Break Retraction Speed"
msgstr ""
#: fdmprinter.def.json
msgctxt "material_break_speed description"
msgid ""
"The speed at which to retract the filament in order to break it cleanly."
msgstr ""
#: fdmprinter.def.json
msgctxt "material_break_temperature label"
msgid "Break Temperature"
msgstr ""
#: fdmprinter.def.json
msgctxt "material_break_temperature description"
msgid "The temperature at which the filament is broken for a clean break."
msgstr ""
#: fdmprinter.def.json
msgctxt "material_flow label"
msgid "Flow"
@ -2290,6 +2387,127 @@ msgid ""
"value."
msgstr ""
#: fdmprinter.def.json
msgctxt "wall_material_flow label"
msgid "Wall Flow"
msgstr ""
#: fdmprinter.def.json
msgctxt "wall_material_flow description"
msgid "Flow compensation on wall lines."
msgstr ""
#: fdmprinter.def.json
msgctxt "wall_0_material_flow label"
msgid "Outer Wall Flow"
msgstr ""
#: fdmprinter.def.json
msgctxt "wall_0_material_flow description"
msgid "Flow compensation on the outermost wall line."
msgstr ""
#: fdmprinter.def.json
msgctxt "wall_x_material_flow label"
msgid "Inner Wall(s) Flow"
msgstr ""
#: fdmprinter.def.json
msgctxt "wall_x_material_flow description"
msgid ""
"Flow compensation on wall lines for all wall lines except the outermost one."
msgstr ""
#: fdmprinter.def.json
msgctxt "skin_material_flow label"
msgid "Top/Bottom Flow"
msgstr ""
#: fdmprinter.def.json
msgctxt "skin_material_flow description"
msgid "Flow compensation on top/bottom lines."
msgstr ""
#: fdmprinter.def.json
msgctxt "roofing_material_flow label"
msgid "Top Surface Skin Flow"
msgstr ""
#: fdmprinter.def.json
msgctxt "roofing_material_flow description"
msgid "Flow compensation on lines of the areas at the top of the print."
msgstr ""
#: fdmprinter.def.json
msgctxt "infill_material_flow label"
msgid "Infill Flow"
msgstr ""
#: fdmprinter.def.json
msgctxt "infill_material_flow description"
msgid "Flow compensation on infill lines."
msgstr ""
#: fdmprinter.def.json
msgctxt "skirt_brim_material_flow label"
msgid "Skirt/Brim Flow"
msgstr ""
#: fdmprinter.def.json
msgctxt "skirt_brim_material_flow description"
msgid "Flow compensation on skirt or brim lines."
msgstr ""
#: fdmprinter.def.json
msgctxt "support_material_flow label"
msgid "Support Flow"
msgstr ""
#: fdmprinter.def.json
msgctxt "support_material_flow description"
msgid "Flow compensation on support structure lines."
msgstr ""
#: fdmprinter.def.json
msgctxt "support_interface_material_flow label"
msgid "Support Interface Flow"
msgstr ""
#: fdmprinter.def.json
msgctxt "support_interface_material_flow description"
msgid "Flow compensation on lines of support roof or floor."
msgstr ""
#: fdmprinter.def.json
msgctxt "support_roof_material_flow label"
msgid "Support Roof Flow"
msgstr ""
#: fdmprinter.def.json
msgctxt "support_roof_material_flow description"
msgid "Flow compensation on support roof lines."
msgstr ""
#: fdmprinter.def.json
msgctxt "support_bottom_material_flow label"
msgid "Support Floor Flow"
msgstr ""
#: fdmprinter.def.json
msgctxt "support_bottom_material_flow description"
msgid "Flow compensation on support floor lines."
msgstr ""
#: fdmprinter.def.json
msgctxt "prime_tower_flow label"
msgid "Prime Tower Flow"
msgstr ""
#: fdmprinter.def.json
msgctxt "prime_tower_flow description"
msgid "Flow compensation on prime tower lines."
msgstr ""
#: fdmprinter.def.json
msgctxt "material_flow_layer_0 label"
msgid "Initial Layer Flow"
@ -2426,7 +2644,7 @@ msgstr ""
msgctxt "limit_support_retractions description"
msgid ""
"Omit retraction when moving from support to support in a straight line. "
"Enabling this setting saves print time, but can lead to excesive stringing "
"Enabling this setting saves print time, but can lead to excessive stringing "
"within the support structure."
msgstr ""
@ -2490,6 +2708,16 @@ msgid ""
"retraction."
msgstr ""
#: fdmprinter.def.json
msgctxt "switch_extruder_extra_prime_amount label"
msgid "Nozzle Switch Extra Prime Amount"
msgstr ""
#: fdmprinter.def.json
msgctxt "switch_extruder_extra_prime_amount description"
msgid "Extra material to prime after nozzle switching."
msgstr ""
#: fdmprinter.def.json
msgctxt "speed label"
msgid "Speed"
@ -2713,15 +2941,16 @@ msgid ""
msgstr ""
#: fdmprinter.def.json
msgctxt "max_feedrate_z_override label"
msgid "Maximum Z Speed"
msgctxt "speed_z_hop label"
msgid "Z Hop Speed"
msgstr ""
#: fdmprinter.def.json
msgctxt "max_feedrate_z_override description"
msgctxt "speed_z_hop description"
msgid ""
"The maximum speed with which the build plate is moved. Setting this to zero "
"causes the print to use the firmware defaults for the maximum z speed."
"The speed at which the vertical Z movement is made for Z Hops. This is "
"typically lower than the print speed since the build plate or machine's "
"gantry is harder to move."
msgstr ""
#: fdmprinter.def.json
@ -3946,7 +4175,7 @@ msgstr ""
msgctxt "support_join_distance description"
msgid ""
"The maximum distance between support structures in the X/Y directions. When "
"seperate structures are closer together than this value, the structures "
"separate structures are closer together than this value, the structures "
"merge into one."
msgstr ""
@ -4380,14 +4609,14 @@ msgid "The diameter of a special tower."
msgstr ""
#: fdmprinter.def.json
msgctxt "support_minimal_diameter label"
msgid "Minimum Diameter"
msgctxt "support_tower_maximum_supported_diameter label"
msgid "Maximum Tower-Supported Diameter"
msgstr ""
#: fdmprinter.def.json
msgctxt "support_minimal_diameter description"
msgctxt "support_tower_maximum_supported_diameter description"
msgid ""
"Minimum diameter in the X/Y directions of a small area which is to be "
"Maximum diameter in the X/Y directions of a small area which is to be "
"supported by a specialized support tower."
msgstr ""
@ -4962,16 +5191,6 @@ msgid ""
"each nozzle switch."
msgstr ""
#: fdmprinter.def.json
msgctxt "prime_tower_circular label"
msgid "Circular Prime Tower"
msgstr ""
#: fdmprinter.def.json
msgctxt "prime_tower_circular description"
msgid "Make the prime tower as a circular shape."
msgstr ""
#: fdmprinter.def.json
msgctxt "prime_tower_size label"
msgid "Prime Tower Size"
@ -5014,18 +5233,6 @@ msgctxt "prime_tower_position_y description"
msgid "The y coordinate of the position of the prime tower."
msgstr ""
#: fdmprinter.def.json
msgctxt "prime_tower_flow label"
msgid "Prime Tower Flow"
msgstr ""
#: fdmprinter.def.json
msgctxt "prime_tower_flow description"
msgid ""
"Flow compensation: the amount of material extruded is multiplied by this "
"value."
msgstr ""
#: fdmprinter.def.json
msgctxt "prime_tower_wipe_enabled label"
msgid "Wipe Inactive Nozzle on Prime Tower"
@ -5397,7 +5604,7 @@ msgstr ""
#: fdmprinter.def.json
msgctxt "smooth_spiralized_contours description"
msgid ""
"Smooth the spiralized contours to reduce the visibility of the Z seam (the Z-"
"Smooth the spiralized contours to reduce the visibility of the Z seam (the Z "
"seam should be barely visible on the print but will still be visible in the "
"layer view). Note that smoothing will tend to blur fine surface details."
msgstr ""
@ -6017,9 +6224,7 @@ msgstr ""
#: fdmprinter.def.json
msgctxt "support_conical_enabled description"
msgid ""
"Experimental feature: Make support areas smaller at the bottom than at the "
"overhang."
msgid "Make support areas smaller at the bottom than at the overhang."
msgstr ""
#: fdmprinter.def.json

File diff suppressed because it is too large Load Diff

View File

@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Cura 4.1\n"
"Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n"
"POT-Creation-Date: 2019-05-14 12:48+0000\n"
"POT-Creation-Date: 2019-07-16 14:38+0000\n"
"PO-Revision-Date: 2017-08-11 14:31+0200\n"
"Last-Translator: Bothof <info@bothof.nl>\n"
"Language-Team: Finnish\n"

View File

@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Cura 4.1\n"
"Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n"
"POT-Creation-Date: 2019-05-14 12:48+0000\n"
"POT-Creation-Date: 2019-07-16 14:38+0000\n"
"PO-Revision-Date: 2017-09-27 12:27+0200\n"
"Last-Translator: Bothof <info@bothof.nl>\n"
"Language-Team: Finnish\n"
@ -332,7 +332,7 @@ msgstr "Minimiaika, jonka suulakkeen on oltava ei-aktiivinen, ennen kuin suutin
#: fdmprinter.def.json
msgctxt "machine_gcode_flavor label"
msgid "G-code Flavour"
msgid "G-code Flavor"
msgstr ""
#: fdmprinter.def.json
@ -1292,8 +1292,8 @@ msgstr "Saumakulmien asetus"
#: fdmprinter.def.json
msgctxt "z_seam_corner description"
msgid "Control whether corners on the model outline influence the position of the seam. None means that corners have no influence on the seam position. Hide Seam makes the seam more likely to occur on an inside corner. Expose Seam makes the seam more likely to occur on an outside corner. Hide or Expose Seam makes the seam more likely to occur at an inside or outside corner."
msgstr "Määritä, vaikuttavatko mallin ulkolinjan kulmat sauman sijaintiin. Ei mitään tarkoittaa, että kulmilla ei ole vaikutusta sauman sijaintiin. Piilota sauma -valinnalla sauman sijainti sisäkulmassa on todennäköisempää. Paljasta sauma -valinnalla sauman sijainti ulkokulmassa on todennäköisempää. Piilota tai paljasta sauma -valinnalla sauman sijainti sisä- tai ulkokulmassa on todennäköisempää."
msgid "Control whether corners on the model outline influence the position of the seam. None means that corners have no influence on the seam position. Hide Seam makes the seam more likely to occur on an inside corner. Expose Seam makes the seam more likely to occur on an outside corner. Hide or Expose Seam makes the seam more likely to occur at an inside or outside corner. Smart Hiding allows both inside and outside corners, but chooses inside corners more frequently, if appropriate."
msgstr ""
#: fdmprinter.def.json
msgctxt "z_seam_corner option z_seam_corner_none"
@ -1315,6 +1315,11 @@ msgctxt "z_seam_corner option z_seam_corner_any"
msgid "Hide or Expose Seam"
msgstr "Piilota tai paljasta sauma"
#: fdmprinter.def.json
msgctxt "z_seam_corner option z_seam_corner_weighted"
msgid "Smart Hiding"
msgstr ""
#: fdmprinter.def.json
msgctxt "z_seam_relative label"
msgid "Z Seam Relative"
@ -1327,13 +1332,13 @@ msgstr "Kun tämä on käytössä, Z-sauman koordinaatit ovat suhteessa kunkin o
#: fdmprinter.def.json
msgctxt "skin_no_small_gaps_heuristic label"
msgid "Ignore Small Z Gaps"
msgstr "Ohita pienet Z-raot"
msgid "No Skin in Z Gaps"
msgstr ""
#: fdmprinter.def.json
msgctxt "skin_no_small_gaps_heuristic description"
msgid "When the model has small vertical gaps, about 5% extra computation time can be spent on generating top and bottom skin in these narrow spaces. In such case, disable the setting."
msgstr "Kun mallissa on pieniä pystyrakoja, ylä- ja alapuolen pintakalvon tekemiseen näihin kapeisiin paikkoihin voi kulua noin 5 % ylimääräistä laskenta-aikaa. Poista siinä tapauksessa tämä asetus käytöstä."
msgid "When the model has small vertical gaps of only a few layers, there should normally be skin around those layers in the narrow space. Enable this setting to not generate skin if the vertical gap is very small. This improves printing time and slicing time, but technically leaves infill exposed to the air."
msgstr ""
#: fdmprinter.def.json
msgctxt "skin_outline_count label"
@ -1869,7 +1874,7 @@ msgstr ""
#: fdmprinter.def.json
msgctxt "build_volume_temperature description"
msgid "The temperature used for build volume. If this is 0, the build volume temperature will not be adjusted."
msgid "The temperature of the environment to print in. If this is 0, the build volume temperature will not be adjusted."
msgstr ""
#: fdmprinter.def.json
@ -1982,6 +1987,86 @@ msgctxt "material_shrinkage_percentage description"
msgid "Shrinkage ratio in percentage."
msgstr ""
#: fdmprinter.def.json
msgctxt "material_crystallinity label"
msgid "Crystalline Material"
msgstr ""
#: fdmprinter.def.json
msgctxt "material_crystallinity description"
msgid "Is this material the type that breaks off cleanly when heated (crystalline), or is it the type that produces long intertwined polymer chains (non-crystalline)?"
msgstr ""
#: fdmprinter.def.json
msgctxt "material_anti_ooze_retracted_position label"
msgid "Anti-ooze Retracted Position"
msgstr ""
#: fdmprinter.def.json
msgctxt "material_anti_ooze_retracted_position description"
msgid "How far the material needs to be retracted before it stops oozing."
msgstr ""
#: fdmprinter.def.json
msgctxt "material_anti_ooze_retraction_speed label"
msgid "Anti-ooze Retraction Speed"
msgstr ""
#: fdmprinter.def.json
msgctxt "material_anti_ooze_retraction_speed description"
msgid "How fast the material needs to be retracted during a filament switch to prevent oozing."
msgstr ""
#: fdmprinter.def.json
msgctxt "material_break_preparation_retracted_position label"
msgid "Break Preparation Retracted Position"
msgstr ""
#: fdmprinter.def.json
msgctxt "material_break_preparation_retracted_position description"
msgid "How far the filament can be stretched before it breaks, while heated."
msgstr ""
#: fdmprinter.def.json
msgctxt "material_break_preparation_speed label"
msgid "Break Preparation Retraction Speed"
msgstr ""
#: fdmprinter.def.json
msgctxt "material_break_preparation_speed description"
msgid "How fast the filament needs to be retracted just before breaking it off in a retraction."
msgstr ""
#: fdmprinter.def.json
msgctxt "material_break_retracted_position label"
msgid "Break Retracted Position"
msgstr ""
#: fdmprinter.def.json
msgctxt "material_break_retracted_position description"
msgid "How far to retract the filament in order to break it cleanly."
msgstr ""
#: fdmprinter.def.json
msgctxt "material_break_speed label"
msgid "Break Retraction Speed"
msgstr ""
#: fdmprinter.def.json
msgctxt "material_break_speed description"
msgid "The speed at which to retract the filament in order to break it cleanly."
msgstr ""
#: fdmprinter.def.json
msgctxt "material_break_temperature label"
msgid "Break Temperature"
msgstr ""
#: fdmprinter.def.json
msgctxt "material_break_temperature description"
msgid "The temperature at which the filament is broken for a clean break."
msgstr ""
#: fdmprinter.def.json
msgctxt "material_flow label"
msgid "Flow"
@ -1992,6 +2077,126 @@ msgctxt "material_flow description"
msgid "Flow compensation: the amount of material extruded is multiplied by this value."
msgstr "Virtauksen kompensointi: pursotetun materiaalin määrä kerrotaan tällä arvolla."
#: fdmprinter.def.json
msgctxt "wall_material_flow label"
msgid "Wall Flow"
msgstr ""
#: fdmprinter.def.json
msgctxt "wall_material_flow description"
msgid "Flow compensation on wall lines."
msgstr ""
#: fdmprinter.def.json
msgctxt "wall_0_material_flow label"
msgid "Outer Wall Flow"
msgstr ""
#: fdmprinter.def.json
msgctxt "wall_0_material_flow description"
msgid "Flow compensation on the outermost wall line."
msgstr ""
#: fdmprinter.def.json
msgctxt "wall_x_material_flow label"
msgid "Inner Wall(s) Flow"
msgstr ""
#: fdmprinter.def.json
msgctxt "wall_x_material_flow description"
msgid "Flow compensation on wall lines for all wall lines except the outermost one."
msgstr ""
#: fdmprinter.def.json
msgctxt "skin_material_flow label"
msgid "Top/Bottom Flow"
msgstr ""
#: fdmprinter.def.json
msgctxt "skin_material_flow description"
msgid "Flow compensation on top/bottom lines."
msgstr ""
#: fdmprinter.def.json
msgctxt "roofing_material_flow label"
msgid "Top Surface Skin Flow"
msgstr ""
#: fdmprinter.def.json
msgctxt "roofing_material_flow description"
msgid "Flow compensation on lines of the areas at the top of the print."
msgstr ""
#: fdmprinter.def.json
msgctxt "infill_material_flow label"
msgid "Infill Flow"
msgstr ""
#: fdmprinter.def.json
msgctxt "infill_material_flow description"
msgid "Flow compensation on infill lines."
msgstr ""
#: fdmprinter.def.json
msgctxt "skirt_brim_material_flow label"
msgid "Skirt/Brim Flow"
msgstr ""
#: fdmprinter.def.json
msgctxt "skirt_brim_material_flow description"
msgid "Flow compensation on skirt or brim lines."
msgstr ""
#: fdmprinter.def.json
msgctxt "support_material_flow label"
msgid "Support Flow"
msgstr ""
#: fdmprinter.def.json
msgctxt "support_material_flow description"
msgid "Flow compensation on support structure lines."
msgstr ""
#: fdmprinter.def.json
msgctxt "support_interface_material_flow label"
msgid "Support Interface Flow"
msgstr ""
#: fdmprinter.def.json
msgctxt "support_interface_material_flow description"
msgid "Flow compensation on lines of support roof or floor."
msgstr ""
#: fdmprinter.def.json
msgctxt "support_roof_material_flow label"
msgid "Support Roof Flow"
msgstr ""
#: fdmprinter.def.json
msgctxt "support_roof_material_flow description"
msgid "Flow compensation on support roof lines."
msgstr ""
#: fdmprinter.def.json
msgctxt "support_bottom_material_flow label"
msgid "Support Floor Flow"
msgstr ""
#: fdmprinter.def.json
msgctxt "support_bottom_material_flow description"
msgid "Flow compensation on support floor lines."
msgstr ""
#: fdmprinter.def.json
msgctxt "prime_tower_flow label"
msgid "Prime Tower Flow"
msgstr "Esitäyttötornin virtaus"
#: fdmprinter.def.json
msgctxt "prime_tower_flow description"
msgid "Flow compensation on prime tower lines."
msgstr ""
#: fdmprinter.def.json
msgctxt "material_flow_layer_0 label"
msgid "Initial Layer Flow"
@ -2109,7 +2314,7 @@ msgstr ""
#: fdmprinter.def.json
msgctxt "limit_support_retractions description"
msgid "Omit retraction when moving from support to support in a straight line. Enabling this setting saves print time, but can lead to excesive stringing within the support structure."
msgid "Omit retraction when moving from support to support in a straight line. Enabling this setting saves print time, but can lead to excessive stringing within the support structure."
msgstr ""
#: fdmprinter.def.json
@ -2162,6 +2367,16 @@ msgctxt "switch_extruder_prime_speed description"
msgid "The speed at which the filament is pushed back after a nozzle switch retraction."
msgstr "Nopeus, jolla tulostuslanka työnnetään takaisin suuttimen vaihdon takaisinvedon jälkeen."
#: fdmprinter.def.json
msgctxt "switch_extruder_extra_prime_amount label"
msgid "Nozzle Switch Extra Prime Amount"
msgstr ""
#: fdmprinter.def.json
msgctxt "switch_extruder_extra_prime_amount description"
msgid "Extra material to prime after nozzle switching."
msgstr ""
#: fdmprinter.def.json
msgctxt "speed label"
msgid "Speed"
@ -2353,14 +2568,14 @@ msgid "The speed at which the skirt and brim are printed. Normally this is done
msgstr "Nopeus, jolla helma ja reunus tulostetaan. Yleensä se tehdään alkukerroksen nopeudella. Joskus helma tai reunus halutaan kuitenkin tulostaa eri nopeudella."
#: fdmprinter.def.json
msgctxt "max_feedrate_z_override label"
msgid "Maximum Z Speed"
msgstr "Z:n maksiminopeus"
msgctxt "speed_z_hop label"
msgid "Z Hop Speed"
msgstr ""
#: fdmprinter.def.json
msgctxt "max_feedrate_z_override description"
msgid "The maximum speed with which the build plate is moved. Setting this to zero causes the print to use the firmware defaults for the maximum z speed."
msgstr "Maksiminopeus, jolla alustaa liikutetaan. Jos tämä määritetään nollaan, tulostuksessa käytetään laiteohjelmiston oletusasetuksia Z:n maksiminopeudelle."
msgctxt "speed_z_hop description"
msgid "The speed at which the vertical Z movement is made for Z Hops. This is typically lower than the print speed since the build plate or machine's gantry is harder to move."
msgstr ""
#: fdmprinter.def.json
msgctxt "speed_slowdown_layers label"
@ -3414,8 +3629,8 @@ msgstr "Tuen liitosetäisyys"
#: fdmprinter.def.json
msgctxt "support_join_distance description"
msgid "The maximum distance between support structures in the X/Y directions. When seperate structures are closer together than this value, the structures merge into one."
msgstr "Tukirakenteiden maksimietäisyys toisistaan X-/Y-suunnissa. Kun erilliset rakenteet ovat tätä arvoa lähempänä toisiaan, rakenteet sulautuvat toisiinsa."
msgid "The maximum distance between support structures in the X/Y directions. When separate structures are closer together than this value, the structures merge into one."
msgstr ""
#: fdmprinter.def.json
msgctxt "support_offset label"
@ -3793,14 +4008,14 @@ msgid "The diameter of a special tower."
msgstr "Erityistornin läpimitta."
#: fdmprinter.def.json
msgctxt "support_minimal_diameter label"
msgid "Minimum Diameter"
msgstr "Minimiläpimitta"
msgctxt "support_tower_maximum_supported_diameter label"
msgid "Maximum Tower-Supported Diameter"
msgstr ""
#: fdmprinter.def.json
msgctxt "support_minimal_diameter description"
msgid "Minimum diameter in the X/Y directions of a small area which is to be supported by a specialized support tower."
msgstr "Erityisellä tukitornilla tuettavan pienen alueen minimiläpimitta X- ja Y-suunnissa."
msgctxt "support_tower_maximum_supported_diameter description"
msgid "Maximum diameter in the X/Y directions of a small area which is to be supported by a specialized support tower."
msgstr ""
#: fdmprinter.def.json
msgctxt "support_tower_roof_angle label"
@ -4294,16 +4509,6 @@ msgctxt "prime_tower_enable description"
msgid "Print a tower next to the print which serves to prime the material after each nozzle switch."
msgstr "Tulosta tulosteen viereen torni, jolla materiaali esitäytetään aina suuttimen vaihdon jälkeen."
#: fdmprinter.def.json
msgctxt "prime_tower_circular label"
msgid "Circular Prime Tower"
msgstr ""
#: fdmprinter.def.json
msgctxt "prime_tower_circular description"
msgid "Make the prime tower as a circular shape."
msgstr ""
#: fdmprinter.def.json
msgctxt "prime_tower_size label"
msgid "Prime Tower Size"
@ -4344,16 +4549,6 @@ msgctxt "prime_tower_position_y description"
msgid "The y coordinate of the position of the prime tower."
msgstr "Esitäyttötornin sijainnin Y-koordinaatti."
#: fdmprinter.def.json
msgctxt "prime_tower_flow label"
msgid "Prime Tower Flow"
msgstr "Esitäyttötornin virtaus"
#: fdmprinter.def.json
msgctxt "prime_tower_flow description"
msgid "Flow compensation: the amount of material extruded is multiplied by this value."
msgstr "Virtauksen kompensointi: pursotetun materiaalin määrä kerrotaan tällä arvolla."
#: fdmprinter.def.json
msgctxt "prime_tower_wipe_enabled label"
msgid "Wipe Inactive Nozzle on Prime Tower"
@ -4656,8 +4851,8 @@ msgstr "Kierukoitujen ääriviivojen tasoittaminen"
#: fdmprinter.def.json
msgctxt "smooth_spiralized_contours description"
msgid "Smooth the spiralized contours to reduce the visibility of the Z seam (the Z-seam should be barely visible on the print but will still be visible in the layer view). Note that smoothing will tend to blur fine surface details."
msgstr "Vähennä Z-sauman näkyvyyttä tasoittamalla kierukoidut ääriviivat (Z-sauman pitäisi olla lähes näkymätön tulosteessa, mutta kerrosnäkymässä sen voi edelleen havaita). Ota huomioon, että tasoittaminen usein sumentaa pinnan pieniä yksityiskohtia."
msgid "Smooth the spiralized contours to reduce the visibility of the Z seam (the Z seam should be barely visible on the print but will still be visible in the layer view). Note that smoothing will tend to blur fine surface details."
msgstr ""
#: fdmprinter.def.json
msgctxt "relative_extrusion label"
@ -5156,8 +5351,8 @@ msgstr "Ota kartiomainen tuki käyttöön"
#: fdmprinter.def.json
msgctxt "support_conical_enabled description"
msgid "Experimental feature: Make support areas smaller at the bottom than at the overhang."
msgstr "Kokeellinen ominaisuus: tekee tukialueet pienemmiksi alaosassa verrattuna ulokkeeseen."
msgid "Make support areas smaller at the bottom than at the overhang."
msgstr ""
#: fdmprinter.def.json
msgctxt "support_conical_angle label"
@ -5958,6 +6153,50 @@ msgctxt "mesh_rotation_matrix description"
msgid "Transformation matrix to be applied to the model when loading it from file."
msgstr "Mallissa käytettävä muunnosmatriisi, kun malli ladataan tiedostosta."
#~ msgctxt "z_seam_corner description"
#~ msgid "Control whether corners on the model outline influence the position of the seam. None means that corners have no influence on the seam position. Hide Seam makes the seam more likely to occur on an inside corner. Expose Seam makes the seam more likely to occur on an outside corner. Hide or Expose Seam makes the seam more likely to occur at an inside or outside corner."
#~ msgstr "Määritä, vaikuttavatko mallin ulkolinjan kulmat sauman sijaintiin. Ei mitään tarkoittaa, että kulmilla ei ole vaikutusta sauman sijaintiin. Piilota sauma -valinnalla sauman sijainti sisäkulmassa on todennäköisempää. Paljasta sauma -valinnalla sauman sijainti ulkokulmassa on todennäköisempää. Piilota tai paljasta sauma -valinnalla sauman sijainti sisä- tai ulkokulmassa on todennäköisempää."
#~ msgctxt "skin_no_small_gaps_heuristic label"
#~ msgid "Ignore Small Z Gaps"
#~ msgstr "Ohita pienet Z-raot"
#~ msgctxt "skin_no_small_gaps_heuristic description"
#~ msgid "When the model has small vertical gaps, about 5% extra computation time can be spent on generating top and bottom skin in these narrow spaces. In such case, disable the setting."
#~ msgstr "Kun mallissa on pieniä pystyrakoja, ylä- ja alapuolen pintakalvon tekemiseen näihin kapeisiin paikkoihin voi kulua noin 5 % ylimääräistä laskenta-aikaa. Poista siinä tapauksessa tämä asetus käytöstä."
#~ msgctxt "max_feedrate_z_override label"
#~ msgid "Maximum Z Speed"
#~ msgstr "Z:n maksiminopeus"
#~ msgctxt "max_feedrate_z_override description"
#~ msgid "The maximum speed with which the build plate is moved. Setting this to zero causes the print to use the firmware defaults for the maximum z speed."
#~ msgstr "Maksiminopeus, jolla alustaa liikutetaan. Jos tämä määritetään nollaan, tulostuksessa käytetään laiteohjelmiston oletusasetuksia Z:n maksiminopeudelle."
#~ msgctxt "support_join_distance description"
#~ msgid "The maximum distance between support structures in the X/Y directions. When seperate structures are closer together than this value, the structures merge into one."
#~ msgstr "Tukirakenteiden maksimietäisyys toisistaan X-/Y-suunnissa. Kun erilliset rakenteet ovat tätä arvoa lähempänä toisiaan, rakenteet sulautuvat toisiinsa."
#~ msgctxt "support_minimal_diameter label"
#~ msgid "Minimum Diameter"
#~ msgstr "Minimiläpimitta"
#~ msgctxt "support_minimal_diameter description"
#~ msgid "Minimum diameter in the X/Y directions of a small area which is to be supported by a specialized support tower."
#~ msgstr "Erityisellä tukitornilla tuettavan pienen alueen minimiläpimitta X- ja Y-suunnissa."
#~ msgctxt "prime_tower_flow description"
#~ msgid "Flow compensation: the amount of material extruded is multiplied by this value."
#~ msgstr "Virtauksen kompensointi: pursotetun materiaalin määrä kerrotaan tällä arvolla."
#~ msgctxt "smooth_spiralized_contours description"
#~ msgid "Smooth the spiralized contours to reduce the visibility of the Z seam (the Z-seam should be barely visible on the print but will still be visible in the layer view). Note that smoothing will tend to blur fine surface details."
#~ msgstr "Vähennä Z-sauman näkyvyyttä tasoittamalla kierukoidut ääriviivat (Z-sauman pitäisi olla lähes näkymätön tulosteessa, mutta kerrosnäkymässä sen voi edelleen havaita). Ota huomioon, että tasoittaminen usein sumentaa pinnan pieniä yksityiskohtia."
#~ msgctxt "support_conical_enabled description"
#~ msgid "Experimental feature: Make support areas smaller at the bottom than at the overhang."
#~ msgstr "Kokeellinen ominaisuus: tekee tukialueet pienemmiksi alaosassa verrattuna ulokkeeseen."
#~ msgctxt "machine_nozzle_tip_outer_diameter label"
#~ msgid "Outer nozzle diameter"
#~ msgstr "Suuttimen ulkoläpimitta"

File diff suppressed because it is too large Load Diff

View File

@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Cura 4.1\n"
"Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n"
"POT-Creation-Date: 2019-05-14 12:48+0000\n"
"POT-Creation-Date: 2019-07-16 14:38+0000\n"
"PO-Revision-Date: 2019-03-13 14:00+0200\n"
"Last-Translator: Bothof <info@bothof.nl>\n"
"Language-Team: French\n"

Some files were not shown because too many files have changed in this diff Show More