mirror of
https://git.mirrors.martin98.com/https://github.com/Ultimaker/Cura
synced 2025-09-27 10:13:17 +08:00
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:
commit
13df255477
15
.github/ISSUE_TEMPLATE/bug-report.md
vendored
15
.github/ISSUE_TEMPLATE/bug-report.md
vendored
@ -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.
|
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
|
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!
|
Thank you for using Cura!
|
||||||
-->
|
-->
|
||||||
|
|
||||||
**Application Version**
|
**Application version**
|
||||||
<!-- The version of the application this issue occurs with -->
|
<!-- The version of the application this issue occurs with -->
|
||||||
|
|
||||||
**Platform**
|
**Platform**
|
||||||
@ -30,11 +30,14 @@ Thank you for using Cura!
|
|||||||
**Printer**
|
**Printer**
|
||||||
<!-- Which printer was selected in Cura? If possible, please attach project file as .curaproject.3mf.zip -->
|
<!-- 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 -->
|
<!-- What happens after the above steps have been followed -->
|
||||||
|
|
||||||
**Expected results**
|
**Expected results**
|
||||||
<!-- What should happen after the above steps have been followed -->
|
<!-- What should happen after the above steps have been followed -->
|
||||||
|
|
||||||
**Additional Information**
|
**Additional information**
|
||||||
<!-- Extra information relevant to the issue, like screenshots -->
|
<!-- Extra information relevant to the issue, like screenshots. Don't forget to attach the log files with this issue report. -->
|
||||||
|
@ -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_APP_DISPLAY_NAME "Ultimaker Cura" CACHE STRING "Display name of Cura")
|
||||||
set(CURA_VERSION "master" CACHE STRING "Version 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_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_ROOT "" CACHE STRING "Alternative Cura cloud API root")
|
||||||
set(CURA_CLOUD_API_VERSION "" CACHE STRING "Alternative Cura cloud API version")
|
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(${CMAKE_SOURCE_DIR}/cura.desktop.in ${CMAKE_BINARY_DIR}/cura.desktop @ONLY)
|
||||||
|
|
||||||
configure_file(cura/CuraVersion.py.in CuraVersion.py @ONLY)
|
configure_file(cura/CuraVersion.py.in CuraVersion.py @ONLY)
|
||||||
|
|
||||||
|
|
||||||
|
@ -42,9 +42,7 @@ try:
|
|||||||
except ImportError:
|
except ImportError:
|
||||||
CuraDebugMode = DEFAULT_CURA_DEBUG_MODE
|
CuraDebugMode = DEFAULT_CURA_DEBUG_MODE
|
||||||
|
|
||||||
try:
|
# Each release has a fixed SDK version coupled with it. It doesn't make sense to make it configurable because, for
|
||||||
from cura.CuraVersion import CuraSDKVersion # type: ignore
|
# 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
|
||||||
if CuraSDKVersion == "":
|
# CuraVersion.py.in template.
|
||||||
CuraSDKVersion = DEFAULT_CURA_SDK_VERSION
|
CuraSDKVersion = "6.1.0"
|
||||||
except ImportError:
|
|
||||||
CuraSDKVersion = DEFAULT_CURA_SDK_VERSION
|
|
||||||
|
@ -1,12 +1,18 @@
|
|||||||
|
#Copyright (c) 2019 Ultimaker B.V.
|
||||||
|
#Cura is released under the terms of the LGPLv3 or higher.
|
||||||
|
|
||||||
import numpy
|
import numpy
|
||||||
import copy
|
import copy
|
||||||
|
from typing import Optional, Tuple, TYPE_CHECKING
|
||||||
|
|
||||||
from UM.Math.Polygon import Polygon
|
from UM.Math.Polygon import Polygon
|
||||||
|
|
||||||
|
if TYPE_CHECKING:
|
||||||
|
from UM.Scene.SceneNode import SceneNode
|
||||||
|
|
||||||
## Polygon representation as an array for use with Arrange
|
## Polygon representation as an array for use with Arrange
|
||||||
class ShapeArray:
|
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.arr = arr
|
||||||
self.offset_x = offset_x
|
self.offset_x = offset_x
|
||||||
self.offset_y = offset_y
|
self.offset_y = offset_y
|
||||||
@ -16,7 +22,7 @@ class ShapeArray:
|
|||||||
# \param vertices
|
# \param vertices
|
||||||
# \param scale scale the coordinates
|
# \param scale scale the coordinates
|
||||||
@classmethod
|
@classmethod
|
||||||
def fromPolygon(cls, vertices, scale = 1):
|
def fromPolygon(cls, vertices: numpy.array, scale: float = 1) -> "ShapeArray":
|
||||||
# scale
|
# scale
|
||||||
vertices = vertices * scale
|
vertices = vertices * scale
|
||||||
# flip y, x -> x, y
|
# flip y, x -> x, y
|
||||||
@ -42,7 +48,7 @@ class ShapeArray:
|
|||||||
# \param min_offset offset for the offset ShapeArray
|
# \param min_offset offset for the offset ShapeArray
|
||||||
# \param scale scale the coordinates
|
# \param scale scale the coordinates
|
||||||
@classmethod
|
@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 = node._transformation
|
||||||
transform_x = transform._data[0][3]
|
transform_x = transform._data[0][3]
|
||||||
transform_y = transform._data[2][3]
|
transform_y = transform._data[2][3]
|
||||||
@ -88,7 +94,7 @@ class ShapeArray:
|
|||||||
# \param shape numpy format shape, [x-size, y-size]
|
# \param shape numpy format shape, [x-size, y-size]
|
||||||
# \param vertices
|
# \param vertices
|
||||||
@classmethod
|
@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
|
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
|
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 p2 2-tuple with x, y for point 2
|
||||||
# \param base_array boolean array to project the line on
|
# \param base_array boolean array to project the line on
|
||||||
@classmethod
|
@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]:
|
if p1[0] == p2[0] and p1[1] == p2[1]:
|
||||||
return
|
return False
|
||||||
idxs = numpy.indices(base_array.shape) # Create 3D array of indices
|
idxs = numpy.indices(base_array.shape) # Create 3D array of indices
|
||||||
|
|
||||||
p1 = p1.astype(float)
|
p1 = p1.astype(float)
|
||||||
@ -131,5 +137,4 @@ class ShapeArray:
|
|||||||
|
|
||||||
max_col_idx = (idxs[0] - p1[0]) / (p2[0] - p1[0]) * (p2[1] - p1[1]) + p1[1]
|
max_col_idx = (idxs[0] - p1[0]) / (p2[0] - p1[0]) * (p2[1] - p1[1]) + p1[1]
|
||||||
sign = numpy.sign(p2[0] - p1[0])
|
sign = numpy.sign(p2[0] - p1[0])
|
||||||
return idxs[1] * sign <= max_col_idx * sign
|
return idxs[1] * sign <= max_col_idx * sign
|
||||||
|
|
@ -727,48 +727,17 @@ class BuildVolume(SceneNode):
|
|||||||
|
|
||||||
self._error_areas = []
|
self._error_areas = []
|
||||||
|
|
||||||
extruder_manager = ExtruderManager.getInstance()
|
used_extruders = ExtruderManager.getInstance().getUsedExtruderStacks()
|
||||||
used_extruders = extruder_manager.getUsedExtruderStacks()
|
|
||||||
disallowed_border_size = self.getEdgeDisallowedSize()
|
disallowed_border_size = self.getEdgeDisallowedSize()
|
||||||
|
|
||||||
if not used_extruders:
|
result_areas = self._computeDisallowedAreasStatic(disallowed_border_size, used_extruders) # Normal machine disallowed areas can always be added.
|
||||||
# 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.
|
|
||||||
prime_areas = self._computeDisallowedAreasPrimeBlob(disallowed_border_size, used_extruders)
|
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.
|
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)
|
|
||||||
|
|
||||||
#Check if prime positions intersect with disallowed areas.
|
# Check if prime positions intersect with disallowed areas.
|
||||||
for extruder in used_extruders:
|
for extruder in used_extruders:
|
||||||
extruder_id = extruder.getId()
|
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[extruder_id].extend(prime_areas[extruder_id])
|
||||||
result_areas_no_brim[extruder_id].extend(prime_areas[extruder_id])
|
result_areas_no_brim[extruder_id].extend(prime_areas[extruder_id])
|
||||||
|
|
||||||
@ -776,37 +745,32 @@ class BuildVolume(SceneNode):
|
|||||||
for area in nozzle_disallowed_areas:
|
for area in nozzle_disallowed_areas:
|
||||||
polygon = Polygon(numpy.array(area, numpy.float32))
|
polygon = Polygon(numpy.array(area, numpy.float32))
|
||||||
polygon_disallowed_border = polygon.getMinkowskiHull(Polygon.approximatedCircle(disallowed_border_size))
|
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.
|
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_no_brim[extruder_id].append(polygon) # no brim
|
|
||||||
|
|
||||||
# Add prime tower location as disallowed area.
|
# 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
|
||||||
|
prime_tower_collision = False
|
||||||
if len([x for x in used_extruders if x.isEnabled]) > 1: #No prime tower if only one extruder is enabled
|
prime_tower_areas = self._computeDisallowedAreasPrinted(used_extruders)
|
||||||
prime_tower_collision = False
|
for extruder_id in prime_tower_areas:
|
||||||
prime_tower_areas = self._computeDisallowedAreasPrinted(used_extruders)
|
for area_index, prime_tower_area in enumerate(prime_tower_areas[extruder_id]):
|
||||||
for extruder_id in prime_tower_areas:
|
for area in result_areas[extruder_id]:
|
||||||
for i_area, prime_tower_area in enumerate(prime_tower_areas[extruder_id]):
|
if prime_tower_area.intersectsPolygon(area) is not None:
|
||||||
for area in result_areas[extruder_id]:
|
prime_tower_collision = True
|
||||||
if prime_tower_area.intersectsPolygon(area) is not None:
|
|
||||||
prime_tower_collision = True
|
|
||||||
break
|
|
||||||
if prime_tower_collision: #Already found a collision.
|
|
||||||
break
|
break
|
||||||
if (ExtruderManager.getInstance().getResolveOrValue("prime_tower_brim_enable") and
|
if prime_tower_collision: # Already found a collision.
|
||||||
ExtruderManager.getInstance().getResolveOrValue("adhesion_type") != "raft"):
|
break
|
||||||
prime_tower_areas[extruder_id][i_area] = prime_tower_area.getMinkowskiHull(
|
if self._global_container_stack.getProperty("prime_tower_brim_enable", "value") and self._global_container_stack.getProperty("adhesion_type", "value") != "raft":
|
||||||
Polygon.approximatedCircle(disallowed_border_size))
|
prime_tower_areas[extruder_id][area_index] = prime_tower_area.getMinkowskiHull(Polygon.approximatedCircle(disallowed_border_size))
|
||||||
if not prime_tower_collision:
|
if not prime_tower_collision:
|
||||||
result_areas[extruder_id].extend(prime_tower_areas[extruder_id])
|
result_areas[extruder_id].extend(prime_tower_areas[extruder_id])
|
||||||
result_areas_no_brim[extruder_id].extend(prime_tower_areas[extruder_id])
|
result_areas_no_brim[extruder_id].extend(prime_tower_areas[extruder_id])
|
||||||
else:
|
else:
|
||||||
self._error_areas.extend(prime_tower_areas[extruder_id])
|
self._error_areas.extend(prime_tower_areas[extruder_id])
|
||||||
|
|
||||||
self._has_errors = len(self._error_areas) > 0
|
self._has_errors = len(self._error_areas) > 0
|
||||||
|
|
||||||
self._disallowed_areas = []
|
self._disallowed_areas = [] # type: List[Polygon]
|
||||||
for extruder_id in result_areas:
|
for extruder_id in result_areas:
|
||||||
self._disallowed_areas.extend(result_areas[extruder_id])
|
self._disallowed_areas.extend(result_areas[extruder_id])
|
||||||
self._disallowed_areas_no_brim = []
|
self._disallowed_areas_no_brim = []
|
||||||
@ -823,11 +787,14 @@ class BuildVolume(SceneNode):
|
|||||||
# where that extruder may not print.
|
# where that extruder may not print.
|
||||||
def _computeDisallowedAreasPrinted(self, used_extruders):
|
def _computeDisallowedAreasPrinted(self, used_extruders):
|
||||||
result = {}
|
result = {}
|
||||||
|
adhesion_extruder = None #type: ExtruderStack
|
||||||
for extruder in used_extruders:
|
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()] = []
|
result[extruder.getId()] = []
|
||||||
|
|
||||||
#Currently, the only normally printed object is the prime tower.
|
# Currently, the only normally printed object is the prime tower.
|
||||||
if ExtruderManager.getInstance().getResolveOrValue("prime_tower_enable"):
|
if self._global_container_stack.getProperty("prime_tower_enable", "value"):
|
||||||
prime_tower_size = self._global_container_stack.getProperty("prime_tower_size", "value")
|
prime_tower_size = self._global_container_stack.getProperty("prime_tower_size", "value")
|
||||||
machine_width = self._global_container_stack.getProperty("machine_width", "value")
|
machine_width = self._global_container_stack.getProperty("machine_width", "value")
|
||||||
machine_depth = self._global_container_stack.getProperty("machine_depth", "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_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
|
prime_tower_y = prime_tower_y + machine_depth / 2
|
||||||
|
|
||||||
if (ExtruderManager.getInstance().getResolveOrValue("prime_tower_brim_enable") and
|
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":
|
||||||
ExtruderManager.getInstance().getResolveOrValue("adhesion_type") != "raft"):
|
|
||||||
brim_size = (
|
brim_size = (
|
||||||
extruder.getProperty("brim_line_count", "value") *
|
adhesion_extruder.getProperty("brim_line_count", "value") *
|
||||||
extruder.getProperty("skirt_brim_line_width", "value") / 100.0 *
|
adhesion_extruder.getProperty("skirt_brim_line_width", "value") / 100.0 *
|
||||||
extruder.getProperty("initial_layer_line_width_factor", "value")
|
adhesion_extruder.getProperty("initial_layer_line_width_factor", "value")
|
||||||
)
|
)
|
||||||
prime_tower_x -= brim_size
|
prime_tower_x -= brim_size
|
||||||
prime_tower_y += brim_size
|
prime_tower_y += brim_size
|
||||||
|
|
||||||
if self._global_container_stack.getProperty("prime_tower_circular", "value"):
|
radius = prime_tower_size / 2
|
||||||
radius = prime_tower_size / 2
|
prime_tower_area = Polygon.approximatedCircle(radius)
|
||||||
prime_tower_area = Polygon.approximatedCircle(radius)
|
prime_tower_area = prime_tower_area.translate(prime_tower_x - radius, prime_tower_y - 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))
|
prime_tower_area = prime_tower_area.getMinkowskiHull(Polygon.approximatedCircle(0))
|
||||||
for extruder in used_extruders:
|
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.
|
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.
|
# for.
|
||||||
# \return A dictionary with for each used extruder ID the disallowed areas
|
# \return A dictionary with for each used extruder ID the disallowed areas
|
||||||
# where that extruder may not print.
|
# where that extruder may not print.
|
||||||
def _computeDisallowedAreasStatic(self, border_size, used_extruders):
|
def _computeDisallowedAreasStatic(self, border_size:float, used_extruders: List["ExtruderStack"]) -> Dict[str, List[Polygon]]:
|
||||||
#Convert disallowed areas to polygons and dilate them.
|
# Convert disallowed areas to polygons and dilate them.
|
||||||
machine_disallowed_polygons = []
|
machine_disallowed_polygons = []
|
||||||
|
if self._global_container_stack is None:
|
||||||
|
return {}
|
||||||
|
|
||||||
for area in self._global_container_stack.getProperty("machine_disallowed_areas", "value"):
|
for area in self._global_container_stack.getProperty("machine_disallowed_areas", "value"):
|
||||||
polygon = Polygon(numpy.array(area, numpy.float32))
|
polygon = Polygon(numpy.array(area, numpy.float32))
|
||||||
polygon = polygon.getMinkowskiHull(Polygon.approximatedCircle(border_size))
|
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 = self._global_container_stack.getMetaDataEntry(
|
||||||
"nozzle_offsetting_for_disallowed_areas", True)
|
"nozzle_offsetting_for_disallowed_areas", True)
|
||||||
|
|
||||||
result = {}
|
result = {} # type: Dict[str, List[Polygon]]
|
||||||
for extruder in used_extruders:
|
for extruder in used_extruders:
|
||||||
extruder_id = extruder.getId()
|
extruder_id = extruder.getId()
|
||||||
offset_x = extruder.getProperty("machine_nozzle_offset_x", "value")
|
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")
|
offset_y = extruder.getProperty("machine_nozzle_offset_y", "value")
|
||||||
if offset_y is None:
|
if offset_y is None:
|
||||||
offset_y = 0
|
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] = []
|
result[extruder_id] = []
|
||||||
|
|
||||||
for polygon in machine_disallowed_polygons:
|
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
|
left_unreachable_border = 0
|
||||||
right_unreachable_border = 0
|
right_unreachable_border = 0
|
||||||
top_unreachable_border = 0
|
top_unreachable_border = 0
|
||||||
@ -951,7 +913,8 @@ class BuildVolume(SceneNode):
|
|||||||
|
|
||||||
# Only do nozzle offsetting if needed
|
# Only do nozzle offsetting if needed
|
||||||
if nozzle_offsetting_for_disallowed_areas:
|
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():
|
for other_extruder in ExtruderManager.getInstance().getActiveExtruderStacks():
|
||||||
other_offset_x = other_extruder.getProperty("machine_nozzle_offset_x", "value")
|
other_offset_x = other_extruder.getProperty("machine_nozzle_offset_x", "value")
|
||||||
if other_offset_x is None:
|
if other_offset_x is None:
|
||||||
@ -1035,8 +998,8 @@ class BuildVolume(SceneNode):
|
|||||||
[ half_machine_width - border_size, 0]
|
[ half_machine_width - border_size, 0]
|
||||||
], numpy.float32)))
|
], numpy.float32)))
|
||||||
result[extruder_id].append(Polygon(numpy.array([
|
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]
|
[ 0, -half_machine_depth + border_size]
|
||||||
], numpy.float32)))
|
], 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"]
|
_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"]
|
_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"]
|
_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"]
|
_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"]
|
_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.
|
_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.
|
||||||
|
@ -144,7 +144,7 @@ class CuraApplication(QtApplication):
|
|||||||
# SettingVersion represents the set of settings available in the machine/extruder definitions.
|
# 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
|
# You need to make sure that this version number needs to be increased if there is any non-backwards-compatible
|
||||||
# changes of the settings.
|
# changes of the settings.
|
||||||
SettingVersion = 7
|
SettingVersion = 8
|
||||||
|
|
||||||
Created = False
|
Created = False
|
||||||
|
|
||||||
|
@ -6,7 +6,6 @@ CuraAppDisplayName = "@CURA_APP_DISPLAY_NAME@"
|
|||||||
CuraVersion = "@CURA_VERSION@"
|
CuraVersion = "@CURA_VERSION@"
|
||||||
CuraBuildType = "@CURA_BUILDTYPE@"
|
CuraBuildType = "@CURA_BUILDTYPE@"
|
||||||
CuraDebugMode = True if "@_cura_debugmode@" == "ON" else False
|
CuraDebugMode = True if "@_cura_debugmode@" == "ON" else False
|
||||||
CuraSDKVersion = "@CURA_SDK_VERSION@"
|
|
||||||
CuraCloudAPIRoot = "@CURA_CLOUD_API_ROOT@"
|
CuraCloudAPIRoot = "@CURA_CLOUD_API_ROOT@"
|
||||||
CuraCloudAPIVersion = "@CURA_CLOUD_API_VERSION@"
|
CuraCloudAPIVersion = "@CURA_CLOUD_API_VERSION@"
|
||||||
CuraCloudAccountAPIRoot = "@CURA_CLOUD_ACCOUNT_API_ROOT@"
|
CuraCloudAccountAPIRoot = "@CURA_CLOUD_ACCOUNT_API_ROOT@"
|
||||||
|
@ -283,7 +283,7 @@ class CuraContainerRegistry(ContainerRegistry):
|
|||||||
profile.addInstance(new_instance)
|
profile.addInstance(new_instance)
|
||||||
profile.setDirty(True)
|
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)
|
extruder_profiles.append(profile)
|
||||||
|
|
||||||
for profile in extruder_profiles:
|
for profile in extruder_profiles:
|
||||||
|
@ -205,7 +205,7 @@ class ExtruderManager(QObject):
|
|||||||
# list.
|
# list.
|
||||||
#
|
#
|
||||||
# \return A list of extruder stacks.
|
# \return A list of extruder stacks.
|
||||||
def getUsedExtruderStacks(self) -> List["ContainerStack"]:
|
def getUsedExtruderStacks(self) -> List["ExtruderStack"]:
|
||||||
global_stack = self._application.getGlobalContainerStack()
|
global_stack = self._application.getGlobalContainerStack()
|
||||||
container_registry = ContainerRegistry.getInstance()
|
container_registry = ContainerRegistry.getInstance()
|
||||||
|
|
||||||
|
@ -986,8 +986,9 @@ class MachineManager(QObject):
|
|||||||
self._application.globalContainerStackChanged.emit()
|
self._application.globalContainerStackChanged.emit()
|
||||||
self.forceUpdateAllSettings()
|
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)
|
@pyqtSlot(int, result = QObject)
|
||||||
@deprecated("use Cura.MachineManager.activeMachine.extruders instead", "4.2")
|
|
||||||
def getExtruder(self, position: int) -> Optional[ExtruderStack]:
|
def getExtruder(self, position: int) -> Optional[ExtruderStack]:
|
||||||
if self._global_container_stack:
|
if self._global_container_stack:
|
||||||
return self._global_container_stack.extruders.get(str(position))
|
return self._global_container_stack.extruders.get(str(position))
|
||||||
@ -1111,9 +1112,17 @@ class MachineManager(QObject):
|
|||||||
def _onRootMaterialChanged(self) -> None:
|
def _onRootMaterialChanged(self) -> None:
|
||||||
self._current_root_material_id = {}
|
self._current_root_material_id = {}
|
||||||
|
|
||||||
|
changed = False
|
||||||
|
|
||||||
if self._global_container_stack:
|
if self._global_container_stack:
|
||||||
for position in self._global_container_stack.extruders:
|
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)
|
@pyqtProperty("QVariant", notify = rootMaterialChanged)
|
||||||
def currentRootMaterialId(self) -> Dict[str, str]:
|
def currentRootMaterialId(self) -> Dict[str, str]:
|
||||||
|
@ -419,13 +419,17 @@ class ThreeMFWorkspaceReader(WorkspaceReader):
|
|||||||
if parser.has_option("metadata", "enabled"):
|
if parser.has_option("metadata", "enabled"):
|
||||||
extruder_info.enabled = parser["metadata"]["enabled"]
|
extruder_info.enabled = parser["metadata"]["enabled"]
|
||||||
if variant_id not in ("empty", "empty_variant"):
|
if variant_id not in ("empty", "empty_variant"):
|
||||||
extruder_info.variant_info = instance_container_info_dict[variant_id]
|
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"):
|
if material_id not in ("empty", "empty_material"):
|
||||||
root_material_id = reverse_material_id_dict[material_id]
|
root_material_id = reverse_material_id_dict[material_id]
|
||||||
extruder_info.root_material_id = root_material_id
|
extruder_info.root_material_id = root_material_id
|
||||||
|
|
||||||
definition_changes_id = parser["containers"][str(_ContainerIndexes.DefinitionChanges)]
|
definition_changes_id = parser["containers"][str(_ContainerIndexes.DefinitionChanges)]
|
||||||
if definition_changes_id not in ("empty", "empty_definition_changes"):
|
if definition_changes_id not in ("empty", "empty_definition_changes"):
|
||||||
extruder_info.definition_changes_info = instance_container_info_dict[definition_changes_id]
|
extruder_info.definition_changes_info = instance_container_info_dict[definition_changes_id]
|
||||||
|
|
||||||
user_changes_id = parser["containers"][str(_ContainerIndexes.UserChanges)]
|
user_changes_id = parser["containers"][str(_ContainerIndexes.UserChanges)]
|
||||||
if user_changes_id not in ("empty", "empty_user_changes"):
|
if user_changes_id not in ("empty", "empty_user_changes"):
|
||||||
extruder_info.user_changes_info = instance_container_info_dict[user_changes_id]
|
extruder_info.user_changes_info = instance_container_info_dict[user_changes_id]
|
||||||
@ -905,6 +909,10 @@ class ThreeMFWorkspaceReader(WorkspaceReader):
|
|||||||
continue
|
continue
|
||||||
extruder_info = self._machine_info.extruder_info_dict[position]
|
extruder_info = self._machine_info.extruder_info_dict[position]
|
||||||
if extruder_info.variant_info is None:
|
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
|
continue
|
||||||
parser = extruder_info.variant_info.parser
|
parser = extruder_info.variant_info.parser
|
||||||
|
|
||||||
|
@ -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.
|
# Cura is released under the terms of the LGPLv3 or higher.
|
||||||
|
|
||||||
import configparser
|
import configparser
|
||||||
|
from typing import List, Optional, Tuple
|
||||||
|
|
||||||
from UM.PluginRegistry import PluginRegistry
|
from UM.PluginRegistry import PluginRegistry
|
||||||
from UM.Logger import Logger
|
from UM.Logger import Logger
|
||||||
from UM.Settings.ContainerFormatError import ContainerFormatError
|
from UM.Settings.ContainerFormatError import ContainerFormatError
|
||||||
from UM.Settings.InstanceContainer import InstanceContainer # The new profile to make.
|
from UM.Settings.InstanceContainer import InstanceContainer # The new profile to make.
|
||||||
|
from cura.CuraApplication import CuraApplication
|
||||||
from cura.ReaderWriters.ProfileReader import ProfileReader
|
from cura.ReaderWriters.ProfileReader import ProfileReader
|
||||||
|
|
||||||
import zipfile
|
import zipfile
|
||||||
@ -17,39 +20,43 @@ import zipfile
|
|||||||
class CuraProfileReader(ProfileReader):
|
class CuraProfileReader(ProfileReader):
|
||||||
## Initialises the cura profile reader.
|
## Initialises the cura profile reader.
|
||||||
# This does nothing since the only other function is basically stateless.
|
# This does nothing since the only other function is basically stateless.
|
||||||
def __init__(self):
|
def __init__(self) -> None:
|
||||||
super().__init__()
|
super().__init__()
|
||||||
|
|
||||||
## Reads a cura profile from a file and returns it.
|
## Reads a cura profile from a file and returns it.
|
||||||
#
|
#
|
||||||
# \param file_name The file to read the cura profile from.
|
# \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
|
# \return The cura profiles that were in the file, if any. If the file
|
||||||
# not be read or didn't contain a valid profile, \code None \endcode is
|
# could not be read or didn't contain a valid profile, ``None`` is
|
||||||
# returned.
|
# returned.
|
||||||
def read(self, file_name):
|
def read(self, file_name: str) -> List[Optional[InstanceContainer]]:
|
||||||
try:
|
try:
|
||||||
with zipfile.ZipFile(file_name, "r") as archive:
|
with zipfile.ZipFile(file_name, "r") as archive:
|
||||||
results = []
|
results = [] # type: List[Optional[InstanceContainer]]
|
||||||
for profile_id in archive.namelist():
|
for profile_id in archive.namelist():
|
||||||
with archive.open(profile_id) as f:
|
with archive.open(profile_id) as f:
|
||||||
serialized = f.read()
|
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.
|
||||||
if profile is not None:
|
for upgraded_profile in upgraded_profiles:
|
||||||
results.append(profile)
|
serialization, new_id = upgraded_profile
|
||||||
|
profile = self._loadProfile(serialization, new_id)
|
||||||
|
if profile is not None:
|
||||||
|
results.append(profile)
|
||||||
return results
|
return results
|
||||||
|
|
||||||
except zipfile.BadZipFile:
|
except zipfile.BadZipFile:
|
||||||
# It must be an older profile from Cura 2.1.
|
# It must be an older profile from Cura 2.1.
|
||||||
with open(file_name, encoding = "utf-8") as fhandle:
|
with open(file_name, encoding = "utf-8") as fhandle:
|
||||||
serialized = fhandle.read()
|
serialized_bytes = fhandle.read()
|
||||||
return [self._loadProfile(serialized, profile_id) for serialized, profile_id in self._upgradeProfile(serialized, file_name)]
|
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.
|
## 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 serialized The profile data to convert in the serialized on-disk
|
||||||
# \param profile_id \type{str} The name of the profile.
|
# format.
|
||||||
# \return \type{List[Tuple[str,str]]} List of serialized profile strings and matching profile names.
|
# \param profile_id The name of the profile.
|
||||||
def _upgradeProfile(self, serialized, profile_id):
|
# \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 = configparser.ConfigParser(interpolation = None)
|
||||||
parser.read_string(serialized)
|
parser.read_string(serialized)
|
||||||
|
|
||||||
@ -61,18 +68,19 @@ class CuraProfileReader(ProfileReader):
|
|||||||
return []
|
return []
|
||||||
|
|
||||||
version = int(parser["general"]["version"])
|
version = int(parser["general"]["version"])
|
||||||
|
setting_version = int(parser["metadata"].get("setting_version", "0"))
|
||||||
if InstanceContainer.Version != version:
|
if InstanceContainer.Version != version:
|
||||||
name = parser["general"]["name"]
|
name = parser["general"]["name"]
|
||||||
return self._upgradeProfileVersion(serialized, name, version)
|
return self._upgradeProfileVersion(serialized, name, version, setting_version)
|
||||||
else:
|
else:
|
||||||
return [(serialized, profile_id)]
|
return [(serialized, profile_id)]
|
||||||
|
|
||||||
## Load a profile from a serialized string.
|
## Load a profile from a serialized string.
|
||||||
#
|
#
|
||||||
# \param serialized \type{str} The profile data to read.
|
# \param serialized The profile data to read.
|
||||||
# \param profile_id \type{str} The name of the profile.
|
# \param profile_id The name of the profile.
|
||||||
# \return \type{InstanceContainer|None}
|
# \return The profile that was stored in the string.
|
||||||
def _loadProfile(self, serialized, profile_id):
|
def _loadProfile(self, serialized: str, profile_id: str) -> Optional[InstanceContainer]:
|
||||||
# Create an empty profile.
|
# Create an empty profile.
|
||||||
profile = InstanceContainer(profile_id)
|
profile = InstanceContainer(profile_id)
|
||||||
profile.setMetaDataEntry("type", "quality_changes")
|
profile.setMetaDataEntry("type", "quality_changes")
|
||||||
@ -88,21 +96,31 @@ class CuraProfileReader(ProfileReader):
|
|||||||
|
|
||||||
## Upgrade a serialized profile to the current profile format.
|
## Upgrade a serialized profile to the current profile format.
|
||||||
#
|
#
|
||||||
# \param serialized \type{str} The profile data to convert.
|
# \param serialized The profile data to convert.
|
||||||
# \param profile_id \type{str} The name of the profile.
|
# \param profile_id The name of the profile.
|
||||||
# \param source_version \type{int} The profile version of 'serialized'.
|
# \param source_version The profile version of 'serialized'.
|
||||||
# \return \type{List[Tuple[str,str]]} List of serialized profile strings and matching profile names.
|
# \return List of serialized profile strings and matching profile names.
|
||||||
def _upgradeProfileVersion(self, serialized, profile_id, source_version):
|
def _upgradeProfileVersion(self, serialized: str, profile_id: str, main_version: int, setting_version: int) -> List[Tuple[str, str]]:
|
||||||
converter_plugins = PluginRegistry.getInstance().getAllMetaData(filter={"version_upgrade": {} }, active_only=True)
|
source_version = main_version * 1000000 + setting_version
|
||||||
|
|
||||||
source_format = ("profile", source_version)
|
from UM.VersionUpgradeManager import VersionUpgradeManager
|
||||||
profile_convert_funcs = [plugin["version_upgrade"][source_format][2] for plugin in converter_plugins
|
results = VersionUpgradeManager.getInstance().updateFilesData("quality_changes", source_version, [serialized], [profile_id])
|
||||||
if source_format in plugin["version_upgrade"] and plugin["version_upgrade"][source_format][1] == InstanceContainer.Version]
|
if results is None:
|
||||||
|
|
||||||
if not profile_convert_funcs:
|
|
||||||
return []
|
return []
|
||||||
|
|
||||||
filenames, outputs = profile_convert_funcs[0](serialized, profile_id)
|
serialized = results.files_data[0]
|
||||||
if filenames is None and outputs is None:
|
|
||||||
|
parser = configparser.ConfigParser(interpolation = None)
|
||||||
|
parser.read_string(serialized)
|
||||||
|
if "general" not in parser:
|
||||||
|
Logger.log("w", "Missing required section 'general'.")
|
||||||
return []
|
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)]
|
||||||
|
@ -97,7 +97,7 @@ Rectangle
|
|||||||
horizontalCenter: parent.horizontalCenter
|
horizontalCenter: parent.horizontalCenter
|
||||||
}
|
}
|
||||||
visible: isNetworkConfigured && !isConnected
|
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")
|
font: UM.Theme.getFont("medium")
|
||||||
color: UM.Theme.getColor("monitor_text_primary")
|
color: UM.Theme.getColor("monitor_text_primary")
|
||||||
wrapMode: Text.WordWrap
|
wrapMode: Text.WordWrap
|
||||||
@ -166,4 +166,4 @@ Rectangle
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -160,4 +160,4 @@ UM.Dialog
|
|||||||
}
|
}
|
||||||
return translationText
|
return translationText
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -81,7 +81,7 @@ Item
|
|||||||
enabled: visible && !(printJob.state == "pausing" || printJob.state == "resuming");
|
enabled: visible && !(printJob.state == "pausing" || printJob.state == "resuming");
|
||||||
onClicked: {
|
onClicked: {
|
||||||
if (printJob.state == "paused") {
|
if (printJob.state == "paused") {
|
||||||
printJob.setState("print");
|
printJob.setState("resume");
|
||||||
popUp.close();
|
popUp.close();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -22,10 +22,6 @@ Item
|
|||||||
// The print job which all other data is derived from
|
// The print job which all other data is derived from
|
||||||
property var printJob: null
|
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
|
width: parent.width
|
||||||
height: childrenRect.height
|
height: childrenRect.height
|
||||||
|
|
||||||
@ -217,7 +213,7 @@ Item
|
|||||||
}
|
}
|
||||||
width: 32 * screenScaleFactor // TODO: Theme!
|
width: 32 * screenScaleFactor // TODO: Theme!
|
||||||
height: 32 * screenScaleFactor // TODO: Theme!
|
height: 32 * screenScaleFactor // TODO: Theme!
|
||||||
enabled: !cloudConnection
|
enabled: OutputDevice.supportsPrintJobActions
|
||||||
onClicked: enabled ? contextMenu.switchPopupState() : {}
|
onClicked: enabled ? contextMenu.switchPopupState() : {}
|
||||||
visible:
|
visible:
|
||||||
{
|
{
|
||||||
@ -250,7 +246,7 @@ Item
|
|||||||
MonitorInfoBlurb
|
MonitorInfoBlurb
|
||||||
{
|
{
|
||||||
id: contextMenuDisabledInfo
|
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
|
target: contextMenuButton
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -172,8 +172,7 @@ Item
|
|||||||
}
|
}
|
||||||
width: 36 * screenScaleFactor // TODO: Theme!
|
width: 36 * screenScaleFactor // TODO: Theme!
|
||||||
height: 36 * screenScaleFactor // TODO: Theme!
|
height: 36 * screenScaleFactor // TODO: Theme!
|
||||||
enabled: !cloudConnection
|
enabled: OutputDevice.supportsPrintJobActions
|
||||||
|
|
||||||
onClicked: enabled ? contextMenu.switchPopupState() : {}
|
onClicked: enabled ? contextMenu.switchPopupState() : {}
|
||||||
visible:
|
visible:
|
||||||
{
|
{
|
||||||
@ -206,7 +205,7 @@ Item
|
|||||||
MonitorInfoBlurb
|
MonitorInfoBlurb
|
||||||
{
|
{
|
||||||
id: contextMenuDisabledInfo
|
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
|
target: contextMenuButton
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -244,7 +243,6 @@ Item
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// Divider
|
// Divider
|
||||||
Rectangle
|
Rectangle
|
||||||
{
|
{
|
||||||
|
@ -42,7 +42,6 @@ Item
|
|||||||
}
|
}
|
||||||
height: 18 * screenScaleFactor // TODO: Theme!
|
height: 18 * screenScaleFactor // TODO: Theme!
|
||||||
width: childrenRect.width
|
width: childrenRect.width
|
||||||
visible: !cloudConnection
|
|
||||||
|
|
||||||
UM.RecolorImage
|
UM.RecolorImage
|
||||||
{
|
{
|
||||||
@ -65,7 +64,7 @@ Item
|
|||||||
color: UM.Theme.getColor("monitor_text_link")
|
color: UM.Theme.getColor("monitor_text_link")
|
||||||
font: UM.Theme.getFont("medium") // 14pt, regular
|
font: UM.Theme.getFont("medium") // 14pt, regular
|
||||||
linkColor: UM.Theme.getColor("monitor_text_link")
|
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
|
renderType: Text.NativeRendering
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -73,9 +72,7 @@ Item
|
|||||||
MouseArea
|
MouseArea
|
||||||
{
|
{
|
||||||
anchors.fill: manageQueueLabel
|
anchors.fill: manageQueueLabel
|
||||||
enabled: !cloudConnection
|
onClicked: OutputDevice.openPrintJobControlPanel()
|
||||||
hoverEnabled: !cloudConnection
|
|
||||||
onClicked: Cura.MachineManager.printerOutputDevices[0].openPrintJobControlPanel()
|
|
||||||
onEntered:
|
onEntered:
|
||||||
{
|
{
|
||||||
manageQueueText.font.underline = true
|
manageQueueText.font.underline = true
|
||||||
@ -98,6 +95,22 @@ Item
|
|||||||
}
|
}
|
||||||
spacing: 18 * screenScaleFactor // TODO: Theme!
|
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
|
Label
|
||||||
{
|
{
|
||||||
text: catalog.i18nc("@label", "Print jobs")
|
text: catalog.i18nc("@label", "Print jobs")
|
||||||
@ -111,6 +124,7 @@ Item
|
|||||||
height: 18 * screenScaleFactor // TODO: Theme!
|
height: 18 * screenScaleFactor // TODO: Theme!
|
||||||
verticalAlignment: Text.AlignVCenter
|
verticalAlignment: Text.AlignVCenter
|
||||||
renderType: Text.NativeRendering
|
renderType: Text.NativeRendering
|
||||||
|
visible: printJobList.count > 0
|
||||||
}
|
}
|
||||||
|
|
||||||
Label
|
Label
|
||||||
@ -126,6 +140,7 @@ Item
|
|||||||
height: 18 * screenScaleFactor // TODO: Theme!
|
height: 18 * screenScaleFactor // TODO: Theme!
|
||||||
verticalAlignment: Text.AlignVCenter
|
verticalAlignment: Text.AlignVCenter
|
||||||
renderType: Text.NativeRendering
|
renderType: Text.NativeRendering
|
||||||
|
visible: printJobList.count > 0
|
||||||
}
|
}
|
||||||
|
|
||||||
Label
|
Label
|
||||||
@ -141,6 +156,7 @@ Item
|
|||||||
height: 18 * screenScaleFactor // TODO: Theme!
|
height: 18 * screenScaleFactor // TODO: Theme!
|
||||||
verticalAlignment: Text.AlignVCenter
|
verticalAlignment: Text.AlignVCenter
|
||||||
renderType: Text.NativeRendering
|
renderType: Text.NativeRendering
|
||||||
|
visible: printJobList.count > 0
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -184,89 +200,4 @@ Item
|
|||||||
spacing: 6 // TODO: Theme!
|
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
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -96,6 +96,21 @@ class CloudApiClient:
|
|||||||
reply = self._manager.post(self._createEmptyRequest(url), b"")
|
reply = self._manager.post(self._createEmptyRequest(url), b"")
|
||||||
self._addCallback(reply, on_finished, CloudPrintResponse)
|
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.
|
## We override _createEmptyRequest in order to add the user credentials.
|
||||||
# \param url: The URL to request
|
# \param url: The URL to request
|
||||||
# \param content_type: The type of the body contents.
|
# \param content_type: The type of the body contents.
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
# Copyright (c) 2018 Ultimaker B.V.
|
# Copyright (c) 2018 Ultimaker B.V.
|
||||||
# Cura is released under the terms of the LGPLv3 or higher.
|
# Cura is released under the terms of the LGPLv3 or higher.
|
||||||
|
from cura.PrinterOutput.Models.PrintJobOutputModel import PrintJobOutputModel
|
||||||
from cura.PrinterOutput.PrinterOutputController import PrinterOutputController
|
from cura.PrinterOutput.PrinterOutputController import PrinterOutputController
|
||||||
|
|
||||||
from typing import TYPE_CHECKING
|
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.
|
# 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.
|
# To let the UI know this we mark all features below as False.
|
||||||
self.can_pause = False
|
self.can_pause = True
|
||||||
self.can_abort = False
|
self.can_abort = True
|
||||||
self.can_pre_heat_bed = False
|
self.can_pre_heat_bed = False
|
||||||
self.can_pre_heat_hotends = False
|
self.can_pre_heat_hotends = False
|
||||||
self.can_send_raw_gcode = False
|
self.can_send_raw_gcode = False
|
||||||
self.can_control_manually = False
|
self.can_control_manually = False
|
||||||
self.can_update_firmware = False
|
self.can_update_firmware = False
|
||||||
|
|
||||||
|
def setJobState(self, job: "PrintJobOutputModel", state: str):
|
||||||
|
self._output_device.setJobState(job.key, state)
|
||||||
|
@ -6,6 +6,7 @@ from time import time
|
|||||||
from typing import Dict, List, Optional, Set, cast
|
from typing import Dict, List, Optional, Set, cast
|
||||||
|
|
||||||
from PyQt5.QtCore import QObject, QUrl, pyqtProperty, pyqtSignal, pyqtSlot
|
from PyQt5.QtCore import QObject, QUrl, pyqtProperty, pyqtSignal, pyqtSlot
|
||||||
|
from PyQt5.QtGui import QDesktopServices
|
||||||
|
|
||||||
from UM import i18nCatalog
|
from UM import i18nCatalog
|
||||||
from UM.Backend.Backend import BackendState
|
from UM.Backend.Backend import BackendState
|
||||||
@ -15,6 +16,7 @@ from UM.Message import Message
|
|||||||
from UM.PluginRegistry import PluginRegistry
|
from UM.PluginRegistry import PluginRegistry
|
||||||
from UM.Qt.Duration import Duration, DurationFormat
|
from UM.Qt.Duration import Duration, DurationFormat
|
||||||
from UM.Scene.SceneNode import SceneNode
|
from UM.Scene.SceneNode import SceneNode
|
||||||
|
from UM.Version import Version
|
||||||
|
|
||||||
from cura.CuraApplication import CuraApplication
|
from cura.CuraApplication import CuraApplication
|
||||||
from cura.PrinterOutput.NetworkedPrinterOutputDevice import AuthState, NetworkedPrinterOutputDevice
|
from cura.PrinterOutput.NetworkedPrinterOutputDevice import AuthState, NetworkedPrinterOutputDevice
|
||||||
@ -33,8 +35,7 @@ from .Models.CloudPrintResponse import CloudPrintResponse
|
|||||||
from .Models.CloudPrintJobResponse import CloudPrintJobResponse
|
from .Models.CloudPrintJobResponse import CloudPrintJobResponse
|
||||||
from .Models.CloudClusterPrinterStatus import CloudClusterPrinterStatus
|
from .Models.CloudClusterPrinterStatus import CloudClusterPrinterStatus
|
||||||
from .Models.CloudClusterPrintJobStatus import CloudClusterPrintJobStatus
|
from .Models.CloudClusterPrintJobStatus import CloudClusterPrintJobStatus
|
||||||
from .Utils import findChanges, formatDateCompleted, formatTimeCompleted
|
from .Utils import formatDateCompleted, formatTimeCompleted
|
||||||
|
|
||||||
|
|
||||||
I18N_CATALOG = i18nCatalog("cura")
|
I18N_CATALOG = i18nCatalog("cura")
|
||||||
|
|
||||||
@ -44,10 +45,12 @@ I18N_CATALOG = i18nCatalog("cura")
|
|||||||
# As such, those methods have been implemented here.
|
# As such, those methods have been implemented here.
|
||||||
# Note that this device represents a single remote cluster, not a list of multiple clusters.
|
# Note that this device represents a single remote cluster, not a list of multiple clusters.
|
||||||
class CloudOutputDevice(NetworkedPrinterOutputDevice):
|
class CloudOutputDevice(NetworkedPrinterOutputDevice):
|
||||||
|
|
||||||
# The interval with which the remote clusters are checked
|
# The interval with which the remote clusters are checked
|
||||||
CHECK_CLUSTER_INTERVAL = 10.0 # seconds
|
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.
|
# Signal triggered when the print jobs in the queue were changed.
|
||||||
printJobsChanged = pyqtSignal()
|
printJobsChanged = pyqtSignal()
|
||||||
|
|
||||||
@ -75,8 +78,8 @@ class CloudOutputDevice(NetworkedPrinterOutputDevice):
|
|||||||
b"cluster_size": b"1" # cloud devices are always clusters of at least one
|
b"cluster_size": b"1" # cloud devices are always clusters of at least one
|
||||||
}
|
}
|
||||||
|
|
||||||
super().__init__(device_id = cluster.cluster_id, address = "",
|
super().__init__(device_id=cluster.cluster_id, address="",
|
||||||
connection_type = ConnectionType.CloudConnection, properties = properties, parent = parent)
|
connection_type=ConnectionType.CloudConnection, properties=properties, parent=parent)
|
||||||
self._api = api_client
|
self._api = api_client
|
||||||
self._cluster = cluster
|
self._cluster = cluster
|
||||||
|
|
||||||
@ -174,9 +177,10 @@ class CloudOutputDevice(NetworkedPrinterOutputDevice):
|
|||||||
# Show an error message if we're already sending a job.
|
# Show an error message if we're already sending a job.
|
||||||
if self._progress.visible:
|
if self._progress.visible:
|
||||||
message = Message(
|
message = Message(
|
||||||
text = I18N_CATALOG.i18nc("@info:status", "Sending new jobs (temporarily) blocked, still sending the previous print job."),
|
text=I18N_CATALOG.i18nc("@info:status",
|
||||||
title = I18N_CATALOG.i18nc("@info:title", "Cloud error"),
|
"Sending new jobs (temporarily) blocked, still sending the previous print job."),
|
||||||
lifetime = 10
|
title=I18N_CATALOG.i18nc("@info:title", "Cloud error"),
|
||||||
|
lifetime=10
|
||||||
)
|
)
|
||||||
message.show()
|
message.show()
|
||||||
return
|
return
|
||||||
@ -198,9 +202,9 @@ class CloudOutputDevice(NetworkedPrinterOutputDevice):
|
|||||||
|
|
||||||
self._tool_path = mesh
|
self._tool_path = mesh
|
||||||
request = CloudPrintJobUploadRequest(
|
request = CloudPrintJobUploadRequest(
|
||||||
job_name = file_name or mesh_format.file_extension,
|
job_name=file_name or mesh_format.file_extension,
|
||||||
file_size = len(mesh),
|
file_size=len(mesh),
|
||||||
content_type = mesh_format.mime_type,
|
content_type=mesh_format.mime_type,
|
||||||
)
|
)
|
||||||
self._api.requestUpload(request, self._onPrintJobCreated)
|
self._api.requestUpload(request, self._onPrintJobCreated)
|
||||||
|
|
||||||
@ -232,65 +236,74 @@ class CloudOutputDevice(NetworkedPrinterOutputDevice):
|
|||||||
self._updatePrintJobs(status.print_jobs)
|
self._updatePrintJobs(status.print_jobs)
|
||||||
|
|
||||||
## Updates the local list of printers with the list received from the cloud.
|
## Updates the local list of printers with the list received from the cloud.
|
||||||
# \param jobs: The printers received from the cloud.
|
# \param remote_printers: The printers received from the cloud.
|
||||||
def _updatePrinters(self, printers: List[CloudClusterPrinterStatus]) -> None:
|
def _updatePrinters(self, remote_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)
|
|
||||||
|
|
||||||
|
# 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:
|
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.setActivePrinter(None)
|
||||||
self._printers.remove(removed_printer)
|
|
||||||
|
|
||||||
for added_printer in added_printers:
|
self._printers = new_printers
|
||||||
self._printers.append(added_printer.createOutputModel(CloudOutputController(self)))
|
if self._printers and not self.activePrinter:
|
||||||
|
|
||||||
for model, printer in updated_printers:
|
|
||||||
printer.updateOutputModel(model)
|
|
||||||
|
|
||||||
# Always have an active printer
|
|
||||||
if self._printers and not self._active_printer:
|
|
||||||
self.setActivePrinter(self._printers[0])
|
self.setActivePrinter(self._printers[0])
|
||||||
|
|
||||||
if added_printers or removed_printers:
|
self.printersChanged.emit()
|
||||||
self.printersChanged.emit()
|
|
||||||
|
|
||||||
## Updates the local list of print jobs with the list received from the cloud.
|
## Updates the local list of print jobs with the list received from the cloud.
|
||||||
# \param jobs: The print jobs received from the cloud.
|
# \param remote_jobs: The print jobs received from the cloud.
|
||||||
def _updatePrintJobs(self, jobs: List[CloudClusterPrintJobStatus]) -> None:
|
def _updatePrintJobs(self, remote_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]
|
|
||||||
|
|
||||||
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:
|
for removed_job in removed_jobs:
|
||||||
if removed_job.assignedPrinter:
|
if removed_job.assignedPrinter:
|
||||||
removed_job.assignedPrinter.updateActivePrintJob(None)
|
removed_job.assignedPrinter.updateActivePrintJob(None)
|
||||||
removed_job.stateChanged.disconnect(self._onPrintJobStateChanged)
|
removed_job.stateChanged.disconnect(self._onPrintJobStateChanged)
|
||||||
self._print_jobs.remove(removed_job)
|
|
||||||
|
|
||||||
for added_job in added_jobs:
|
self._print_jobs = new_print_jobs
|
||||||
self._addPrintJob(added_job)
|
self.printJobsChanged.emit()
|
||||||
|
|
||||||
for model, job in updated_jobs:
|
## Create a new print job model based on the remote status of the job.
|
||||||
job.updateOutputModel(model)
|
# \param remote_job: The remote print job data.
|
||||||
if job.printer_uuid:
|
def _createPrintJobModel(self, remote_job: CloudClusterPrintJobStatus) -> UM3PrintJobOutputModel:
|
||||||
self._updateAssignedPrinter(model, job.printer_uuid)
|
model = remote_job.createOutputModel(CloudOutputController(self))
|
||||||
|
|
||||||
# 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.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))
|
|
||||||
model.stateChanged.connect(self._onPrintJobStateChanged)
|
model.stateChanged.connect(self._onPrintJobStateChanged)
|
||||||
if job.printer_uuid:
|
if remote_job.printer_uuid:
|
||||||
self._updateAssignedPrinter(model, job.printer_uuid)
|
self._updateAssignedPrinter(model, remote_job.printer_uuid)
|
||||||
self._print_jobs.append(model)
|
return model
|
||||||
|
|
||||||
## Handles the event of a change in a print job state
|
## Handles the event of a change in a print job state
|
||||||
def _onPrintJobStateChanged(self) -> None:
|
def _onPrintJobStateChanged(self) -> None:
|
||||||
@ -300,14 +313,15 @@ class CloudOutputDevice(NetworkedPrinterOutputDevice):
|
|||||||
if job.state == "wait_cleanup" and job.key not in self._finished_jobs and job.owner == user_name:
|
if job.state == "wait_cleanup" and job.key not in self._finished_jobs and job.owner == user_name:
|
||||||
self._finished_jobs.add(job.key)
|
self._finished_jobs.add(job.key)
|
||||||
Message(
|
Message(
|
||||||
title = I18N_CATALOG.i18nc("@info:status", "Print finished"),
|
title=I18N_CATALOG.i18nc("@info:status", "Print finished"),
|
||||||
text = (I18N_CATALOG.i18nc("@info:status", "Printer '{printer_name}' has finished printing '{job_name}'.").format(
|
text=(I18N_CATALOG.i18nc("@info:status",
|
||||||
printer_name = job.assignedPrinter.name,
|
"Printer '{printer_name}' has finished printing '{job_name}'.").format(
|
||||||
job_name = job.name
|
printer_name=job.assignedPrinter.name,
|
||||||
|
job_name=job.name
|
||||||
) if job.assignedPrinter else
|
) if job.assignedPrinter else
|
||||||
I18N_CATALOG.i18nc("@info:status", "The print job '{job_name}' was finished.").format(
|
I18N_CATALOG.i18nc("@info:status", "The print job '{job_name}' was finished.").format(
|
||||||
job_name = job.name
|
job_name=job.name
|
||||||
)),
|
)),
|
||||||
).show()
|
).show()
|
||||||
|
|
||||||
## Updates the printer assignment for the given print job model.
|
## Updates the printer assignment for the given print job model.
|
||||||
@ -315,9 +329,8 @@ class CloudOutputDevice(NetworkedPrinterOutputDevice):
|
|||||||
printer = next((p for p in self._printers if printer_uuid == p.key), None)
|
printer = next((p for p in self._printers if printer_uuid == p.key), None)
|
||||||
if not printer:
|
if not printer:
|
||||||
Logger.log("w", "Missing printer %s for job %s in %s", model.assignedPrinter, model.key,
|
Logger.log("w", "Missing printer %s for job %s in %s", model.assignedPrinter, model.key,
|
||||||
[p.key for p in self._printers])
|
[p.key for p in self._printers])
|
||||||
return
|
return
|
||||||
|
|
||||||
printer.updateActivePrintJob(model)
|
printer.updateActivePrintJob(model)
|
||||||
model.updateAssignedPrinter(printer)
|
model.updateAssignedPrinter(printer)
|
||||||
|
|
||||||
@ -327,7 +340,8 @@ class CloudOutputDevice(NetworkedPrinterOutputDevice):
|
|||||||
self._progress.show()
|
self._progress.show()
|
||||||
self._uploaded_print_job = job_response
|
self._uploaded_print_job = job_response
|
||||||
tool_path = cast(bytes, self._tool_path)
|
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.
|
## Requests the print to be sent to the printer when we finished uploading the mesh.
|
||||||
def _onPrintJobUploaded(self) -> None:
|
def _onPrintJobUploaded(self) -> None:
|
||||||
@ -341,9 +355,9 @@ class CloudOutputDevice(NetworkedPrinterOutputDevice):
|
|||||||
self._progress.hide()
|
self._progress.hide()
|
||||||
self._uploaded_print_job = None
|
self._uploaded_print_job = None
|
||||||
Message(
|
Message(
|
||||||
text = message or I18N_CATALOG.i18nc("@info:text", "Could not upload the data to the printer."),
|
text=message or I18N_CATALOG.i18nc("@info:text", "Could not upload the data to the printer."),
|
||||||
title = I18N_CATALOG.i18nc("@info:title", "Cloud error"),
|
title=I18N_CATALOG.i18nc("@info:title", "Cloud error"),
|
||||||
lifetime = 10
|
lifetime=10
|
||||||
).show()
|
).show()
|
||||||
self.writeError.emit()
|
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)
|
Logger.log("d", "The cluster will be printing this print job with the ID %s", response.cluster_job_id)
|
||||||
self._progress.hide()
|
self._progress.hide()
|
||||||
Message(
|
Message(
|
||||||
text = I18N_CATALOG.i18nc("@info:status", "Print job was successfully sent to the printer."),
|
text=I18N_CATALOG.i18nc("@info:status", "Print job was successfully sent to the printer."),
|
||||||
title = I18N_CATALOG.i18nc("@info:title", "Data Sent"),
|
title=I18N_CATALOG.i18nc("@info:title", "Data Sent"),
|
||||||
lifetime = 5
|
lifetime=5
|
||||||
).show()
|
).show()
|
||||||
self.writeFinished.emit()
|
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.
|
## 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.
|
# 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:
|
def clusterSize(self) -> int:
|
||||||
return max(1, len(self._printers))
|
return max(1, len(self._printers))
|
||||||
|
|
||||||
@ -371,7 +394,7 @@ class CloudOutputDevice(NetworkedPrinterOutputDevice):
|
|||||||
return self._printers
|
return self._printers
|
||||||
|
|
||||||
## Get the active printer in the UI (monitor page).
|
## Get the active printer in the UI (monitor page).
|
||||||
@pyqtProperty(QObject, notify = activePrinterChanged)
|
@pyqtProperty(QObject, notify=activePrinterChanged)
|
||||||
def activePrinter(self) -> Optional[PrinterOutputModel]:
|
def activePrinter(self) -> Optional[PrinterOutputModel]:
|
||||||
return self._active_printer
|
return self._active_printer
|
||||||
|
|
||||||
@ -383,38 +406,67 @@ class CloudOutputDevice(NetworkedPrinterOutputDevice):
|
|||||||
self.activePrinterChanged.emit()
|
self.activePrinterChanged.emit()
|
||||||
|
|
||||||
## Get remote print jobs.
|
## Get remote print jobs.
|
||||||
@pyqtProperty("QVariantList", notify = printJobsChanged)
|
@pyqtProperty("QVariantList", notify=printJobsChanged)
|
||||||
def printJobs(self) -> List[UM3PrintJobOutputModel]:
|
def printJobs(self) -> List[UM3PrintJobOutputModel]:
|
||||||
return self._print_jobs
|
return self._print_jobs
|
||||||
|
|
||||||
## Get remote print jobs that are still in the print queue.
|
## Get remote print jobs that are still in the print queue.
|
||||||
@pyqtProperty("QVariantList", notify = printJobsChanged)
|
@pyqtProperty("QVariantList", notify=printJobsChanged)
|
||||||
def queuedPrintJobs(self) -> List[UM3PrintJobOutputModel]:
|
def queuedPrintJobs(self) -> List[UM3PrintJobOutputModel]:
|
||||||
return [print_job for print_job in self._print_jobs
|
return [print_job for print_job in self._print_jobs
|
||||||
if print_job.state == "queued" or print_job.state == "error"]
|
if print_job.state == "queued" or print_job.state == "error"]
|
||||||
|
|
||||||
## Get remote print jobs that are assigned to a printer.
|
## Get remote print jobs that are assigned to a printer.
|
||||||
@pyqtProperty("QVariantList", notify = printJobsChanged)
|
@pyqtProperty("QVariantList", notify=printJobsChanged)
|
||||||
def activePrintJobs(self) -> List[UM3PrintJobOutputModel]:
|
def activePrintJobs(self) -> List[UM3PrintJobOutputModel]:
|
||||||
return [print_job for print_job in self._print_jobs if
|
return [print_job for print_job in self._print_jobs if
|
||||||
print_job.assignedPrinter is not None and print_job.state != "queued"]
|
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:
|
def formatDuration(self, seconds: int) -> str:
|
||||||
return Duration(seconds).getDisplayString(DurationFormat.Format.Short)
|
return Duration(seconds).getDisplayString(DurationFormat.Format.Short)
|
||||||
|
|
||||||
@pyqtSlot(int, result = str)
|
@pyqtSlot(int, result=str)
|
||||||
def getTimeCompleted(self, time_remaining: int) -> str:
|
def getTimeCompleted(self, time_remaining: int) -> str:
|
||||||
return formatTimeCompleted(time_remaining)
|
return formatTimeCompleted(time_remaining)
|
||||||
|
|
||||||
@pyqtSlot(int, result = str)
|
@pyqtSlot(int, result=str)
|
||||||
def getDateCompleted(self, time_remaining: int) -> str:
|
def getDateCompleted(self, time_remaining: int) -> str:
|
||||||
return formatDateCompleted(time_remaining)
|
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: 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.
|
# TODO: We fake the methods here to not break the monitor page.
|
||||||
|
|
||||||
@pyqtProperty(QUrl, notify = _clusterPrintersChanged)
|
@pyqtProperty(QUrl, notify=_clusterPrintersChanged)
|
||||||
def activeCameraUrl(self) -> "QUrl":
|
def activeCameraUrl(self) -> "QUrl":
|
||||||
return QUrl()
|
return QUrl()
|
||||||
|
|
||||||
@ -422,30 +474,6 @@ class CloudOutputDevice(NetworkedPrinterOutputDevice):
|
|||||||
def setActiveCameraUrl(self, camera_url: "QUrl") -> None:
|
def setActiveCameraUrl(self, camera_url: "QUrl") -> None:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
@pyqtProperty(bool, notify = printJobsChanged)
|
@pyqtProperty("QVariantList", notify=_clusterPrintersChanged)
|
||||||
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)
|
|
||||||
def connectedPrintersTypeCount(self) -> List[Dict[str, str]]:
|
def connectedPrintersTypeCount(self) -> List[Dict[str, str]]:
|
||||||
return []
|
return []
|
||||||
|
@ -91,7 +91,6 @@ class CloudClusterPrintJobStatus(BaseCloudModel):
|
|||||||
def createOutputModel(self, controller: CloudOutputController) -> UM3PrintJobOutputModel:
|
def createOutputModel(self, controller: CloudOutputController) -> UM3PrintJobOutputModel:
|
||||||
model = UM3PrintJobOutputModel(controller, self.uuid, self.name)
|
model = UM3PrintJobOutputModel(controller, self.uuid, self.name)
|
||||||
self.updateOutputModel(model)
|
self.updateOutputModel(model)
|
||||||
|
|
||||||
return model
|
return model
|
||||||
|
|
||||||
## Creates a new configuration model
|
## Creates a new configuration model
|
||||||
|
@ -140,6 +140,11 @@ class ClusterUM3OutputDevice(NetworkedPrinterOutputDevice):
|
|||||||
if self._printer_selection_dialog is not None:
|
if self._printer_selection_dialog is not None:
|
||||||
self._printer_selection_dialog.show()
|
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)
|
@pyqtProperty(int, constant=True)
|
||||||
def clusterSize(self) -> int:
|
def clusterSize(self) -> int:
|
||||||
return self._cluster_size
|
return self._cluster_size
|
||||||
@ -385,6 +390,13 @@ class ClusterUM3OutputDevice(NetworkedPrinterOutputDevice):
|
|||||||
data = "{\"force\": true}"
|
data = "{\"force\": true}"
|
||||||
self.put("print_jobs/{uuid}".format(uuid=print_job_uuid), data, on_finished=None)
|
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:
|
def _printJobStateChanged(self) -> None:
|
||||||
username = self._getUserName()
|
username = self._getUserName()
|
||||||
|
|
||||||
|
@ -7,6 +7,7 @@ MYPY = False
|
|||||||
if MYPY:
|
if MYPY:
|
||||||
from cura.PrinterOutput.Models.PrintJobOutputModel import PrintJobOutputModel
|
from cura.PrinterOutput.Models.PrintJobOutputModel import PrintJobOutputModel
|
||||||
|
|
||||||
|
|
||||||
class ClusterUM3PrinterOutputController(PrinterOutputController):
|
class ClusterUM3PrinterOutputController(PrinterOutputController):
|
||||||
def __init__(self, output_device):
|
def __init__(self, output_device):
|
||||||
super().__init__(output_device)
|
super().__init__(output_device)
|
||||||
@ -15,6 +16,5 @@ class ClusterUM3PrinterOutputController(PrinterOutputController):
|
|||||||
self.can_control_manually = False
|
self.can_control_manually = False
|
||||||
self.can_send_raw_gcode = False
|
self.can_send_raw_gcode = False
|
||||||
|
|
||||||
def setJobState(self, job: "PrintJobOutputModel", state: str):
|
def setJobState(self, job: "PrintJobOutputModel", state: str) -> None:
|
||||||
data = "{\"action\": \"%s\"}" % state
|
self._output_device.setJobState(job.key, state)
|
||||||
self._output_device.put("print_jobs/%s/action" % job.key, data, on_finished=None)
|
|
||||||
|
@ -27,7 +27,7 @@ from UM.Version import Version
|
|||||||
|
|
||||||
from . import ClusterUM3OutputDevice, LegacyUM3OutputDevice
|
from . import ClusterUM3OutputDevice, LegacyUM3OutputDevice
|
||||||
from .Cloud.CloudOutputDeviceManager import CloudOutputDeviceManager
|
from .Cloud.CloudOutputDeviceManager import CloudOutputDeviceManager
|
||||||
from .Cloud.CloudOutputDevice import CloudOutputDevice # typing
|
from .Cloud.CloudOutputDevice import CloudOutputDevice # typing
|
||||||
|
|
||||||
if TYPE_CHECKING:
|
if TYPE_CHECKING:
|
||||||
from PyQt5.QtNetwork import QNetworkReply
|
from PyQt5.QtNetwork import QNetworkReply
|
||||||
|
@ -72,9 +72,9 @@ class TestCloudOutputDevice(TestCase):
|
|||||||
|
|
||||||
controller_fields = {
|
controller_fields = {
|
||||||
"_output_device": self.device,
|
"_output_device": self.device,
|
||||||
"can_abort": False,
|
"can_abort": True,
|
||||||
"can_control_manually": False,
|
"can_control_manually": False,
|
||||||
"can_pause": False,
|
"can_pause": True,
|
||||||
"can_pre_heat_bed": False,
|
"can_pre_heat_bed": False,
|
||||||
"can_pre_heat_hotends": False,
|
"can_pre_heat_hotends": False,
|
||||||
"can_send_raw_gcode": False,
|
"can_send_raw_gcode": False,
|
||||||
|
@ -14,7 +14,7 @@ def getMetaData() -> Dict[str, Any]:
|
|||||||
return {
|
return {
|
||||||
"version_upgrade": {
|
"version_upgrade": {
|
||||||
# From To Upgrade function
|
# From To Upgrade function
|
||||||
("preferences", 6000006): ("preferences", 6000007, upgrade.upgradePreferences),
|
("preferences", 6000006): ("preferences", 6000007, upgrade.upgradePreferences),
|
||||||
("machine_stack", 4000006): ("machine_stack", 4000007, upgrade.upgradeStack),
|
("machine_stack", 4000006): ("machine_stack", 4000007, upgrade.upgradeStack),
|
||||||
("extruder_train", 4000006): ("extruder_train", 4000007, upgrade.upgradeStack),
|
("extruder_train", 4000006): ("extruder_train", 4000007, upgrade.upgradeStack),
|
||||||
("definition_changes", 4000006): ("definition_changes", 4000007, upgrade.upgradeInstanceContainer),
|
("definition_changes", 4000006): ("definition_changes", 4000007, upgrade.upgradeInstanceContainer),
|
||||||
|
@ -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()]
|
59
plugins/VersionUpgrade/VersionUpgrade41to42/__init__.py
Normal file
59
plugins/VersionUpgrade/VersionUpgrade41to42/__init__.py
Normal 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 }
|
8
plugins/VersionUpgrade/VersionUpgrade41to42/plugin.json
Normal file
8
plugins/VersionUpgrade/VersionUpgrade41to42/plugin.json
Normal 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"
|
||||||
|
}
|
@ -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()))
|
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
|
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
|
# Prevent recursion
|
||||||
if not apply_to_all:
|
if not apply_to_all:
|
||||||
super().setMetaDataEntry(key, value)
|
super().setMetaDataEntry(key, value)
|
||||||
|
for k, v in new_setting_values_dict.items():
|
||||||
|
self.setProperty(k, "value", v)
|
||||||
return
|
return
|
||||||
|
|
||||||
# Get the MaterialGroup
|
# Get the MaterialGroup
|
||||||
@ -74,17 +84,23 @@ class XmlMaterialProfile(InstanceContainer):
|
|||||||
material_group = material_manager.getMaterialGroup(root_material_id)
|
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.
|
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)
|
super().setMetaDataEntry(key, value)
|
||||||
|
for k, v in new_setting_values_dict.items():
|
||||||
|
self.setProperty(k, "value", v)
|
||||||
return
|
return
|
||||||
# Update the root material container
|
# Update the root material container
|
||||||
root_material_container = material_group.root_material_node.getContainer()
|
root_material_container = material_group.root_material_node.getContainer()
|
||||||
if root_material_container is not None:
|
if root_material_container is not None:
|
||||||
root_material_container.setMetaDataEntry(key, value, apply_to_all = False)
|
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
|
# Update all containers derived from it
|
||||||
for node in material_group.derived_material_node_list:
|
for node in material_group.derived_material_node_list:
|
||||||
container = node.getContainer()
|
container = node.getContainer()
|
||||||
if container is not None:
|
if container is not None:
|
||||||
container.setMetaDataEntry(key, value, apply_to_all = False)
|
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.
|
## Overridden from InstanceContainer, similar to setMetaDataEntry.
|
||||||
# without this function the setName would only set the name of the specific nozzle / material / machine combination container
|
# 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",
|
"surface energy": "material_surface_energy",
|
||||||
"shrinkage percentage": "material_shrinkage_percentage",
|
"shrinkage percentage": "material_shrinkage_percentage",
|
||||||
"build volume temperature": "build_volume_temperature",
|
"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 = [
|
__unmapped_settings = [
|
||||||
"hardware compatible",
|
"hardware compatible",
|
||||||
|
@ -5,7 +5,7 @@
|
|||||||
"inherits": "fdmprinter",
|
"inherits": "fdmprinter",
|
||||||
"metadata": {
|
"metadata": {
|
||||||
"visible": true,
|
"visible": true,
|
||||||
"author": "na",
|
"author": "unknown",
|
||||||
"manufacturer": "BIBO",
|
"manufacturer": "BIBO",
|
||||||
"category": "Other",
|
"category": "Other",
|
||||||
"file_formats": "text/x-gcode",
|
"file_formats": "text/x-gcode",
|
||||||
|
263
resources/definitions/creality_base.def.json
Normal file
263
resources/definitions/creality_base.def.json
Normal 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"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
@ -1,95 +1,32 @@
|
|||||||
{
|
{
|
||||||
"name": "Creality CR-10",
|
"name": "Creality CR-10",
|
||||||
"version": 2,
|
"version": 2,
|
||||||
"inherits": "fdmprinter",
|
"inherits": "creality_base",
|
||||||
"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"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"overrides": {
|
"overrides": {
|
||||||
"machine_width": {
|
"machine_name": { "default_value": "Creality CR-10" },
|
||||||
"default_value": 300
|
"machine_width": { "default_value": 300 },
|
||||||
},
|
"machine_depth": { "default_value": 300 },
|
||||||
"machine_height": {
|
"machine_height": { "default_value": 400 },
|
||||||
"default_value": 400
|
"machine_head_polygon": { "default_value": [
|
||||||
},
|
[-26, 34],
|
||||||
"machine_depth": {
|
[-26, -32],
|
||||||
"default_value": 300
|
[22, -32],
|
||||||
},
|
[22, 34]
|
||||||
"machine_head_polygon": {
|
|
||||||
"default_value": [
|
|
||||||
[-30, 34],
|
|
||||||
[-30, -32],
|
|
||||||
[30, -32],
|
|
||||||
[30, 34]
|
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"layer_height_0": {
|
"machine_head_with_fans_polygon": { "default_value": [
|
||||||
"default_value": 0.2
|
[-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"
|
"metadata": {
|
||||||
},
|
"quality_definition": "creality_base",
|
||||||
"infill_pattern": {
|
"visible": true
|
||||||
"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
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
32
resources/definitions/creality_cr10mini.def.json
Normal file
32
resources/definitions/creality_cr10mini.def.json
Normal 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
|
||||||
|
}
|
||||||
|
}
|
@ -1,5 +1,11 @@
|
|||||||
{
|
{
|
||||||
"name": "Creality CR-10S",
|
"name": "Creality CR-10S",
|
||||||
"version": 2,
|
"version": 2,
|
||||||
"inherits": "creality_cr10"
|
"inherits": "creality_cr10",
|
||||||
|
"overrides": {
|
||||||
|
"machine_name": { "default_value": "Creality CR-10S" }
|
||||||
|
},
|
||||||
|
"metadata": {
|
||||||
|
"quality_definition": "creality_base"
|
||||||
|
}
|
||||||
}
|
}
|
@ -1,26 +1,32 @@
|
|||||||
{
|
{
|
||||||
"name": "Creality CR-10 S4",
|
"name": "Creality CR-10S4",
|
||||||
"version": 2,
|
"version": 2,
|
||||||
"inherits": "creality_cr10",
|
"inherits": "creality_base",
|
||||||
"metadata": {
|
|
||||||
"visible": true,
|
|
||||||
"author": "Michael Wildermuth",
|
|
||||||
"manufacturer": "Creality3D",
|
|
||||||
"file_formats": "text/x-gcode",
|
|
||||||
"machine_extruder_trains":
|
|
||||||
{
|
|
||||||
"0": "creality_cr10s4_extruder_0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"overrides": {
|
"overrides": {
|
||||||
"machine_width": {
|
"machine_name": { "default_value": "Creality CR-10S4" },
|
||||||
"default_value": 400
|
"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": {
|
"machine_head_with_fans_polygon": { "default_value": [
|
||||||
"default_value": 400
|
[-26, 34],
|
||||||
|
[-26, -32],
|
||||||
|
[32, -32],
|
||||||
|
[32, 34]
|
||||||
|
]
|
||||||
},
|
},
|
||||||
"machine_depth": {
|
|
||||||
"default_value": 400
|
"gantry_height": { "value": 25 }
|
||||||
}
|
|
||||||
|
},
|
||||||
|
"metadata": {
|
||||||
|
"quality_definition": "creality_base",
|
||||||
|
"visible": true
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -1,26 +1,32 @@
|
|||||||
{
|
{
|
||||||
"name": "Creality CR-10 S5",
|
"name": "Creality CR-10S5",
|
||||||
"version": 2,
|
"version": 2,
|
||||||
"inherits": "creality_cr10",
|
"inherits": "creality_base",
|
||||||
"metadata": {
|
|
||||||
"visible": true,
|
|
||||||
"author": "Michael Wildermuth",
|
|
||||||
"manufacturer": "Creality3D",
|
|
||||||
"file_formats": "text/x-gcode",
|
|
||||||
"machine_extruder_trains":
|
|
||||||
{
|
|
||||||
"0": "creality_cr10s5_extruder_0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"overrides": {
|
"overrides": {
|
||||||
"machine_width": {
|
"machine_name": { "default_value": "Creality CR-10S5" },
|
||||||
"default_value": 500
|
"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": {
|
"machine_head_with_fans_polygon": { "default_value": [
|
||||||
"default_value": 500
|
[-26, 34],
|
||||||
|
[-26, -32],
|
||||||
|
[32, -32],
|
||||||
|
[32, 34]
|
||||||
|
]
|
||||||
},
|
},
|
||||||
"machine_depth": {
|
|
||||||
"default_value": 500
|
"gantry_height": { "value": 25 }
|
||||||
}
|
|
||||||
|
},
|
||||||
|
"metadata": {
|
||||||
|
"quality_definition": "creality_base",
|
||||||
|
"visible": true
|
||||||
}
|
}
|
||||||
}
|
}
|
31
resources/definitions/creality_cr10spro.def.json
Normal file
31
resources/definitions/creality_cr10spro.def.json
Normal 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]
|
||||||
|
}
|
||||||
|
}
|
32
resources/definitions/creality_cr20.def.json
Normal file
32
resources/definitions/creality_cr20.def.json
Normal 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
|
||||||
|
}
|
||||||
|
}
|
13
resources/definitions/creality_cr20pro.def.json
Normal file
13
resources/definitions/creality_cr20pro.def.json
Normal 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"
|
||||||
|
}
|
||||||
|
}
|
33
resources/definitions/creality_ender2.def.json
Normal file
33
resources/definitions/creality_ender2.def.json
Normal 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
|
||||||
|
}
|
||||||
|
}
|
115
resources/definitions/creality_ender3.def.json
Executable file → Normal file
115
resources/definitions/creality_ender3.def.json
Executable file → Normal file
@ -1,99 +1,32 @@
|
|||||||
{
|
{
|
||||||
"name": "Creality Ender-3",
|
"name": "Creality Ender-3",
|
||||||
"version": 2,
|
"version": 2,
|
||||||
"inherits": "fdmprinter",
|
"inherits": "creality_base",
|
||||||
"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"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"overrides": {
|
"overrides": {
|
||||||
"machine_name": {
|
"machine_name": { "default_value": "Creality Ender-3" },
|
||||||
"default_value": "Creality Ender-3"
|
"machine_width": { "default_value": 220 },
|
||||||
},
|
"machine_depth": { "default_value": 220 },
|
||||||
"machine_width": {
|
"machine_height": { "default_value": 250 },
|
||||||
"default_value": 235
|
"machine_head_polygon": { "default_value": [
|
||||||
},
|
[-26, 34],
|
||||||
"machine_height": {
|
[-26, -32],
|
||||||
"default_value": 250
|
[22, -32],
|
||||||
},
|
[22, 34]
|
||||||
"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]
|
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"material_diameter": {
|
"machine_head_with_fans_polygon": { "default_value": [
|
||||||
"default_value": 1.75
|
[-26, 34],
|
||||||
|
[-26, -32],
|
||||||
|
[32, -32],
|
||||||
|
[32, 34]
|
||||||
|
]
|
||||||
},
|
},
|
||||||
"acceleration_enabled": {
|
|
||||||
"default_value": true
|
"gantry_height": { "value": 25 }
|
||||||
},
|
|
||||||
"acceleration_print": {
|
},
|
||||||
"default_value": 500
|
"metadata": {
|
||||||
},
|
"quality_definition": "creality_base",
|
||||||
"acceleration_travel": {
|
"visible": true
|
||||||
"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"
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
34
resources/definitions/creality_ender4.def.json
Normal file
34
resources/definitions/creality_ender4.def.json
Normal 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
|
||||||
|
}
|
||||||
|
}
|
35
resources/definitions/creality_ender5.def.json
Normal file
35
resources/definitions/creality_ender5.def.json
Normal 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
|
||||||
|
}
|
||||||
|
}
|
@ -5,7 +5,7 @@
|
|||||||
"metadata": {
|
"metadata": {
|
||||||
"visible": true,
|
"visible": true,
|
||||||
"author": "Ultimaker",
|
"author": "Ultimaker",
|
||||||
"manufacturer": "Danny Lu",
|
"manufacturer": "Custom",
|
||||||
"file_formats": "text/x-gcode",
|
"file_formats": "text/x-gcode",
|
||||||
"platform_offset": [ 0, 0, 0],
|
"platform_offset": [ 0, 0, 0],
|
||||||
"machine_extruder_trains":
|
"machine_extruder_trains":
|
||||||
|
@ -5,7 +5,7 @@
|
|||||||
"metadata": {
|
"metadata": {
|
||||||
"visible": true,
|
"visible": true,
|
||||||
"author": "nliaudat",
|
"author": "nliaudat",
|
||||||
"manufacturer": "EasyArts (discontinued)",
|
"manufacturer": "EasyArts",
|
||||||
"file_formats": "text/x-gcode",
|
"file_formats": "text/x-gcode",
|
||||||
"machine_extruder_trains":
|
"machine_extruder_trains":
|
||||||
{
|
{
|
||||||
|
121
resources/definitions/erzay3d.def.json
Normal file
121
resources/definitions/erzay3d.def.json
Normal 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 }
|
||||||
|
}
|
||||||
|
}
|
@ -6,7 +6,7 @@
|
|||||||
"type": "extruder",
|
"type": "extruder",
|
||||||
"author": "Ultimaker",
|
"author": "Ultimaker",
|
||||||
"manufacturer": "Unknown",
|
"manufacturer": "Unknown",
|
||||||
"setting_version": 7,
|
"setting_version": 8,
|
||||||
"visible": false,
|
"visible": false,
|
||||||
"position": "0"
|
"position": "0"
|
||||||
},
|
},
|
||||||
|
@ -7,7 +7,7 @@
|
|||||||
"author": "Ultimaker",
|
"author": "Ultimaker",
|
||||||
"category": "Other",
|
"category": "Other",
|
||||||
"manufacturer": "Unknown",
|
"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",
|
"file_formats": "text/x-gcode;application/x-stl-ascii;application/x-stl-binary;application/x-wavefront-obj;application/x3g",
|
||||||
"visible": false,
|
"visible": false,
|
||||||
"has_materials": true,
|
"has_materials": true,
|
||||||
@ -963,20 +963,20 @@
|
|||||||
"maximum_value_warning": "2 * machine_nozzle_size",
|
"maximum_value_warning": "2 * machine_nozzle_size",
|
||||||
"settable_per_mesh": false,
|
"settable_per_mesh": false,
|
||||||
"settable_per_extruder": true
|
"settable_per_extruder": true
|
||||||
},
|
|
||||||
"initial_layer_line_width_factor":
|
|
||||||
{
|
|
||||||
"label": "Initial Layer Line Width",
|
|
||||||
"description": "Multiplier of the line width on the first layer. Increasing this could improve bed adhesion.",
|
|
||||||
"type": "float",
|
|
||||||
"unit": "%",
|
|
||||||
"default_value": 100.0,
|
|
||||||
"minimum_value": "0.001",
|
|
||||||
"maximum_value_warning": "150",
|
|
||||||
"settable_per_mesh": false,
|
|
||||||
"settable_per_extruder": true
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"initial_layer_line_width_factor":
|
||||||
|
{
|
||||||
|
"label": "Initial Layer Line Width",
|
||||||
|
"description": "Multiplier of the line width on the first layer. Increasing this could improve bed adhesion.",
|
||||||
|
"type": "float",
|
||||||
|
"unit": "%",
|
||||||
|
"default_value": 100.0,
|
||||||
|
"minimum_value": "0.001",
|
||||||
|
"maximum_value_warning": "150",
|
||||||
|
"settable_per_mesh": false,
|
||||||
|
"settable_per_extruder": true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@ -1426,7 +1426,7 @@
|
|||||||
"z_seam_corner":
|
"z_seam_corner":
|
||||||
{
|
{
|
||||||
"label": "Seam Corner Preference",
|
"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",
|
"type": "enum",
|
||||||
"options":
|
"options":
|
||||||
{
|
{
|
||||||
@ -1454,8 +1454,8 @@
|
|||||||
},
|
},
|
||||||
"skin_no_small_gaps_heuristic":
|
"skin_no_small_gaps_heuristic":
|
||||||
{
|
{
|
||||||
"label": "Ignore Small Z Gaps",
|
"label": "No Skin in 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.",
|
"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",
|
"type": "bool",
|
||||||
"default_value": false,
|
"default_value": false,
|
||||||
"enabled": "top_layers > 0 or bottom_layers > 0",
|
"enabled": "top_layers > 0 or bottom_layers > 0",
|
||||||
@ -1591,6 +1591,36 @@
|
|||||||
"enabled": "resolveOrValue('jerk_enabled') and ironing_enabled",
|
"enabled": "resolveOrValue('jerk_enabled') and ironing_enabled",
|
||||||
"limit_to_extruder": "top_bottom_extruder_nr",
|
"limit_to_extruder": "top_bottom_extruder_nr",
|
||||||
"settable_per_mesh": true
|
"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":
|
"infill_wipe_dist":
|
||||||
{
|
{
|
||||||
"label": "Infill Wipe Distance",
|
"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.",
|
"description": "The temperature of the environment to print in. If this is 0, the build volume temperature will not be adjusted.",
|
||||||
"unit": "°C",
|
"unit": "°C",
|
||||||
"type": "float",
|
"type": "float",
|
||||||
"default_value": 35,
|
"default_value": 0,
|
||||||
"resolve": "min(extruderValues('build_volume_temperature'))",
|
"resolve": "min(extruderValues('build_volume_temperature'))",
|
||||||
"minimum_value": "-273.15",
|
"minimum_value": "-273.15",
|
||||||
"minimum_value_warning": "0",
|
"minimum_value_warning": "0",
|
||||||
@ -2234,6 +2234,107 @@
|
|||||||
"settable_per_mesh": false,
|
"settable_per_mesh": false,
|
||||||
"settable_per_extruder": true
|
"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":
|
"material_flow":
|
||||||
{
|
{
|
||||||
"label": "Flow",
|
"label": "Flow",
|
||||||
@ -2245,7 +2346,195 @@
|
|||||||
"minimum_value_warning": "50",
|
"minimum_value_warning": "50",
|
||||||
"maximum_value_warning": "150",
|
"maximum_value_warning": "150",
|
||||||
"enabled": "machine_gcode_flavor != \"UltiGCode\"",
|
"enabled": "machine_gcode_flavor != \"UltiGCode\"",
|
||||||
"settable_per_mesh": true
|
"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":
|
"material_flow_layer_0":
|
||||||
{
|
{
|
||||||
@ -2253,7 +2542,6 @@
|
|||||||
"description": "Flow compensation for the first layer: the amount of material extruded on the initial layer is multiplied by this value.",
|
"description": "Flow compensation for the first layer: the amount of material extruded on the initial layer is multiplied by this value.",
|
||||||
"unit": "%",
|
"unit": "%",
|
||||||
"default_value": 100,
|
"default_value": 100,
|
||||||
"value": "material_flow",
|
|
||||||
"type": "float",
|
"type": "float",
|
||||||
"minimum_value": "0.0001",
|
"minimum_value": "0.0001",
|
||||||
"minimum_value_warning": "50",
|
"minimum_value_warning": "50",
|
||||||
@ -2398,7 +2686,7 @@
|
|||||||
"limit_support_retractions":
|
"limit_support_retractions":
|
||||||
{
|
{
|
||||||
"label": "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",
|
"type": "bool",
|
||||||
"default_value": true,
|
"default_value": true,
|
||||||
"enabled": "retraction_enable and (support_enable or support_tree_enable)",
|
"enabled": "retraction_enable and (support_enable or support_tree_enable)",
|
||||||
@ -2797,19 +3085,6 @@
|
|||||||
"settable_per_mesh": false,
|
"settable_per_mesh": false,
|
||||||
"settable_per_extruder": true
|
"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":
|
"speed_slowdown_layers":
|
||||||
{
|
{
|
||||||
"label": "Number of Slower Layers",
|
"label": "Number of Slower Layers",
|
||||||
@ -4580,10 +4855,10 @@
|
|||||||
"enabled": "support_enable and support_use_towers",
|
"enabled": "support_enable and support_use_towers",
|
||||||
"settable_per_mesh": true
|
"settable_per_mesh": true
|
||||||
},
|
},
|
||||||
"support_minimal_diameter":
|
"support_tower_maximum_supported_diameter":
|
||||||
{
|
{
|
||||||
"label": "Minimum Diameter",
|
"label": "Maximum Tower-Supported Diameter",
|
||||||
"description": "Minimum diameter in the X/Y directions of a small area which is to be supported by a specialized support tower.",
|
"description": "Maximum diameter in the X/Y directions of a small area which is to be supported by a specialized support tower.",
|
||||||
"unit": "mm",
|
"unit": "mm",
|
||||||
"type": "float",
|
"type": "float",
|
||||||
"default_value": 3.0,
|
"default_value": 3.0,
|
||||||
@ -4635,11 +4910,11 @@
|
|||||||
"label": "Enable Prime Blob",
|
"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.",
|
"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",
|
"type": "bool",
|
||||||
"resolve": "any(extruderValues('prime_blob_enable'))",
|
|
||||||
"default_value": false,
|
"default_value": false,
|
||||||
"settable_per_mesh": false,
|
"settable_per_mesh": false,
|
||||||
"settable_per_extruder": true,
|
"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":
|
"extruder_prime_pos_x":
|
||||||
{
|
{
|
||||||
@ -5281,17 +5556,6 @@
|
|||||||
"settable_per_mesh": false,
|
"settable_per_mesh": false,
|
||||||
"settable_per_extruder": 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":
|
"prime_tower_size":
|
||||||
{
|
{
|
||||||
"label": "Prime Tower Size",
|
"label": "Prime Tower Size",
|
||||||
@ -5316,7 +5580,7 @@
|
|||||||
"type": "float",
|
"type": "float",
|
||||||
"default_value": 6,
|
"default_value": 6,
|
||||||
"minimum_value": "0",
|
"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')",
|
"enabled": "resolveOrValue('prime_tower_enable')",
|
||||||
"settable_per_mesh": false,
|
"settable_per_mesh": false,
|
||||||
"settable_per_extruder": true
|
"settable_per_extruder": true
|
||||||
@ -5349,21 +5613,6 @@
|
|||||||
"settable_per_mesh": false,
|
"settable_per_mesh": false,
|
||||||
"settable_per_extruder": 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":
|
"prime_tower_wipe_enabled":
|
||||||
{
|
{
|
||||||
"label": "Wipe Inactive Nozzle on Prime Tower",
|
"label": "Wipe Inactive Nozzle on Prime Tower",
|
||||||
@ -5667,7 +5916,7 @@
|
|||||||
"smooth_spiralized_contours":
|
"smooth_spiralized_contours":
|
||||||
{
|
{
|
||||||
"label": "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",
|
"type": "bool",
|
||||||
"default_value": true,
|
"default_value": true,
|
||||||
"enabled": "magic_spiralize",
|
"enabled": "magic_spiralize",
|
||||||
@ -6410,7 +6659,7 @@
|
|||||||
"type": "float",
|
"type": "float",
|
||||||
"default_value": 5,
|
"default_value": 5,
|
||||||
"minimum_value": "0.1",
|
"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",
|
"maximum_value_warning": "50",
|
||||||
"enabled": "wireframe_enabled",
|
"enabled": "wireframe_enabled",
|
||||||
"settable_per_mesh": false,
|
"settable_per_mesh": false,
|
||||||
@ -6442,7 +6691,7 @@
|
|||||||
"type": "float",
|
"type": "float",
|
||||||
"default_value": 5,
|
"default_value": 5,
|
||||||
"minimum_value": "0.1",
|
"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",
|
"maximum_value_warning": "50",
|
||||||
"enabled": "wireframe_enabled",
|
"enabled": "wireframe_enabled",
|
||||||
"value": "wireframe_printspeed",
|
"value": "wireframe_printspeed",
|
||||||
@ -6458,7 +6707,7 @@
|
|||||||
"type": "float",
|
"type": "float",
|
||||||
"default_value": 5,
|
"default_value": 5,
|
||||||
"minimum_value": "0.1",
|
"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",
|
"maximum_value_warning": "50",
|
||||||
"enabled": "wireframe_enabled",
|
"enabled": "wireframe_enabled",
|
||||||
"value": "wireframe_printspeed",
|
"value": "wireframe_printspeed",
|
||||||
|
78
resources/definitions/flsun_qq_s.def.json
Normal file
78
resources/definitions/flsun_qq_s.def.json
Normal 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"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
132
resources/definitions/geeetech_a30.def.json
Normal file
132
resources/definitions/geeetech_a30.def.json
Normal 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"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -50,13 +50,8 @@
|
|||||||
"machine_gcode_flavor": {"default_value": "RepRap (RepRap)" },
|
"machine_gcode_flavor": {"default_value": "RepRap (RepRap)" },
|
||||||
"material_print_temp_wait": {"default_value": true},
|
"material_print_temp_wait": {"default_value": true},
|
||||||
"material_bed_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_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": "" },
|
"machine_end_gcode": {"default_value": "" },
|
||||||
|
|
||||||
"retraction_extra_prime_amount": {"minimum_value_warning": "-2.0" },
|
"retraction_extra_prime_amount": {"minimum_value_warning": "-2.0" },
|
||||||
@ -94,7 +89,7 @@
|
|||||||
"maximum_value_warning": "material_print_temperature + 15"},
|
"maximum_value_warning": "material_print_temperature + 15"},
|
||||||
"material_final_print_temperature": {"value": "material_print_temperature"},
|
"material_final_print_temperature": {"value": "material_print_temperature"},
|
||||||
"material_bed_temperature_layer_0": {"value": "material_bed_temperature + 1"},
|
"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_amount": {"value": "1"},
|
||||||
"retraction_speed": {"value": "20"},
|
"retraction_speed": {"value": "20"},
|
||||||
"retraction_prime_speed": {"value": "8"},
|
"retraction_prime_speed": {"value": "8"},
|
||||||
@ -112,7 +107,6 @@
|
|||||||
"speed_travel": {"value": "100"},
|
"speed_travel": {"value": "100"},
|
||||||
"speed_travel_layer_0": {"value": "speed_travel"},
|
"speed_travel_layer_0": {"value": "speed_travel"},
|
||||||
"speed_support_interface": {"value": "speed_topbottom"},
|
"speed_support_interface": {"value": "speed_topbottom"},
|
||||||
"max_feedrate_z_override": {"value": 10},
|
|
||||||
"speed_slowdown_layers": {"value": 1},
|
"speed_slowdown_layers": {"value": 1},
|
||||||
"acceleration_print": {"value": 200},
|
"acceleration_print": {"value": 200},
|
||||||
"acceleration_travel": {"value": 200},
|
"acceleration_travel": {"value": 200},
|
||||||
|
@ -5,7 +5,7 @@
|
|||||||
"metadata": {
|
"metadata": {
|
||||||
"visible": true,
|
"visible": true,
|
||||||
"author": "Claudio Sampaio (Patola)",
|
"author": "Claudio Sampaio (Patola)",
|
||||||
"manufacturer": "Other",
|
"manufacturer": "Johann",
|
||||||
"file_formats": "text/x-gcode",
|
"file_formats": "text/x-gcode",
|
||||||
"platform": "kossel_platform.stl",
|
"platform": "kossel_platform.stl",
|
||||||
"platform_offset": [0, -0.25, 0],
|
"platform_offset": [0, -0.25, 0],
|
||||||
|
@ -5,7 +5,7 @@
|
|||||||
"metadata": {
|
"metadata": {
|
||||||
"visible": true,
|
"visible": true,
|
||||||
"author": "Chris Petersen",
|
"author": "Chris Petersen",
|
||||||
"manufacturer": "OpenBeam",
|
"manufacturer": "Johann",
|
||||||
"file_formats": "text/x-gcode",
|
"file_formats": "text/x-gcode",
|
||||||
"platform": "kossel_pro_build_platform.stl",
|
"platform": "kossel_pro_build_platform.stl",
|
||||||
"platform_offset": [0, -0.25, 0],
|
"platform_offset": [0, -0.25, 0],
|
||||||
|
@ -4,8 +4,8 @@
|
|||||||
"inherits": "fdmprinter",
|
"inherits": "fdmprinter",
|
||||||
"metadata": {
|
"metadata": {
|
||||||
"visible": true,
|
"visible": true,
|
||||||
"author": "NA",
|
"author": "unknown",
|
||||||
"manufacturer": "NA",
|
"manufacturer": "MAKEiT 3D",
|
||||||
"file_formats": "text/x-gcode",
|
"file_formats": "text/x-gcode",
|
||||||
"has_materials": false,
|
"has_materials": false,
|
||||||
"machine_extruder_trains":
|
"machine_extruder_trains":
|
||||||
|
@ -4,8 +4,8 @@
|
|||||||
"inherits": "fdmprinter",
|
"inherits": "fdmprinter",
|
||||||
"metadata": {
|
"metadata": {
|
||||||
"visible": true,
|
"visible": true,
|
||||||
"author": "NA",
|
"author": "unknown",
|
||||||
"manufacturer": "NA",
|
"manufacturer": "MAKEiT 3D",
|
||||||
"file_formats": "text/x-gcode",
|
"file_formats": "text/x-gcode",
|
||||||
"has_materials": false,
|
"has_materials": false,
|
||||||
"machine_extruder_trains":
|
"machine_extruder_trains":
|
||||||
|
66
resources/definitions/nwa3d_a31.def.json
Normal file
66
resources/definitions/nwa3d_a31.def.json
Normal 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"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -126,9 +126,6 @@
|
|||||||
"adhesion_type": {
|
"adhesion_type": {
|
||||||
"value": "'none'"
|
"value": "'none'"
|
||||||
},
|
},
|
||||||
"acceleration_enabled": {
|
|
||||||
"value": "False"
|
|
||||||
},
|
|
||||||
"print_sequence": {
|
"print_sequence": {
|
||||||
"enabled": false
|
"enabled": false
|
||||||
},
|
},
|
||||||
@ -251,10 +248,6 @@
|
|||||||
"expand_skins_expand_distance": {
|
"expand_skins_expand_distance": {
|
||||||
"value": "( wall_line_width_0 + (wall_line_count - 1) * wall_line_width_x ) / 2"
|
"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": {
|
"flow_rate_max_extrusion_offset": {
|
||||||
"enabled": false
|
"enabled": false
|
||||||
},
|
},
|
||||||
|
@ -5,7 +5,7 @@
|
|||||||
"metadata": {
|
"metadata": {
|
||||||
"visible": true,
|
"visible": true,
|
||||||
"author": "Quillford",
|
"author": "Quillford",
|
||||||
"manufacturer": "Prusajr",
|
"manufacturer": "Prusa3D",
|
||||||
"file_formats": "text/x-gcode",
|
"file_formats": "text/x-gcode",
|
||||||
"platform": "prusai3_platform.stl",
|
"platform": "prusai3_platform.stl",
|
||||||
"machine_extruder_trains":
|
"machine_extruder_trains":
|
||||||
|
@ -5,7 +5,7 @@
|
|||||||
"metadata": {
|
"metadata": {
|
||||||
"visible": true,
|
"visible": true,
|
||||||
"author": "Apsu, Nounours2099",
|
"author": "Apsu, Nounours2099",
|
||||||
"manufacturer": "Prusa Research",
|
"manufacturer": "Prusa3D",
|
||||||
"file_formats": "text/x-gcode",
|
"file_formats": "text/x-gcode",
|
||||||
"platform": "prusai3_platform.stl",
|
"platform": "prusai3_platform.stl",
|
||||||
"has_materials": true,
|
"has_materials": true,
|
||||||
|
@ -5,7 +5,7 @@
|
|||||||
"metadata": {
|
"metadata": {
|
||||||
"visible": true,
|
"visible": true,
|
||||||
"author": "guigashm",
|
"author": "guigashm",
|
||||||
"manufacturer": "Prusajr",
|
"manufacturer": "Prusa3D",
|
||||||
"file_formats": "text/x-gcode",
|
"file_formats": "text/x-gcode",
|
||||||
"platform": "prusai3_xl_platform.stl",
|
"platform": "prusai3_xl_platform.stl",
|
||||||
"machine_extruder_trains":
|
"machine_extruder_trains":
|
||||||
|
@ -5,12 +5,12 @@
|
|||||||
"metadata": {
|
"metadata": {
|
||||||
"visible": true,
|
"visible": true,
|
||||||
"author": "Stereotech",
|
"author": "Stereotech",
|
||||||
"manufacturer": "Other",
|
"manufacturer": "Stereotech LLC.",
|
||||||
"file_formats": "text/x-gcode",
|
"file_formats": "text/x-gcode",
|
||||||
"platform": "stereotech_start.stl",
|
"platform": "stereotech_start.stl",
|
||||||
"icon": "icon_ultimaker2",
|
"icon": "icon_ultimaker2",
|
||||||
"platform_offset": [0, 0, 0],
|
"platform_offset": [0, 0, 0],
|
||||||
"machine_extruder_trains":
|
"machine_extruder_trains":
|
||||||
{
|
{
|
||||||
"0": "stereotech_start_extruder_0"
|
"0": "stereotech_start_extruder_0"
|
||||||
}
|
}
|
||||||
|
137
resources/definitions/strateo3d.def.json
Normal file
137
resources/definitions/strateo3d.def.json
Normal 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" }
|
||||||
|
}
|
||||||
|
}
|
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"version": 2,
|
"version": 2,
|
||||||
"name": "Discov3ry Complete (Ultimaker 2+)",
|
"name": "Discov3ry Complete",
|
||||||
"inherits": "fdmprinter",
|
"inherits": "fdmprinter",
|
||||||
"metadata": {
|
"metadata": {
|
||||||
"author": "Andrew Finkle, CTO",
|
"author": "Andrew Finkle, CTO",
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"version": 2,
|
"version": 2,
|
||||||
"name": "Type A Machines Series 1 2014",
|
"name": "Series 1 2014",
|
||||||
"inherits": "fdmprinter",
|
"inherits": "fdmprinter",
|
||||||
"metadata": {
|
"metadata": {
|
||||||
"visible": true,
|
"visible": true,
|
||||||
|
@ -69,6 +69,13 @@
|
|||||||
"machine_end_gcode":
|
"machine_end_gcode":
|
||||||
{
|
{
|
||||||
"default_value": "M104 S0\nM140 S0\nG91\nG1 E-5 F300\nG1 Z+3 F3000\nG1 Y245 F3000\nM84"
|
"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"}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -52,6 +52,13 @@
|
|||||||
"machine_end_gcode":
|
"machine_end_gcode":
|
||||||
{
|
{
|
||||||
"default_value": "M104 S0\nM140 S0\nG91\nG1 E-5 F300\nG1 Z+3 F3000\nG1 Y245 F3000\nM84"
|
"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"}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,52 +1,60 @@
|
|||||||
{
|
{
|
||||||
"version": 2,
|
"version": 2,
|
||||||
"name": "TiZYX K25",
|
"name": "TiZYX K25",
|
||||||
"inherits": "fdmprinter",
|
"inherits": "fdmprinter",
|
||||||
"metadata":
|
"metadata":
|
||||||
{
|
{
|
||||||
"visible": true,
|
"visible": true,
|
||||||
"author": "TiZYX",
|
"author": "TiZYX",
|
||||||
"manufacturer": "TiZYX",
|
"manufacturer": "TiZYX",
|
||||||
"file_formats": "text/x-gcode",
|
"file_formats": "text/x-gcode",
|
||||||
"platform": "tizyx_k25_platform.stl",
|
"platform": "tizyx_k25_platform.stl",
|
||||||
"platform_offset": [0, -4, 0],
|
"platform_offset": [0, -4, 0],
|
||||||
"exclude_materials": ["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_abs_175", "generic_bam", "generic_cpe", "generic_cpe_175", "generic_cpe_plus", "generic_hips", "generic_hips_175", "generic_nylon", "generic_nylon_175", "generic_pc", "generic_pc_175", "generic_petg", "generic_petg_175", "generic_pla", "generic_pla_175", "generic_pp", "generic_pva", "generic_pva_175", "generic_tough_pla", "generic_tpu", "generic_tpu_175", "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", "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", "Vertex_Delta_ABS", "Vertex_Delta_PET", "Vertex_Delta_PLA", "Vertex_Delta_TPU", "zyyx_pro_flex", "zyyx_pro_pla" ],
|
"exclude_materials": ["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_abs_175", "generic_bam", "generic_cpe", "generic_cpe_175", "generic_cpe_plus", "generic_hips", "generic_hips_175", "generic_nylon", "generic_nylon_175", "generic_pc", "generic_pc_175", "generic_petg", "generic_petg_175", "generic_pla", "generic_pla_175", "generic_pp", "generic_pva", "generic_pva_175", "generic_tough_pla", "generic_tpu", "generic_tpu_175", "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", "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", "Vertex_Delta_ABS", "Vertex_Delta_PET", "Vertex_Delta_PLA", "Vertex_Delta_TPU", "zyyx_pro_flex", "zyyx_pro_pla" ],
|
||||||
"preferred_material": "tizyx_pla",
|
"preferred_material": "tizyx_pla",
|
||||||
"has_machine_quality": true,
|
"has_machine_quality": true,
|
||||||
"has_materials": true,
|
"has_materials": true,
|
||||||
"has_variants": true,
|
"has_variants": true,
|
||||||
"preferred_variant_name": "0.4 mm",
|
"preferred_variant_name": "0.4 mm",
|
||||||
"machine_extruder_trains":
|
"machine_extruder_trains":
|
||||||
{
|
{
|
||||||
"0": "tizyx_k25_extruder_0"
|
"0": "tizyx_k25_extruder_0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
"overrides":
|
"overrides":
|
||||||
{
|
{
|
||||||
"machine_name": { "default_value": "TiZYX K25" },
|
"machine_name": { "default_value": "TiZYX K25" },
|
||||||
"machine_heated_bed": { "default_value": true },
|
"machine_heated_bed": { "default_value": true },
|
||||||
"machine_width": { "default_value": 255 },
|
"machine_width": { "default_value": 255 },
|
||||||
"machine_height": { "default_value": 255 },
|
"machine_height": { "default_value": 255 },
|
||||||
"machine_depth": { "default_value": 255 },
|
"machine_depth": { "default_value": 255 },
|
||||||
"machine_center_is_zero": { "default_value": false },
|
"machine_center_is_zero": { "default_value": false },
|
||||||
"gantry_height": { "value": "500" },
|
"gantry_height": { "value": "500" },
|
||||||
"machine_head_with_fans_polygon": {
|
"machine_head_with_fans_polygon": {
|
||||||
"default_value": [
|
"default_value": [
|
||||||
[25, 49],
|
[25, 49],
|
||||||
[25, -49],
|
[25, -49],
|
||||||
[-25, -49],
|
[-25, -49],
|
||||||
[25, 49]
|
[25, 49]
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"machine_gcode_flavor": { "default_value": "RepRap (Marlin/Sprinter)" },
|
"machine_gcode_flavor": { "default_value": "RepRap (Marlin/Sprinter)" },
|
||||||
"machine_start_gcode":
|
"machine_start_gcode":
|
||||||
{
|
{
|
||||||
"default_value": "M82\nG90\nG28 X\nG28 Y\nG28 Z\nG29\nG91\nG1 Z0\nG90\nM82\nG92 E0\nG1 X125 Y245 F3000\nG1 Z0"
|
"default_value": "M82\nG90\nG28 X\nG28 Y\nG28 Z\nG29\nG91\nG1 Z0\nG90\nM82\nG92 E0\nG1 X125 Y245 F3000\nG1 Z0"
|
||||||
},
|
},
|
||||||
"machine_end_gcode":
|
"machine_end_gcode":
|
||||||
{
|
{
|
||||||
"default_value": "M104 S0\nM140 S0\nG91\nG1 E-5 F300\nG1 Z+3 F3000\nG1 Y245 F3000\nM84"
|
"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"}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@ -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_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_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_enabled": { "value": "True" },
|
||||||
"acceleration_layer_0": { "value": "acceleration_topbottom" },
|
"acceleration_layer_0": { "value": "acceleration_topbottom" },
|
||||||
|
@ -3,10 +3,10 @@
|
|||||||
"version": 2,
|
"version": 2,
|
||||||
"inherits": "fdmprinter",
|
"inherits": "fdmprinter",
|
||||||
"metadata": {
|
"metadata": {
|
||||||
"manufacturer": "Velleman nv",
|
"manufacturer": "Velleman N.V.",
|
||||||
"file_formats": "text/x-gcode",
|
"file_formats": "text/x-gcode",
|
||||||
"visible": true,
|
"visible": true,
|
||||||
"author": "Velleman",
|
"author": "Velleman N.V.",
|
||||||
"has_machine_quality": true,
|
"has_machine_quality": true,
|
||||||
"has_materials": true,
|
"has_materials": true,
|
||||||
"machine_extruder_trains":
|
"machine_extruder_trains":
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
"inherits": "fdmprinter",
|
"inherits": "fdmprinter",
|
||||||
"metadata": {
|
"metadata": {
|
||||||
"visible": true,
|
"visible": true,
|
||||||
"manufacturer": "Velleman",
|
"manufacturer": "Velleman N.V.",
|
||||||
"file_formats": "text/x-gcode",
|
"file_formats": "text/x-gcode",
|
||||||
"platform": "Vertex_build_panel.stl",
|
"platform": "Vertex_build_panel.stl",
|
||||||
"platform_offset": [0, -3, 0],
|
"platform_offset": [0, -3, 0],
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
"inherits": "fdmprinter",
|
"inherits": "fdmprinter",
|
||||||
"metadata": {
|
"metadata": {
|
||||||
"visible": true,
|
"visible": true,
|
||||||
"manufacturer": "Velleman",
|
"manufacturer": "Velleman N.V.",
|
||||||
"file_formats": "text/x-gcode",
|
"file_formats": "text/x-gcode",
|
||||||
"platform": "Vertex_build_panel.stl",
|
"platform": "Vertex_build_panel.stl",
|
||||||
"platform_offset": [0, -3, 0],
|
"platform_offset": [0, -3, 0],
|
||||||
|
@ -5,7 +5,7 @@
|
|||||||
"metadata": {
|
"metadata": {
|
||||||
"visible": true,
|
"visible": true,
|
||||||
"author": "Ultimaker",
|
"author": "Ultimaker",
|
||||||
"manufacturer": "Unknown",
|
"manufacturer": "Zone3D",
|
||||||
"file_formats": "text/x-gcode",
|
"file_formats": "text/x-gcode",
|
||||||
"platform_offset": [ 0, 0, 0],
|
"platform_offset": [ 0, 0, 0],
|
||||||
"machine_extruder_trains":
|
"machine_extruder_trains":
|
||||||
|
@ -1,10 +1,9 @@
|
|||||||
{
|
{
|
||||||
"id": "creality_cr10_extruder_0",
|
|
||||||
"version": 2,
|
"version": 2,
|
||||||
"name": "Extruder 1",
|
"name": "Extruder 1",
|
||||||
"inherits": "fdmextruder",
|
"inherits": "fdmextruder",
|
||||||
"metadata": {
|
"metadata": {
|
||||||
"machine": "creality_cr10",
|
"machine": "creality_base",
|
||||||
"position": "0"
|
"position": "0"
|
||||||
},
|
},
|
||||||
|
|
||||||
@ -12,5 +11,6 @@
|
|||||||
"extruder_nr": { "default_value": 0 },
|
"extruder_nr": { "default_value": 0 },
|
||||||
"machine_nozzle_size": { "default_value": 0.4 },
|
"machine_nozzle_size": { "default_value": 0.4 },
|
||||||
"material_diameter": { "default_value": 1.75 }
|
"material_diameter": { "default_value": 1.75 }
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -1,10 +1,10 @@
|
|||||||
{
|
{
|
||||||
"id": "creality_cr10s4_extruder_0",
|
"id": "erzay3d_extruder_0",
|
||||||
"version": 2,
|
"version": 2,
|
||||||
"name": "Extruder 1",
|
"name": "Extruder 1",
|
||||||
"inherits": "fdmextruder",
|
"inherits": "fdmextruder",
|
||||||
"metadata": {
|
"metadata": {
|
||||||
"machine": "creality_cr10s4",
|
"machine": "erzay3d",
|
||||||
"position": "0"
|
"position": "0"
|
||||||
},
|
},
|
||||||
|
|
@ -1,10 +1,10 @@
|
|||||||
{
|
{
|
||||||
"id": "creality_cr10s5_extruder_0",
|
"id": "flsun_qq_s_extruder_0",
|
||||||
"version": 2,
|
"version": 2,
|
||||||
"name": "Extruder 1",
|
"name": "Extruder 1",
|
||||||
"inherits": "fdmextruder",
|
"inherits": "fdmextruder",
|
||||||
"metadata": {
|
"metadata": {
|
||||||
"machine": "creality_cr10s5",
|
"machine": "flsun_qq_s",
|
||||||
"position": "0"
|
"position": "0"
|
||||||
},
|
},
|
||||||
|
|
@ -1,10 +1,10 @@
|
|||||||
{
|
{
|
||||||
"id": "creality_ender3_extruder_0",
|
"id": "geeetech_a30_extruder_0",
|
||||||
"version": 2,
|
"version": 2,
|
||||||
"name": "Extruder 1",
|
"name": "Extruder 1",
|
||||||
"inherits": "fdmextruder",
|
"inherits": "fdmextruder",
|
||||||
"metadata": {
|
"metadata": {
|
||||||
"machine": "creality_ender3",
|
"machine": "geeetech_a30",
|
||||||
"position": "0"
|
"position": "0"
|
||||||
},
|
},
|
||||||
|
|
@ -17,10 +17,10 @@
|
|||||||
"machine_nozzle_offset_y": { "default_value": 0.0 },
|
"machine_nozzle_offset_y": { "default_value": 0.0 },
|
||||||
"material_diameter": { "default_value": 1.75 },
|
"material_diameter": { "default_value": 1.75 },
|
||||||
"machine_extruder_start_code": {
|
"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": {
|
"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"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -17,10 +17,10 @@
|
|||||||
"machine_nozzle_offset_y": { "default_value": 0.0 },
|
"machine_nozzle_offset_y": { "default_value": 0.0 },
|
||||||
"material_diameter": { "default_value": 1.75 },
|
"material_diameter": { "default_value": 1.75 },
|
||||||
"machine_extruder_start_code": {
|
"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": {
|
"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"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -17,10 +17,10 @@
|
|||||||
"machine_nozzle_offset_y": { "default_value": 0.0 },
|
"machine_nozzle_offset_y": { "default_value": 0.0 },
|
||||||
"material_diameter": { "default_value": 1.75 },
|
"material_diameter": { "default_value": 1.75 },
|
||||||
"machine_extruder_start_code": {
|
"machine_extruder_start_code": {
|
||||||
"default_value": ""
|
"default_value": "\n;changing to tool3"
|
||||||
},
|
},
|
||||||
"machine_extruder_end_code": {
|
"machine_extruder_end_code": {
|
||||||
"default_value": ""
|
"default_value": "\n;ending tool3"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -17,10 +17,10 @@
|
|||||||
"machine_nozzle_offset_y": { "default_value": 0.0 },
|
"machine_nozzle_offset_y": { "default_value": 0.0 },
|
||||||
"material_diameter": { "default_value": 1.75 },
|
"material_diameter": { "default_value": 1.75 },
|
||||||
"machine_extruder_start_code": {
|
"machine_extruder_start_code": {
|
||||||
"default_value": ""
|
"default_value": "\n;changing to tool4"
|
||||||
},
|
},
|
||||||
"machine_extruder_end_code": {
|
"machine_extruder_end_code": {
|
||||||
"default_value": ""
|
"default_value": "\n;ending tool4"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -17,10 +17,10 @@
|
|||||||
"machine_nozzle_offset_y": { "default_value": 0.0 },
|
"machine_nozzle_offset_y": { "default_value": 0.0 },
|
||||||
"material_diameter": { "default_value": 1.75 },
|
"material_diameter": { "default_value": 1.75 },
|
||||||
"machine_extruder_start_code": {
|
"machine_extruder_start_code": {
|
||||||
"default_value": ""
|
"default_value": "\n;changing to tool5"
|
||||||
},
|
},
|
||||||
"machine_extruder_end_code": {
|
"machine_extruder_end_code": {
|
||||||
"default_value": ""
|
"default_value": "\n;ending tool5"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -17,10 +17,10 @@
|
|||||||
"machine_nozzle_offset_y": { "default_value": 0.0 },
|
"machine_nozzle_offset_y": { "default_value": 0.0 },
|
||||||
"material_diameter": { "default_value": 1.75 },
|
"material_diameter": { "default_value": 1.75 },
|
||||||
"machine_extruder_start_code": {
|
"machine_extruder_start_code": {
|
||||||
"default_value": ""
|
"default_value": "\n;changing to tool6"
|
||||||
},
|
},
|
||||||
"machine_extruder_end_code": {
|
"machine_extruder_end_code": {
|
||||||
"default_value": ""
|
"default_value": "\n;ending tool6"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -17,10 +17,10 @@
|
|||||||
"machine_nozzle_offset_y": { "default_value": 0.0 },
|
"machine_nozzle_offset_y": { "default_value": 0.0 },
|
||||||
"material_diameter": { "default_value": 1.75 },
|
"material_diameter": { "default_value": 1.75 },
|
||||||
"machine_extruder_start_code": {
|
"machine_extruder_start_code": {
|
||||||
"default_value": ""
|
"default_value": "\n;changing to tool7"
|
||||||
},
|
},
|
||||||
"machine_extruder_end_code": {
|
"machine_extruder_end_code": {
|
||||||
"default_value": ""
|
"default_value": "\n;ending tool7"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -17,10 +17,10 @@
|
|||||||
"machine_nozzle_offset_y": { "default_value": 0.0 },
|
"machine_nozzle_offset_y": { "default_value": 0.0 },
|
||||||
"material_diameter": { "default_value": 1.75 },
|
"material_diameter": { "default_value": 1.75 },
|
||||||
"machine_extruder_start_code": {
|
"machine_extruder_start_code": {
|
||||||
"default_value": ""
|
"default_value": "\n;changing to tool8"
|
||||||
},
|
},
|
||||||
"machine_extruder_end_code": {
|
"machine_extruder_end_code": {
|
||||||
"default_value": ""
|
"default_value": "\n;ending tool8"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
16
resources/extruders/nwa3d_a31_extruder_0.def.json
Normal file
16
resources/extruders/nwa3d_a31_extruder_0.def.json
Normal 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 }
|
||||||
|
}
|
||||||
|
}
|
17
resources/extruders/strateo3d_left_extruder.def.json
Normal file
17
resources/extruders/strateo3d_left_extruder.def.json
Normal 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 }
|
||||||
|
}
|
||||||
|
}
|
17
resources/extruders/strateo3d_right_extruder.def.json
Normal file
17
resources/extruders/strateo3d_right_extruder.def.json
Normal 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
@ -7,7 +7,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: Cura 4.1\n"
|
"Project-Id-Version: Cura 4.1\n"
|
||||||
"Report-Msgid-Bugs-To: r.dulek@ultimaker.com\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"
|
"PO-Revision-Date: 2019-03-13 14:00+0200\n"
|
||||||
"Last-Translator: Bothof <info@bothof.nl>\n"
|
"Last-Translator: Bothof <info@bothof.nl>\n"
|
||||||
"Language-Team: German\n"
|
"Language-Team: German\n"
|
||||||
|
@ -7,7 +7,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: Cura 4.1\n"
|
"Project-Id-Version: Cura 4.1\n"
|
||||||
"Report-Msgid-Bugs-To: r.dulek@ultimaker.com\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"
|
"PO-Revision-Date: 2019-03-13 14:00+0200\n"
|
||||||
"Last-Translator: Bothof <info@bothof.nl>\n"
|
"Last-Translator: Bothof <info@bothof.nl>\n"
|
||||||
"Language-Team: German\n"
|
"Language-Team: German\n"
|
||||||
@ -57,7 +57,9 @@ msgctxt "machine_start_gcode description"
|
|||||||
msgid ""
|
msgid ""
|
||||||
"G-code commands to be executed at the very start - separated by \n"
|
"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
|
#: fdmprinter.def.json
|
||||||
msgctxt "machine_end_gcode label"
|
msgctxt "machine_end_gcode label"
|
||||||
@ -69,7 +71,9 @@ msgctxt "machine_end_gcode description"
|
|||||||
msgid ""
|
msgid ""
|
||||||
"G-code commands to be executed at the very end - separated by \n"
|
"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
|
#: fdmprinter.def.json
|
||||||
msgctxt "material_guid label"
|
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
|
#: fdmprinter.def.json
|
||||||
msgctxt "machine_gcode_flavor label"
|
msgctxt "machine_gcode_flavor label"
|
||||||
msgid "G-code Flavour"
|
msgid "G-code Flavor"
|
||||||
msgstr "G-Code-Variante"
|
msgstr ""
|
||||||
|
|
||||||
#: fdmprinter.def.json
|
#: fdmprinter.def.json
|
||||||
msgctxt "machine_gcode_flavor description"
|
msgctxt "machine_gcode_flavor description"
|
||||||
@ -1293,8 +1297,8 @@ msgstr "Präferenz Nahtkante"
|
|||||||
|
|
||||||
#: fdmprinter.def.json
|
#: fdmprinter.def.json
|
||||||
msgctxt "z_seam_corner description"
|
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."
|
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 "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."
|
msgstr ""
|
||||||
|
|
||||||
#: fdmprinter.def.json
|
#: fdmprinter.def.json
|
||||||
msgctxt "z_seam_corner option z_seam_corner_none"
|
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"
|
msgid "Hide or Expose Seam"
|
||||||
msgstr "Naht verbergen oder offenlegen"
|
msgstr "Naht verbergen oder offenlegen"
|
||||||
|
|
||||||
|
#: fdmprinter.def.json
|
||||||
|
msgctxt "z_seam_corner option z_seam_corner_weighted"
|
||||||
|
msgid "Smart Hiding"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: fdmprinter.def.json
|
#: fdmprinter.def.json
|
||||||
msgctxt "z_seam_relative label"
|
msgctxt "z_seam_relative label"
|
||||||
msgid "Z Seam Relative"
|
msgid "Z Seam Relative"
|
||||||
@ -1328,13 +1337,13 @@ msgstr "Bei Aktivierung sind die Z-Naht-Koordinaten relativ zur Mitte der jeweil
|
|||||||
|
|
||||||
#: fdmprinter.def.json
|
#: fdmprinter.def.json
|
||||||
msgctxt "skin_no_small_gaps_heuristic label"
|
msgctxt "skin_no_small_gaps_heuristic label"
|
||||||
msgid "Ignore Small Z Gaps"
|
msgid "No Skin in Z Gaps"
|
||||||
msgstr "Schmale Z-Lücken ignorieren"
|
msgstr ""
|
||||||
|
|
||||||
#: fdmprinter.def.json
|
#: fdmprinter.def.json
|
||||||
msgctxt "skin_no_small_gaps_heuristic description"
|
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."
|
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 "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."
|
msgstr ""
|
||||||
|
|
||||||
#: fdmprinter.def.json
|
#: fdmprinter.def.json
|
||||||
msgctxt "skin_outline_count label"
|
msgctxt "skin_outline_count label"
|
||||||
@ -1631,7 +1640,9 @@ msgctxt "infill_wall_line_count description"
|
|||||||
msgid ""
|
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"
|
"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."
|
"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
|
#: fdmprinter.def.json
|
||||||
msgctxt "sub_div_rad_add label"
|
msgctxt "sub_div_rad_add label"
|
||||||
@ -1870,8 +1881,8 @@ msgstr "Temperatur Druckabmessung"
|
|||||||
|
|
||||||
#: fdmprinter.def.json
|
#: fdmprinter.def.json
|
||||||
msgctxt "build_volume_temperature description"
|
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 "Die für die Druckabmessung verwendete Temperatur. Wenn dieser Wert 0 beträgt, wird die Temperatur der Druckabmessung nicht angepasst."
|
msgstr ""
|
||||||
|
|
||||||
#: fdmprinter.def.json
|
#: fdmprinter.def.json
|
||||||
msgctxt "material_print_temperature label"
|
msgctxt "material_print_temperature label"
|
||||||
@ -1983,6 +1994,86 @@ msgctxt "material_shrinkage_percentage description"
|
|||||||
msgid "Shrinkage ratio in percentage."
|
msgid "Shrinkage ratio in percentage."
|
||||||
msgstr "Schrumpfungsverhältnis in Prozent."
|
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
|
#: fdmprinter.def.json
|
||||||
msgctxt "material_flow label"
|
msgctxt "material_flow label"
|
||||||
msgid "Flow"
|
msgid "Flow"
|
||||||
@ -1993,6 +2084,126 @@ msgctxt "material_flow description"
|
|||||||
msgid "Flow compensation: the amount of material extruded is multiplied by this value."
|
msgid "Flow compensation: the amount of material extruded is multiplied by this value."
|
||||||
msgstr "Fluss-Kompensation: Die extrudierte Materialmenge wird mit diesem Wert multipliziert."
|
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
|
#: fdmprinter.def.json
|
||||||
msgctxt "material_flow_layer_0 label"
|
msgctxt "material_flow_layer_0 label"
|
||||||
msgid "Initial Layer Flow"
|
msgid "Initial Layer Flow"
|
||||||
@ -2110,8 +2321,8 @@ msgstr "Stützstruktur-Einzüge einschränken"
|
|||||||
|
|
||||||
#: fdmprinter.def.json
|
#: fdmprinter.def.json
|
||||||
msgctxt "limit_support_retractions description"
|
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 "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."
|
msgstr ""
|
||||||
|
|
||||||
#: fdmprinter.def.json
|
#: fdmprinter.def.json
|
||||||
msgctxt "material_standby_temperature label"
|
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."
|
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."
|
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
|
#: fdmprinter.def.json
|
||||||
msgctxt "speed label"
|
msgctxt "speed label"
|
||||||
msgid "Speed"
|
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."
|
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
|
#: fdmprinter.def.json
|
||||||
msgctxt "max_feedrate_z_override label"
|
msgctxt "speed_z_hop label"
|
||||||
msgid "Maximum Z Speed"
|
msgid "Z Hop Speed"
|
||||||
msgstr "Maximale Z-Geschwindigkeit"
|
msgstr ""
|
||||||
|
|
||||||
#: fdmprinter.def.json
|
#: 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."
|
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 "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."
|
msgstr ""
|
||||||
|
|
||||||
#: fdmprinter.def.json
|
#: fdmprinter.def.json
|
||||||
msgctxt "speed_slowdown_layers label"
|
msgctxt "speed_slowdown_layers label"
|
||||||
@ -3415,8 +3636,8 @@ msgstr "Abstand für Zusammenführung der Stützstrukturen"
|
|||||||
|
|
||||||
#: fdmprinter.def.json
|
#: fdmprinter.def.json
|
||||||
msgctxt "support_join_distance description"
|
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."
|
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 "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."
|
msgstr ""
|
||||||
|
|
||||||
#: fdmprinter.def.json
|
#: fdmprinter.def.json
|
||||||
msgctxt "support_offset label"
|
msgctxt "support_offset label"
|
||||||
@ -3794,14 +4015,14 @@ msgid "The diameter of a special tower."
|
|||||||
msgstr "Der Durchmesser eines speziellen Pfeilers."
|
msgstr "Der Durchmesser eines speziellen Pfeilers."
|
||||||
|
|
||||||
#: fdmprinter.def.json
|
#: fdmprinter.def.json
|
||||||
msgctxt "support_minimal_diameter label"
|
msgctxt "support_tower_maximum_supported_diameter label"
|
||||||
msgid "Minimum Diameter"
|
msgid "Maximum Tower-Supported Diameter"
|
||||||
msgstr "Mindestdurchmesser"
|
msgstr ""
|
||||||
|
|
||||||
#: fdmprinter.def.json
|
#: 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 supported by a specialized support tower."
|
msgid "Maximum 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."
|
msgstr ""
|
||||||
|
|
||||||
#: fdmprinter.def.json
|
#: fdmprinter.def.json
|
||||||
msgctxt "support_tower_roof_angle label"
|
msgctxt "support_tower_roof_angle label"
|
||||||
@ -3923,7 +4144,9 @@ msgctxt "skirt_gap description"
|
|||||||
msgid ""
|
msgid ""
|
||||||
"The horizontal distance between the skirt and the first layer of the print.\n"
|
"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."
|
"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
|
#: fdmprinter.def.json
|
||||||
msgctxt "skirt_brim_minimal_length label"
|
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."
|
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."
|
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
|
#: fdmprinter.def.json
|
||||||
msgctxt "prime_tower_size label"
|
msgctxt "prime_tower_size label"
|
||||||
msgid "Prime Tower Size"
|
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."
|
msgid "The y coordinate of the position of the prime tower."
|
||||||
msgstr "Die Y-Koordinate der Position des Einzugsturms."
|
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
|
#: fdmprinter.def.json
|
||||||
msgctxt "prime_tower_wipe_enabled label"
|
msgctxt "prime_tower_wipe_enabled label"
|
||||||
msgid "Wipe Inactive Nozzle on Prime Tower"
|
msgid "Wipe Inactive Nozzle on Prime Tower"
|
||||||
@ -4657,8 +4860,8 @@ msgstr "Spiralisieren der äußeren Konturen glätten"
|
|||||||
|
|
||||||
#: fdmprinter.def.json
|
#: fdmprinter.def.json
|
||||||
msgctxt "smooth_spiralized_contours description"
|
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."
|
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."
|
msgstr ""
|
||||||
|
|
||||||
#: fdmprinter.def.json
|
#: fdmprinter.def.json
|
||||||
msgctxt "relative_extrusion label"
|
msgctxt "relative_extrusion label"
|
||||||
@ -5157,8 +5360,8 @@ msgstr "Konische Stützstruktur aktivieren"
|
|||||||
|
|
||||||
#: fdmprinter.def.json
|
#: fdmprinter.def.json
|
||||||
msgctxt "support_conical_enabled description"
|
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 "Experimentelle Funktion: Macht die Bereiche der Stützstruktur am Boden kleiner als beim Überhang."
|
msgstr ""
|
||||||
|
|
||||||
#: fdmprinter.def.json
|
#: fdmprinter.def.json
|
||||||
msgctxt "support_conical_angle label"
|
msgctxt "support_conical_angle label"
|
||||||
@ -5390,7 +5593,9 @@ msgctxt "wireframe_up_half_speed description"
|
|||||||
msgid ""
|
msgid ""
|
||||||
"Distance of an upward move which is extruded with half speed.\n"
|
"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."
|
"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
|
#: fdmprinter.def.json
|
||||||
msgctxt "wireframe_top_jump label"
|
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."
|
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."
|
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"
|
#~ msgctxt "extruders_enabled_count label"
|
||||||
#~ msgid "Number of Extruders that are enabled"
|
#~ msgid "Number of Extruders that are enabled"
|
||||||
#~ msgstr "Anzahl der aktivierten Extruder"
|
#~ 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"
|
#~ "Gcode commands to be executed at the very start - separated by \n"
|
||||||
#~ "."
|
#~ "."
|
||||||
#~ msgstr ""
|
#~ msgstr ""
|
||||||
|
|
||||||
#~ "Gcode-Befehle, die zu Beginn ausgeführt werden sollen – getrennt durch \n"
|
#~ "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"
|
#~ "Gcode commands to be executed at the very end - separated by \n"
|
||||||
#~ "."
|
#~ "."
|
||||||
#~ msgstr ""
|
#~ msgstr ""
|
||||||
|
|
||||||
#~ "Gcode-Befehle, die Am Ende ausgeführt werden sollen – getrennt durch \n"
|
#~ "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"
|
#~ "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."
|
#~ "This is the minimum distance, multiple skirt lines will extend outwards from this distance."
|
||||||
#~ msgstr ""
|
#~ msgstr ""
|
||||||
|
|
||||||
#~ "Der horizontale Abstand zwischen dem Skirt und der ersten Schicht des Drucks.\n"
|
#~ "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."
|
#~ "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
@ -7,7 +7,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: Cura 4.1\n"
|
"Project-Id-Version: Cura 4.1\n"
|
||||||
"Report-Msgid-Bugs-To: r.dulek@ultimaker.com\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"
|
"PO-Revision-Date: 2019-03-13 14:00+0200\n"
|
||||||
"Last-Translator: Bothof <info@bothof.nl>\n"
|
"Last-Translator: Bothof <info@bothof.nl>\n"
|
||||||
"Language-Team: Spanish\n"
|
"Language-Team: Spanish\n"
|
||||||
|
@ -7,7 +7,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: Cura 4.1\n"
|
"Project-Id-Version: Cura 4.1\n"
|
||||||
"Report-Msgid-Bugs-To: r.dulek@ultimaker.com\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"
|
"PO-Revision-Date: 2019-05-28 09:34+0200\n"
|
||||||
"Last-Translator: Bothof <info@bothof.nl>\n"
|
"Last-Translator: Bothof <info@bothof.nl>\n"
|
||||||
"Language-Team: Spanish\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
|
#: fdmprinter.def.json
|
||||||
msgctxt "machine_gcode_flavor label"
|
msgctxt "machine_gcode_flavor label"
|
||||||
msgid "G-code Flavour"
|
msgid "G-code Flavor"
|
||||||
msgstr "Tipo de GCode"
|
msgstr ""
|
||||||
|
|
||||||
#: fdmprinter.def.json
|
#: fdmprinter.def.json
|
||||||
msgctxt "machine_gcode_flavor description"
|
msgctxt "machine_gcode_flavor description"
|
||||||
@ -1297,8 +1297,8 @@ msgstr "Preferencia de esquina de costura"
|
|||||||
|
|
||||||
#: fdmprinter.def.json
|
#: fdmprinter.def.json
|
||||||
msgctxt "z_seam_corner description"
|
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."
|
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 "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."
|
msgstr ""
|
||||||
|
|
||||||
#: fdmprinter.def.json
|
#: fdmprinter.def.json
|
||||||
msgctxt "z_seam_corner option z_seam_corner_none"
|
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"
|
msgid "Hide or Expose Seam"
|
||||||
msgstr "Ocultar o mostrar costura"
|
msgstr "Ocultar o mostrar costura"
|
||||||
|
|
||||||
|
#: fdmprinter.def.json
|
||||||
|
msgctxt "z_seam_corner option z_seam_corner_weighted"
|
||||||
|
msgid "Smart Hiding"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: fdmprinter.def.json
|
#: fdmprinter.def.json
|
||||||
msgctxt "z_seam_relative label"
|
msgctxt "z_seam_relative label"
|
||||||
msgid "Z Seam Relative"
|
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
|
#: fdmprinter.def.json
|
||||||
msgctxt "skin_no_small_gaps_heuristic label"
|
msgctxt "skin_no_small_gaps_heuristic label"
|
||||||
msgid "Ignore Small Z Gaps"
|
msgid "No Skin in Z Gaps"
|
||||||
msgstr "Ignorar los pequeños huecos en Z"
|
msgstr ""
|
||||||
|
|
||||||
#: fdmprinter.def.json
|
#: fdmprinter.def.json
|
||||||
msgctxt "skin_no_small_gaps_heuristic description"
|
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."
|
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 "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."
|
msgstr ""
|
||||||
|
|
||||||
#: fdmprinter.def.json
|
#: fdmprinter.def.json
|
||||||
msgctxt "skin_outline_count label"
|
msgctxt "skin_outline_count label"
|
||||||
@ -1876,8 +1881,8 @@ msgstr "Temperatura de volumen de impresión"
|
|||||||
|
|
||||||
#: fdmprinter.def.json
|
#: fdmprinter.def.json
|
||||||
msgctxt "build_volume_temperature description"
|
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 "La temperatura utilizada para el volumen de impresión. Si el valor es 0, la temperatura de volumen de impresión no se ajustará."
|
msgstr ""
|
||||||
|
|
||||||
#: fdmprinter.def.json
|
#: fdmprinter.def.json
|
||||||
msgctxt "material_print_temperature label"
|
msgctxt "material_print_temperature label"
|
||||||
@ -1989,6 +1994,86 @@ msgctxt "material_shrinkage_percentage description"
|
|||||||
msgid "Shrinkage ratio in percentage."
|
msgid "Shrinkage ratio in percentage."
|
||||||
msgstr "Índice de compresión en porcentaje."
|
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
|
#: fdmprinter.def.json
|
||||||
msgctxt "material_flow label"
|
msgctxt "material_flow label"
|
||||||
msgid "Flow"
|
msgid "Flow"
|
||||||
@ -1999,6 +2084,126 @@ msgctxt "material_flow description"
|
|||||||
msgid "Flow compensation: the amount of material extruded is multiplied by this value."
|
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."
|
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
|
#: fdmprinter.def.json
|
||||||
msgctxt "material_flow_layer_0 label"
|
msgctxt "material_flow_layer_0 label"
|
||||||
msgid "Initial Layer Flow"
|
msgid "Initial Layer Flow"
|
||||||
@ -2116,8 +2321,8 @@ msgstr "Limitar las retracciones de soporte"
|
|||||||
|
|
||||||
#: fdmprinter.def.json
|
#: fdmprinter.def.json
|
||||||
msgctxt "limit_support_retractions description"
|
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 "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."
|
msgstr ""
|
||||||
|
|
||||||
#: fdmprinter.def.json
|
#: fdmprinter.def.json
|
||||||
msgctxt "material_standby_temperature label"
|
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."
|
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."
|
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
|
#: fdmprinter.def.json
|
||||||
msgctxt "speed label"
|
msgctxt "speed label"
|
||||||
msgid "Speed"
|
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."
|
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
|
#: fdmprinter.def.json
|
||||||
msgctxt "max_feedrate_z_override label"
|
msgctxt "speed_z_hop label"
|
||||||
msgid "Maximum Z Speed"
|
msgid "Z Hop Speed"
|
||||||
msgstr "Velocidad máxima de Z"
|
msgstr ""
|
||||||
|
|
||||||
#: fdmprinter.def.json
|
#: 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."
|
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 "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."
|
msgstr ""
|
||||||
|
|
||||||
#: fdmprinter.def.json
|
#: fdmprinter.def.json
|
||||||
msgctxt "speed_slowdown_layers label"
|
msgctxt "speed_slowdown_layers label"
|
||||||
@ -3421,8 +3636,8 @@ msgstr "Distancia de unión del soporte"
|
|||||||
|
|
||||||
#: fdmprinter.def.json
|
#: fdmprinter.def.json
|
||||||
msgctxt "support_join_distance description"
|
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."
|
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 "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."
|
msgstr ""
|
||||||
|
|
||||||
#: fdmprinter.def.json
|
#: fdmprinter.def.json
|
||||||
msgctxt "support_offset label"
|
msgctxt "support_offset label"
|
||||||
@ -3800,14 +4015,14 @@ msgid "The diameter of a special tower."
|
|||||||
msgstr "Diámetro de una torre especial."
|
msgstr "Diámetro de una torre especial."
|
||||||
|
|
||||||
#: fdmprinter.def.json
|
#: fdmprinter.def.json
|
||||||
msgctxt "support_minimal_diameter label"
|
msgctxt "support_tower_maximum_supported_diameter label"
|
||||||
msgid "Minimum Diameter"
|
msgid "Maximum Tower-Supported Diameter"
|
||||||
msgstr "Diámetro mínimo"
|
msgstr ""
|
||||||
|
|
||||||
#: fdmprinter.def.json
|
#: 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 supported by a specialized support tower."
|
msgid "Maximum 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."
|
msgstr ""
|
||||||
|
|
||||||
#: fdmprinter.def.json
|
#: fdmprinter.def.json
|
||||||
msgctxt "support_tower_roof_angle label"
|
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."
|
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."
|
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
|
#: fdmprinter.def.json
|
||||||
msgctxt "prime_tower_size label"
|
msgctxt "prime_tower_size label"
|
||||||
msgid "Prime Tower Size"
|
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."
|
msgid "The y coordinate of the position of the prime tower."
|
||||||
msgstr "Coordenada Y de la posición de la torre auxiliar."
|
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
|
#: fdmprinter.def.json
|
||||||
msgctxt "prime_tower_wipe_enabled label"
|
msgctxt "prime_tower_wipe_enabled label"
|
||||||
msgid "Wipe Inactive Nozzle on Prime Tower"
|
msgid "Wipe Inactive Nozzle on Prime Tower"
|
||||||
@ -4665,8 +4860,8 @@ msgstr "Contornos espiralizados suaves"
|
|||||||
|
|
||||||
#: fdmprinter.def.json
|
#: fdmprinter.def.json
|
||||||
msgctxt "smooth_spiralized_contours description"
|
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."
|
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."
|
msgstr ""
|
||||||
|
|
||||||
#: fdmprinter.def.json
|
#: fdmprinter.def.json
|
||||||
msgctxt "relative_extrusion label"
|
msgctxt "relative_extrusion label"
|
||||||
@ -5165,8 +5360,8 @@ msgstr "Activar soporte cónico"
|
|||||||
|
|
||||||
#: fdmprinter.def.json
|
#: fdmprinter.def.json
|
||||||
msgctxt "support_conical_enabled description"
|
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 "Función experimental: hace áreas de soporte más pequeñas en la parte inferior que en el voladizo."
|
msgstr ""
|
||||||
|
|
||||||
#: fdmprinter.def.json
|
#: fdmprinter.def.json
|
||||||
msgctxt "support_conical_angle label"
|
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."
|
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."
|
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"
|
#~ msgctxt "extruders_enabled_count label"
|
||||||
#~ msgid "Number of Extruders that are enabled"
|
#~ msgid "Number of Extruders that are enabled"
|
||||||
#~ msgstr "Número de extrusores habilitados"
|
#~ msgstr "Número de extrusores habilitados"
|
||||||
|
@ -3,7 +3,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: Uranium json setting files\n"
|
"Project-Id-Version: Uranium json setting files\n"
|
||||||
"Report-Msgid-Bugs-To: r.dulek@ultimaker.com\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"
|
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
"Language-Team: LANGUAGE\n"
|
"Language-Team: LANGUAGE\n"
|
||||||
|
@ -3,7 +3,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: Uranium json setting files\n"
|
"Project-Id-Version: Uranium json setting files\n"
|
||||||
"Report-Msgid-Bugs-To: r.dulek@ultimaker.com\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"
|
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
"Language-Team: LANGUAGE\n"
|
"Language-Team: LANGUAGE\n"
|
||||||
@ -362,7 +362,7 @@ msgstr ""
|
|||||||
|
|
||||||
#: fdmprinter.def.json
|
#: fdmprinter.def.json
|
||||||
msgctxt "machine_gcode_flavor label"
|
msgctxt "machine_gcode_flavor label"
|
||||||
msgid "G-code Flavour"
|
msgid "G-code Flavor"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: fdmprinter.def.json
|
#: fdmprinter.def.json
|
||||||
@ -1448,7 +1448,9 @@ msgid ""
|
|||||||
"seam. None means that corners have no influence on the seam position. Hide "
|
"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 "
|
"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 "
|
"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 ""
|
msgstr ""
|
||||||
|
|
||||||
#: fdmprinter.def.json
|
#: fdmprinter.def.json
|
||||||
@ -1471,6 +1473,11 @@ msgctxt "z_seam_corner option z_seam_corner_any"
|
|||||||
msgid "Hide or Expose Seam"
|
msgid "Hide or Expose Seam"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: fdmprinter.def.json
|
||||||
|
msgctxt "z_seam_corner option z_seam_corner_weighted"
|
||||||
|
msgid "Smart Hiding"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: fdmprinter.def.json
|
#: fdmprinter.def.json
|
||||||
msgctxt "z_seam_relative label"
|
msgctxt "z_seam_relative label"
|
||||||
msgid "Z Seam Relative"
|
msgid "Z Seam Relative"
|
||||||
@ -1486,15 +1493,17 @@ msgstr ""
|
|||||||
|
|
||||||
#: fdmprinter.def.json
|
#: fdmprinter.def.json
|
||||||
msgctxt "skin_no_small_gaps_heuristic label"
|
msgctxt "skin_no_small_gaps_heuristic label"
|
||||||
msgid "Ignore Small Z Gaps"
|
msgid "No Skin in Z Gaps"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: fdmprinter.def.json
|
#: fdmprinter.def.json
|
||||||
msgctxt "skin_no_small_gaps_heuristic description"
|
msgctxt "skin_no_small_gaps_heuristic description"
|
||||||
msgid ""
|
msgid ""
|
||||||
"When the model has small vertical gaps, about 5% extra computation time can "
|
"When the model has small vertical gaps of only a few layers, there should "
|
||||||
"be spent on generating top and bottom skin in these narrow spaces. In such "
|
"normally be skin around those layers in the narrow space. Enable this "
|
||||||
"case, disable the setting."
|
"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 ""
|
msgstr ""
|
||||||
|
|
||||||
#: fdmprinter.def.json
|
#: fdmprinter.def.json
|
||||||
@ -2151,8 +2160,8 @@ msgstr ""
|
|||||||
#: fdmprinter.def.json
|
#: fdmprinter.def.json
|
||||||
msgctxt "build_volume_temperature description"
|
msgctxt "build_volume_temperature description"
|
||||||
msgid ""
|
msgid ""
|
||||||
"The temperature used for build volume. If this is 0, the build volume "
|
"The temperature of the environment to print in. If this is 0, the build "
|
||||||
"temperature will not be adjusted."
|
"volume temperature will not be adjusted."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: fdmprinter.def.json
|
#: fdmprinter.def.json
|
||||||
@ -2278,6 +2287,94 @@ msgctxt "material_shrinkage_percentage description"
|
|||||||
msgid "Shrinkage ratio in percentage."
|
msgid "Shrinkage ratio in percentage."
|
||||||
msgstr ""
|
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
|
#: fdmprinter.def.json
|
||||||
msgctxt "material_flow label"
|
msgctxt "material_flow label"
|
||||||
msgid "Flow"
|
msgid "Flow"
|
||||||
@ -2290,6 +2387,127 @@ msgid ""
|
|||||||
"value."
|
"value."
|
||||||
msgstr ""
|
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
|
#: fdmprinter.def.json
|
||||||
msgctxt "material_flow_layer_0 label"
|
msgctxt "material_flow_layer_0 label"
|
||||||
msgid "Initial Layer Flow"
|
msgid "Initial Layer Flow"
|
||||||
@ -2426,7 +2644,7 @@ msgstr ""
|
|||||||
msgctxt "limit_support_retractions description"
|
msgctxt "limit_support_retractions description"
|
||||||
msgid ""
|
msgid ""
|
||||||
"Omit retraction when moving from support to support in a straight line. "
|
"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."
|
"within the support structure."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -2490,6 +2708,16 @@ msgid ""
|
|||||||
"retraction."
|
"retraction."
|
||||||
msgstr ""
|
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
|
#: fdmprinter.def.json
|
||||||
msgctxt "speed label"
|
msgctxt "speed label"
|
||||||
msgid "Speed"
|
msgid "Speed"
|
||||||
@ -2713,15 +2941,16 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: fdmprinter.def.json
|
#: fdmprinter.def.json
|
||||||
msgctxt "max_feedrate_z_override label"
|
msgctxt "speed_z_hop label"
|
||||||
msgid "Maximum Z Speed"
|
msgid "Z Hop Speed"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: fdmprinter.def.json
|
#: fdmprinter.def.json
|
||||||
msgctxt "max_feedrate_z_override description"
|
msgctxt "speed_z_hop description"
|
||||||
msgid ""
|
msgid ""
|
||||||
"The maximum speed with which the build plate is moved. Setting this to zero "
|
"The speed at which the vertical Z movement is made for Z Hops. This is "
|
||||||
"causes the print to use the firmware defaults for the maximum z speed."
|
"typically lower than the print speed since the build plate or machine's "
|
||||||
|
"gantry is harder to move."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: fdmprinter.def.json
|
#: fdmprinter.def.json
|
||||||
@ -3946,7 +4175,7 @@ msgstr ""
|
|||||||
msgctxt "support_join_distance description"
|
msgctxt "support_join_distance description"
|
||||||
msgid ""
|
msgid ""
|
||||||
"The maximum distance between support structures in the X/Y directions. When "
|
"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."
|
"merge into one."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -4380,14 +4609,14 @@ msgid "The diameter of a special tower."
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: fdmprinter.def.json
|
#: fdmprinter.def.json
|
||||||
msgctxt "support_minimal_diameter label"
|
msgctxt "support_tower_maximum_supported_diameter label"
|
||||||
msgid "Minimum Diameter"
|
msgid "Maximum Tower-Supported Diameter"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: fdmprinter.def.json
|
#: fdmprinter.def.json
|
||||||
msgctxt "support_minimal_diameter description"
|
msgctxt "support_tower_maximum_supported_diameter description"
|
||||||
msgid ""
|
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."
|
"supported by a specialized support tower."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -4962,16 +5191,6 @@ msgid ""
|
|||||||
"each nozzle switch."
|
"each nozzle switch."
|
||||||
msgstr ""
|
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
|
#: fdmprinter.def.json
|
||||||
msgctxt "prime_tower_size label"
|
msgctxt "prime_tower_size label"
|
||||||
msgid "Prime Tower Size"
|
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."
|
msgid "The y coordinate of the position of the prime tower."
|
||||||
msgstr ""
|
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
|
#: fdmprinter.def.json
|
||||||
msgctxt "prime_tower_wipe_enabled label"
|
msgctxt "prime_tower_wipe_enabled label"
|
||||||
msgid "Wipe Inactive Nozzle on Prime Tower"
|
msgid "Wipe Inactive Nozzle on Prime Tower"
|
||||||
@ -5397,7 +5604,7 @@ msgstr ""
|
|||||||
#: fdmprinter.def.json
|
#: fdmprinter.def.json
|
||||||
msgctxt "smooth_spiralized_contours description"
|
msgctxt "smooth_spiralized_contours description"
|
||||||
msgid ""
|
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 "
|
"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."
|
"layer view). Note that smoothing will tend to blur fine surface details."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -6017,9 +6224,7 @@ msgstr ""
|
|||||||
|
|
||||||
#: fdmprinter.def.json
|
#: fdmprinter.def.json
|
||||||
msgctxt "support_conical_enabled description"
|
msgctxt "support_conical_enabled description"
|
||||||
msgid ""
|
msgid "Make support areas smaller at the bottom than at the overhang."
|
||||||
"Experimental feature: Make support areas smaller at the bottom than at the "
|
|
||||||
"overhang."
|
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: fdmprinter.def.json
|
#: fdmprinter.def.json
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -7,7 +7,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: Cura 4.1\n"
|
"Project-Id-Version: Cura 4.1\n"
|
||||||
"Report-Msgid-Bugs-To: r.dulek@ultimaker.com\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"
|
"PO-Revision-Date: 2017-08-11 14:31+0200\n"
|
||||||
"Last-Translator: Bothof <info@bothof.nl>\n"
|
"Last-Translator: Bothof <info@bothof.nl>\n"
|
||||||
"Language-Team: Finnish\n"
|
"Language-Team: Finnish\n"
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user