Merge remote-tracking branch 'upstream/master'

This commit is contained in:
NilsRo 2022-01-16 11:23:39 +01:00
commit 8cd317ecd6
759 changed files with 97662 additions and 91630 deletions

1
.gitignore vendored
View file

@ -60,6 +60,7 @@ plugins/CuraFlatPack
plugins/CuraRemoteSupport
plugins/ModelCutter
plugins/PrintProfileCreator
plugins/MultiPrintPlugin
#Build stuff
CMakeCache.txt

View file

@ -1,4 +1,4 @@
# Copyright (c) 2020 Ultimaker B.V.
# Copyright (c) 2021 Ultimaker B.V.
# Cura is released under the terms of the LGPLv3 or higher.
# ---------
@ -13,7 +13,7 @@ DEFAULT_CURA_DEBUG_MODE = False
# Each release has a fixed SDK version coupled with it. It doesn't make sense to make it configurable because, for
# example Cura 3.2 with SDK version 6.1 will not work. So the SDK version is hard-coded here and left out of the
# CuraVersion.py.in template.
CuraSDKVersion = "7.8.0"
CuraSDKVersion = "7.9.0"
try:
from cura.CuraVersion import CuraAppName # type: ignore
@ -46,6 +46,10 @@ except ImportError:
# Various convenience flags indicating what kind of Cura build it is.
__ENTERPRISE_VERSION_TYPE = "enterprise"
IsEnterpriseVersion = CuraBuildType.lower() == __ENTERPRISE_VERSION_TYPE
IsAlternateVersion = CuraBuildType.lower() not in [DEFAULT_CURA_BUILD_TYPE, __ENTERPRISE_VERSION_TYPE]
# NOTE: IsAlternateVersion is to make it possibile to have 'non-numbered' versions, at least as presented to the user.
# (Internally, it'll still have some sort of version-number, but the user is never meant to see it in the GUI).
# Warning: This will also change (some of) the icons/splash-screen to the 'work in progress' alternatives!
try:
from cura.CuraVersion import CuraAppDisplayName # type: ignore

View file

@ -66,6 +66,7 @@ class BuildVolume(SceneNode):
self._height = 0 # type: float
self._depth = 0 # type: float
self._shape = "" # type: str
self._scale_vector = Vector(1.0, 1.0, 1.0)
self._shader = None
@ -513,6 +514,13 @@ class BuildVolume(SceneNode):
self._disallowed_area_size = max(size, self._disallowed_area_size)
return mb.build()
def _updateScaleFactor(self) -> None:
if not self._global_container_stack:
return
scale_xy = 100.0 / max(100.0, self._global_container_stack.getProperty("material_shrinkage_percentage_xy", "value"))
scale_z = 100.0 / max(100.0, self._global_container_stack.getProperty("material_shrinkage_percentage_z" , "value"))
self._scale_vector = Vector(scale_xy, scale_xy, scale_z)
def rebuild(self) -> None:
"""Recalculates the build volume & disallowed areas."""
@ -554,9 +562,12 @@ class BuildVolume(SceneNode):
self._error_mesh = self._buildErrorMesh(min_w, max_w, min_h, max_h, min_d, max_d, disallowed_area_height)
self._updateScaleFactor()
self._volume_aabb = AxisAlignedBox(
minimum = Vector(min_w, min_h - 1.0, min_d),
maximum = Vector(max_w, max_h - self._raft_thickness - self._extra_z_clearance, max_d))
minimum = Vector(min_w, min_h - 1.0, min_d).scale(self._scale_vector),
maximum = Vector(max_w, max_h - self._raft_thickness - self._extra_z_clearance, max_d).scale(self._scale_vector)
)
bed_adhesion_size = self.getEdgeDisallowedSize()
@ -564,15 +575,15 @@ class BuildVolume(SceneNode):
# This is probably wrong in all other cases. TODO!
# The +1 and -1 is added as there is always a bit of extra room required to work properly.
scale_to_max_bounds = AxisAlignedBox(
minimum = Vector(min_w + bed_adhesion_size + 1, min_h, min_d + self._disallowed_area_size - bed_adhesion_size + 1),
maximum = Vector(max_w - bed_adhesion_size - 1, max_h - self._raft_thickness - self._extra_z_clearance, max_d - self._disallowed_area_size + bed_adhesion_size - 1)
minimum = Vector(min_w + bed_adhesion_size + 1, min_h, min_d + self._disallowed_area_size - bed_adhesion_size + 1).scale(self._scale_vector),
maximum = Vector(max_w - bed_adhesion_size - 1, max_h - self._raft_thickness - self._extra_z_clearance, max_d - self._disallowed_area_size + bed_adhesion_size - 1).scale(self._scale_vector)
)
self._application.getController().getScene()._maximum_bounds = scale_to_max_bounds # type: ignore
self.updateNodeBoundaryCheck()
def getBoundingBox(self):
def getBoundingBox(self) -> Optional[AxisAlignedBox]:
return self._volume_aabb
def getRaftThickness(self) -> float:
@ -633,18 +644,18 @@ class BuildVolume(SceneNode):
for extruder in extruders:
extruder.propertyChanged.connect(self._onSettingPropertyChanged)
self._width = self._global_container_stack.getProperty("machine_width", "value")
self._width = self._global_container_stack.getProperty("machine_width", "value") * self._scale_vector.x
machine_height = self._global_container_stack.getProperty("machine_height", "value")
if self._global_container_stack.getProperty("print_sequence", "value") == "one_at_a_time" and len(self._scene_objects) > 1:
self._height = min(self._global_container_stack.getProperty("gantry_height", "value"), machine_height)
if self._height < machine_height:
self._height = min(self._global_container_stack.getProperty("gantry_height", "value") * self._scale_vector.z, machine_height)
if self._height < (machine_height * self._scale_vector.z):
self._build_volume_message.show()
else:
self._build_volume_message.hide()
else:
self._height = self._global_container_stack.getProperty("machine_height", "value")
self._build_volume_message.hide()
self._depth = self._global_container_stack.getProperty("machine_depth", "value")
self._depth = self._global_container_stack.getProperty("machine_depth", "value") * self._scale_vector.y
self._shape = self._global_container_stack.getProperty("machine_shape", "value")
self._updateDisallowedAreas()
@ -678,18 +689,18 @@ class BuildVolume(SceneNode):
if setting_key == "print_sequence":
machine_height = self._global_container_stack.getProperty("machine_height", "value")
if self._application.getGlobalContainerStack().getProperty("print_sequence", "value") == "one_at_a_time" and len(self._scene_objects) > 1:
self._height = min(self._global_container_stack.getProperty("gantry_height", "value"), machine_height)
if self._height < machine_height:
self._height = min(self._global_container_stack.getProperty("gantry_height", "value") * self._scale_vector.z, machine_height)
if self._height < (machine_height * self._scale_vector.z):
self._build_volume_message.show()
else:
self._build_volume_message.hide()
else:
self._height = self._global_container_stack.getProperty("machine_height", "value")
self._height = self._global_container_stack.getProperty("machine_height", "value") * self._scale_vector.z
self._build_volume_message.hide()
update_disallowed_areas = True
# sometimes the machine size or shape settings are adjusted on the active machine, we should reflect this
if setting_key in self._machine_settings:
if setting_key in self._machine_settings or setting_key in self._material_size_settings:
self._updateMachineSizeProperties()
update_extra_z_clearance = True
update_disallowed_areas = True
@ -738,9 +749,10 @@ class BuildVolume(SceneNode):
def _updateMachineSizeProperties(self) -> None:
if not self._global_container_stack:
return
self._height = self._global_container_stack.getProperty("machine_height", "value")
self._width = self._global_container_stack.getProperty("machine_width", "value")
self._depth = self._global_container_stack.getProperty("machine_depth", "value")
self._updateScaleFactor()
self._height = self._global_container_stack.getProperty("machine_height", "value") * self._scale_vector.z
self._width = self._global_container_stack.getProperty("machine_width", "value") * self._scale_vector.x
self._depth = self._global_container_stack.getProperty("machine_depth", "value") * self._scale_vector.y
self._shape = self._global_container_stack.getProperty("machine_shape", "value")
def _updateDisallowedAreasAndRebuild(self):
@ -757,6 +769,14 @@ class BuildVolume(SceneNode):
self._extra_z_clearance = self._calculateExtraZClearance(ExtruderManager.getInstance().getUsedExtruderStacks())
self.rebuild()
def _scaleAreas(self, result_areas: List[Polygon]) -> None:
if self._global_container_stack is None:
return
for i, polygon in enumerate(result_areas):
result_areas[i] = polygon.scale(
100.0 / max(100.0, self._global_container_stack.getProperty("material_shrinkage_percentage_xy", "value"))
)
def _updateDisallowedAreas(self) -> None:
if not self._global_container_stack:
return
@ -812,9 +832,11 @@ class BuildVolume(SceneNode):
self._disallowed_areas = []
for extruder_id in result_areas:
self._scaleAreas(result_areas[extruder_id])
self._disallowed_areas.extend(result_areas[extruder_id])
self._disallowed_areas_no_brim = []
for extruder_id in result_areas_no_brim:
self._scaleAreas(result_areas_no_brim[extruder_id])
self._disallowed_areas_no_brim.extend(result_areas_no_brim[extruder_id])
def _computeDisallowedAreasPrinted(self, used_extruders):
@ -826,10 +848,10 @@ class BuildVolume(SceneNode):
"""
result = {}
adhesion_extruder = None #type: ExtruderStack
skirt_brim_extruder: ExtruderStack = None
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
if int(extruder.getProperty("extruder_nr", "value")) == int(self._global_container_stack.getProperty("skirt_brim_extruder_nr", "value")):
skirt_brim_extruder = extruder
result[extruder.getId()] = []
# Currently, the only normally printed object is the prime tower.
@ -843,11 +865,11 @@ class BuildVolume(SceneNode):
prime_tower_x = prime_tower_x - machine_width / 2 #Offset by half machine_width and _depth to put the origin in the front-left.
prime_tower_y = prime_tower_y + machine_depth / 2
if 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":
if skirt_brim_extruder is not None and self._global_container_stack.getProperty("prime_tower_brim_enable", "value") and self._global_container_stack.getProperty("adhesion_type", "value") != "raft":
brim_size = (
adhesion_extruder.getProperty("brim_line_count", "value") *
adhesion_extruder.getProperty("skirt_brim_line_width", "value") / 100.0 *
adhesion_extruder.getProperty("initial_layer_line_width_factor", "value")
skirt_brim_extruder.getProperty("brim_line_count", "value") *
skirt_brim_extruder.getProperty("skirt_brim_line_width", "value") / 100.0 *
skirt_brim_extruder.getProperty("initial_layer_line_width_factor", "value")
)
prime_tower_x -= brim_size
prime_tower_y += brim_size
@ -1078,18 +1100,18 @@ class BuildVolume(SceneNode):
# with the adhesion extruder, but it also prints one extra line by all other extruders. As such, the
# setting does *not* have a limit_to_extruder setting (which means that we can't ask the global extruder what
# the value is.
adhesion_extruder = self._global_container_stack.getProperty("adhesion_extruder_nr", "value")
skirt_brim_extruder_nr = self._global_container_stack.getProperty("skirt_brim_extruder_nr", "value")
try:
adhesion_stack = self._global_container_stack.extruderList[int(adhesion_extruder)]
skirt_brim_stack = self._global_container_stack.extruderList[int(skirt_brim_extruder_nr)]
except IndexError:
Logger.warning(f"Couldn't find extruder with index '{adhesion_extruder}', defaulting to 0 instead.")
adhesion_stack = self._global_container_stack.extruderList[0]
skirt_brim_line_width = adhesion_stack.getProperty("skirt_brim_line_width", "value")
Logger.warning(f"Couldn't find extruder with index '{skirt_brim_extruder_nr}', defaulting to 0 instead.")
skirt_brim_stack = self._global_container_stack.extruderList[0]
skirt_brim_line_width = skirt_brim_stack.getProperty("skirt_brim_line_width", "value")
initial_layer_line_width_factor = adhesion_stack.getProperty("initial_layer_line_width_factor", "value")
initial_layer_line_width_factor = skirt_brim_stack.getProperty("initial_layer_line_width_factor", "value")
# Use brim width if brim is enabled OR the prime tower has a brim.
if adhesion_type == "brim":
brim_line_count = self._global_container_stack.getProperty("brim_line_count", "value")
brim_line_count = skirt_brim_stack.getProperty("brim_line_count", "value")
bed_adhesion_size = skirt_brim_line_width * brim_line_count * initial_layer_line_width_factor / 100.0
for extruder_stack in used_extruders:
@ -1098,8 +1120,8 @@ class BuildVolume(SceneNode):
# We don't create an additional line for the extruder we're printing the brim with.
bed_adhesion_size -= skirt_brim_line_width * initial_layer_line_width_factor / 100.0
elif adhesion_type == "skirt":
skirt_distance = self._global_container_stack.getProperty("skirt_gap", "value")
skirt_line_count = self._global_container_stack.getProperty("skirt_line_count", "value")
skirt_distance = skirt_brim_stack.getProperty("skirt_gap", "value")
skirt_line_count = skirt_brim_stack.getProperty("skirt_line_count", "value")
bed_adhesion_size = skirt_distance + (
skirt_brim_line_width * skirt_line_count) * initial_layer_line_width_factor / 100.0
@ -1110,7 +1132,7 @@ class BuildVolume(SceneNode):
# We don't create an additional line for the extruder we're printing the skirt with.
bed_adhesion_size -= skirt_brim_line_width * initial_layer_line_width_factor / 100.0
elif adhesion_type == "raft":
bed_adhesion_size = self._global_container_stack.getProperty("raft_margin", "value")
bed_adhesion_size = self._global_container_stack.getProperty("raft_margin", "value") # Should refer to the raft extruder if set.
elif adhesion_type == "none":
bed_adhesion_size = 0
else:
@ -1198,6 +1220,7 @@ class BuildVolume(SceneNode):
_tower_settings = ["prime_tower_enable", "prime_tower_size", "prime_tower_position_x", "prime_tower_position_y", "prime_tower_brim_enable"]
_ooze_shield_settings = ["ooze_shield_enabled", "ooze_shield_dist"]
_distance_settings = ["infill_wipe_dist", "travel_avoid_distance", "support_offset", "support_enable", "travel_avoid_other_parts", "travel_avoid_supports", "wall_line_count", "wall_line_width_0", "wall_line_width_x"]
_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.
_limit_to_extruder_settings = ["wall_extruder_nr", "wall_0_extruder_nr", "wall_x_extruder_nr", "top_bottom_extruder_nr", "infill_extruder_nr", "support_infill_extruder_nr", "support_extruder_nr_layer_0", "support_bottom_extruder_nr", "support_roof_extruder_nr", "adhesion_extruder_nr"]
_disallowed_area_settings = _skirt_settings + _prime_settings + _tower_settings + _ooze_shield_settings + _distance_settings + _extruder_settings
_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", "skirt_brim_extruder_nr", "raft_base_extruder_nr", "raft_interface_extruder_nr", "raft_surface_extruder_nr", "adhesion_type"] #Settings that can affect which extruders are used.
_limit_to_extruder_settings = ["wall_extruder_nr", "wall_0_extruder_nr", "wall_x_extruder_nr", "top_bottom_extruder_nr", "infill_extruder_nr", "support_infill_extruder_nr", "support_extruder_nr_layer_0", "support_bottom_extruder_nr", "support_roof_extruder_nr", "skirt_brim_extruder_nr", "raft_base_extruder_nr", "raft_interface_extruder_nr", "raft_surface_extruder_nr"]
_material_size_settings = ["material_shrinkage_percentage", "material_shrinkage_percentage_xy", "material_shrinkage_percentage_z"]
_disallowed_area_settings = _skirt_settings + _prime_settings + _tower_settings + _ooze_shield_settings + _distance_settings + _extruder_settings + _material_size_settings

View file

@ -15,7 +15,7 @@ from typing import cast, Any
try:
from sentry_sdk.hub import Hub
from sentry_sdk.utils import event_from_exception
from sentry_sdk import configure_scope
from sentry_sdk import configure_scope, add_breadcrumb
with_sentry_sdk = True
except ImportError:
with_sentry_sdk = False
@ -424,6 +424,13 @@ class CrashHandler:
if with_sentry_sdk:
try:
hub = Hub.current
if not Logger.getLoggers():
# No loggers have been loaded yet, so we don't have any breadcrumbs :(
# So add them manually so we at least have some info...
add_breadcrumb(level = "info", message = "SentryLogging was not initialised yet")
for log_type, line in Logger.getUnloggedLines():
add_breadcrumb(message=line)
event, hint = event_from_exception((self.exception_type, self.value, self.traceback))
hub.capture_event(event, hint=hint)
hub.flush()

View file

@ -152,11 +152,11 @@ class CuraApplication(QtApplication):
def __init__(self, *args, **kwargs):
super().__init__(name = ApplicationMetadata.CuraAppName,
app_display_name = ApplicationMetadata.CuraAppDisplayName,
version = ApplicationMetadata.CuraVersion,
version = ApplicationMetadata.CuraVersion if not ApplicationMetadata.IsAlternateVersion else ApplicationMetadata.CuraBuildType,
api_version = ApplicationMetadata.CuraSDKVersion,
build_type = ApplicationMetadata.CuraBuildType,
is_debug_mode = ApplicationMetadata.CuraDebugMode,
tray_icon_name = "cura-icon-32.png",
tray_icon_name = "cura-icon-32.png" if not ApplicationMetadata.IsAlternateVersion else "cura-icon-32_wip.png",
**kwargs)
self.default_theme = "cura-light"
@ -484,7 +484,7 @@ class CuraApplication(QtApplication):
if not self.getIsHeadLess():
try:
self.setWindowIcon(QIcon(Resources.getPath(Resources.Images, "cura-icon.png")))
self.setWindowIcon(QIcon(Resources.getPath(Resources.Images, "cura-icon.png" if not ApplicationMetadata.IsAlternateVersion else "cura-icon_wip.png")))
except FileNotFoundError:
Logger.log("w", "Unable to find the window icon.")
@ -777,10 +777,14 @@ class CuraApplication(QtApplication):
lib_suffixes = {""}
for suffix in lib_suffixes:
self._plugin_registry.addPluginLocation(os.path.join(QtApplication.getInstallPrefix(), "lib" + suffix, "cura"))
if not hasattr(sys, "frozen"):
self._plugin_registry.addPluginLocation(os.path.join(os.path.abspath(os.path.dirname(__file__)), "..", "plugins"))
self._plugin_registry.preloaded_plugins.append("ConsoleLogger")
# Since it's possible to get crashes in code before the sentrylogger is loaded, we want to start this plugin
# as quickly as possible, as we might get unsolvable crash reports without it.
self._plugin_registry.preloaded_plugins.append("SentryLogger")
self._plugin_registry.loadPlugins()
if self.getBackend() is None:

View file

@ -15,7 +15,6 @@ class Layer:
self._height = 0.0
self._thickness = 0.0
self._polygons = [] # type: List[LayerPolygon]
self._vertex_count = 0
self._element_count = 0
@property
@ -30,10 +29,6 @@ class Layer:
def polygons(self) -> List[LayerPolygon]:
return self._polygons
@property
def vertexCount(self):
return self._vertex_count
@property
def elementCount(self):
return self._element_count
@ -48,40 +43,24 @@ class Layer:
result = 0
for polygon in self._polygons:
result += polygon.lineMeshVertexCount()
return result
def lineMeshElementCount(self) -> int:
result = 0
for polygon in self._polygons:
result += polygon.lineMeshElementCount()
return result
def lineMeshCumulativeTypeChangeCount(self, path: int) -> int:
""" The number of line-type changes in this layer up until #path.
See also LayerPolygon::cumulativeTypeChangeCounts.
:param path: The path-index up until which the cumulative changes are counted.
:return: The cumulative number of line-type changes up until this path.
"""
result = 0
for polygon in self._polygons:
num_counts = len(polygon.cumulativeTypeChangeCounts)
if path < num_counts:
return result + polygon.cumulativeTypeChangeCounts[path]
path -= num_counts
result += polygon.cumulativeTypeChangeCounts[num_counts - 1]
return result
def build(self, vertex_offset, index_offset, vertices, colors, line_dimensions, feedrates, extruders, line_types, indices):
result_vertex_offset = vertex_offset
result_index_offset = index_offset
self._vertex_count = 0
self._element_count = 0
for polygon in self._polygons:
polygon.build(result_vertex_offset, result_index_offset, vertices, colors, line_dimensions, feedrates, extruders, line_types, indices)
result_vertex_offset += polygon.lineMeshVertexCount()
result_index_offset += polygon.lineMeshElementCount()
self._vertex_count += polygon.vertexCount
self._element_count += polygon.elementCount
return result_vertex_offset, result_index_offset

View file

@ -63,7 +63,6 @@ class LayerDataBuilder(MeshBuilder):
feedrates = numpy.empty((vertex_count), numpy.float32)
extruders = numpy.empty((vertex_count), numpy.float32)
line_types = numpy.empty((vertex_count), numpy.float32)
vertex_indices = numpy.arange(0, vertex_count, 1, dtype = numpy.float32)
vertex_offset = 0
index_offset = 0
@ -110,12 +109,6 @@ class LayerDataBuilder(MeshBuilder):
"value": feedrates,
"opengl_name": "a_feedrate",
"opengl_type": "float"
},
# Can't use glDrawElements to index (due to oversight in (Py)Qt), can't use gl_PrimitiveID (due to legacy support):
"vertex_indices": {
"value": vertex_indices,
"opengl_name": "a_vertex_index",
"opengl_type": "float"
}
}

View file

@ -55,14 +55,6 @@ class LayerPolygon:
self._jump_mask = self.__jump_map[self._types]
self._jump_count = numpy.sum(self._jump_mask)
self._cumulative_type_change_counts = numpy.zeros(len(self._types)) # See the comment on the 'cumulativeTypeChangeCounts' property below.
last_type = self.types[0]
current_type_count = 0
for i in range(0, len(self._cumulative_type_change_counts)):
if last_type != self.types[i]:
current_type_count += 1
last_type = self.types[i]
self._cumulative_type_change_counts[i] = current_type_count
self._mesh_line_count = len(self._types) - self._jump_count
self._vertex_count = self._mesh_line_count + numpy.sum(self._types[1:] == self._types[:-1])
@ -187,10 +179,6 @@ class LayerPolygon:
def data(self):
return self._data
@property
def vertexCount(self):
return self._vertex_end - self._vertex_begin
@property
def elementCount(self):
return (self._index_end - self._index_begin) * 2 # The range of vertices multiplied by 2 since each vertex is used twice
@ -219,17 +207,6 @@ class LayerPolygon:
def jumpCount(self):
return self._jump_count
@property
def cumulativeTypeChangeCounts(self):
""" This polygon class stores with a vertex the type of the line to the next vertex. However, in other contexts,
other ways of representing this might be more suited to the task (for example, when a vertex can possibly only
have _one_ type, it's unavoidable to duplicate vertices when the type is changed). In such situations it's might
be useful to know how many times the type has changed, in order to keep the various vertex-indices aligned.
:return: The total times the line-type changes from one type to another within this LayerPolygon.
"""
return self._cumulative_type_change_counts
def getNormals(self) -> numpy.ndarray:
"""Calculate normals for the entire polygon using numpy.

View file

@ -106,11 +106,15 @@ class IntentCategoryModel(ListModel):
for category in available_categories:
qualities = IntentModel()
qualities.setIntentCategory(category)
try:
weight = list(IntentCategoryModel._get_translations().keys()).index(category)
except ValueError:
weight = 99
result.append({
"name": IntentCategoryModel.translation(category, "name", category),
"description": IntentCategoryModel.translation(category, "description", None),
"intent_category": category,
"weight": list(IntentCategoryModel._get_translations().keys()).index(category),
"weight": weight,
"qualities": qualities
})
result.sort(key = lambda k: k["weight"])

View file

@ -60,7 +60,7 @@ class MaterialManagementModel(QObject):
sync_materials_message.addAction(
"sync",
name = catalog.i18nc("@action:button", "Sync materials with printers"),
name = catalog.i18nc("@action:button", "Sync materials"),
icon = "",
description = "Sync your newly installed materials with your printers.",
button_align = Message.ActionButtonAlignment.ALIGN_RIGHT

View file

@ -361,8 +361,15 @@ class QualityManagementModel(ListModel):
"section_name": catalog.i18nc("@label", intent_translations.get(intent_category, {}).get("name", catalog.i18nc("@label", "Unknown"))),
})
# Sort by quality_type for each intent category
intent_translations_list = list(intent_translations)
result = sorted(result, key = lambda x: (list(intent_translations).index(x["intent_category"]), x["quality_type"]))
def getIntentWeight(intent_category):
try:
return intent_translations_list.index(intent_category)
except ValueError:
return 99
result = sorted(result, key = lambda x: (getIntentWeight(x["intent_category"]), x["quality_type"]))
item_list += result
# Create quality_changes group items

View file

@ -5,7 +5,7 @@ from typing import Type, TYPE_CHECKING, Optional, List
from io import BlockingIOError
import keyring
from keyring.backend import KeyringBackend
from keyring.errors import NoKeyringError, PasswordSetError, KeyringLocked
from keyring.errors import NoKeyringError, PasswordSetError, KeyringLocked, KeyringError
from UM.Logger import Logger
@ -53,6 +53,10 @@ class KeyringAttribute:
self._store_secure = False
Logger.log("w", "The password retrieved from the keyring cannot be used because it contains characters that cannot be decoded.")
return getattr(instance, self._name)
except KeyringError:
self._store_secure = False
Logger.logException("w", "Unknown keyring error.")
return getattr(instance, self._name)
else:
return getattr(instance, self._name)

View file

@ -42,7 +42,7 @@ class PrintJobOutputModel(QObject):
self._preview_image = None # type: Optional[QImage]
@pyqtProperty("QStringList", notify=compatibleMachineFamiliesChanged)
def compatibleMachineFamilies(self):
def compatibleMachineFamilies(self) -> List[str]:
# Hack; Some versions of cluster will return a family more than once...
return list(set(self._compatible_machine_families))
@ -77,11 +77,11 @@ class PrintJobOutputModel(QObject):
self._configuration = configuration
self.configurationChanged.emit()
@pyqtProperty(str, notify=ownerChanged)
def owner(self):
@pyqtProperty(str, notify = ownerChanged)
def owner(self) -> str:
return self._owner
def updateOwner(self, owner):
def updateOwner(self, owner: str) -> None:
if self._owner != owner:
self._owner = owner
self.ownerChanged.emit()
@ -132,7 +132,7 @@ class PrintJobOutputModel(QObject):
@pyqtProperty(float, notify = timeElapsedChanged)
def progress(self) -> float:
result = float(self.timeElapsed) / max(self.timeTotal, 1.0) # Prevent a division by zero exception.
result = float(self.timeElapsed) / max(self.timeTotal, 1.0) # Prevent a division by zero exception.
return min(result, 1.0) # Never get a progress past 1.0
@pyqtProperty(str, notify=stateChanged)
@ -151,12 +151,12 @@ class PrintJobOutputModel(QObject):
return False
return True
def updateTimeTotal(self, new_time_total):
def updateTimeTotal(self, new_time_total: int) -> None:
if self._time_total != new_time_total:
self._time_total = new_time_total
self.timeTotalChanged.emit()
def updateTimeElapsed(self, new_time_elapsed):
def updateTimeElapsed(self, new_time_elapsed: int) -> None:
if self._time_elapsed != new_time_elapsed:
self._time_elapsed = new_time_elapsed
self.timeElapsedChanged.emit()

View file

@ -259,11 +259,20 @@ class ExtruderManager(QObject):
if support_roof_enabled:
used_extruder_stack_ids.add(self.extruderIds[self.extruderValueWithDefault(str(global_stack.getProperty("support_roof_extruder_nr", "value")))])
# The platform adhesion extruder. Not used if using none.
if global_stack.getProperty("adhesion_type", "value") != "none" or (
global_stack.getProperty("prime_tower_brim_enable", "value") and
global_stack.getProperty("adhesion_type", "value") != 'raft'):
extruder_str_nr = str(global_stack.getProperty("adhesion_extruder_nr", "value"))
# The platform adhesion extruders.
used_adhesion_extruders = set()
adhesion_type = global_stack.getProperty("adhesion_type", "value")
if adhesion_type == "skirt" and (global_stack.getProperty("skirt_line_count", "value") > 0 or global_stack.getProperty("skirt_brim_minimal_length", "value") > 0):
used_adhesion_extruders.add("skirt_brim_extruder_nr") # There's a skirt.
if (adhesion_type == "brim" or global_stack.getProperty("prime_tower_brim_enable", "value")) and (global_stack.getProperty("brim_line_count", "value") > 0 or global_stack.getProperty("skirt_brim_minimal_length", "value") > 0):
used_adhesion_extruders.add("skirt_brim_extruder_nr") # There's a brim or prime tower brim.
if adhesion_type == "raft":
used_adhesion_extruders.add("raft_base_extruder_nr")
used_adhesion_extruders.add("raft_interface_extruder_nr")
if global_stack.getProperty("raft_surface_layers", "value") > 0:
used_adhesion_extruders.add("raft_surface_extruder_nr")
for extruder_setting in used_adhesion_extruders:
extruder_str_nr = str(global_stack.getProperty(extruder_setting, "value"))
if extruder_str_nr == "-1":
extruder_str_nr = self._application.getMachineManager().defaultExtruderPosition
if extruder_str_nr in self.extruderIds:
@ -286,8 +295,11 @@ class ExtruderManager(QObject):
global_stack = application.getGlobalContainerStack()
# Starts with the adhesion extruder.
if global_stack.getProperty("adhesion_type", "value") != "none":
return global_stack.getProperty("adhesion_extruder_nr", "value")
adhesion_type = global_stack.getProperty("adhesion_type", "value")
if adhesion_type in {"skirt", "brim"}:
return global_stack.getProperty("skirt_brim_extruder_nr", "value")
if adhesion_type == "raft":
return global_stack.getProperty("raft_base_extruder_nr", "value")
# No adhesion? Well maybe there is still support brim.
if (global_stack.getProperty("support_enable", "value") or global_stack.getProperty("support_structure", "value") == "tree") and global_stack.getProperty("support_brim_enable", "value"):
@ -422,7 +434,10 @@ class ExtruderManager(QObject):
Logger.log("w", "Could not find the variant %s", active_variant_name)
return True
active_variant_node = machine_node.variants[active_variant_name]
active_material_node = active_variant_node.materials[extruder_stack.material.getMetaDataEntry("base_file")]
try:
active_material_node = active_variant_node.materials[extruder_stack.material.getMetaDataEntry("base_file")]
except KeyError: # The material in this stack is not a supported material (e.g. wrong filament diameter, as loaded from a project file).
return False
active_material_node_qualities = active_material_node.qualities
if not active_material_node_qualities:

View file

@ -1535,7 +1535,7 @@ class MachineManager(QObject):
machine_node = ContainerTree.getInstance().machines.get(machine_definition_id)
variant_node = machine_node.variants.get(variant_name)
if variant_node is None:
Logger.error("There is no variant with the name {variant_name}.")
Logger.error(f"There is no variant with the name {variant_name}.")
return
self.setVariant(position, variant_node)

View file

@ -17,7 +17,9 @@ class CuraSplashScreen(QSplashScreen):
self._scale = 0.7
self._version_y_offset = 0 # when extra visual elements are in the background image, move version text down
if ApplicationMetadata.IsEnterpriseVersion:
if ApplicationMetadata.IsAlternateVersion:
splash_image = QPixmap(Resources.getPath(Resources.Images, "cura_wip.png"))
elif ApplicationMetadata.IsEnterpriseVersion:
splash_image = QPixmap(Resources.getPath(Resources.Images, "cura_enterprise.png"))
self._version_y_offset = 26
else:
@ -70,7 +72,7 @@ class CuraSplashScreen(QSplashScreen):
font = QFont() # Using system-default font here
font.setPixelSize(18)
painter.setFont(font)
painter.drawText(60, 70 + self._version_y_offset, round(330 * self._scale), round(230 * self._scale), Qt.AlignLeft | Qt.AlignTop, version[0])
painter.drawText(60, 70 + self._version_y_offset, round(330 * self._scale), round(230 * self._scale), Qt.AlignLeft | Qt.AlignTop, version[0] if not ApplicationMetadata.IsAlternateVersion else ApplicationMetadata.CuraBuildType)
if len(version) > 1:
font.setPixelSize(16)
painter.setFont(font)

View file

@ -46,7 +46,9 @@ class TextManager(QObject):
line = line.replace("[", "")
line = line.replace("]", "")
open_version = Version(line)
if open_version > Version([14, 99, 99]): # Bit of a hack: We released the 15.x.x versions before 2.x
if open_version < Version([0, 0, 1]): # Something went wrong with parsing, assume non-numerical alternate version that should be on top.
open_version = Version([99, 99, 99])
if Version([14, 99, 99]) < open_version < Version([16, 0, 0]): # Bit of a hack: We released the 15.x.x versions before 2.x
open_version = Version([0, open_version.getMinor(), open_version.getRevision(), open_version.getPostfixVersion()])
open_header = ""
change_logs_dict[open_version] = collections.OrderedDict()
@ -66,7 +68,9 @@ class TextManager(QObject):
text_version = version
if version < Version([1, 0, 0]): # Bit of a hack: We released the 15.x.x versions before 2.x
text_version = Version([15, version.getMinor(), version.getRevision(), version.getPostfixVersion()])
content += "<h1>" + str(text_version) + "</h1><br>"
if version > Version([99, 0, 0]): # Leave it out altogether if it was originally a non-numbered version.
text_version = ""
content += ("<h1>" + str(text_version) + "</h1><br>") if text_version else ""
content += ""
for change in change_logs_dict[version]:
if str(change) != "":

View file

@ -71,7 +71,7 @@ class CloudMaterialSync(QObject):
sync_materials_message.addAction(
"sync",
name = catalog.i18nc("@action:button", "Sync materials with printers"),
name = catalog.i18nc("@action:button", "Sync materials"),
icon = "",
description = "Sync your newly installed materials with your printers.",
button_align = Message.ActionButtonAlignment.ALIGN_RIGHT

View file

@ -1,6 +1,6 @@
#!/usr/bin/env python3
# Copyright (c) 2020 Ultimaker B.V.
# Copyright (c) 2022 Ultimaker B.V.
# Cura is released under the terms of the LGPLv3 or higher.
# Remove the working directory from sys.path.
@ -15,6 +15,9 @@ if "" in sys.path:
import argparse
import faulthandler
import os
if sys.platform != "linux": # Turns out the Linux build _does_ use this, but we're not making an Enterprise release for that system anyway.
os.environ["QT_PLUGIN_PATH"] = "" # Security workaround: Don't need it, and introduces an attack vector, so set to nul.
os.environ["QML2_IMPORT_PATH"] = "" # Security workaround: Don't need it, and introduces an attack vector, so set to nul.
from PyQt5.QtNetwork import QSslConfiguration, QSslSocket
@ -48,6 +51,8 @@ if with_sentry_sdk:
sentry_env = "development" # Master is always a development version.
elif "beta" in ApplicationMetadata.CuraVersion or "BETA" in ApplicationMetadata.CuraVersion:
sentry_env = "beta"
elif "alpha" in ApplicationMetadata.CuraVersion or "ALPHA" in ApplicationMetadata.CuraVersion:
sentry_env = "alpha"
try:
if ApplicationMetadata.CuraVersion.split(".")[2] == "99":
sentry_env = "nightly"

View file

@ -379,7 +379,9 @@ class ThreeMFWorkspaceReader(WorkspaceReader):
# - the global stack DOESN'T exist but some/all of the extruder stacks exist
# To simplify this, only check if the global stack exists or not
global_stack_id = self._stripFileToId(global_stack_file)
serialized = archive.open(global_stack_file).read().decode("utf-8")
serialized = GlobalStack._updateSerialized(serialized, global_stack_file)
machine_name = self._getMachineNameFromSerializedStack(serialized)
self._machine_info.metadata_dict = self._getMetaDataDictFromSerializedStack(serialized)

View file

@ -50,6 +50,7 @@ Item
Layout.fillWidth: true
implicitHeight: createNewProjectButton.height
leftPadding: searchIcon.width + UM.Theme.getSize("default_margin").width * 2
focus: true
onTextEdited: manager.projectFilter = text //Update the search filter when editing this text field.

View file

@ -479,7 +479,15 @@ class PauseAtHeight(Script):
else:
Logger.log("w", "No previous feedrate found in gcode, feedrate for next layer(s) might be incorrect")
prepend_gcode += self.putValue(M = 82) + "\n"
extrusion_mode_string = "absolute"
extrusion_mode_numeric = 82
relative_extrusion = Application.getInstance().getGlobalContainerStack().getProperty("relative_extrusion", "value")
if relative_extrusion:
extrusion_mode_string = "relative"
extrusion_mode_numeric = 83
prepend_gcode += self.putValue(M = extrusion_mode_numeric) + " ; switch back to " + extrusion_mode_string + " E values\n"
# reset extrude value to pre pause value
prepend_gcode += self.putValue(G = 92, E = current_e) + "\n"

View file

@ -11,7 +11,6 @@ try:
except ImportError:
pass
from typing import Optional
import os
class SentryLogger(LogOutput):

View file

@ -1,4 +1,4 @@
# Copyright (c) 2020 Ultimaker B.V.
# Copyright (c) 2021 Ultimaker B.V.
# Cura is released under the terms of the LGPLv3 or higher.
from UM.Math.Color import Color
@ -142,7 +142,6 @@ class SimulationPass(RenderPass):
if self._layer_view._current_layer_num > -1 and ((not self._layer_view._only_show_top_layers) or (not self._layer_view.getCompatibilityMode())):
start = 0
end = 0
current_polygon_offset = 0
element_counts = layer_data.getElementCounts()
for layer in sorted(element_counts.keys()):
# In the current layer, we show just the indicated paths
@ -156,26 +155,18 @@ class SimulationPass(RenderPass):
if index >= polygon.data.size // 3 - offset:
index -= polygon.data.size // 3 - offset
offset = 1 # This is to avoid the first point when there is more than one polygon, since has the same value as the last point in the previous polygon
current_polygon_offset += 1
continue
# The head position is calculated and translated
head_position = Vector(polygon.data[index+offset][0], polygon.data[index+offset][1], polygon.data[index+offset][2]) + node.getWorldPosition()
break
break
end += layer_data.getLayer(layer).vertexCount
if layer < self._layer_view._minimum_layer_num:
start = end
if self._layer_view._minimum_layer_num > layer:
start += element_counts[layer]
end += element_counts[layer]
# Calculate the range of paths in the last layer. -- The type-change count is needed to keep the
# vertex-indices aligned between the two different ways we represent polygons here.
# Since there is one type per line, that could give a vertex two different types, if it's a vertex
# where a type-chage occurs. However, the shader expects vertices to have only one type. In order to
# fix this, those vertices are duplicated. This introduces a discrepancy that we have to take into
# account, which is done by the type-change-count.
layer = layer_data.getLayer(self._layer_view._current_layer_num)
type_change_count = 0 if layer is None else layer.lineMeshCumulativeTypeChangeCount(max(self._layer_view._current_path_num - 1, 0))
# Calculate the range of paths in the last layer
current_layer_start = end
current_layer_end = current_layer_start + self._layer_view._current_path_num + current_polygon_offset + type_change_count
current_layer_end = end + self._layer_view._current_path_num * 2 # Because each point is used twice
# This uses glDrawRangeElements internally to only draw a certain range of lines.
# All the layers but the current selected layer are rendered first

View file

@ -13,11 +13,9 @@ vertex =
attribute highp vec4 a_vertex;
attribute lowp vec4 a_color;
attribute lowp vec4 a_material_color;
attribute highp float a_vertex_index;
varying lowp vec4 v_color;
varying float v_line_type;
varying highp float v_vertex_index;
void main()
{
@ -30,7 +28,6 @@ vertex =
}
v_line_type = a_line_type;
v_vertex_index = a_vertex_index;
}
fragment =
@ -43,21 +40,14 @@ fragment =
#endif // GL_ES
varying lowp vec4 v_color;
varying float v_line_type;
varying highp float v_vertex_index;
uniform int u_show_travel_moves;
uniform int u_show_helpers;
uniform int u_show_skin;
uniform int u_show_infill;
uniform highp vec2 u_drawRange;
void main()
{
if (u_drawRange.x >= 0.0 && u_drawRange.y >= 0.0 && (v_vertex_index < u_drawRange.x || v_vertex_index > u_drawRange.y))
{
discard;
}
if ((u_show_travel_moves == 0) && (v_line_type >= 7.5) && (v_line_type <= 9.5)) { // actually, 8 and 9
// discard movements
discard;
@ -87,6 +77,77 @@ fragment =
gl_FragColor = v_color;
}
vertex41core =
#version 410
uniform highp mat4 u_modelMatrix;
uniform highp mat4 u_viewMatrix;
uniform highp mat4 u_projectionMatrix;
uniform lowp float u_active_extruder;
uniform lowp float u_shade_factor;
uniform highp int u_layer_view_type;
in highp float a_extruder;
in highp float a_line_type;
in highp vec4 a_vertex;
in lowp vec4 a_color;
in lowp vec4 a_material_color;
out lowp vec4 v_color;
out float v_line_type;
void main()
{
gl_Position = u_projectionMatrix * u_viewMatrix * u_modelMatrix * a_vertex;
v_color = a_color;
if ((a_line_type != 8) && (a_line_type != 9)) {
v_color = (a_extruder == u_active_extruder) ? v_color : vec4(u_shade_factor * v_color.rgb, v_color.a);
}
v_line_type = a_line_type;
}
fragment41core =
#version 410
in lowp vec4 v_color;
in float v_line_type;
out vec4 frag_color;
uniform int u_show_travel_moves;
uniform int u_show_helpers;
uniform int u_show_skin;
uniform int u_show_infill;
void main()
{
if ((u_show_travel_moves == 0) && (v_line_type >= 7.5) && (v_line_type <= 9.5)) { // actually, 8 and 9
// discard movements
discard;
}
// helpers: 4, 5, 7, 10
if ((u_show_helpers == 0) && (
((v_line_type >= 3.5) && (v_line_type <= 4.5)) ||
((v_line_type >= 6.5) && (v_line_type <= 7.5)) ||
((v_line_type >= 9.5) && (v_line_type <= 10.5)) ||
((v_line_type >= 4.5) && (v_line_type <= 5.5))
)) {
discard;
}
// skin: 1, 2, 3
if ((u_show_skin == 0) && (
(v_line_type >= 0.5) && (v_line_type <= 3.5)
)) {
discard;
}
// infill:
if ((u_show_infill == 0) && (v_line_type >= 5.5) && (v_line_type <= 6.5)) {
// discard movements
discard;
}
frag_color = v_color;
}
[defaults]
u_active_extruder = 0.0
u_shade_factor = 0.60
@ -98,13 +159,10 @@ u_show_helpers = 1
u_show_skin = 1
u_show_infill = 1
u_drawRange = [-1.0, -1.0]
[bindings]
u_modelMatrix = model_matrix
u_viewMatrix = view_matrix
u_projectionMatrix = projection_matrix
u_drawRange = draw_range
[attributes]
a_vertex = vertex
@ -112,4 +170,3 @@ a_color = color
a_extruder = extruder
a_line_type = line_type
a_material_color = material_color
a_vertex_index = vertex_index

View file

@ -27,7 +27,6 @@ vertex41core =
in highp float a_extruder;
in highp float a_prev_line_type;
in highp float a_line_type;
in highp float a_vertex_index;
in highp float a_feedrate;
in highp float a_thickness;
@ -38,9 +37,8 @@ vertex41core =
out lowp vec2 v_line_dim;
out highp int v_extruder;
out highp mat4 v_extruder_opacity;
out highp float v_prev_line_type;
out highp float v_line_type;
out highp float v_index;
out float v_prev_line_type;
out float v_line_type;
out lowp vec4 f_color;
out highp vec3 f_vertex;
@ -170,7 +168,6 @@ vertex41core =
v_extruder = int(a_extruder);
v_prev_line_type = a_prev_line_type;
v_line_type = a_line_type;
v_index = a_vertex_index;
v_extruder_opacity = u_extruder_opacity;
// for testing without geometry shader
@ -194,8 +191,6 @@ geometry41core =
uniform int u_show_infill;
uniform int u_show_starts;
uniform highp vec2 u_drawRange;
layout(lines) in;
layout(triangle_strip, max_vertices = 40) out;
@ -207,7 +202,6 @@ geometry41core =
in mat4 v_extruder_opacity[];
in float v_prev_line_type[];
in float v_line_type[];
in float v_index[];
out vec4 f_color;
out vec3 f_normal;
@ -237,10 +231,6 @@ geometry41core =
float size_x;
float size_y;
if (u_drawRange[0] >= 0.0 && u_drawRange[1] >= 0.0 && (v_index[0] < u_drawRange[0] || v_index[0] >= u_drawRange[1]))
{
return;
}
if ((v_extruder_opacity[0][int(mod(v_extruder[0], 4))][v_extruder[0] / 4] == 0.0) && (v_line_type[0] != 8) && (v_line_type[0] != 9)) {
return;
}
@ -437,15 +427,12 @@ u_max_feedrate = 1
u_min_thickness = 0
u_max_thickness = 1
u_drawRange = [-1.0, -1.0]
[bindings]
u_modelMatrix = model_matrix
u_viewMatrix = view_matrix
u_projectionMatrix = projection_matrix
u_normalMatrix = normal_matrix
u_lightPosition = light_0_position
u_drawRange = draw_range
[attributes]
a_vertex = vertex
@ -458,4 +445,3 @@ a_prev_line_type = prev_line_type
a_line_type = line_type
a_feedrate = feedrate
a_thickness = thickness
a_vertex_index = vertex_index

View file

@ -18,7 +18,6 @@ vertex41core =
in highp vec2 a_line_dim; // line width and thickness
in highp float a_extruder;
in highp float a_line_type;
in highp float a_vertex_index;
out lowp vec4 v_color;
@ -27,8 +26,7 @@ vertex41core =
out lowp vec2 v_line_dim;
out highp int v_extruder;
out highp mat4 v_extruder_opacity;
out highp float v_line_type;
out highp float v_index;
out float v_line_type;
out lowp vec4 f_color;
out highp vec3 f_vertex;
@ -49,7 +47,6 @@ vertex41core =
v_line_dim = a_line_dim;
v_extruder = int(a_extruder);
v_line_type = a_line_type;
v_index = a_vertex_index;
v_extruder_opacity = u_extruder_opacity;
// for testing without geometry shader
@ -70,8 +67,6 @@ geometry41core =
uniform int u_show_skin;
uniform int u_show_infill;
uniform highp vec2 u_drawRange;
layout(lines) in;
layout(triangle_strip, max_vertices = 26) out;
@ -82,7 +77,6 @@ geometry41core =
in int v_extruder[];
in mat4 v_extruder_opacity[];
in float v_line_type[];
in float v_index[];
out vec4 f_color;
out vec3 f_normal;
@ -112,10 +106,6 @@ geometry41core =
float size_x;
float size_y;
if (u_drawRange[0] >= 0.0 && u_drawRange[1] >= 0.0 && (v_index[0] < u_drawRange[0] || v_index[0] >= u_drawRange[1]))
{
return;
}
if ((v_extruder_opacity[0][int(mod(v_extruder[0], 4))][v_extruder[0] / 4] == 0.0) && (v_line_type[0] != 8) && (v_line_type[0] != 9)) {
return;
}
@ -278,15 +268,12 @@ u_show_helpers = 1
u_show_skin = 1
u_show_infill = 1
u_drawRange = [-1.0, -1.0]
[bindings]
u_modelMatrix = model_matrix
u_viewMatrix = view_matrix
u_projectionMatrix = projection_matrix
u_normalMatrix = normal_matrix
u_lightPosition = light_0_position
u_drawRange = draw_range
[attributes]
a_vertex = vertex
@ -297,4 +284,3 @@ a_line_dim = line_dim
a_extruder = extruder
a_material_color = material_color
a_line_type = line_type
a_vertex_index = vertex_index

View file

@ -13,11 +13,9 @@ vertex =
attribute highp vec4 a_vertex;
attribute lowp vec4 a_color;
attribute lowp vec4 a_material_color;
attribute highp float a_vertex_index;
varying lowp vec4 v_color;
varying float v_line_type;
varying highp float v_vertex_index;
void main()
{
@ -30,7 +28,6 @@ vertex =
// }
v_line_type = a_line_type;
v_vertex_index = a_vertex_index;
}
fragment =
@ -43,21 +40,14 @@ fragment =
#endif // GL_ES
varying lowp vec4 v_color;
varying float v_line_type;
varying highp float v_vertex_index;
uniform int u_show_travel_moves;
uniform int u_show_helpers;
uniform int u_show_skin;
uniform int u_show_infill;
uniform highp vec2 u_drawRange;
void main()
{
if (u_drawRange.x >= 0.0 && u_drawRange.y >= 0.0 && (v_vertex_index < u_drawRange.x || v_vertex_index > u_drawRange.y))
{
discard;
}
if ((u_show_travel_moves == 0) && (v_line_type >= 7.5) && (v_line_type <= 9.5))
{ // actually, 8 and 9
// discard movements
@ -91,6 +81,78 @@ fragment =
gl_FragColor = v_color;
}
vertex41core =
#version 410
uniform highp mat4 u_modelMatrix;
uniform highp mat4 u_viewMatrix;
uniform highp mat4 u_projectionMatrix;
uniform lowp float u_active_extruder;
uniform lowp float u_shade_factor;
uniform highp int u_layer_view_type;
in highp float a_extruder;
in highp float a_line_type;
in highp vec4 a_vertex;
in lowp vec4 a_color;
in lowp vec4 a_material_color;
out lowp vec4 v_color;
out float v_line_type;
void main()
{
gl_Position = u_projectionMatrix * u_viewMatrix * u_modelMatrix * a_vertex;
v_color = vec4(0.4, 0.4, 0.4, 0.9); // default color for not current layer
// if ((a_line_type != 8) && (a_line_type != 9)) {
// v_color = (a_extruder == u_active_extruder) ? v_color : vec4(u_shade_factor * v_color.rgb, v_color.a);
// }
v_line_type = a_line_type;
}
fragment41core =
#version 410
in lowp vec4 v_color;
in float v_line_type;
out vec4 frag_color;
uniform int u_show_travel_moves;
uniform int u_show_helpers;
uniform int u_show_skin;
uniform int u_show_infill;
void main()
{
if ((u_show_travel_moves == 0) && (v_line_type >= 7.5) && (v_line_type <= 9.5)) { // actually, 8 and 9
// discard movements
discard;
}
// helpers: 4, 5, 7, 10, 11
if ((u_show_helpers == 0) && (
((v_line_type >= 3.5) && (v_line_type <= 4.5)) ||
((v_line_type >= 6.5) && (v_line_type <= 7.5)) ||
((v_line_type >= 9.5) && (v_line_type <= 10.5)) ||
((v_line_type >= 4.5) && (v_line_type <= 5.5)) ||
((v_line_type >= 10.5) && (v_line_type <= 11.5))
)) {
discard;
}
// skin: 1, 2, 3
if ((u_show_skin == 0) && (
(v_line_type >= 0.5) && (v_line_type <= 3.5)
)) {
discard;
}
// infill:
if ((u_show_infill == 0) && (v_line_type >= 5.5) && (v_line_type <= 6.5)) {
// discard movements
discard;
}
frag_color = v_color;
}
[defaults]
u_active_extruder = 0.0
u_shade_factor = 0.60
@ -102,13 +164,10 @@ u_show_helpers = 1
u_show_skin = 1
u_show_infill = 1
u_drawRange = [-1.0, -1.0]
[bindings]
u_modelMatrix = model_matrix
u_viewMatrix = view_matrix
u_projectionMatrix = projection_matrix
u_drawRange = draw_range
[attributes]
a_vertex = vertex
@ -116,4 +175,3 @@ a_color = color
a_extruder = extruder
a_line_type = line_type
a_material_color = material_color
a_vertex_index = vertex_index

View file

@ -2,7 +2,7 @@
"name": "Simulation View",
"author": "Ultimaker B.V.",
"version": "1.0.1",
"description": "Provides the Simulation view.",
"description": "Provides the preview of sliced layerdata.",
"api": 7,
"i18n-catalog": "cura"
}

View file

@ -3,6 +3,6 @@
"author": "Ultimaker B.V.",
"version": "1.0.0",
"description": "Provides support for reading Ultimaker Format Packages.",
"supported_sdk_versions": ["7.8.0"],
"supported_sdk_versions": ["7.9.0"],
"i18n-catalog": "cura"
}

View file

@ -73,6 +73,12 @@ Item
switch (printJob.state)
{
case "wait_cleanup":
// This hack was removed previously. Then we found out that we don't get back 'aborted_wait_cleanup'
// for the UM2+C it seems. Will communicate this to other teams, in the mean time, put this back.
if (printJob.timeTotal > printJob.timeElapsed)
{
return catalog.i18nc("@label:status", "Aborted");
}
return catalog.i18nc("@label:status", "Finished");
case "finished":
return catalog.i18nc("@label:status", "Finished");

View file

@ -40,7 +40,7 @@ class ClusterPrintJobStatus(BaseModel):
configuration_changes_required: List[
Union[Dict[str, Any], ClusterPrintJobConfigurationChange]] = None,
build_plate: Union[Dict[str, Any], ClusterBuildPlate] = None,
compatible_machine_families: List[str] = None,
compatible_machine_families: Optional[List[str]] = None,
impediments_to_printing: List[Union[Dict[str, Any], ClusterPrintJobImpediment]] = None,
preview_url: Optional[str] = None,
**kwargs) -> None:
@ -97,7 +97,7 @@ class ClusterPrintJobStatus(BaseModel):
configuration_changes_required) \
if configuration_changes_required else []
self.build_plate = self.parseModel(ClusterBuildPlate, build_plate) if build_plate else None
self.compatible_machine_families = compatible_machine_families if compatible_machine_families else []
self.compatible_machine_families = compatible_machine_families if compatible_machine_families is not None else []
self.impediments_to_printing = self.parseModels(ClusterPrintJobImpediment, impediments_to_printing) \
if impediments_to_printing else []
@ -130,8 +130,10 @@ class ClusterPrintJobStatus(BaseModel):
model.updateConfiguration(self._createConfigurationModel())
model.updateTimeTotal(self.time_total)
model.updateTimeElapsed(self.time_elapsed)
model.updateOwner(self.owner)
if self.time_elapsed is not None:
model.updateTimeElapsed(self.time_elapsed)
if self.owner is not None:
model.updateOwner(self.owner)
model.updateState(self.status)
model.setCompatibleMachineFamilies(self.compatible_machine_families)

View file

@ -0,0 +1,118 @@
# Copyright (c) 2021 Ultimaker B.V.
# Cura is released under the terms of the LGPLv3 or higher.
import configparser
from typing import Tuple, List
import io
from UM.VersionUpgrade import VersionUpgrade
_removed_settings = {
"travel_compensate_overlapping_walls_enabled",
"travel_compensate_overlapping_walls_0_enabled",
"travel_compensate_overlapping_walls_x_enabled",
"fill_perimeter_gaps",
"wall_min_flow",
"wall_min_flow_retract",
"speed_equalize_flow_enabled",
"speed_equalize_flow_min"
}
class VersionUpgrade49to50(VersionUpgrade):
def upgradePreferences(self, serialized: str, filename: str) -> Tuple[List[str], List[str]]:
"""
Upgrades preferences to remove from the visibility list the settings that were removed in this version.
It also changes the preferences to have the new version number.
This removes any settings that were removed in the new Cura version.
:param serialized: The original contents of the preferences file.
:param filename: The file name of the preferences file.
:return: A list of new file names, and a list of the new contents for
those files.
"""
parser = configparser.ConfigParser(interpolation = None)
parser.read_string(serialized)
# Update version number.
parser["metadata"]["setting_version"] = "18"
# Remove deleted settings from the visible settings list.
if "general" in parser and "visible_settings" in parser["general"]:
visible_settings = set(parser["general"]["visible_settings"].split(";"))
for removed in _removed_settings:
if removed in visible_settings:
visible_settings.remove(removed)
# Replace Outer Before Inner Walls with equivalent.
if "outer_inset_first" in visible_settings:
visible_settings.remove("outer_inset_first")
visible_settings.add("inset_direction")
parser["general"]["visible_settings"] = ";".join(visible_settings)
result = io.StringIO()
parser.write(result)
return [filename], [result.getvalue()]
def upgradeInstanceContainer(self, serialized: str, filename: str) -> Tuple[List[str], List[str]]:
"""
Upgrades instance containers to remove the settings that were removed in this version.
It also changes the instance containers to have the new version number.
This removes any settings that were removed in the new Cura version and updates settings that need to be updated
with a new value.
:param serialized: The original contents of the instance container.
:param filename: The original file name of the instance container.
:return: A list of new file names, and a list of the new contents for
those files.
"""
parser = configparser.ConfigParser(interpolation = None, comment_prefixes = ())
parser.read_string(serialized)
# Update version number.
parser["metadata"]["setting_version"] = "18"
if "values" in parser:
# Remove deleted settings from the instance containers.
for removed in _removed_settings:
if removed in parser["values"]:
del parser["values"][removed]
# Replace Outer Before Inner Walls with equivalent setting.
if "outer_inset_first" in parser["values"]:
old_value = parser["values"]["outer_inset_first"]
if old_value.startswith("="): # Was already a formula.
old_value = old_value[1:]
parser["values"]["inset_direction"] = f"='outside_in' if ({old_value}) else 'inside_out'" # Makes it work both with plain setting values and formulas.
# Disable Fuzzy Skin as it doesn't work with with the libArachne walls
if "magic_fuzzy_skin_enabled" in parser["values"]:
parser["values"]["magic_fuzzy_skin_enabled"] = "False"
result = io.StringIO()
parser.write(result)
return [filename], [result.getvalue()]
def upgradeStack(self, serialized: str, filename: str) -> Tuple[List[str], List[str]]:
"""
Upgrades stacks to have the new version number.
:param serialized: The original contents of the stack.
:param filename: The original file name of the stack.
:return: A list of new file names, and a list of the new contents for
those files.
"""
parser = configparser.ConfigParser(interpolation = None)
parser.read_string(serialized)
# Update version number.
if "metadata" not in parser:
parser["metadata"] = {}
parser["general"]["version"] = "5"
parser["metadata"]["setting_version"] = "18"
result = io.StringIO()
parser.write(result)
return [filename], [result.getvalue()]

View file

@ -0,0 +1,61 @@
# Copyright (c) 2020 Ultimaker B.V.
# Cura is released under the terms of the LGPLv3 or higher.
from typing import Any, Dict, TYPE_CHECKING
from . import VersionUpgrade49to50
if TYPE_CHECKING:
from UM.Application import Application
upgrade = VersionUpgrade49to50.VersionUpgrade49to50()
def getMetaData() -> Dict[str, Any]:
return { # Since there is no VersionUpgrade from 48 to 49 yet, upgrade the 48 profiles to 50.
"version_upgrade": {
# From To Upgrade function
("preferences", 6000016): ("preferences", 6000018, upgrade.upgradePreferences),
("machine_stack", 5000016): ("machine_stack", 5000018, upgrade.upgradeStack),
("extruder_train", 5000016): ("extruder_train", 5000018, upgrade.upgradeStack),
("machine_stack", 4000018): ("machine_stack", 5000018, upgrade.upgradeStack), # We made a mistake in the arachne beta 1
("extruder_train", 4000018): ("extruder_train", 5000018, upgrade.upgradeStack), # We made a mistake in the arachne beta 1
("definition_changes", 4000016): ("definition_changes", 4000018, upgrade.upgradeInstanceContainer),
("quality_changes", 4000016): ("quality_changes", 4000018, upgrade.upgradeInstanceContainer),
("quality", 4000016): ("quality", 4000018, upgrade.upgradeInstanceContainer),
("user", 4000016): ("user", 4000018, upgrade.upgradeInstanceContainer),
},
"sources": {
"preferences": {
"get_version": upgrade.getCfgVersion,
"location": {"."}
},
"machine_stack": {
"get_version": upgrade.getCfgVersion,
"location": {"./machine_instances"}
},
"extruder_train": {
"get_version": upgrade.getCfgVersion,
"location": {"./extruders"}
},
"definition_changes": {
"get_version": upgrade.getCfgVersion,
"location": {"./definition_changes"}
},
"quality_changes": {
"get_version": upgrade.getCfgVersion,
"location": {"./quality_changes"}
},
"quality": {
"get_version": upgrade.getCfgVersion,
"location": {"./quality"}
},
"user": {
"get_version": upgrade.getCfgVersion,
"location": {"./user"}
}
}
}
def register(app: "Application") -> Dict[str, Any]:
return {"version_upgrade": upgrade}

View file

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

View file

@ -6,7 +6,7 @@
"display_name": "3MF Reader",
"description": "Provides support for reading 3MF files.",
"package_version": "1.0.1",
"sdk_version": "7.8.0",
"sdk_version": "7.9.0",
"website": "https://ultimaker.com",
"author": {
"author_id": "UltimakerPackages",
@ -23,7 +23,7 @@
"display_name": "3MF Writer",
"description": "Provides support for writing 3MF files.",
"package_version": "1.0.1",
"sdk_version": "7.8.0",
"sdk_version": "7.9.0",
"website": "https://ultimaker.com",
"author": {
"author_id": "UltimakerPackages",
@ -40,7 +40,7 @@
"display_name": "AMF Reader",
"description": "Provides support for reading AMF files.",
"package_version": "1.0.0",
"sdk_version": "7.8.0",
"sdk_version": "7.9.0",
"website": "https://ultimaker.com",
"author": {
"author_id": "fieldOfView",
@ -57,7 +57,7 @@
"display_name": "Cura Backups",
"description": "Backup and restore your configuration.",
"package_version": "1.2.0",
"sdk_version": "7.8.0",
"sdk_version": "7.9.0",
"website": "https://ultimaker.com",
"author": {
"author_id": "UltimakerPackages",
@ -74,7 +74,7 @@
"display_name": "CuraEngine Backend",
"description": "Provides the link to the CuraEngine slicing backend.",
"package_version": "1.0.1",
"sdk_version": "7.8.0",
"sdk_version": "7.9.0",
"website": "https://ultimaker.com",
"author": {
"author_id": "UltimakerPackages",
@ -91,7 +91,7 @@
"display_name": "Cura Profile Reader",
"description": "Provides support for importing Cura profiles.",
"package_version": "1.0.1",
"sdk_version": "7.8.0",
"sdk_version": "7.9.0",
"website": "https://ultimaker.com",
"author": {
"author_id": "UltimakerPackages",
@ -108,7 +108,7 @@
"display_name": "Cura Profile Writer",
"description": "Provides support for exporting Cura profiles.",
"package_version": "1.0.1",
"sdk_version": "7.8.0",
"sdk_version": "7.9.0",
"website": "https://ultimaker.com",
"author": {
"author_id": "UltimakerPackages",
@ -125,7 +125,7 @@
"display_name": "Ultimaker Digital Library",
"description": "Connects to the Digital Library, allowing Cura to open files from and save files to the Digital Library.",
"package_version": "1.1.0",
"sdk_version": "7.8.0",
"sdk_version": "7.9.0",
"website": "https://ultimaker.com",
"author": {
"author_id": "UltimakerPackages",
@ -142,7 +142,7 @@
"display_name": "Firmware Update Checker",
"description": "Checks for firmware updates.",
"package_version": "1.0.1",
"sdk_version": "7.8.0",
"sdk_version": "7.9.0",
"website": "https://ultimaker.com",
"author": {
"author_id": "UltimakerPackages",
@ -159,7 +159,7 @@
"display_name": "Firmware Updater",
"description": "Provides a machine actions for updating firmware.",
"package_version": "1.0.1",
"sdk_version": "7.8.0",
"sdk_version": "7.9.0",
"website": "https://ultimaker.com",
"author": {
"author_id": "UltimakerPackages",
@ -176,7 +176,7 @@
"display_name": "Compressed G-code Reader",
"description": "Reads g-code from a compressed archive.",
"package_version": "1.0.1",
"sdk_version": "7.8.0",
"sdk_version": "7.9.0",
"website": "https://ultimaker.com",
"author": {
"author_id": "UltimakerPackages",
@ -193,7 +193,7 @@
"display_name": "Compressed G-code Writer",
"description": "Writes g-code to a compressed archive.",
"package_version": "1.0.1",
"sdk_version": "7.8.0",
"sdk_version": "7.9.0",
"website": "https://ultimaker.com",
"author": {
"author_id": "UltimakerPackages",
@ -210,7 +210,7 @@
"display_name": "G-Code Profile Reader",
"description": "Provides support for importing profiles from g-code files.",
"package_version": "1.0.1",
"sdk_version": "7.8.0",
"sdk_version": "7.9.0",
"website": "https://ultimaker.com",
"author": {
"author_id": "UltimakerPackages",
@ -227,7 +227,7 @@
"display_name": "G-Code Reader",
"description": "Allows loading and displaying G-code files.",
"package_version": "1.0.1",
"sdk_version": "7.8.0",
"sdk_version": "7.9.0",
"website": "https://ultimaker.com",
"author": {
"author_id": "VictorLarchenko",
@ -244,7 +244,7 @@
"display_name": "G-Code Writer",
"description": "Writes g-code to a file.",
"package_version": "1.0.1",
"sdk_version": "7.8.0",
"sdk_version": "7.9.0",
"website": "https://ultimaker.com",
"author": {
"author_id": "UltimakerPackages",
@ -261,7 +261,7 @@
"display_name": "Image Reader",
"description": "Enables ability to generate printable geometry from 2D image files.",
"package_version": "1.0.1",
"sdk_version": "7.8.0",
"sdk_version": "7.9.0",
"website": "https://ultimaker.com",
"author": {
"author_id": "UltimakerPackages",
@ -278,7 +278,7 @@
"display_name": "Legacy Cura Profile Reader",
"description": "Provides support for importing profiles from legacy Cura versions.",
"package_version": "1.0.1",
"sdk_version": "7.8.0",
"sdk_version": "7.9.0",
"website": "https://ultimaker.com",
"author": {
"author_id": "UltimakerPackages",
@ -295,7 +295,7 @@
"display_name": "Machine Settings Action",
"description": "Provides a way to change machine settings (such as build volume, nozzle size, etc.).",
"package_version": "1.0.1",
"sdk_version": "7.8.0",
"sdk_version": "7.9.0",
"website": "https://ultimaker.com",
"author": {
"author_id": "fieldOfView",
@ -312,7 +312,7 @@
"display_name": "Model Checker",
"description": "Checks models and print configuration for possible printing issues and give suggestions.",
"package_version": "1.0.1",
"sdk_version": "7.8.0",
"sdk_version": "7.9.0",
"website": "https://ultimaker.com",
"author": {
"author_id": "UltimakerPackages",
@ -329,7 +329,7 @@
"display_name": "Monitor Stage",
"description": "Provides a monitor stage in Cura.",
"package_version": "1.0.1",
"sdk_version": "7.8.0",
"sdk_version": "7.9.0",
"website": "https://ultimaker.com",
"author": {
"author_id": "UltimakerPackages",
@ -346,7 +346,7 @@
"display_name": "Per-Object Settings Tool",
"description": "Provides the per-model settings.",
"package_version": "1.0.1",
"sdk_version": "7.8.0",
"sdk_version": "7.9.0",
"website": "https://ultimaker.com",
"author": {
"author_id": "UltimakerPackages",
@ -363,7 +363,7 @@
"display_name": "Post Processing",
"description": "Extension that allows for user created scripts for post processing.",
"package_version": "2.2.1",
"sdk_version": "7.8.0",
"sdk_version": "7.9.0",
"website": "https://ultimaker.com",
"author": {
"author_id": "UltimakerPackages",
@ -380,7 +380,7 @@
"display_name": "Prepare Stage",
"description": "Provides a prepare stage in Cura.",
"package_version": "1.0.1",
"sdk_version": "7.8.0",
"sdk_version": "7.9.0",
"website": "https://ultimaker.com",
"author": {
"author_id": "UltimakerPackages",
@ -397,7 +397,7 @@
"display_name": "Preview Stage",
"description": "Provides a preview stage in Cura.",
"package_version": "1.0.1",
"sdk_version": "7.8.0",
"sdk_version": "7.9.0",
"website": "https://ultimaker.com",
"author": {
"author_id": "UltimakerPackages",
@ -414,7 +414,7 @@
"display_name": "Removable Drive Output Device",
"description": "Provides removable drive hotplugging and writing support.",
"package_version": "1.0.1",
"sdk_version": "7.8.0",
"sdk_version": "7.9.0",
"website": "https://ultimaker.com",
"author": {
"author_id": "UltimakerPackages",
@ -431,7 +431,7 @@
"display_name": "Sentry Logger",
"description": "Logs certain events so that they can be used by the crash reporter",
"package_version": "1.0.0",
"sdk_version": "7.8.0",
"sdk_version": "7.9.0",
"website": "https://ultimaker.com",
"author": {
"author_id": "UltimakerPackages",
@ -448,7 +448,7 @@
"display_name": "Simulation View",
"description": "Provides the Simulation view.",
"package_version": "1.0.1",
"sdk_version": "7.8.0",
"sdk_version": "7.9.0",
"website": "https://ultimaker.com",
"author": {
"author_id": "UltimakerPackages",
@ -465,7 +465,7 @@
"display_name": "Slice Info",
"description": "Submits anonymous slice info. Can be disabled through preferences.",
"package_version": "1.0.1",
"sdk_version": "7.8.0",
"sdk_version": "7.9.0",
"website": "https://ultimaker.com",
"author": {
"author_id": "UltimakerPackages",
@ -482,7 +482,7 @@
"display_name": "Solid View",
"description": "Provides a normal solid mesh view.",
"package_version": "1.0.1",
"sdk_version": "7.8.0",
"sdk_version": "7.9.0",
"website": "https://ultimaker.com",
"author": {
"author_id": "UltimakerPackages",
@ -499,7 +499,7 @@
"display_name": "Support Eraser Tool",
"description": "Creates an eraser mesh to block the printing of support in certain places.",
"package_version": "1.0.1",
"sdk_version": "7.8.0",
"sdk_version": "7.9.0",
"website": "https://ultimaker.com",
"author": {
"author_id": "UltimakerPackages",
@ -516,7 +516,7 @@
"display_name": "Trimesh Reader",
"description": "Provides support for reading model files.",
"package_version": "1.0.0",
"sdk_version": "7.8.0",
"sdk_version": "7.9.0",
"website": "https://ultimaker.com",
"author": {
"author_id": "UltimakerPackages",
@ -533,7 +533,7 @@
"display_name": "Toolbox",
"description": "Find, manage and install new Cura packages.",
"package_version": "1.0.1",
"sdk_version": "7.8.0",
"sdk_version": "7.9.0",
"website": "https://ultimaker.com",
"author": {
"author_id": "UltimakerPackages",
@ -550,7 +550,7 @@
"display_name": "UFP Reader",
"description": "Provides support for reading Ultimaker Format Packages.",
"package_version": "1.0.0",
"sdk_version": "7.8.0",
"sdk_version": "7.9.0",
"website": "https://ultimaker.com",
"author": {
"author_id": "UltimakerPackages",
@ -567,7 +567,7 @@
"display_name": "UFP Writer",
"description": "Provides support for writing Ultimaker Format Packages.",
"package_version": "1.0.1",
"sdk_version": "7.8.0",
"sdk_version": "7.9.0",
"website": "https://ultimaker.com",
"author": {
"author_id": "UltimakerPackages",
@ -584,7 +584,7 @@
"display_name": "Ultimaker Machine Actions",
"description": "Provides machine actions for Ultimaker machines (such as bed leveling wizard, selecting upgrades, etc.).",
"package_version": "1.0.1",
"sdk_version": "7.8.0",
"sdk_version": "7.9.0",
"website": "https://ultimaker.com",
"author": {
"author_id": "UltimakerPackages",
@ -601,7 +601,7 @@
"display_name": "UM3 Network Printing",
"description": "Manages network connections to Ultimaker 3 printers.",
"package_version": "1.0.1",
"sdk_version": "7.8.0",
"sdk_version": "7.9.0",
"website": "https://ultimaker.com",
"author": {
"author_id": "UltimakerPackages",
@ -618,7 +618,7 @@
"display_name": "USB Printing",
"description": "Accepts G-Code and sends them to a printer. Plugin can also update firmware.",
"package_version": "1.0.2",
"sdk_version": "7.8.0",
"sdk_version": "7.9.0",
"website": "https://ultimaker.com",
"author": {
"author_id": "UltimakerPackages",
@ -635,7 +635,7 @@
"display_name": "Version Upgrade 2.1 to 2.2",
"description": "Upgrades configurations from Cura 2.1 to Cura 2.2.",
"package_version": "1.0.1",
"sdk_version": "7.8.0",
"sdk_version": "7.9.0",
"website": "https://ultimaker.com",
"author": {
"author_id": "UltimakerPackages",
@ -652,7 +652,7 @@
"display_name": "Version Upgrade 2.2 to 2.4",
"description": "Upgrades configurations from Cura 2.2 to Cura 2.4.",
"package_version": "1.0.1",
"sdk_version": "7.8.0",
"sdk_version": "7.9.0",
"website": "https://ultimaker.com",
"author": {
"author_id": "UltimakerPackages",
@ -669,7 +669,7 @@
"display_name": "Version Upgrade 2.5 to 2.6",
"description": "Upgrades configurations from Cura 2.5 to Cura 2.6.",
"package_version": "1.0.1",
"sdk_version": "7.8.0",
"sdk_version": "7.9.0",
"website": "https://ultimaker.com",
"author": {
"author_id": "UltimakerPackages",
@ -686,7 +686,7 @@
"display_name": "Version Upgrade 2.6 to 2.7",
"description": "Upgrades configurations from Cura 2.6 to Cura 2.7.",
"package_version": "1.0.1",
"sdk_version": "7.8.0",
"sdk_version": "7.9.0",
"website": "https://ultimaker.com",
"author": {
"author_id": "UltimakerPackages",
@ -703,7 +703,7 @@
"display_name": "Version Upgrade 2.7 to 3.0",
"description": "Upgrades configurations from Cura 2.7 to Cura 3.0.",
"package_version": "1.0.1",
"sdk_version": "7.8.0",
"sdk_version": "7.9.0",
"website": "https://ultimaker.com",
"author": {
"author_id": "UltimakerPackages",
@ -720,7 +720,7 @@
"display_name": "Version Upgrade 3.0 to 3.1",
"description": "Upgrades configurations from Cura 3.0 to Cura 3.1.",
"package_version": "1.0.1",
"sdk_version": "7.8.0",
"sdk_version": "7.9.0",
"website": "https://ultimaker.com",
"author": {
"author_id": "UltimakerPackages",
@ -737,7 +737,7 @@
"display_name": "Version Upgrade 3.2 to 3.3",
"description": "Upgrades configurations from Cura 3.2 to Cura 3.3.",
"package_version": "1.0.1",
"sdk_version": "7.8.0",
"sdk_version": "7.9.0",
"website": "https://ultimaker.com",
"author": {
"author_id": "UltimakerPackages",
@ -754,7 +754,7 @@
"display_name": "Version Upgrade 3.3 to 3.4",
"description": "Upgrades configurations from Cura 3.3 to Cura 3.4.",
"package_version": "1.0.1",
"sdk_version": "7.8.0",
"sdk_version": "7.9.0",
"website": "https://ultimaker.com",
"author": {
"author_id": "UltimakerPackages",
@ -771,7 +771,7 @@
"display_name": "Version Upgrade 3.4 to 3.5",
"description": "Upgrades configurations from Cura 3.4 to Cura 3.5.",
"package_version": "1.0.1",
"sdk_version": "7.8.0",
"sdk_version": "7.9.0",
"website": "https://ultimaker.com",
"author": {
"author_id": "UltimakerPackages",
@ -788,7 +788,7 @@
"display_name": "Version Upgrade 3.5 to 4.0",
"description": "Upgrades configurations from Cura 3.5 to Cura 4.0.",
"package_version": "1.0.0",
"sdk_version": "7.8.0",
"sdk_version": "7.9.0",
"website": "https://ultimaker.com",
"author": {
"author_id": "UltimakerPackages",
@ -805,7 +805,7 @@
"display_name": "Version Upgrade 4.0 to 4.1",
"description": "Upgrades configurations from Cura 4.0 to Cura 4.1.",
"package_version": "1.0.1",
"sdk_version": "7.8.0",
"sdk_version": "7.9.0",
"website": "https://ultimaker.com",
"author": {
"author_id": "UltimakerPackages",
@ -822,7 +822,7 @@
"display_name": "Version Upgrade 4.1 to 4.2",
"description": "Upgrades configurations from Cura 4.1 to Cura 4.2.",
"package_version": "1.0.0",
"sdk_version": "7.8.0",
"sdk_version": "7.9.0",
"website": "https://ultimaker.com",
"author": {
"author_id": "UltimakerPackages",
@ -839,7 +839,7 @@
"display_name": "Version Upgrade 4.2 to 4.3",
"description": "Upgrades configurations from Cura 4.2 to Cura 4.3.",
"package_version": "1.0.0",
"sdk_version": "7.8.0",
"sdk_version": "7.9.0",
"website": "https://ultimaker.com",
"author": {
"author_id": "UltimakerPackages",
@ -856,7 +856,7 @@
"display_name": "Version Upgrade 4.3 to 4.4",
"description": "Upgrades configurations from Cura 4.3 to Cura 4.4.",
"package_version": "1.0.0",
"sdk_version": "7.8.0",
"sdk_version": "7.9.0",
"website": "https://ultimaker.com",
"author": {
"author_id": "UltimakerPackages",
@ -873,7 +873,7 @@
"display_name": "Version Upgrade 4.4 to 4.5",
"description": "Upgrades configurations from Cura 4.4 to Cura 4.5.",
"package_version": "1.0.0",
"sdk_version": "7.8.0",
"sdk_version": "7.9.0",
"website": "https://ultimaker.com",
"author": {
"author_id": "UltimakerPackages",
@ -890,7 +890,7 @@
"display_name": "Version Upgrade 4.5 to 4.6",
"description": "Upgrades configurations from Cura 4.5 to Cura 4.6.",
"package_version": "1.0.0",
"sdk_version": "7.8.0",
"sdk_version": "7.9.0",
"website": "https://ultimaker.com",
"author": {
"author_id": "UltimakerPackages",
@ -907,7 +907,7 @@
"display_name": "Version Upgrade 4.6.0 to 4.6.2",
"description": "Upgrades configurations from Cura 4.6.0 to Cura 4.6.2.",
"package_version": "1.0.0",
"sdk_version": "7.8.0",
"sdk_version": "7.9.0",
"website": "https://ultimaker.com",
"author": {
"author_id": "UltimakerPackages",
@ -924,7 +924,7 @@
"display_name": "Version Upgrade 4.6.2 to 4.7",
"description": "Upgrades configurations from Cura 4.6.2 to Cura 4.7.",
"package_version": "1.0.0",
"sdk_version": "7.8.0",
"sdk_version": "7.9.0",
"website": "https://ultimaker.com",
"author": {
"author_id": "UltimakerPackages",
@ -941,7 +941,7 @@
"display_name": "Version Upgrade 4.7.0 to 4.8.0",
"description": "Upgrades configurations from Cura 4.7.0 to Cura 4.8.0",
"package_version": "1.0.0",
"sdk_version": "7.8.0",
"sdk_version": "7.9.0",
"website": "https://ultimaker.com",
"author": {
"author_id": "UltimakerPackages",
@ -958,7 +958,7 @@
"display_name": "Version Upgrade 4.8.0 to 4.9.0",
"description": "Upgrades configurations from Cura 4.8.0 to Cura 4.9.0",
"package_version": "1.0.0",
"sdk_version": "7.8.0",
"sdk_version": "7.9.0",
"website": "https://ultimaker.com",
"author": {
"author_id": "UltimakerPackages",
@ -976,7 +976,7 @@
"description": "Upgrades configurations from Cura 4.9 to Cura 4.10",
"package_version": "1.0.0",
"sdk_version": 7,
"sdk_version_semver": "7.8.0",
"sdk_version_semver": "7.9.0",
"website": "https://ultimaker.com",
"author": {
"author_id": "UltimakerPackages",
@ -1011,7 +1011,7 @@
"display_name": "X3D Reader",
"description": "Provides support for reading X3D files.",
"package_version": "1.0.1",
"sdk_version": "7.8.0",
"sdk_version": "7.9.0",
"website": "https://ultimaker.com",
"author": {
"author_id": "SevaAlekseyev",
@ -1028,7 +1028,7 @@
"display_name": "XML Material Profiles",
"description": "Provides capabilities to read and write XML-based material profiles.",
"package_version": "1.0.1",
"sdk_version": "7.8.0",
"sdk_version": "7.9.0",
"website": "https://ultimaker.com",
"author": {
"author_id": "UltimakerPackages",
@ -1045,7 +1045,7 @@
"display_name": "X-Ray View",
"description": "Provides the X-Ray view.",
"package_version": "1.0.1",
"sdk_version": "7.8.0",
"sdk_version": "7.9.0",
"website": "https://ultimaker.com",
"author": {
"author_id": "UltimakerPackages",
@ -1062,7 +1062,7 @@
"display_name": "Generic ABS",
"description": "The generic ABS profile which other profiles can be based upon.",
"package_version": "1.4.0",
"sdk_version": "7.8.0",
"sdk_version": "7.9.0",
"website": "https://github.com/Ultimaker/fdm_materials",
"author": {
"author_id": "Generic",
@ -1080,7 +1080,7 @@
"display_name": "Generic BAM",
"description": "The generic BAM profile which other profiles can be based upon.",
"package_version": "1.4.0",
"sdk_version": "7.8.0",
"sdk_version": "7.9.0",
"website": "https://github.com/Ultimaker/fdm_materials",
"author": {
"author_id": "Generic",
@ -1098,7 +1098,7 @@
"display_name": "Generic CFF CPE",
"description": "The generic CFF CPE profile which other profiles can be based upon.",
"package_version": "1.4.0",
"sdk_version": "7.8.0",
"sdk_version": "7.9.0",
"website": "https://github.com/Ultimaker/fdm_materials",
"author": {
"author_id": "Generic",
@ -1116,7 +1116,7 @@
"display_name": "Generic CFF PA",
"description": "The generic CFF PA profile which other profiles can be based upon.",
"package_version": "1.4.0",
"sdk_version": "7.8.0",
"sdk_version": "7.9.0",
"website": "https://github.com/Ultimaker/fdm_materials",
"author": {
"author_id": "Generic",
@ -1134,7 +1134,7 @@
"display_name": "Generic CPE",
"description": "The generic CPE profile which other profiles can be based upon.",
"package_version": "1.4.0",
"sdk_version": "7.8.0",
"sdk_version": "7.9.0",
"website": "https://github.com/Ultimaker/fdm_materials",
"author": {
"author_id": "Generic",
@ -1152,7 +1152,7 @@
"display_name": "Generic CPE+",
"description": "The generic CPE+ profile which other profiles can be based upon.",
"package_version": "1.4.0",
"sdk_version": "7.8.0",
"sdk_version": "7.9.0",
"website": "https://github.com/Ultimaker/fdm_materials",
"author": {
"author_id": "Generic",
@ -1170,7 +1170,7 @@
"display_name": "Generic GFF CPE",
"description": "The generic GFF CPE profile which other profiles can be based upon.",
"package_version": "1.4.0",
"sdk_version": "7.8.0",
"sdk_version": "7.9.0",
"website": "https://github.com/Ultimaker/fdm_materials",
"author": {
"author_id": "Generic",
@ -1188,7 +1188,7 @@
"display_name": "Generic GFF PA",
"description": "The generic GFF PA profile which other profiles can be based upon.",
"package_version": "1.4.0",
"sdk_version": "7.8.0",
"sdk_version": "7.9.0",
"website": "https://github.com/Ultimaker/fdm_materials",
"author": {
"author_id": "Generic",
@ -1206,7 +1206,7 @@
"display_name": "Generic HIPS",
"description": "The generic HIPS profile which other profiles can be based upon.",
"package_version": "1.4.0",
"sdk_version": "7.8.0",
"sdk_version": "7.9.0",
"website": "https://github.com/Ultimaker/fdm_materials",
"author": {
"author_id": "Generic",
@ -1224,7 +1224,7 @@
"display_name": "Generic Nylon",
"description": "The generic Nylon profile which other profiles can be based upon.",
"package_version": "1.4.0",
"sdk_version": "7.8.0",
"sdk_version": "7.9.0",
"website": "https://github.com/Ultimaker/fdm_materials",
"author": {
"author_id": "Generic",
@ -1242,7 +1242,7 @@
"display_name": "Generic PC",
"description": "The generic PC profile which other profiles can be based upon.",
"package_version": "1.4.0",
"sdk_version": "7.8.0",
"sdk_version": "7.9.0",
"website": "https://github.com/Ultimaker/fdm_materials",
"author": {
"author_id": "Generic",
@ -1260,7 +1260,7 @@
"display_name": "Generic PETG",
"description": "The generic PETG profile which other profiles can be based upon.",
"package_version": "1.4.0",
"sdk_version": "7.8.0",
"sdk_version": "7.9.0",
"website": "https://github.com/Ultimaker/fdm_materials",
"author": {
"author_id": "Generic",
@ -1278,7 +1278,7 @@
"display_name": "Generic PLA",
"description": "The generic PLA profile which other profiles can be based upon.",
"package_version": "1.4.0",
"sdk_version": "7.8.0",
"sdk_version": "7.9.0",
"website": "https://github.com/Ultimaker/fdm_materials",
"author": {
"author_id": "Generic",
@ -1296,7 +1296,7 @@
"display_name": "Generic PP",
"description": "The generic PP profile which other profiles can be based upon.",
"package_version": "1.4.0",
"sdk_version": "7.8.0",
"sdk_version": "7.9.0",
"website": "https://github.com/Ultimaker/fdm_materials",
"author": {
"author_id": "Generic",
@ -1314,7 +1314,7 @@
"display_name": "Generic PVA",
"description": "The generic PVA profile which other profiles can be based upon.",
"package_version": "1.4.0",
"sdk_version": "7.8.0",
"sdk_version": "7.9.0",
"website": "https://github.com/Ultimaker/fdm_materials",
"author": {
"author_id": "Generic",
@ -1332,7 +1332,7 @@
"display_name": "Generic Tough PLA",
"description": "The generic Tough PLA profile which other profiles can be based upon.",
"package_version": "1.4.0",
"sdk_version": "7.8.0",
"sdk_version": "7.9.0",
"website": "https://github.com/Ultimaker/fdm_materials",
"author": {
"author_id": "Generic",
@ -1350,7 +1350,7 @@
"display_name": "Generic TPU",
"description": "The generic TPU profile which other profiles can be based upon.",
"package_version": "1.4.0",
"sdk_version": "7.8.0",
"sdk_version": "7.9.0",
"website": "https://github.com/Ultimaker/fdm_materials",
"author": {
"author_id": "Generic",
@ -1368,7 +1368,7 @@
"display_name": "Dagoma Chromatik PLA",
"description": "Filament testé et approuvé pour les imprimantes 3D Dagoma. Chromatik est l'idéal pour débuter et suivre les tutoriels premiers pas. Il vous offre qualité et résistance pour chacune de vos impressions.",
"package_version": "1.0.1",
"sdk_version": "7.8.0",
"sdk_version": "7.9.0",
"website": "https://dagoma.fr/boutique/filaments.html",
"author": {
"author_id": "Dagoma",
@ -1385,7 +1385,7 @@
"display_name": "FABtotum ABS",
"description": "This material is easy to be extruded but it is not the simplest to use. It is one of the most used in 3D printing to get very well finished objects. It is not sustainable and its smoke can be dangerous if inhaled. The reason to prefer this filament to PLA is mainly because of its precision and mechanical specs. ABS (for plastic) stands for Acrylonitrile Butadiene Styrene and it is a thermoplastic which is widely used in everyday objects. It can be printed with any FFF 3D printer which can get to high temperatures as it must be extruded in a range between 220° and 245°, so its compatible with all versions of the FABtotum Personal fabricator.",
"package_version": "1.4.0",
"sdk_version": "7.8.0",
"sdk_version": "7.9.0",
"website": "https://store.fabtotum.com/eu/products/filaments.html?filament_type=40",
"author": {
"author_id": "FABtotum",
@ -1402,7 +1402,7 @@
"display_name": "FABtotum Nylon",
"description": "When 3D printing started this material was not listed among the extrudable filaments. It is flexible as well as resistant to tractions. It is well known for its uses in textile but also in industries which require a strong and flexible material. There are different kinds of Nylon: 3D printing mostly uses Nylon 6 and Nylon 6.6, which are the most common. It requires higher temperatures to be printed, so a 3D printer must be able to reach them (around 240°C): the FABtotum, of course, can.",
"package_version": "1.4.0",
"sdk_version": "7.8.0",
"sdk_version": "7.9.0",
"website": "https://store.fabtotum.com/eu/products/filaments.html?filament_type=53",
"author": {
"author_id": "FABtotum",
@ -1419,7 +1419,7 @@
"display_name": "FABtotum PLA",
"description": "It is the most common filament used for 3D printing. It is studied to be bio-degradable as it comes from corn starchs sugar mainly. It is completely made of renewable sources and has no footprint on polluting. PLA stands for PolyLactic Acid and it is a thermoplastic that today is still considered the easiest material to be 3D printed. It can be extruded at lower temperatures: the standard range of FABtotums one is between 185° and 195°.",
"package_version": "1.4.0",
"sdk_version": "7.8.0",
"sdk_version": "7.9.0",
"website": "https://store.fabtotum.com/eu/products/filaments.html?filament_type=39",
"author": {
"author_id": "FABtotum",
@ -1436,7 +1436,7 @@
"display_name": "FABtotum TPU Shore 98A",
"description": "",
"package_version": "1.4.0",
"sdk_version": "7.8.0",
"sdk_version": "7.9.0",
"website": "https://store.fabtotum.com/eu/products/filaments.html?filament_type=66",
"author": {
"author_id": "FABtotum",
@ -1453,7 +1453,7 @@
"display_name": "Fiberlogy HD PLA",
"description": "With our HD PLA you have many more options. You can use this material in two ways. Choose the one you like best. You can use it as a normal PLA and get prints characterized by a very good adhesion between the layers and high precision. You can also make your prints acquire similar properties to that of ABS better impact resistance and high temperature resistance. All you need is an oven. Yes, an oven! By annealing our HD PLA in an oven, in accordance with the manual, you will avoid all the inconveniences of printing with ABS, such as unpleasant odour or hazardous fumes.",
"package_version": "1.0.1",
"sdk_version": "7.8.0",
"sdk_version": "7.9.0",
"website": "http://fiberlogy.com/en/fiberlogy-filaments/filament-hd-pla/",
"author": {
"author_id": "Fiberlogy",
@ -1470,7 +1470,7 @@
"display_name": "Filo3D PLA",
"description": "Fast, safe and reliable printing. PLA is ideal for the fast and reliable printing of parts and prototypes with a great surface quality.",
"package_version": "1.0.1",
"sdk_version": "7.8.0",
"sdk_version": "7.9.0",
"website": "https://dagoma.fr",
"author": {
"author_id": "Dagoma",
@ -1487,7 +1487,7 @@
"display_name": "IMADE3D JellyBOX PETG",
"description": "",
"package_version": "1.0.1",
"sdk_version": "7.8.0",
"sdk_version": "7.9.0",
"website": "http://shop.imade3d.com/filament.html",
"author": {
"author_id": "IMADE3D",
@ -1504,7 +1504,7 @@
"display_name": "IMADE3D JellyBOX PLA",
"description": "",
"package_version": "1.0.1",
"sdk_version": "7.8.0",
"sdk_version": "7.9.0",
"website": "http://shop.imade3d.com/filament.html",
"author": {
"author_id": "IMADE3D",
@ -1521,7 +1521,7 @@
"display_name": "Octofiber PLA",
"description": "PLA material from Octofiber.",
"package_version": "1.0.1",
"sdk_version": "7.8.0",
"sdk_version": "7.9.0",
"website": "https://nl.octofiber.com/3d-printing-filament/pla.html",
"author": {
"author_id": "Octofiber",
@ -1538,7 +1538,7 @@
"display_name": "PolyFlex™ PLA",
"description": "PolyFlex™ is a highly flexible yet easy to print 3D printing material. Featuring good elasticity and a large strain-to- failure, PolyFlex™ opens up a completely new realm of applications.",
"package_version": "1.0.1",
"sdk_version": "7.8.0",
"sdk_version": "7.9.0",
"website": "http://www.polymaker.com/shop/polyflex/",
"author": {
"author_id": "Polymaker",
@ -1555,7 +1555,7 @@
"display_name": "PolyMax™ PLA",
"description": "PolyMax™ PLA is a 3D printing material with excellent mechanical properties and printing quality. PolyMax™ PLA has an impact resistance of up to nine times that of regular PLA, and better overall mechanical properties than ABS.",
"package_version": "1.0.1",
"sdk_version": "7.8.0",
"sdk_version": "7.9.0",
"website": "http://www.polymaker.com/shop/polymax/",
"author": {
"author_id": "Polymaker",
@ -1572,7 +1572,7 @@
"display_name": "PolyPlus™ PLA True Colour",
"description": "PolyPlus™ PLA is a premium PLA designed for all desktop FDM/FFF 3D printers. It is produced with our patented Jam-Free™ technology that ensures consistent extrusion and prevents jams.",
"package_version": "1.0.1",
"sdk_version": "7.8.0",
"sdk_version": "7.9.0",
"website": "http://www.polymaker.com/shop/polyplus-true-colour/",
"author": {
"author_id": "Polymaker",
@ -1589,7 +1589,7 @@
"display_name": "PolyWood™ PLA",
"description": "PolyWood™ is a wood mimic printing material that contains no actual wood ensuring a clean Jam-Free™ printing experience.",
"package_version": "1.0.1",
"sdk_version": "7.8.0",
"sdk_version": "7.9.0",
"website": "http://www.polymaker.com/shop/polywood/",
"author": {
"author_id": "Polymaker",
@ -1606,7 +1606,7 @@
"display_name": "Ultimaker ABS",
"description": "Example package for material and quality profiles for Ultimaker materials.",
"package_version": "1.4.0",
"sdk_version": "7.8.0",
"sdk_version": "7.9.0",
"website": "https://ultimaker.com/products/materials/abs",
"author": {
"author_id": "UltimakerPackages",
@ -1625,7 +1625,7 @@
"display_name": "Ultimaker Breakaway",
"description": "Example package for material and quality profiles for Ultimaker materials.",
"package_version": "1.4.0",
"sdk_version": "7.8.0",
"sdk_version": "7.9.0",
"website": "https://ultimaker.com/products/materials/breakaway",
"author": {
"author_id": "UltimakerPackages",
@ -1644,7 +1644,7 @@
"display_name": "Ultimaker CPE",
"description": "Example package for material and quality profiles for Ultimaker materials.",
"package_version": "1.4.0",
"sdk_version": "7.8.0",
"sdk_version": "7.9.0",
"website": "https://ultimaker.com/products/materials/abs",
"author": {
"author_id": "UltimakerPackages",
@ -1663,7 +1663,7 @@
"display_name": "Ultimaker CPE+",
"description": "Example package for material and quality profiles for Ultimaker materials.",
"package_version": "1.4.0",
"sdk_version": "7.8.0",
"sdk_version": "7.9.0",
"website": "https://ultimaker.com/products/materials/cpe",
"author": {
"author_id": "UltimakerPackages",
@ -1682,7 +1682,7 @@
"display_name": "Ultimaker Nylon",
"description": "Example package for material and quality profiles for Ultimaker materials.",
"package_version": "1.4.0",
"sdk_version": "7.8.0",
"sdk_version": "7.9.0",
"website": "https://ultimaker.com/products/materials/abs",
"author": {
"author_id": "UltimakerPackages",
@ -1701,7 +1701,7 @@
"display_name": "Ultimaker PC",
"description": "Example package for material and quality profiles for Ultimaker materials.",
"package_version": "1.4.0",
"sdk_version": "7.8.0",
"sdk_version": "7.9.0",
"website": "https://ultimaker.com/products/materials/pc",
"author": {
"author_id": "UltimakerPackages",
@ -1720,7 +1720,7 @@
"display_name": "Ultimaker PLA",
"description": "Example package for material and quality profiles for Ultimaker materials.",
"package_version": "1.4.0",
"sdk_version": "7.8.0",
"sdk_version": "7.9.0",
"website": "https://ultimaker.com/products/materials/abs",
"author": {
"author_id": "UltimakerPackages",
@ -1739,7 +1739,7 @@
"display_name": "Ultimaker PP",
"description": "Example package for material and quality profiles for Ultimaker materials.",
"package_version": "1.4.0",
"sdk_version": "7.8.0",
"sdk_version": "7.9.0",
"website": "https://ultimaker.com/products/materials/pp",
"author": {
"author_id": "UltimakerPackages",
@ -1758,7 +1758,7 @@
"display_name": "Ultimaker PVA",
"description": "Example package for material and quality profiles for Ultimaker materials.",
"package_version": "1.4.0",
"sdk_version": "7.8.0",
"sdk_version": "7.9.0",
"website": "https://ultimaker.com/products/materials/abs",
"author": {
"author_id": "UltimakerPackages",
@ -1777,7 +1777,7 @@
"display_name": "Ultimaker TPU 95A",
"description": "Example package for material and quality profiles for Ultimaker materials.",
"package_version": "1.4.0",
"sdk_version": "7.8.0",
"sdk_version": "7.9.0",
"website": "https://ultimaker.com/products/materials/tpu-95a",
"author": {
"author_id": "UltimakerPackages",
@ -1796,7 +1796,7 @@
"display_name": "Ultimaker Tough PLA",
"description": "Example package for material and quality profiles for Ultimaker materials.",
"package_version": "1.4.0",
"sdk_version": "7.8.0",
"sdk_version": "7.9.0",
"website": "https://ultimaker.com/products/materials/tough-pla",
"author": {
"author_id": "UltimakerPackages",
@ -1815,7 +1815,7 @@
"display_name": "Vertex Delta ABS",
"description": "ABS material and quality files for the Delta Vertex K8800.",
"package_version": "1.4.0",
"sdk_version": "7.8.0",
"sdk_version": "7.9.0",
"website": "https://vertex3dprinter.eu",
"author": {
"author_id": "Velleman",
@ -1832,7 +1832,7 @@
"display_name": "Vertex Delta PET",
"description": "ABS material and quality files for the Delta Vertex K8800.",
"package_version": "1.4.0",
"sdk_version": "7.8.0",
"sdk_version": "7.9.0",
"website": "https://vertex3dprinter.eu",
"author": {
"author_id": "Velleman",
@ -1849,7 +1849,7 @@
"display_name": "Vertex Delta PLA",
"description": "ABS material and quality files for the Delta Vertex K8800.",
"package_version": "1.4.0",
"sdk_version": "7.8.0",
"sdk_version": "7.9.0",
"website": "https://vertex3dprinter.eu",
"author": {
"author_id": "Velleman",
@ -1866,7 +1866,7 @@
"display_name": "Vertex Delta TPU",
"description": "ABS material and quality files for the Delta Vertex K8800.",
"package_version": "1.4.0",
"sdk_version": "7.8.0",
"sdk_version": "7.9.0",
"website": "https://vertex3dprinter.eu",
"author": {
"author_id": "Velleman",

View file

@ -74,7 +74,6 @@
"material_initial_print_temperature": { "value": "material_print_temperature" },
"material_final_print_temperature": { "value": "material_print_temperature" },
"material_flow": { "value": 100 },
"travel_compensate_overlapping_walls_0_enabled": { "value": "False" },
"z_seam_type": { "value": "'back'" },
"z_seam_corner": { "value": "'z_seam_corner_weighted'" },
@ -87,7 +86,6 @@
"infill_wipe_dist": { "value": 0 },
"wall_0_wipe_dist": { "value": 0.2 },
"fill_perimeter_gaps": { "value": "'everywhere'" },
"fill_outline_gaps": { "value": false },
"filter_out_tiny_gaps": { "value": true },

View file

@ -44,6 +44,8 @@
"material_diameter": { "default_value": 1.75 },
"material_print_temperature_layer_0": { "value": "material_print_temperature + 5"},
"material_initial_print_temperature": { "value": "material_print_temperature + 5" },
"material_final_print_temperature": { "value": "material_print_temperature" },
"material_flow": { "value": 100 },
"acceleration_print": { "value": 1500 },
@ -90,21 +92,21 @@
"retraction_hop_enabled": { "value": true },
"retraction_hop": { "value": 0.075 },
"retraction_hop_only_when_collides": { "value": true },
"retraction_hop_only_when_collides": { "value": true },
"retraction_combing": { "value": "'off'" },
"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_amount": { "value": 6 },
"retraction_amount": { "value": 6 },
"retraction_enable": { "value": true },
"retraction_min_travel": { "value": 1.5 },
"cool_fan_full_at_height": { "value": "layer_height_0 + 2 * layer_height" },
"cool_fan_speed": { "value": 70 },
"cool_fan_speed_0": { "value": 30 },
"cool_fan_speed": { "value": 70 },
"cool_fan_speed_0": { "value": 30 },
"cool_fan_enabled": { "value": true },
"cool_min_layer_time": { "value": 10 },
@ -115,7 +117,6 @@
"skirt_line_count": { "value": 4 },
"meshfix_maximum_deviation": { "value": 0.05 },
"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_enable and support_structure == 'tree' else 20" },

View file

@ -179,7 +179,6 @@
"material_initial_print_temperature": { "value": "material_print_temperature" },
"material_final_print_temperature": { "value": "material_print_temperature" },
"material_flow": { "value": 100 },
"travel_compensate_overlapping_walls_0_enabled": { "value": "False" },
"z_seam_type": { "value": "'back'" },
"z_seam_corner": { "value": "'z_seam_corner_none'" },
@ -192,7 +191,6 @@
"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 },

View file

@ -258,7 +258,6 @@
"layer_height_0": { "resolve": "max(0.2, min(extruderValues('layer_height')))" },
"line_width": { "value": "machine_nozzle_size * 1.125" },
"wall_line_width": { "value": "machine_nozzle_size" },
"fill_perimeter_gaps": { "default_value": "everywhere" },
"fill_outline_gaps": { "value": "True" },
"meshfix_maximum_resolution": { "value": "0.01" },
"meshfix_maximum_deviation": { "value": "layer_height / 2" },

View file

@ -22,8 +22,8 @@
"machine_heated_bed": { "default_value": false },
"machine_center_is_zero": { "default_value": true },
"machine_start_gcode": { "default_value": "G21\nG90 \nM107\nG28\nG92 E0\nG1 F200 E3\nG92 E0" },
"machine_end_gcode": { "default_value": "M104 S0\nG28\nG91\nG1 E-6 F300\nM84\nG90" },
"machine_start_gcode": { "default_value": "G21\nG90 \nM107\nG28\nG1 Y-110 Z15\nG0 Z{layer_height_0}\nG92 E0\nG1 F200 Y-100 E6\nG92 E0" },
"machine_end_gcode": { "default_value": "G28\nG91\nG1 E-6 F300\nM104 S0\nG1 E-1000 F5000\nM84\nG90" },
"layer_height": { "default_value": 0.2 },
"default_material_print_temperature": { "default_value": 210 },

View file

@ -83,7 +83,6 @@
"material_initial_print_temperature": { "value": "material_print_temperature" },
"material_final_print_temperature": { "value": "material_print_temperature" },
"material_flow": { "value": 100 },
"travel_compensate_overlapping_walls_0_enabled": { "value": "False" },
"z_seam_type": { "value": "'sharpest_corner'" },
"z_seam_corner": { "value": "'z_seam_corner_inner'" },
@ -97,7 +96,6 @@
"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 },

View file

@ -45,9 +45,6 @@
"machine_gcode_flavor": {
"default_value": "RepRap (RepRap)"
},
"fill_perimeter_gaps": {
"value": "'everywhere'"
},
"fill_outline_gaps": {
"value": true
},

View file

@ -1,5 +1,5 @@
{
"version": 2,
"version": 2,
"name": "Crazy3DPrint CZ-300",
"inherits": "crazy3dprint_base",
"metadata": {
@ -52,9 +52,9 @@
"skirt_line_count": { "default_value" : 5 },
"initial_layer_line_width_factor": { "default_value" : 140 },
"top_bottom_pattern": { "default_value" : "concentric" },
"outer_inset_first": { "default_value": true },
"fill_outline_gaps": { "default_value": true },
"machine_gcode_flavor": { "default_value": "RepRap (Marlin/Sprinter)" },
"inset_direction": {"value": "'outside_in'" },
"machine_start_gcode": {
"default_value": "G28 ; home all axes\nG1 Z15 F5000 ; lift nozzle\nG92 E0\nG1 F200 E3\n"
},

View file

@ -183,7 +183,6 @@
"material_initial_print_temperature": { "value": "material_print_temperature" },
"material_final_print_temperature": { "value": "material_print_temperature" },
"material_flow": { "value": 100 },
"travel_compensate_overlapping_walls_0_enabled": { "value": "False" },
"z_seam_type": { "value": "'back'" },
"z_seam_corner": { "value": "'z_seam_corner_weighted'" },
@ -196,7 +195,6 @@
"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 },

View file

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

View file

@ -4,7 +4,7 @@
"inherits": "creality_base",
"overrides": {
"machine_name": { "default_value": "Creality Ender-5" },
"machine_end_gcode": { "default_value": "G91 ;Relative positioning\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 positioning\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_end_gcode": { "default_value": "G91 ;Relative positioning\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 positioning\n\nG28 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 },

View file

@ -0,0 +1,25 @@
{
"name": "Creality Sermoon D1",
"version": 2,
"inherits": "creality_base",
"overrides": {
"machine_name": { "default_value": "Creality Sermoon D1" },
"machine_width": { "default_value": 280 },
"machine_depth": { "default_value": 260 },
"machine_height": { "default_value": 310 },
"machine_head_with_fans_polygon": { "default_value": [
[-26, 34],
[-26, -32],
[32, -32],
[32, 34]
]
},
"gantry_height": { "value": 25 }
},
"metadata": {
"quality_definition": "creality_base",
"visible": true
}
}

View file

@ -20,9 +20,6 @@
"machine_heated_bed": {
"default_value": true
},
"travel_compensate_overlapping_walls_enabled": {
"default_value": false
},
"layer_height": {
"default_value": 0.2
},
@ -33,7 +30,6 @@
"default_value": "raft"
},
"top_bottom_pattern": { "default_value": "lines" },
"fill_perimeter_gaps": { "default_value": "everywhere" },
"infill_sparse_density": { "default_value": 20 },
"infill_before_walls": { "default_value": false },
"top_bottom_thickness": {

View file

@ -84,7 +84,6 @@
"wall_thickness": {"value":3.0},
"optimize_wall_printing_order": { "value": "True" },
"travel_compensate_overlapping_walls_enabled": { "value": false},
"top_bottom_thickness": {"value":0},
"bottom_layers":{"value":2},

View file

@ -48,10 +48,10 @@
},
"gantry_height":{ "value": "0" },
"machine_start_gcode": {
"default_value": "G90 ; use absolute coordinates\nM140 S[first_layer_bed_temperature] ; set bed temp\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nG28 ; home all without mesh bed level\nG29 ; mesh bed leveling/ABL\nM104 S[first_layer_temperature] ; set extruder temp\nG92 E0.0\nG1 Y-2.0 X150 F2400G1 Z3 F720\nM109 S[first_layer_temperature] ; wait for extruder temp\nG1 X150 F1000\nG1 Z0.2 F720\nG1 X80.0 E8.0 F900\nG1 X20.0 E10.0 F700\nG92 E0.0\nM221 S95 ; set flow\n"
"default_value": "G21 ;Metric values\nG90 ;Absolute positioning\nM82 ;Set extruder to absolute mode\nM107 ;Start with the fan off\nG28 ;Homing the hotend\nG29 ;Auto bed leveling detecting\nG92 E0 ;Reset the extruded length\nG1 F200 E3 ;Extrude 3mm of filament\nG92 E0 ;Reset the extruded length again\nG1 Y-3 F1200 ;Move y axis to prime\nG1 X150 F6000 ;Move x axis to prime\nG1 Z0.2 F720 ;Move z axis to prime\nG1 X80.0 E8.0 F900 ;Prime line\nG1 X20.0 E10.0 F700 ;Prime line\nG92 E0 ;Reset the extruded length\nG5 ;Enable resume from power failure\nM117 Printing...\n"
},
"machine_end_gcode": {
"default_value": "M104 S0 ; turn off extruder\nM140 S0 ; turn off bed\nM84 ; disable motors\nM107\nG91 ;relative positioning\nG1 E-1 F300 ;retract the filament a bit before lifting the nozzle, to release some of the pressure\nG1 Z+0.5 E-5 ;X-20 Y-20 F{speed_travel} ;move Z up a bit and retract filament even more\nG28 X0 ;Y0 ;move X/Y to min endstops, so the head is out of the way\nG1 Y180 F2000\nM84 ;steppers off\nG90\nM300 P300 S4000"
"default_value": "G91 ;Relative positioning\nG1 Z5 F720 ;Raise Z\nG1 E-5 F300 ;Retract a bit to protect nozzle\nM104 S0 ;Turn off extruder\nM140 S0 ;Turn off bed\nM107 ;Turn off all fans\nG90 ;Absolute positioning\nG1 X230 Y200 F4800 ;Parking the hotend\nM84 X Y E ;All steppers off but left Z\n"
},
"material_print_temperature": {
"value": 205

View file

@ -54,7 +54,7 @@
"value": 30
},
"machine_gcode_flavor": {
"default_value": "Marlin"
"default_value": "RepRap (Marlin/Sprinter)"
},
"machine_start_gcode": {
"default_value": "G21 ;metric values\nG90 ;absolute positioning\nM82 ;set extruder to absolute mode\nM107 ;start with the fan off\nG28 X0 Y0 ;move X/Y to min endstops\nG28 Z0 ;move Z to min endstops\nG1 Z10.0 F600 ;move the platform down 10mm\nG92 E0 ;zero the extruded length\nG1 F200 E3 ;extrude 3mm of feed stock\nG92 E0 ;zero the extruded length again\nG1 Y-3 F1200 ;move to prime\nG1 X10 F1200 ;\nG1 Z0.1 F600 ;get ready to prime\nG1 X120 E15 F1200 ;prime nozzle \nG1 X120 F3600 ;quick wipe\nG92 E0 ;zero the extruded length\nM413 S1 ;enable resume from power failure\nM117 Printing..."
@ -62,6 +62,112 @@
"machine_end_gcode": {
"default_value": "M104 S0 ;turn off extruder\nM140 S0 ;turn off bed\nM107 ;turn off all fans\nG91 ;relative positioning\nG1 E-1 F300 ;retract the filament a bit before lifting the nozzle, to release some of the pressure\nG1 Z+0.5 E-5 ;move Z up a bit and retract filament even more\nG90 ;absolute positioning\nG1 X0 Y250 F4800 ; position for easy part removal\nM84 ;steppers off"
},
"layer_height": {
"value": 0.2
},
"layer_height_0": {
"resolve": "max(0.1, layer_height)"
},
"initial_layer_line_width_factor": {
"value": 120
},
"wall_line_count": {
"value": 3
},
"wall_thickness": {
"value": "line_width * wall_line_count"
},
"optimize_wall_printing_order": {
"default_value": true
},
"z_seam_type": {
"value": "'shortest'"
},
"z_seam_corner": {
"value": "'z_seam_corner_inner'"
},
"roofing_layer_count": {
"value": 1
},
"top_layers": {
"value": 6
},
"top_thickness":{
"value": "layer_height * top_layers"
},
"bottom_layers": {
"value": 4
},
"bottom_thickness":{
"value": "layer_height * bottom_layers"
},
"skin_overlap": {
"value": 10
},
"infill_sparse_density": {
"value": 20
},
"infill_pattern": {
"value": "'lines' if infill_sparse_density > 25 else 'grid'"
},
"infill_overlap": {
"value": "25 if infill_sparse_density < 95 and infill_pattern != 'concentric' else 0"
},
"infill_before_walls": {
"value": false
},
"inset_direction": {
"default_value": "inside_out"
},
"material_print_temperature": {
"value": "default_material_print_temperature",
"maximum_value_warning": 250
},
"material_print_temperature_layer_0": {
"value": "material_print_temperature + 5",
"maximum_value_warning": 250
},
"material_initial_print_temperature": {
"value": "material_print_temperature",
"maximum_value_warning": 250
},
"material_final_print_temperature": {
"value": "material_print_temperature"
},
"material_bed_temperature": {
"value": "default_material_bed_temperature",
"maximum_value_warning": 100
},
"material_bed_temperature_layer_0": {
"value": "material_bed_temperature"
},
"speed_infill": {
"value": "speed_print"
},
"speed_wall": {
"value": "speed_print"
},
"speed_wall_0": {
"value": "math.ceil(speed_print * 30 / 50)"
},
"speed_wall_x": {
"value": "speed_print"
},
"speed_topbottom": {
"value": "math.ceil(speed_print * 20 / 50)"
},
"speed_travel": {
"value": "speed_print if magic_spiralize else 120"
},
"speed_layer_0": {
"value": "math.ceil(speed_print * 30 / 50)"
},
"skirt_brim_speed": {
"value": "math.ceil(speed_print * 40 / 60)"
},
"speed_z_hop": {
"value": "math.ceil(speed_print * 30 / 60)"
},
"acceleration_enabled": {
"value": true
},
@ -71,38 +177,6 @@
"acceleration_travel": {
"value": 1500
},
"adhesion_type": {
"value": "'skirt'"
},
"brim_width": {
"value": 5
},
"cool_fan_full_at_height": {
"value": 0.5
},
"cool_fan_speed": {
"value": 100
},
"cool_fan_speed_0": {
"value": 0
},
"infill_overlap": {
"value": "25 if infill_sparse_density < 95 and infill_pattern != 'concentric' else 0",
"maximum_value_warning": 100,
"minimum_value_warning": -50
},
"infill_pattern": {
"value": "'lines' if infill_sparse_density > 25 else 'grid'"
},
"infill_sparse_density": {
"value": 20
},
"initial_layer_line_width_factor": {
"value": 120
},
"infill_before_walls": {
"value": false
},
"jerk_enabled": {
"value": true
},
@ -112,35 +186,11 @@
"jerk_travel": {
"value": 15
},
"material_bed_temperature": {
"maximum_value_warning": 100
},
"material_print_temperature": {
"maximum_value_warning": 250
},
"optimize_wall_printing_order": {
"default_value": true
},
"outer_inset_first": {
"default_value": false
},
"retract_at_layer_change": {
"value": true
},
"retraction_amount": {
"default_value": 4
},
"retraction_hop": {
"value": 0.075
},
"retraction_hop_enabled": {
"value": false
},
"retraction_hop_only_when_collides": {
"value": true
},
"retraction_min_travel": {
"value": 1.5
"default_value": 4.5
},
"retraction_speed": {
"default_value": 85,
@ -153,101 +203,56 @@
"value": "math.ceil(retraction_speed * 0.4)",
"maximum_value_warning": 130
},
"retraction_min_travel": {
"value": "max(line_width * 2, 1.5)"
},
"retraction_combing": {
"value": "'off' if retraction_hop_enabled else 'noskin'"
},
"skin_overlap": {
"value": 10
},
"skirt_brim_speed": {
"value": "math.ceil(speed_print * 40 / 60)"
},
"skirt_gap": {
"value": 5
},
"skirt_line_count": {
"value": 3
},
"speed_infill": {
"value": "speed_print"
},
"speed_topbottom": {
"value": "math.ceil(speed_print * 20 / 50)"
},
"speed_travel": {
"value": "120"
},
"speed_layer_0": {
"value": "math.ceil(speed_print * 30 / 50)"
},
"speed_wall": {
"value": "speed_print"
},
"speed_wall_0": {
"value": "math.ceil(speed_print * 30 / 50)"
},
"speed_wall_x": {
"value": "speed_print"
},
"support_angle": {
"value": 50
},
"support_enable": {
"default_value": false
},
"support_interface_enable": {
"value": true
},
"support_pattern": {
"value": "'triangles'"
},
"support_roof_enable": {
"value": true
},
"support_type": {
"value": "'everywhere'"
},
"support_use_towers": {
"value": false
},
"support_z_distance": {
"value": 0.3
},
"support_xy_distance": {
"value": 0.7
},
"support_xy_distance_overhang": {
"value": 0.2
},
"smooth_spiralized_contours": {
"value": false
},
"travel_retract_before_outer_wall": {
"value": true
},
"wall_line_count": {
"retraction_hop_enabled": {
"value": false
},
"retraction_hop_only_when_collides": {
"value": true
},
"retraction_hop": {
"value": 0.1
},
"support_pattern": {
"value": "'triangles'"
},
"support_z_distance": {
"value": 0.3
},
"support_interface_enable": {
"value": true
},
"support_roof_enable": {
"value": true
},
"support_use_towers": {
"value": false
},
"adhesion_type": {
"value": "'skirt'"
},
"skirt_line_count": {
"value": 3
},
"wall_thickness": {
"value": "line_width * wall_line_count"
},
"bottom_layers": {
"value": "4"
"skirt_gap": {
"value": 5
},
"bottom_thickness":{
"value": "layer_height * bottom_layers"
"brim_width": {
"value": 5
},
"top_layers": {
"value": "6"
"smooth_spiralized_contours": {
"value": false
},
"top_thickness":{
"value": "layer_height * top_layers"
},
"z_seam_type": {
"value": "'shortest'"
},
"z_seam_corner": {
"value": "'z_seam_corner_inner'"
"roofing_monotonic": {
"value": true
}
}
}

View file

@ -62,8 +62,6 @@
"retraction_amount": { "default_value": 6.5 },
"speed_print": { "default_value": 40 },
"speed_equalize_flow_enabled": { "default_value": true },
"speed_equalize_flow_max": { "default_value": 100 },
"acceleration_print": { "default_value": 1000 },

View file

@ -448,7 +448,7 @@
"machine_head_with_fans_polygon":
{
"label": "Machine Head & Fan Polygon",
"description": "A 2D silhouette of the print head (fan caps included).",
"description": "The shape of the print head. These are coordinates relative to the position of the print head, which is usually the position of its first extruder. The dimensions left and in front of the print head must be negative coordinates.",
"type": "polygon",
"default_value":
[
@ -831,7 +831,7 @@
"description": "Width of the outermost wall line. By lowering this value, higher levels of detail can be printed.",
"unit": "mm",
"minimum_value": "0.001",
"minimum_value_warning": "(0.1 + 0.4 * machine_nozzle_size) if outer_inset_first else 0.1 * machine_nozzle_size",
"minimum_value_warning": "(0.1 + 0.4 * machine_nozzle_size) if inset_direction == \"outside_in\" else 0.1 * machine_nozzle_size",
"maximum_value_warning": "2 * machine_nozzle_size",
"default_value": 0.4,
"value": "wall_line_width",
@ -1078,6 +1078,98 @@
}
}
},
"beading_strategy_type":
{
"label": "Variable Line Strategy",
"description": "Strategy to use to print the width of a part with a number of walls. This determines how many walls it will use for a certain total width, and how wide each of these lines are. \"Center Deviation\" will print all walls at the nominal line width except the central one(s), causing big variations in the center but very consistent outsides. \"Distributed\" distributes the width equally over all walls. \"Inward Distributed\" is a balance between the other two, distributing the changes in width over all walls but keeping the walls on the outside slightly more consistent.",
"type": "enum",
"options":
{
"center_deviation": "Center Deviation",
"distributed": "Distributed",
"inward_distributed": "Inward Distributed"
},
"default_value": "inward_distributed",
"limit_to_extruder": "wall_0_extruder_nr"
},
"wall_transition_threshold": {
"label": "Middle Line Threshold",
"description": "The smallest line width, as a factor of the normal line width, below which it will choose to use fewer, but wider lines to fill the available space the wall needs to occupy. Reduce this setting to use more, thinner lines. Increase to use fewer, wider lines. Note that this applies -as if- the entire shape should be filled with wall, so the middle here refers to the middle of the object between two outer edges of the shape, even if there actually is fill or (other) skin in the print instead of wall.",
"type": "float",
"unit": "%",
"default_value": 90,
"minimum_value": "1",
"maximum_value": "99",
"children":
{
"wall_split_middle_threshold": {
"label": "Split Middle Line Threshold",
"description": "The smallest line width, as a factor of the normal line width, above which the middle line (if there is one) will be split into two. Reduce this setting to use more, thinner lines. Increase to use fewer, wider lines. Note that this applies -as if- the entire shape should be filled with wall, so the middle here refers to the middle of the object between two outer edges of the shape, even if there actually is fill or (other) skin in the print instead of wall.",
"type": "float",
"unit": "%",
"default_value": 50,
"value": "wall_transition_threshold",
"minimum_value": "1",
"maximum_value": "99"
},
"wall_add_middle_threshold": {
"label": "Add Middle Line Threshold",
"description": "The smallest line width, as a factor of the normal line width, above which a middle line (if there wasn't one already) will be added. Reduce this setting to use more, thinner lines. Increase to use fewer, wider lines. Note that this applies -as if- the entire shape should be filled with wall, so the middle here refers to the middle of the object between two outer edges of the shape, even if there actually is fill or (other) skin in the print instead of wall.",
"type": "float",
"unit": "%",
"default_value": 50,
"value": "wall_transition_threshold * 8 / 9",
"minimum_value": "1",
"maximum_value": "99"
}
}
},
"wall_transition_length":
{
"label": "Wall Transition Length",
"description": "When transitioning between different numbers of walls as the part becomes thinner, a certain amount of space is allotted to split or join the wall lines.",
"type": "float",
"unit": "mm",
"default_value": 0.4,
"value": "line_width",
"minimum_value": "0.001",
"minimum_value_warning": "0.5 * line_width",
"maximum_value_warning": "2 * line_width",
"maximum_value": "min_bead_width * 3 * math.pi"
},
"wall_distribution_count":
{
"label": "Wall Distribution Count",
"description": "The number of walls, counted from the center, over which the variation needs to be spread. Lower values mean that the outer walls don't change in width.",
"type": "int",
"default_value": 1,
"minimum_value": "1",
"enabled": "beading_strategy_type == 'inward_distributed'"
},
"wall_transition_angle":
{
"label": "Wall Transition Angle",
"description": "When transitioning between different numbers of walls as the part becomes thinner, two adjacent walls will join together at this angle. This can make the walls come together faster than what the Wall Transition Length indicates, filling the space better.",
"type": "float",
"unit": "°",
"default_value": 10,
"minimum_value": "1",
"minimum_value_warning": "5",
"maximum_value_warning": "50",
"maximum_value": "59"
},
"wall_transition_filter_distance":
{
"label": "Wall Transition Distance Filter",
"description": "If it would be transitioning back and forth between different numbers of walls in quick succession, don't transition at all. Remove transitions if they are closer together than this distance.",
"type": "float",
"unit": "mm",
"default_value": 1.4,
"value": "4 * math.cos(wall_transition_angle / 180 * math.pi) * wall_line_width_x",
"minimum_value": "wall_transition_length",
"minimum_value_warning": "math.cos(wall_transition_angle / 180 * math.pi) * wall_line_width_x",
"maximum_value_warning": "10 * math.cos(wall_transition_angle / 180 * math.pi) * wall_line_width_x"
},
"wall_0_wipe_dist":
{
"label": "Outer Wall Wipe Distance",
@ -1098,7 +1190,7 @@
"unit": "mm",
"type": "float",
"default_value": 0.0,
"value": "(machine_nozzle_size - wall_line_width_0) / 2 if (wall_line_width_0 < machine_nozzle_size and not outer_inset_first) else 0",
"value": "(machine_nozzle_size - wall_line_width_0) / 2 if (wall_line_width_0 < machine_nozzle_size and inset_direction != \"outside_in\") else 0",
"minimum_value_warning": "0",
"maximum_value_warning": "machine_nozzle_size",
"limit_to_extruder": "wall_0_extruder_nr",
@ -1106,19 +1198,23 @@
},
"optimize_wall_printing_order":
{
"label": "Optimize Wall Printing Order",
"description": "Optimize the order in which walls are printed so as to reduce the number of retractions and the distance travelled. Most parts will benefit from this being enabled but some may actually take longer so please compare the print time estimates with and without optimization. First layer is not optimized when choosing brim as build plate adhesion type.",
"label": "Order Inner Walls By Inset",
"description": "Order inner wall printing by inset-index, instead of by (hole) region.",
"type": "bool",
"default_value": false,
"settable_per_mesh": true
},
"outer_inset_first":
"inset_direction":
{
"label": "Outer Before Inner Walls",
"description": "Prints walls in order of outside to inside when enabled. This can help improve dimensional accuracy in X and Y when using a high viscosity plastic like ABS; however it can decrease outer surface print quality, especially on overhangs.",
"type": "bool",
"default_value": false,
"enabled": "wall_0_extruder_nr == wall_x_extruder_nr",
"label": "Wall Ordering",
"description": "Determines the order in which walls are printed. Printing outer walls earlier helps with dimensional accuracy, as faults from inner walls cannot propagate to the outside. However printing them later allows them to stack better when overhangs are printed.",
"type": "enum",
"options": {
"inside_out": "Inside To Outside",
"outside_in": "Outside To Inside",
"center_last": "Center Last"
},
"default_value": "center_last",
"settable_per_mesh": true
},
"alternate_extra_perimeter":
@ -1130,72 +1226,6 @@
"limit_to_extruder": "infill_extruder_nr",
"settable_per_mesh": true
},
"travel_compensate_overlapping_walls_enabled":
{
"label": "Compensate Wall Overlaps",
"description": "Compensate the flow for parts of a wall being printed where there is already a wall in place.",
"type": "bool",
"default_value": true,
"limit_to_extruder": "wall_x_extruder_nr",
"settable_per_mesh": true,
"children":
{
"travel_compensate_overlapping_walls_0_enabled":
{
"label": "Compensate Outer Wall Overlaps",
"description": "Compensate the flow for parts of an outer wall being printed where there is already a wall in place.",
"type": "bool",
"default_value": true,
"value": "travel_compensate_overlapping_walls_enabled",
"limit_to_extruder": "wall_0_extruder_nr",
"settable_per_mesh": true
},
"travel_compensate_overlapping_walls_x_enabled":
{
"label": "Compensate Inner Wall Overlaps",
"description": "Compensate the flow for parts of an inner wall being printed where there is already a wall in place.",
"type": "bool",
"default_value": true,
"value": "travel_compensate_overlapping_walls_enabled",
"limit_to_extruder": "wall_x_extruder_nr",
"settable_per_mesh": true
}
}
},
"wall_min_flow":
{
"label": "Minimum Wall Flow",
"description": "Minimum allowed percentage flow for a wall line. The wall overlap compensation reduces a wall's flow when it lies close to an existing wall. Walls whose flow is less than this value will be replaced with a travel move. When using this setting, you must enable the wall overlap compensation and print the outer wall before inner walls.",
"unit": "%",
"minimum_value": "0",
"maximum_value": "100",
"default_value": 0,
"type": "float",
"enabled": "travel_compensate_overlapping_walls_0_enabled or travel_compensate_overlapping_walls_x_enabled",
"settable_per_mesh": true
},
"wall_min_flow_retract":
{
"label": "Prefer Retract",
"description": "If enabled, retraction is used rather than combing for travel moves that replace walls whose flow is below the minimum flow threshold.",
"type": "bool",
"default_value": false,
"enabled": "(travel_compensate_overlapping_walls_0_enabled or travel_compensate_overlapping_walls_x_enabled) and wall_min_flow > 0",
"settable_per_mesh": true
},
"fill_perimeter_gaps":
{
"label": "Fill Gaps Between Walls",
"description": "Fills the gaps between walls where no walls fit.",
"type": "enum",
"options": {
"nowhere": "Nowhere",
"everywhere": "Everywhere"
},
"default_value": "everywhere",
"limit_to_extruder": "wall_0_extruder_nr",
"settable_per_mesh": true
},
"filter_out_tiny_gaps":
{
"label": "Filter Out Tiny Gaps",
@ -1209,10 +1239,39 @@
"label": "Print Thin Walls",
"description": "Print pieces of the model which are horizontally thinner than the nozzle size.",
"type": "bool",
"default_value": false,
"default_value": true,
"limit_to_extruder": "wall_0_extruder_nr",
"settable_per_mesh": true
},
"min_feature_size":
{
"label": "Minimum Feature Size",
"description": "Minimum thickness of thin features. Model features that are thinner than this value will not be printed, while features thicker than the Minimum Feature Size will be widened to the Minimum Wall Line Width.",
"unit": "mm",
"default_value": 0.1,
"value": "wall_line_width_0 / 4",
"minimum_value": "0",
"maximum_value": "wall_line_width_0",
"type": "float",
"limit_to_extruder": "wall_0_extruder_nr",
"enabled": "fill_outline_gaps",
"settable_per_mesh": true
},
"min_bead_width":
{
"label": "Minimum Wall Line Width",
"description": "Width of the wall that will replace thin features (according to the Minimum Feature Size) of the model. If the Minimum Wall Line Width is thinner than the thickness of the feature, the wall will become as thick as the feature itself.",
"unit": "mm",
"value": "wall_line_width_0 * (100.0 + wall_split_middle_threshold)/200",
"default_value": 0.2,
"minimum_value": "0.001",
"minimum_value_warning": "min_feature_size",
"maximum_value_warning": "wall_line_width_0",
"type": "float",
"limit_to_extruder": "wall_0_extruder_nr",
"enabled": "fill_outline_gaps",
"settable_per_mesh": true
},
"xy_offset":
{
"label": "Horizontal Expansion",
@ -2087,7 +2146,7 @@
"default_value": 0,
"type": "int",
"minimum_value": "0",
"maximum_value_warning": "1 if (infill_pattern == 'cross' or infill_pattern == 'cross_3d' or support_pattern == 'concentric') else 5",
"maximum_value_warning": "1 if (infill_pattern == 'cross' or infill_pattern == 'cross_3d' or infill_pattern == 'concentric') else 5",
"maximum_value": "999999 if infill_line_distance == 0 else (20 - math.log(infill_line_distance) / math.log(2))",
"enabled": "infill_sparse_density > 0 and infill_pattern not in ['cubicsubdiv', 'cross', 'cross_3d', 'lightning']",
"limit_to_extruder": "infill_extruder_nr",
@ -2456,7 +2515,42 @@
"maximum_value_warning": "120",
"settable_per_mesh": false,
"settable_per_extruder": false,
"resolve": "sum(extruderValues(\"material_shrinkage_percentage\")) / len(extruderValues(\"material_shrinkage_percentage\"))"
"resolve": "sum(extruderValues(\"material_shrinkage_percentage\")) / len(extruderValues(\"material_shrinkage_percentage\"))",
"children":
{
"material_shrinkage_percentage_xy":
{
"label": "Horizontal Scaling Factor Shrinkage Compensation",
"description": "To compensate for the shrinkage of the material as it cools down, the model will be scaled with this factor in the XY-direction (horizontally).",
"unit": "%",
"type": "float",
"default_value": 100.0,
"enabled": false,
"minimum_value": "0.001",
"minimum_value_warning": "100",
"maximum_value_warning": "120",
"settable_per_mesh": false,
"settable_per_extruder": false,
"resolve": "sum(extruderValues(\"material_shrinkage_percentage_xy\")) / len(extruderValues(\"material_shrinkage_percentage_xy\"))",
"value": "material_shrinkage_percentage"
},
"material_shrinkage_percentage_z":
{
"label": "Vertical Scaling Factor Shrinkage Compensation",
"description": "To compensate for the shrinkage of the material as it cools down, the model will be scaled with this factor in the Z-direction (vertically).",
"unit": "%",
"type": "float",
"default_value": 100.0,
"enabled": false,
"minimum_value": "0.001",
"minimum_value_warning": "100",
"maximum_value_warning": "120",
"settable_per_mesh": false,
"settable_per_extruder": false,
"resolve": "sum(extruderValues(\"material_shrinkage_percentage_z\")) / len(extruderValues(\"material_shrinkage_percentage_z\"))",
"value": "material_shrinkage_percentage"
}
}
},
"material_crystallinity":
{
@ -3141,7 +3235,7 @@
"enabled": "resolveOrValue('adhesion_type') == 'skirt' or resolveOrValue('adhesion_type') == 'brim' or resolveOrValue('draft_shield_enabled') or resolveOrValue('ooze_shield_enabled')",
"settable_per_mesh": false,
"settable_per_extruder": true,
"limit_to_extruder": "adhesion_extruder_nr"
"limit_to_extruder": "skirt_brim_extruder_nr"
},
"speed_z_hop":
{
@ -3167,26 +3261,15 @@
"settable_per_mesh": false,
"settable_per_extruder": false
},
"speed_equalize_flow_enabled":
"speed_equalize_flow_width_factor":
{
"label": "Equalize Filament Flow",
"description": "Print thinner than normal lines faster so that the amount of material extruded per second remains the same. Thin pieces in your model might require lines printed with smaller line width than provided in the settings. This setting controls the speed changes for such lines.",
"type": "bool",
"default_value": false,
"settable_per_mesh": false,
"settable_per_extruder": true
},
"speed_equalize_flow_max":
{
"label": "Maximum Speed for Flow Equalization",
"description": "Maximum print speed when adjusting the print speed in order to equalize flow.",
"label": "Flow Equalization Ratio",
"description": "Extrusion width based correction factor on the speed. At 0% the movement speed is kept constant at the Print Speed. At 100% the movement speed is adjusted so that the flow (in mm³/s) is kept constant, i.e. lines half the normal Line Width are printed twice as fast and lines twice as wide are printed half as fast. A value larger than 100% can help to compensate for the higher pressure required to extrude wide lines.",
"type": "float",
"unit": "mm/s",
"enabled": "speed_equalize_flow_enabled",
"default_value": 150,
"minimum_value": "0.1",
"maximum_value": "math.sqrt(machine_max_feedrate_x ** 2 + machine_max_feedrate_y ** 2)",
"maximum_value_warning": "150",
"unit": "%",
"default_value": 100.0,
"minimum_value": "0.0",
"maximum_value_warning": "200.0",
"settable_per_mesh": false,
"settable_per_extruder": true
},
@ -3481,7 +3564,7 @@
"maximum_value_warning": "10000",
"enabled": "resolveOrValue('acceleration_enabled') and (resolveOrValue('adhesion_type') == 'skirt' or resolveOrValue('adhesion_type') == 'brim' or resolveOrValue('draft_shield_enabled') or resolveOrValue('ooze_shield_enabled'))",
"settable_per_mesh": false,
"limit_to_extruder": "adhesion_extruder_nr"
"limit_to_extruder": "skirt_brim_extruder_nr"
},
"jerk_enabled":
{
@ -3756,7 +3839,7 @@
"value": "jerk_layer_0",
"enabled": "resolveOrValue('jerk_enabled') and (resolveOrValue('adhesion_type') == 'skirt' or resolveOrValue('adhesion_type') == 'brim' or resolveOrValue('draft_shield_enabled') or resolveOrValue('ooze_shield_enabled'))",
"settable_per_mesh": false,
"limit_to_extruder": "adhesion_extruder_nr"
"limit_to_extruder": "skirt_brim_extruder_nr"
}
}
},
@ -3883,6 +3966,7 @@
"default_value": 90,
"minimum_value": "0",
"maximum_value_warning": "100",
"maximum_value": 999999999,
"type": "int",
"enabled": "retraction_enable",
"settable_per_mesh": false,
@ -5330,7 +5414,54 @@
"value": "int(defaultExtruderPosition())",
"enabled": "extruders_enabled_count > 1 and (resolveOrValue('adhesion_type') != 'none' or resolveOrValue('prime_tower_brim_enable'))",
"settable_per_mesh": false,
"settable_per_extruder": false
"settable_per_extruder": false,
"children":
{
"skirt_brim_extruder_nr":
{
"label": "Skirt/Brim Extruder",
"description": "The extruder train to use for printing the skirt or brim. This is used in multi-extrusion.",
"type": "extruder",
"default_value": "0",
"value": "adhesion_extruder_nr",
"enabled": "extruders_enabled_count > 1 and (resolveOrValue('adhesion_type') == 'skirt' or resolveOrValue('adhesion_type') == 'brim' or resolveOrValue('prime_tower_brim_enable'))",
"settable_per_mesh": false,
"settable_per_extruder": false
},
"raft_base_extruder_nr":
{
"label": "Raft Base Extruder",
"description": "The extruder train to use for printing the first layer of the raft. This is used in multi-extrusion.",
"type": "extruder",
"default_value": "0",
"value": "adhesion_extruder_nr",
"enabled": "extruders_enabled_count > 1 and resolveOrValue('adhesion_type') == 'raft'",
"settable_per_mesh": false,
"settable_per_extruder": false
},
"raft_interface_extruder_nr":
{
"label": "Raft Middle Extruder",
"description": "The extruder train to use for printing the middle layer of the raft. This is used in multi-extrusion.",
"type": "extruder",
"default_value": "0",
"value": "adhesion_extruder_nr",
"enabled": "extruders_enabled_count > 1 and resolveOrValue('adhesion_type') == 'raft'",
"settable_per_mesh": false,
"settable_per_extruder": false
},
"raft_surface_extruder_nr":
{
"label": "Raft Top Extruder",
"description": "The extruder train to use for printing the top layer(s) of the raft. This is used in multi-extrusion.",
"type": "extruder",
"default_value": "0",
"value": "adhesion_extruder_nr",
"enabled": "extruders_enabled_count > 1 and resolveOrValue('adhesion_type') == 'raft' and raft_surface_layers > 0",
"settable_per_mesh": false,
"settable_per_extruder": false
}
}
},
"skirt_line_count":
{
@ -5344,7 +5475,7 @@
"enabled": "resolveOrValue('adhesion_type') == 'skirt'",
"settable_per_mesh": false,
"settable_per_extruder": true,
"limit_to_extruder": "adhesion_extruder_nr"
"limit_to_extruder": "skirt_brim_extruder_nr"
},
"skirt_gap":
{
@ -5358,7 +5489,7 @@
"enabled": "resolveOrValue('adhesion_type') == 'skirt'",
"settable_per_mesh": false,
"settable_per_extruder": true,
"limit_to_extruder": "adhesion_extruder_nr"
"limit_to_extruder": "skirt_brim_extruder_nr"
},
"skirt_brim_minimal_length":
{
@ -5387,7 +5518,7 @@
"enabled": "resolveOrValue('adhesion_type') == 'brim' or resolveOrValue('prime_tower_brim_enable')",
"settable_per_mesh": false,
"settable_per_extruder": true,
"limit_to_extruder": "adhesion_extruder_nr",
"limit_to_extruder": "skirt_brim_extruder_nr",
"children":
{
"brim_line_count":
@ -5403,7 +5534,7 @@
"enabled": "resolveOrValue('adhesion_type') == 'brim' or resolveOrValue('prime_tower_brim_enable')",
"settable_per_mesh": false,
"settable_per_extruder": true,
"limit_to_extruder": "adhesion_extruder_nr"
"limit_to_extruder": "skirt_brim_extruder_nr"
}
}
},
@ -5419,7 +5550,7 @@
"enabled": "resolveOrValue('adhesion_type') == 'brim'",
"settable_per_mesh": true,
"settable_per_extruder": true,
"limit_to_extruder": "adhesion_extruder_nr"
"limit_to_extruder": "skirt_brim_extruder_nr"
},
"brim_replaces_support":
{
@ -5441,7 +5572,7 @@
"enabled": "resolveOrValue('adhesion_type') == 'brim'",
"settable_per_mesh": false,
"settable_per_extruder": true,
"limit_to_extruder": "adhesion_extruder_nr"
"limit_to_extruder": "skirt_brim_extruder_nr"
},
"raft_margin":
{
@ -5466,7 +5597,7 @@
"default_value": 5,
"minimum_value": "0",
"minimum_value_warning": "raft_interface_line_width",
"enabled": "resolveOrValue('adhesion_type') == 'raft'",
"enabled": "resolveOrValue('adhesion_type') == 'raft' and not raft_remove_inside_corners",
"limit_to_extruder": "adhesion_extruder_nr",
"settable_per_mesh": false,
"settable_per_extruder": true
@ -5483,7 +5614,7 @@
"enabled": "resolveOrValue('adhesion_type') == 'raft'",
"settable_per_mesh": false,
"settable_per_extruder": true,
"limit_to_extruder": "adhesion_extruder_nr"
"limit_to_extruder": "raft_surface_extruder_nr"
},
"layer_0_z_overlap":
{
@ -5498,7 +5629,7 @@
"enabled": "resolveOrValue('adhesion_type') == 'raft'",
"settable_per_mesh": false,
"settable_per_extruder": true,
"limit_to_extruder": "adhesion_extruder_nr"
"limit_to_extruder": "raft_surface_extruder_nr"
},
"raft_surface_layers":
{
@ -5511,7 +5642,7 @@
"enabled": "resolveOrValue('adhesion_type') == 'raft'",
"settable_per_mesh": false,
"settable_per_extruder": true,
"limit_to_extruder": "adhesion_extruder_nr"
"limit_to_extruder": "raft_interface_extruder_nr"
},
"raft_surface_thickness":
{
@ -5527,7 +5658,7 @@
"enabled": "resolveOrValue('adhesion_type') == 'raft'",
"settable_per_mesh": false,
"settable_per_extruder": true,
"limit_to_extruder": "adhesion_extruder_nr"
"limit_to_extruder": "raft_surface_extruder_nr"
},
"raft_surface_line_width":
{
@ -5543,7 +5674,7 @@
"enabled": "resolveOrValue('adhesion_type') == 'raft'",
"settable_per_mesh": false,
"settable_per_extruder": true,
"limit_to_extruder": "adhesion_extruder_nr"
"limit_to_extruder": "raft_surface_extruder_nr"
},
"raft_surface_line_spacing":
{
@ -5559,7 +5690,7 @@
"value": "raft_surface_line_width",
"settable_per_mesh": false,
"settable_per_extruder": true,
"limit_to_extruder": "adhesion_extruder_nr"
"limit_to_extruder": "raft_surface_extruder_nr"
},
"raft_interface_thickness":
{
@ -5575,7 +5706,7 @@
"enabled": "resolveOrValue('adhesion_type') == 'raft'",
"settable_per_mesh": false,
"settable_per_extruder": true,
"limit_to_extruder": "adhesion_extruder_nr"
"limit_to_extruder": "raft_interface_extruder_nr"
},
"raft_interface_line_width":
{
@ -5591,7 +5722,7 @@
"enabled": "resolveOrValue('adhesion_type') == 'raft'",
"settable_per_mesh": false,
"settable_per_extruder": true,
"limit_to_extruder": "adhesion_extruder_nr"
"limit_to_extruder": "raft_interface_extruder_nr"
},
"raft_interface_line_spacing":
{
@ -5607,7 +5738,7 @@
"enabled": "resolveOrValue('adhesion_type') == 'raft'",
"settable_per_mesh": false,
"settable_per_extruder": true,
"limit_to_extruder": "adhesion_extruder_nr"
"limit_to_extruder": "raft_interface_extruder_nr"
},
"raft_base_thickness":
{
@ -5623,7 +5754,7 @@
"enabled": "resolveOrValue('adhesion_type') == 'raft'",
"settable_per_mesh": false,
"settable_per_extruder": true,
"limit_to_extruder": "adhesion_extruder_nr"
"limit_to_extruder": "raft_base_extruder_nr"
},
"raft_base_line_width":
{
@ -5639,7 +5770,7 @@
"enabled": "resolveOrValue('adhesion_type') == 'raft'",
"settable_per_mesh": false,
"settable_per_extruder": true,
"limit_to_extruder": "adhesion_extruder_nr"
"limit_to_extruder": "raft_base_extruder_nr"
},
"raft_base_line_spacing":
{
@ -5655,7 +5786,7 @@
"enabled": "resolveOrValue('adhesion_type') == 'raft'",
"settable_per_mesh": false,
"settable_per_extruder": true,
"limit_to_extruder": "adhesion_extruder_nr"
"limit_to_extruder": "raft_base_extruder_nr"
},
"raft_speed":
{
@ -5688,7 +5819,7 @@
"value": "raft_speed",
"settable_per_mesh": false,
"settable_per_extruder": true,
"limit_to_extruder": "adhesion_extruder_nr"
"limit_to_extruder": "raft_surface_extruder_nr"
},
"raft_interface_speed":
{
@ -5704,7 +5835,7 @@
"enabled": "resolveOrValue('adhesion_type') == 'raft'",
"settable_per_mesh": false,
"settable_per_extruder": true,
"limit_to_extruder": "adhesion_extruder_nr"
"limit_to_extruder": "raft_interface_extruder_nr"
},
"raft_base_speed":
{
@ -5720,7 +5851,7 @@
"value": "0.75 * raft_speed",
"settable_per_mesh": false,
"settable_per_extruder": true,
"limit_to_extruder": "adhesion_extruder_nr"
"limit_to_extruder": "raft_base_extruder_nr"
}
}
},
@ -5753,7 +5884,7 @@
"maximum_value_warning": "10000",
"enabled": "resolveOrValue('adhesion_type') == 'raft' and resolveOrValue('acceleration_enabled')",
"settable_per_mesh": false,
"limit_to_extruder": "adhesion_extruder_nr"
"limit_to_extruder": "raft_surface_extruder_nr"
},
"raft_interface_acceleration":
{
@ -5768,7 +5899,7 @@
"maximum_value_warning": "10000",
"enabled": "resolveOrValue('adhesion_type') == 'raft' and resolveOrValue('acceleration_enabled')",
"settable_per_mesh": false,
"limit_to_extruder": "adhesion_extruder_nr"
"limit_to_extruder": "raft_interface_extruder_nr"
},
"raft_base_acceleration":
{
@ -5783,7 +5914,7 @@
"maximum_value_warning": "10000",
"enabled": "resolveOrValue('adhesion_type') == 'raft' and resolveOrValue('acceleration_enabled')",
"settable_per_mesh": false,
"limit_to_extruder": "adhesion_extruder_nr"
"limit_to_extruder": "raft_base_extruder_nr"
}
}
},
@ -5816,7 +5947,7 @@
"maximum_value_warning": "100",
"enabled": "resolveOrValue('adhesion_type') == 'raft' and resolveOrValue('jerk_enabled')",
"settable_per_mesh": false,
"limit_to_extruder": "adhesion_extruder_nr"
"limit_to_extruder": "raft_surface_extruder_nr"
},
"raft_interface_jerk":
{
@ -5831,7 +5962,7 @@
"maximum_value_warning": "50",
"enabled": "resolveOrValue('adhesion_type') == 'raft' and resolveOrValue('jerk_enabled')",
"settable_per_mesh": false,
"limit_to_extruder": "adhesion_extruder_nr"
"limit_to_extruder": "raft_interface_extruder_nr"
},
"raft_base_jerk":
{
@ -5846,7 +5977,7 @@
"maximum_value_warning": "50",
"enabled": "resolveOrValue('adhesion_type') == 'raft' and resolveOrValue('jerk_enabled')",
"settable_per_mesh": false,
"limit_to_extruder": "adhesion_extruder_nr"
"limit_to_extruder": "raft_base_extruder_nr"
}
}
},
@ -5878,7 +6009,7 @@
"enabled": "resolveOrValue('adhesion_type') == 'raft'",
"settable_per_mesh": false,
"settable_per_extruder": true,
"limit_to_extruder": "adhesion_extruder_nr"
"limit_to_extruder": "raft_surface_extruder_nr"
},
"raft_interface_fan_speed":
{
@ -5893,7 +6024,7 @@
"enabled": "resolveOrValue('adhesion_type') == 'raft'",
"settable_per_mesh": false,
"settable_per_extruder": true,
"limit_to_extruder": "adhesion_extruder_nr"
"limit_to_extruder": "raft_interface_extruder_nr"
},
"raft_base_fan_speed":
{
@ -5908,7 +6039,7 @@
"enabled": "resolveOrValue('adhesion_type') == 'raft'",
"settable_per_mesh": false,
"settable_per_extruder": true,
"limit_to_extruder": "adhesion_extruder_nr"
"limit_to_extruder": "raft_base_extruder_nr"
}
}
}
@ -5970,7 +6101,7 @@
"unit": "mm",
"enabled": "resolveOrValue('prime_tower_enable')",
"default_value": 200,
"value": "machine_width - max(extruderValue(adhesion_extruder_nr, 'brim_width') * extruderValue(adhesion_extruder_nr, 'initial_layer_line_width_factor') / 100 if adhesion_type == 'brim' or (prime_tower_brim_enable and adhesion_type != 'raft') 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) - max(map(abs, extruderValues('machine_nozzle_offset_x'))) - 1",
"value": "machine_width - max(extruderValue(skirt_brim_extruder_nr, 'brim_width') * extruderValue(skirt_brim_extruder_nr, 'initial_layer_line_width_factor') / 100 if adhesion_type == 'brim' or (prime_tower_brim_enable and adhesion_type != 'raft') else (extruderValue(adhesion_extruder_nr, 'raft_margin') if adhesion_type == 'raft' else (extruderValue(skirt_brim_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(skirt_brim_extruder_nr, 'initial_layer_line_width_factor') / 100 - (resolveOrValue('draft_shield_dist') if resolveOrValue('draft_shield_enabled') else 0) - max(map(abs, extruderValues('machine_nozzle_offset_x'))) - 1",
"maximum_value": "machine_width / 2 if machine_center_is_zero else machine_width",
"minimum_value": "resolveOrValue('prime_tower_size') - machine_width / 2 if machine_center_is_zero else resolveOrValue('prime_tower_size')",
"settable_per_mesh": false,
@ -5984,7 +6115,7 @@
"unit": "mm",
"enabled": "resolveOrValue('prime_tower_enable')",
"default_value": 200,
"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' or (prime_tower_brim_enable and adhesion_type != 'raft') 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) - max(map(abs, extruderValues('machine_nozzle_offset_y'))) - 3",
"value": "machine_depth - prime_tower_size - max(extruderValue(skirt_brim_extruder_nr, 'brim_width') * extruderValue(skirt_brim_extruder_nr, 'initial_layer_line_width_factor') / 100 if adhesion_type == 'brim' or (prime_tower_brim_enable and adhesion_type != 'raft') else (extruderValue(adhesion_extruder_nr, 'raft_margin') if adhesion_type == 'raft' else (extruderValue(skirt_brim_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(skirt_brim_extruder_nr, 'initial_layer_line_width_factor') / 100 - (resolveOrValue('draft_shield_dist') if resolveOrValue('draft_shield_enabled') else 0) - max(map(abs, extruderValues('machine_nozzle_offset_y'))) - 3",
"maximum_value": "machine_depth / 2 - resolveOrValue('prime_tower_size') if machine_center_is_zero else machine_depth - resolveOrValue('prime_tower_size')",
"minimum_value": "machine_depth / -2 if machine_center_is_zero else 0",
"settable_per_mesh": false,
@ -6252,6 +6383,18 @@
"minimum_value_warning": "0.01",
"maximum_value_warning": "0.3",
"settable_per_mesh": true
},
"meshfix_maximum_extrusion_area_deviation":
{
"label": "Maximum Extrusion Area Deviation",
"description": "The maximum extrusion area deviation allowed when removing intermediate points from a straight line. An intermediate point may serve as width-changing point in a long straight line. Therefore, if it is removed, it will cause the line to have a uniform width and, as a result, lose (or gain) a bit of extrusion area. If you increase this you may notice slight under- (or over-) extrusion in between straight parallel walls, as more intermediate width-changing points will be allowed to be removed. Your print will be less accurate, but the g-code will be smaller.",
"type": "float",
"unit": "μm²",
"default_value": 2000,
"minimum_value": "0",
"minimum_value_warning": "500",
"maximum_value_warning": "50000",
"settable_per_mesh": true
}
}
},
@ -6801,6 +6944,7 @@
"type": "bool",
"default_value": false,
"limit_to_extruder": "wall_0_extruder_nr",
"enabled": false,
"settable_per_mesh": true
},
"magic_fuzzy_skin_outside_only":
@ -6809,7 +6953,7 @@
"description": "Jitter only the parts' outlines and not the parts' holes.",
"type": "bool",
"default_value": false,
"enabled": "magic_fuzzy_skin_enabled",
"enabled": "magic_fuzzy_skin_enabled and False" ,
"limit_to_extruder": "wall_0_extruder_nr",
"settable_per_mesh": true
},
@ -6822,7 +6966,7 @@
"default_value": 0.3,
"minimum_value": "0.001",
"maximum_value_warning": "wall_line_width_0",
"enabled": "magic_fuzzy_skin_enabled",
"enabled": "magic_fuzzy_skin_enabled and False",
"limit_to_extruder": "wall_0_extruder_nr",
"settable_per_mesh": true
},
@ -6837,7 +6981,7 @@
"minimum_value_warning": "0.1",
"maximum_value_warning": "10",
"maximum_value": "2 / magic_fuzzy_skin_thickness",
"enabled": "magic_fuzzy_skin_enabled",
"enabled": "magic_fuzzy_skin_enabled and False",
"limit_to_extruder": "wall_0_extruder_nr",
"settable_per_mesh": true,
"children":
@ -6853,7 +6997,7 @@
"minimum_value_warning": "0.1",
"maximum_value_warning": "10",
"value": "10000 if magic_fuzzy_skin_point_density == 0 else 1 / magic_fuzzy_skin_point_density",
"enabled": "magic_fuzzy_skin_enabled",
"enabled": "magic_fuzzy_skin_enabled and False",
"limit_to_extruder": "wall_0_extruder_nr",
"settable_per_mesh": true
}
@ -7429,7 +7573,8 @@
"unit": "%",
"default_value": 100,
"type": "float",
"minimum_value": "0.001",
"minimum_value": "5",
"maximum_value": "100",
"minimum_value_warning": "20",
"maximum_value_warning": "100",
"enabled": "bridge_settings_enabled",
@ -7812,6 +7957,36 @@
"minimum_value_warning": "25",
"maximum_value_warning": "100",
"settable_per_mesh": true
},
"material_alternate_walls":
{
"label": "Alternate Wall Directions",
"description": "Alternate wall directions every other layer and inset. Useful for materials that can build up stress, like for metal printing.",
"type": "bool",
"default_value": false,
"enabled": false,
"settable_per_mesh": true,
"settable_per_extruder": true
},
"raft_remove_inside_corners":
{
"label": "Remove Raft Inside Corners",
"description": "Remove inside corners from the raft, causing the raft to become convex.",
"type": "bool",
"default_value": false,
"enabled": "resolveOrValue('adhesion_type') == 'raft'",
"settable_per_mesh": false,
"settable_per_extruder": false
},
"raft_base_wall_count":
{
"label": "Raft Base Wall Count",
"description": "The number of contours to print around the linear pattern in the base layer of the raft.",
"type": "int",
"default_value": 1,
"enabled": "resolveOrValue('adhesion_type') == 'raft'",
"settable_per_mesh": false,
"settable_per_extruder": false
}
}
},

View file

@ -175,8 +175,6 @@
"wall_0_wipe_dist": { "value": 0.0 },
"top_bottom_thickness": { "value": "layer_height_0 + layer_height * 3 if layer_height > 0.15 else 0.8" },
"optimize_wall_printing_order": { "value": true },
"travel_compensate_overlapping_walls_0_enabled": { "value": false },
"fill_perimeter_gaps": { "value": "'everywhere'" },
"filter_out_tiny_gaps": { "value": false },
"fill_outline_gaps": { "value": false },
"z_seam_type": { "value": "'sharpest_corner'" },

View file

@ -48,7 +48,6 @@
"speed_topbottom": {"value": 40 },
"speed_wall": { "value": 35 },
"speed_wall_x": { "value": 40 },
"speed_equalize_flow_max": { "value": 70 },
"retraction_enable": {"default_value":true},
"retraction_amount": { "default_value": 4 },

View file

@ -48,7 +48,6 @@
"speed_topbottom": {"value": 40 },
"speed_wall": { "value": 35 },
"speed_wall_x": { "value": 40 },
"speed_equalize_flow_max": { "value": 70 },
"retraction_enable": {"default_value":true},
"retraction_amount": { "default_value": 4 },

View file

@ -84,7 +84,6 @@
"material_initial_print_temperature": { "value": "material_print_temperature" },
"material_final_print_temperature": { "value": "material_print_temperature" },
"material_flow": { "value": 100 },
"travel_compensate_overlapping_walls_0_enabled": { "value": "False" },
"z_seam_type": { "value": "'back'" },
"z_seam_corner": { "value": "'z_seam_corner_weighted'" },
@ -97,7 +96,6 @@
"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 },

View file

@ -37,9 +37,15 @@
},
"machine_extruder_count": {
"default_value": 2
},
"machine_extruders_share_heater": {
"default_value": true
},
"machine_extruders_share_nozzle": {
"default_value": true
},
"machine_start_gcode": {
"default_value": "G21\nG90\nM107\nG28 X0 Y0\nG28 Z0\nG1 Z15.0 F300\nT0\nG92 E0\nG1 F700 E-80\nT1\nG92 E0\nG1 F1000 X1 Y1 Z0.3\nG1 F600 X200 E60\nG1 F1000 Y3\nG1 F600 X1 E120\nT1\nG92 E0\nG28 X0 Y0\nG1 F700 E-80\nT0\nG92 E0"
"default_value": "M104 T0 S{material_print_temperature}\nM104 T1 S{material_print_temperature}\nM109 T0 S{material_print_temperature}\nM109 T1 S{material_print_temperature}\nG21\nG90 \nG28 X0 Y0 \nG28 Z0 \nG1 Z15.0 F300 \nT0 \nG92 E0 \nG1 F700 E-80 \nT1 \nG92 E0 \nG1 F1000 X1 Y1 Z0.3 \nG1 F600 X200 E60 \nG1 F1000 Y3 \nG1 F600 X1 E120 \nT1 \nG92 E0 \nG28 X0 Y0 \nG1 F700 E-80 \nT0 \nG92 E0"
},
"machine_end_gcode": {
"default_value": "M104 T0 S0\nM104 T1 S0\nM140 S0\nG92 E1\nG1 E-1 F300\nG28 X0 Y0\nM84"

View file

@ -37,9 +37,15 @@
},
"machine_extruder_count": {
"default_value": 2
},
"machine_extruders_share_heater": {
"default_value": true
},
"machine_extruders_share_nozzle": {
"default_value": true
},
"machine_start_gcode": {
"default_value": "G21\nG90\nM107\nG28 X0 Y0\nG28 Z0\nG1 Z15.0 F300\nT0\nG92 E0\nG1 F700 E-80\nT1\nG92 E0\nG1 F1000 X1 Y1 Z0.3\nG1 F600 X200 E60\nG1 F1000 Y3\nG1 F600 X1 E120\nT1\nG92 E0\nG28 X0 Y0\nG1 F700 E-80\nT0\nG92 E0"
"default_value": "M104 T0 S{material_print_temperature}\nM104 T1 S{material_print_temperature}\nM109 T0 S{material_print_temperature}\nM109 T1 S{material_print_temperature}\nG21\nG90 \nG28 X0 Y0 \nG28 Z0 \nG1 Z15.0 F300 \nT0 \nG92 E0 \nG1 F700 E-80 \nT1 \nG92 E0 \nG1 F1000 X1 Y1 Z0.3 \nG1 F600 X200 E60 \nG1 F1000 Y3 \nG1 F600 X1 E120 \nT1 \nG92 E0 \nG28 X0 Y0 \nG1 F700 E-80 \nT0 \nG92 E0"
},
"machine_end_gcode": {
"default_value": "M104 T0 S0\nM104 T1 S0\nM140 S0\nG92 E1\nG1 E-1 F300\nG28 X0 Y0\nM84"

View file

@ -38,6 +38,12 @@
"machine_extruder_count": {
"default_value": 2
},
"machine_extruders_share_heater": {
"default_value": true
},
"machine_extruders_share_nozzle": {
"default_value": true
},
"machine_start_gcode": {
"default_value": "M104 T0 S{material_print_temperature}\nM104 T1 S{material_print_temperature}\nM109 T0 S{material_print_temperature}\nM109 T1 S{material_print_temperature}\nG21\nG90 \nG28 X0 Y0 \nG28 Z0 \nG1 Z15.0 F300 \nT0 \nG92 E0 \nG1 F700 E-80 \nT1 \nG92 E0 \nG1 F1000 X1 Y1 Z0.3 \nG1 F600 X200 E60 \nG1 F1000 Y3 \nG1 F600 X1 E120 \nT1 \nG92 E0 \nG28 X0 Y0 \nG1 F700 E-80 \nT0 \nG92 E0"
},

View file

@ -37,6 +37,12 @@
},
"machine_extruder_count": {
"default_value": 2
},
"machine_extruders_share_heater": {
"default_value": true
},
"machine_extruders_share_nozzle": {
"default_value": true
},
"machine_start_gcode": {
"default_value": "M104 T0 S{material_print_temperature}\nM104 T1 S{material_print_temperature}\nM109 T0 S{material_print_temperature}\nM109 T1 S{material_print_temperature}\nG21\nG90 \nG28 X0 Y0 \nG28 Z0 \nG1 Z15.0 F300 \nT0 \nG92 E0 \nG1 F700 E-80 \nT1 \nG92 E0 \nG1 F1000 X1 Y1 Z0.3 \nG1 F600 X200 E60 \nG1 F1000 Y3 \nG1 F600 X1 E120 \nT1 \nG92 E0 \nG28 X0 Y0 \nG1 F700 E-80 \nT0 \nG92 E0"

View file

@ -0,0 +1,41 @@
{
"version": 2,
"name": "Hellbot Magna SE",
"inherits": "fdmprinter",
"metadata": {
"visible": true,
"author": "Hellbot Development Team",
"manufacturer": "Hellbot",
"file_formats": "text/x-gcode",
"platform": "hellbot_magna_SE.obj",
"platform_texture": "hellbot_magna_SE.png",
"has_materials": true,
"machine_extruder_trains":
{
"0": "hellbot_magna_SE_extruder"
}
},
"overrides": {
"machine_name": { "default_value": "Hellbot Magna SE" },
"machine_width": {
"default_value": 230
},
"machine_depth": {
"default_value": 230
},
"machine_height": {
"default_value": 250
},
"machine_heated_bed": {
"default_value": true
},
"machine_center_is_zero": {
"default_value": false
},
"machine_extruder_count": {
"default_value": 1
}
}
}

View file

@ -89,9 +89,8 @@
"top_layers": {"value": "4 if infill_sparse_density < 95 else 1" },
"bottom_layers": {"value": "(top_layers)" },
"wall_0_inset": {"value": "0" },
"outer_inset_first": {"value": true },
"inset_direction": {"value": "'outside_in'" },
"alternate_extra_perimeter": {"value": false },
"travel_compensate_overlapping_walls_enabled": {"value": false },
"filter_out_tiny_gaps": {"value": true },
"fill_outline_gaps": {"value": true },
"z_seam_type": {"value": "'shortest'"},

View file

@ -194,7 +194,6 @@
"material_initial_print_temperature": { "value": "material_print_temperature" },
"material_final_print_temperature": { "value": "material_print_temperature" },
"material_flow": { "value": 100 },
"travel_compensate_overlapping_walls_0_enabled": { "value": false },
"z_seam_type": { "value": "'back'" },
"z_seam_corner": { "value": "'z_seam_corner_none'" },
@ -207,7 +206,6 @@
"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 },

View file

@ -112,7 +112,6 @@
"minimum_support_area": { "value": 2 },
"minimum_interface_area": { "value": 10 },
"fill_perimeter_gaps": { "value": "'everywhere'" },
"fill_outline_gaps": { "value": false },
"filter_out_tiny_gaps": { "value": false },

View file

@ -129,7 +129,6 @@
"minimum_support_area": { "value": 2 },
"minimum_interface_area": { "value": 10 },
"fill_perimeter_gaps": { "value": "'everywhere'" },
"fill_outline_gaps": { "value": false },
"filter_out_tiny_gaps": { "value": false },

View file

@ -130,7 +130,6 @@
"minimum_support_area": { "value": 2 },
"minimum_interface_area": { "value": 10 },
"fill_perimeter_gaps": { "value": "'everywhere'" },
"fill_outline_gaps": { "value": false },
"filter_out_tiny_gaps": { "value": false },

View file

@ -144,7 +144,6 @@
"retraction_prime_speed": { "value": "35" },
"skin_overlap": { "value": "10" },
"speed_equalize_flow_enabled": { "value": "True" },
"speed_layer_0": { "value": "20" },
"speed_prime_tower": { "value": "speed_topbottom" },
"speed_print": { "value": "35" },

View file

@ -84,7 +84,6 @@
"material_initial_print_temperature": { "value": "material_print_temperature" },
"material_final_print_temperature": { "value": "material_print_temperature" },
"material_flow": { "value": 100 },
"travel_compensate_overlapping_walls_0_enabled": { "value": "False" },
"z_seam_type": { "value": "'back'" },
"z_seam_corner": { "value": "'z_seam_corner_weighted'" },
@ -97,7 +96,6 @@
"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 },

View file

@ -49,13 +49,8 @@
"top_bottom_pattern_0": {"value": "'lines'" },
"wall_0_inset": {"value": 0},
"optimize_wall_printing_order": {"value": false },
"outer_inset_first": {"value": false },
"inset_direction": {"value": "'inside_out'" },
"alternate_extra_perimeter": {"value": false },
"travel_compensate_overlapping_walls_enabled": {"value": true },
"travel_compensate_overlapping_walls_0_enabled": {"value": true },
"travel_compensate_overlapping_walls_x_enabled": {"value": true },
"wall_min_flow": {"value": 0},
"fill_perimeter_gaps": {"value": "'everywhere'" },
"filter_out_tiny_gaps": {"value": true },
"fill_outline_gaps": {"value": true },
"xy_offset": {"value": 0},
@ -97,7 +92,6 @@
"speed_layer_0": {"value": 10},
"speed_travel_layer_0": {"value": 50},
"speed_slowdown_layers": {"value": 2},
"speed_equalize_flow_enabled": {"value": false },
"acceleration_enabled": {"value": false },
"acceleration_roofing": {"value": 3000 },
"jerk_enabled": {"value": false },

View file

@ -78,7 +78,7 @@
"default_value": 0.2
},
"support_pattern": {
"default_value": "ZigZag"
"default_value": "zigzag"
},
"support_infill_rate": {
"value": "15 if support_enable and support_structure == 'normal' else 0 if support_enable and support_structure == 'tree' else 15"

View file

@ -179,7 +179,6 @@
"material_initial_print_temperature": { "value": "material_print_temperature" },
"material_final_print_temperature": { "value": "material_print_temperature" },
"material_flow": { "value": 100 },
"travel_compensate_overlapping_walls_0_enabled": { "value": false },
"z_seam_type": { "value": "'back'" },
"z_seam_corner": { "value": "'z_seam_corner_none'" },
@ -192,7 +191,6 @@
"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 },

View file

@ -0,0 +1,372 @@
{
"name": "Hyper S",
"version": 2,
"inherits": "fdmprinter",
"metadata": {
"visible": true,
"author": "Mixware",
"manufacturer": "Mixware",
"file_formats": "text/x-gcode",
"platform": "mixware_hyper_s_platform.stl",
"has_materials": true,
"has_machine_quality": true,
"preferred_material": "generic_pla",
"preferred_quality": "coarse",
"machine_extruder_trains": {
"0": "mixware_hyper_s_extruder_0"
}
},
"overrides": {
"machine_name": {
"default_value": "Hyper S"
},
"machine_start_gcode": {
"default_value": "M140 S{material_bed_temperature} ; Heat bed\nM109 S{material_print_temperature} ; Heat nozzle\nM190 S{material_bed_temperature} ; Wait for bed heating\nG28 ; home all axes\nM117 Purge extruder\nG92 E0 ; reset extruder\nG1 Z5.0 F1000 ; move z up little to prevent scratching of surface\nG1 X0.1 Y20 Z0.3 F5000.0 ; move to start-line position\nG1 X0.1 Y100.0 Z0.3 F1500.0 E15 ; draw 1st line\nG1 X0.4 Y100.0 Z0.3 F5000.0 ; move to side a little\nG1 X0.4 Y20 Z0.3 F1500.0 E30 ; draw 2nd line\nG92 E0 ; reset extruder\nG1 Z5.0 F1000 ; move z up little to prevent scratching of surface"
},
"machine_end_gcode": {
"default_value": "G91; relative positioning\nG1 Z1.0 F3000 ; move z up little to prevent scratching of print\nG90; absolute positioning\nG1 X0 Y200 F1000 ; prepare for part removal\nM104 S0; turn off extruder\nM140 S0 ; turn off bed\nG1 X0 Y220 F1000 ; prepare for part removal\nM84 ; disable motors\nM106 S0 ; turn off fan"
},
"machine_width": {
"default_value": 300
},
"machine_depth": {
"default_value": 300
},
"machine_height": {
"default_value": 400
},
"raft_margin": {
"default_value": 3,
"minimum_value_warning": "0.01"
},
"raft_airgap": {
"default_value": 0.24
},
"brim_width": {
"default_value": 3
},
"machine_heated_bed": {
"default_value": true
},
"material_diameter": {
"default_value": 1.75
},
"top_bottom_pattern": {
"default_value": "zigzag"
},
"ironing_line_spacing": {
"default_value": 0.4
},
"ironing_pattern": {
"default_value": "concentric"
},
"skin_no_small_gaps_heuristic": {
"default_value": false
},
"retraction_hop_enabled": {
"default_value": false
},
"support_enable": {
"default_value": true
},
"support_type": {
"default_value": "buildplate"
},
"support_angle": {
"default_value": 60
},
"support_pattern": {
"default_value": "zigzag"
},
"support_infill_rate": {
"value": 15
},
"gantry_height": {
"value": 25
},
"machine_max_feedrate_x": {
"default_value": 500
},
"machine_max_feedrate_y": {
"default_value": 500
},
"machine_max_feedrate_z": {
"default_value": 10
},
"machine_max_feedrate_e": {
"default_value": 50
},
"machine_max_acceleration_x": {
"default_value": 500
},
"machine_max_acceleration_y": {
"default_value": 500
},
"machine_max_acceleration_z": {
"default_value": 100
},
"machine_max_acceleration_e": {
"default_value": 500
},
"machine_acceleration": {
"default_value": 500
},
"machine_max_jerk_xy": {
"default_value": 10
},
"machine_max_jerk_z": {
"default_value": 0.4
},
"machine_max_jerk_e": {
"default_value": 5
},
"acceleration_print": {
"default_value": 1000
},
"jerk_print": {
"default_value": 10
},
"acceleration_enabled": {
"default_value": false
},
"jerk_enabled": {
"default_value": false
},
"speed_print": {
"default_value": 40.0
},
"optimize_wall_printing_order": {
"default_value": "True"
},
"z_seam_type": {
"default_value": "shortest"
},
"infill_before_walls": {
"default_value": false
},
"infill_sparse_density": {
"default_value": 15
},
"fill_outline_gaps": {
"default_value": false
},
"filter_out_tiny_gaps": {
"default_value": false
},
"retraction_hop": {
"default_value": 0.2
},
"travel_avoid_other_parts": {
"default_value": false
},
"travel_retract_before_outer_wall": {
"default_value": true
},
"retraction_amount": {
"default_value": 2
},
"retraction_enable": {
"default_value": true
},
"retraction_count_max": {
"default_value": 100
},
"cool_fan_enabled": {
"default_value": true
},
"cool_min_layer_time": {
"default_value": 10
},
"skirt_gap": {
"default_value": 8.0
},
"skirt_line_count": {
"default_value": 3
},
"adaptive_layer_height_variation": {
"default_value": 0.04
},
"adaptive_layer_height_variation_step": {
"default_value": 0.04
},
"support_use_towers": {
"default_value": false
},
"support_interface_enable": {
"default_value": true
},
"support_interface_density": {
"default_value": 33.333
},
"support_interface_pattern": {
"default_value": "grid"
},
"support_interface_skip_height": {
"default_value": 0.24
},
"top_bottom_thickness": {
"default_value": 0.8
},
"material_flow": {
"default_value": 100
},
"material_print_temperature": {
"maximum_value_warning": "330"
},
"acceleration_roofing": {
"enabled": "acceleration_enabled and roofing_layer_count > 0 and top_layers > 0"
},
"retraction_speed": {
"default_value": 40,
"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"
},
"speed_layer_0": {
"value": "speed_print / 2"
},
"acceleration_travel_layer_0": {
"value": "acceleration_travel"
},
"jerk_travel": {
"value": "jerk_print"
},
"jerk_travel_layer_0": {
"value": "jerk_travel"
},
"skirt_brim_speed": {
"value": "speed_layer_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_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"
},
"material_initial_print_temperature": {
"value": "material_print_temperature"
},
"material_final_print_temperature": {
"value": "material_print_temperature"
},
"cool_fan_full_at_height": {
"value": "layer_height_0 + 2 * layer_height"
},
"adhesion_type": {
"default_value": "skirt"
},
"meshfix_maximum_travel_resolution": {
"value": "meshfix_maximum_resolution"
},
"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": {
"default_value": "xy_overrides_z"
},
"support_interface_height": {
"value": "layer_height * 4"
},
"wall_thickness": {
"value": "line_width * 2"
},
"acceleration_travel": {
"value": 1000
},
"line_width": {
"value": 0.4
},
"speed_z_hop": {
"default_value": 5
},
"retraction_combing_max_distance": {
"default_value": 30
},
"travel_avoid_supports": {
"default_value": true
},
"brim_replaces_support": {
"default_value": false
},
"support_brim_width": {
"default_value": 4
},
"minimum_support_area": {
"default_value": 2
},
"minimum_interface_area": {
"default_value": 10
},
"support_wall_count": {
"value": 1
},
"support_brim_enable": {
"value": false
},
"retraction_combing": {
"value": "all"
},
"retraction_extrusion_window": {
"value": 10,
"maximum_value_warning": "20"
},
"retraction_min_travel": {
"value": 1.5
},
"infill_wipe_dist": {
"value": 0.0
},
"skin_overlap": {
"value": 10.0
},
"infill_overlap": {
"value": 30.0
},
"wall_0_wipe_dist": {
"value": 0.0
}
}
}

View file

@ -176,15 +176,6 @@
"skin_outline_count": {
"value": 0
},
"travel_compensate_overlapping_walls_enabled": {
"value": "False"
},
"travel_compensate_overlapping_walls_0_enabled": {
"value": "False"
},
"travel_compensate_overlapping_walls_x_enabled": {
"value": "False"
},
"wall_0_wipe_dist": {
"value": "machine_nozzle_size / 3"
},
@ -218,10 +209,6 @@
"material_flow_layer_0": {
"enabled": false
},
"speed_equalize_flow_enabled": {
"enabled": false,
"value": "False"
},
"draft_shield_enabled": {
"enabled": false,
"value": "False"

View file

@ -88,9 +88,6 @@
"wall_0_wipe_dist": { "value": 0.05 },
"optimize_wall_printing_order": { "value": "True" },
"travel_compensate_overlapping_walls_enabled": { "value": "False" },
"travel_compensate_overlapping_walls_0_enabled": { "value": "False" },
"travel_compensate_overlapping_walls_x_enabled": { "value": "False" },
"infill_sparse_density": { "value": 16 },
"infill_wipe_dist": { "value": 0 },

View file

@ -0,0 +1,51 @@
{
"version": 2,
"name": "Volumic SH65",
"inherits": "fdmprinter",
"metadata": {
"visible": true,
"author": "Volumic",
"manufacturer": "Volumic",
"file_formats": "text/x-gcode",
"icon": "volumic-icon",
"platform": "SH65_platform.STL",
"has_materials": true,
"has_machine_quality": true,
"machine_extruder_trains":{"0": "sh65_extruder"}
},
"overrides": {
"machine_name": { "default_value": "VOLUMIC SH65" },
"machine_heated_bed": { "default_value": true },
"machine_width": { "default_value": 650 },
"machine_height": { "default_value": 300 },
"machine_depth": { "default_value": 300 },
"machine_center_is_zero": { "default_value": false },
"material_diameter": { "default_value": 1.75 },
"machine_nozzle_size": { "default_value": 0.4 },
"layer_height": { "default_value": 0.1 },
"layer_height_0": { "default_value": 0.1 },
"retraction_amount": { "default_value": 2.40 },
"retraction_speed": { "default_value": 30 },
"adhesion_type": { "default_value": "none" },
"infill_sparse_density": { "default_value": 25 },
"fill_outline_gaps": { "default_value": true },
"retract_at_layer_change": { "default_value": true },
"retraction_combing_max_distance": { "default_value": 200 },
"machine_head_with_fans_polygon": { "default_value": [[-38,30],[38,30],[38,-40],[-38,-40]] },
"machine_max_feedrate_z": { "default_value": 30 },
"machine_max_feedrate_e": { "default_value": 60 },
"machine_max_acceleration_z": { "default_value": 500 },
"machine_acceleration": { "default_value": 2000 },
"machine_max_jerk_xy": { "default_value": 10 },
"machine_max_jerk_z": { "default_value": 0.4 },
"machine_max_jerk_e": { "default_value": 5 },
"machine_gcode_flavor": { "default_value": "RepRap (Marlin/Sprinter)" },
"machine_start_gcode": {
"default_value": "M117 Demarrage\nM106 S0\nM140 S{material_bed_temperature_layer_0}\nM104 T0 S{material_print_temperature_layer_0}\nG28\nG90\nM82\nG92 E0\nG1 Z3 F600\n;M190 S{material_bed_temperature_layer_0}\nM109 T0 S{material_print_temperature_layer_0}\nM300 P350\nM117 Purge\nG1 Z0.15 F600\nG1 E10 F400\nG92 E0\nM117 Impression"
},
"machine_end_gcode": {
"default_value": "M107\nG91\nT0\nG1 E-1\nM104 T0 S0\nG90\nG0 X1 Y190 F5000\nG92 E0\nM140 S0\nM84\nM300"
}
}
}

View file

@ -110,9 +110,6 @@
"switch_extruder_retraction_speed": {
"value": "30"
},
"travel_compensate_overlapping_walls_enabled": {
"default_value": false
},
"raft_base_acceleration": {
"value": "400"
},
@ -389,9 +386,6 @@
"acceleration_support_infill": {
"value": "400"
},
"travel_compensate_overlapping_walls_0_enabled": {
"value": "False"
},
"support_bottom_material_flow": {
"value": "99"
},
@ -584,9 +578,6 @@
"infill_material_flow": {
"value": "99"
},
"speed_equalize_flow_max": {
"default_value": 40
},
"skin_preshrink": {
"value": "0.0"
},
@ -644,9 +635,6 @@
"skirt_line_count": {
"default_value": 2
},
"travel_compensate_overlapping_walls_x_enabled": {
"value": "False"
},
"jerk_wall_0": {
"value": "5"
},

View file

@ -0,0 +1,51 @@
{
"version": 2,
"name": "Volumic Stream30Pro MK3",
"inherits": "fdmprinter",
"metadata": {
"visible": true,
"author": "Volumic",
"manufacturer": "Volumic",
"file_formats": "text/x-gcode",
"icon": "volumic-icon",
"platform": "STREAM30ULTRA_platform.STL",
"has_materials": true,
"has_machine_quality": true,
"machine_extruder_trains":{"0": "stream30mk3_extruder"}
},
"overrides": {
"machine_name": { "default_value": "VOLUMIC STREAM30PRO MK3" },
"machine_heated_bed": { "default_value": true },
"machine_width": { "default_value": 300 },
"machine_height": { "default_value": 310 },
"machine_depth": { "default_value": 200 },
"machine_center_is_zero": { "default_value": false },
"material_diameter": { "default_value": 1.75 },
"machine_nozzle_size": { "default_value": 0.4 },
"layer_height": { "default_value": 0.1 },
"layer_height_0": { "default_value": 0.1 },
"retraction_amount": { "default_value": 2.40 },
"retraction_speed": { "default_value": 30 },
"adhesion_type": { "default_value": "none" },
"infill_sparse_density": { "default_value": 25 },
"fill_outline_gaps": { "default_value": true },
"retract_at_layer_change": { "default_value": true },
"retraction_combing_max_distance": { "default_value": 200 },
"machine_head_with_fans_polygon": { "default_value": [[-38,30],[38,30],[38,-40],[-38,-40]] },
"machine_max_feedrate_z": { "default_value": 30 },
"machine_max_feedrate_e": { "default_value": 60 },
"machine_max_acceleration_z": { "default_value": 500 },
"machine_acceleration": { "default_value": 2000 },
"machine_max_jerk_xy": { "default_value": 10 },
"machine_max_jerk_z": { "default_value": 0.4 },
"machine_max_jerk_e": { "default_value": 5 },
"machine_gcode_flavor": { "default_value": "RepRap (Marlin/Sprinter)" },
"machine_start_gcode": {
"default_value": "M117 Demarrage\nM106 S0\nM140 S{material_bed_temperature_layer_0}\nM104 T0 S{material_print_temperature_layer_0}\nG28\nG90\nM82\nG92 E0\nG1 Z3 F600\n;M190 S{material_bed_temperature_layer_0}\nM109 T0 S{material_print_temperature_layer_0}\nM300 P350\nM117 Purge\nG1 Z0.15 F600\nG1 E10 F400\nG92 E0\nM117 Impression"
},
"machine_end_gcode": {
"default_value": "M107\nG91\nT0\nG1 E-1\nM104 T0 S0\nG90\nG0 X1 Y190 F5000\nG92 E0\nM140 S0\nM84\nM300"
}
}
}

View file

@ -0,0 +1,51 @@
{
"version": 2,
"name": "Volumic Stream30Ultra SC2",
"inherits": "fdmprinter",
"metadata": {
"visible": true,
"author": "Volumic",
"manufacturer": "Volumic",
"file_formats": "text/x-gcode",
"icon": "volumic-icon",
"platform": "STREAM30ULTRA_platform.STL",
"has_materials": true,
"has_machine_quality": true,
"machine_extruder_trains":{"0": "stream30ultrasc2_extruder"}
},
"overrides": {
"machine_name": { "default_value": "VOLUMIC STREAM30ULTRA SC2" },
"machine_heated_bed": { "default_value": true },
"machine_width": { "default_value": 300 },
"machine_height": { "default_value": 310 },
"machine_depth": { "default_value": 200 },
"machine_center_is_zero": { "default_value": false },
"material_diameter": { "default_value": 1.75 },
"machine_nozzle_size": { "default_value": 0.4 },
"layer_height": { "default_value": 0.1 },
"layer_height_0": { "default_value": 0.1 },
"retraction_amount": { "default_value": 2.40 },
"retraction_speed": { "default_value": 30 },
"adhesion_type": { "default_value": "none" },
"infill_sparse_density": { "default_value": 25 },
"fill_outline_gaps": { "default_value": true },
"retract_at_layer_change": { "default_value": true },
"retraction_combing_max_distance": { "default_value": 200 },
"machine_head_with_fans_polygon": { "default_value": [[-38,30],[38,30],[38,-40],[-38,-40]] },
"machine_max_feedrate_z": { "default_value": 30 },
"machine_max_feedrate_e": { "default_value": 60 },
"machine_max_acceleration_z": { "default_value": 500 },
"machine_acceleration": { "default_value": 2000 },
"machine_max_jerk_xy": { "default_value": 10 },
"machine_max_jerk_z": { "default_value": 0.4 },
"machine_max_jerk_e": { "default_value": 5 },
"machine_gcode_flavor": { "default_value": "RepRap (Marlin/Sprinter)" },
"machine_start_gcode": {
"default_value": "M117 Demarrage\nM106 S0\nM140 S{material_bed_temperature_layer_0}\nM104 T0 S{material_print_temperature_layer_0}\nG28\nG90\nM82\nG92 E0\nG1 Z3 F600\n;M190 S{material_bed_temperature_layer_0}\nM109 T0 S{material_print_temperature_layer_0}\nM300 P350\nM117 Purge\nG1 Z0.15 F600\nG1 E10 F400\nG92 E0\nM117 Impression"
},
"machine_end_gcode": {
"default_value": "M107\nG91\nT0\nG1 E-1\nM104 T0 S0\nG90\nG0 X1 Y190 F5000\nG92 E0\nM140 S0\nM84\nM300"
}
}
}

View file

@ -9,7 +9,8 @@
"file_formats": "text/x-gcode",
"platform": "tinyboy_fabrikator15.stl",
"platform_offset": [-95, -3, -46],
"has_materials": false,
"has_materials": true,
"preferred_material": "generic_pla_175",
"has_machine_quality": true,
"preferred_quality_type": "normal",
"machine_extruder_trains":
@ -33,12 +34,10 @@
"gantry_height": { "value": 45 },
"machine_center_is_zero": { "default_value": false },
"machine_start_gcode": {
"default_value": ";Sliced at: {day} {date} {time}\n;Basic settings: Layer height: {layer_height} Walls: {wall_thickness} Fill: {infill_sparse_density}\n;Print time: {print_time}\n;Filament used: {filament_amount}m {filament_weight}g\n;Filament cost: {filament_cost}\n;M190 S{print_bed_temperature} ;Uncomment to add your own bed temperature line\n;M109 S{print_temperature} ;Uncomment to add your own temperature line\nG21 ;metric values\nG90 ;absolute positioning\nM82 ;set extruder to absolute mode\nM107 ;start with the fan off\nG28 X0 Y0 ;move X/Y to min endstops\nG28 Z0 ;move Z to min endstops\nG1 X0.0 Y0.0 Z15.0 F{travel_speed} ;move the printhead up 15mm\nG92 E0 ;zero the extruded length\n;M109 S{print_temperature} ;set extruder temperature\nG1 F200 E30 ;extrude 30mm of feed stock\nG92 E0 ;zero the extruded length again\nG1 F{travel_speed}\n;Put printing message on LCD screen\nM117 Printing..."
"default_value": ";Sliced at: {day} {date} {time}\n;Basic settings: Layer height: {layer_height} Walls: {wall_thickness} Fill: {infill_sparse_density}\n;Print time: {print_time}\n;Filament used: {filament_amount}m {filament_weight}g\n;Filament cost: {filament_cost}\nG21 ;metric values\nG90 ;absolute positioning\nM82 ;set extruder to absolute mode\nM107 ;start with the fan off\nG28 X0 Y0 ;move X/Y to min endstops\nG28 Z0 ;move Z to min endstops\nG1 X0.0 Y0.0 Z15.0 F6000 ;move the printhead up 15mm\nG92 E0 ;zero the extruded length\nM104 S{material_print_temperature} ;set extruder temperature\nM105\nM109 S{material_print_temperature} ;wait for extruder temperature\nG1 F200 E30 ;extrude 30mm of feed stock\nG92 E0 ;zero the extruded length again\nG1 F6000\n;Put printing message on LCD screen\nM117 Printing..."
},
"machine_end_gcode": {
"default_value": ";End GCode\nM104 S0 ;extruder heater off\nM140 S0 ;heated bed heater off (if you have it)\nG91 ;relative positioning\nG1 E-1 F300 ;retract the filament a bit before lifting the nozzle, to release some of the pressure\nG1 Z+0.5 E-5 X-20 Y-20 F{travel_speed} ;move Z up a bit and retract filament even more\nG28 X0 Y0 ;move X/Y to min endstops, so the head is out of the way\nM84 ;steppers off\nG90 ;absolute positioning\n;{jobname}"
"default_value": ";End GCode\nM104 S0 ;extruder heater off\nM140 S0 ;heated bed heater off (if you have it)\nG91 ;relative positioning\nG1 E-1 F300 ;retract the filament a bit before lifting the nozzle, to release some of the pressure\nG1 Z+0.5 E-5 X-20 Y-20 F6000 ;move Z up a bit and retract filament even more\nG28 X0 Y0 ;move X/Y to min endstops, so the head is out of the way\nM84 ;steppers off\nG90 ;absolute positioning\n;{jobname}"
}
}
}

View file

@ -83,7 +83,6 @@
"material_initial_print_temperature": { "value": "material_print_temperature" },
"material_final_print_temperature": { "value": "material_print_temperature" },
"material_flow": { "value": 100 },
"travel_compensate_overlapping_walls_0_enabled": { "value": "False" },
"z_seam_type": { "value": "'back'" },
"z_seam_corner": { "value": "'z_seam_corner_weighted'" },
@ -96,7 +95,6 @@
"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 },

View file

@ -31,8 +31,7 @@
"machine_heated_bed": { "default_value": true },
"material_diameter": { "default_value": 1.75 },
"speed_print": { "value": 50.0 } ,
"speed_infill": { "value": "speed_print" },
"speed_wall": { "value": "speed_print / 2" },
@ -64,11 +63,9 @@
"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_hop_enabled": { "value": "False" },
"retraction_hop": { "value": 0.2 },
"retraction_combing": { "value": "'off' if retraction_hop_enabled else 'noskin'" },
@ -121,6 +118,5 @@
"minimum_interface_area": { "value": 10 },
"top_bottom_thickness": {"value": "layer_height_0 + layer_height * 3" },
"wall_thickness": {"value": "line_width * 2" }
}
}

View file

@ -44,6 +44,24 @@
"skin_angles": {
"value": "[] if infill_pattern not in ['cross', 'cross_3d'] else [20, 110]"
},
"line_width": {
"value": "machine_nozzle_size"
},
"infill_before_walls": {
"value": "False"
},
"retraction_combing": {
"value": "'no_outer_surfaces'"
},
"skin_monotonic" : {
"value": true
},
"speed_equalize_flow_width_factor": {
"value": "110.0"
},
"meshfix_maximum_extrusion_area_deviation": {
"value": "50000"
},
"top_layers": {
"value": "math.ceil(round(top_thickness / resolveOrValue('layer_height'), 4))"
},

View file

@ -86,15 +86,6 @@
},
"machine_acceleration": {
"default_value": 3000
},
"infill_before_walls": {
"value": false
},
"retraction_combing": {
"value": "'no_outer_surfaces'"
},
"skin_monotonic" : {
"value": true
}
}
}

View file

@ -35,7 +35,7 @@
"value": "round(machine_nozzle_size / 1.5, 2)"
},
"line_width": {
"value": "round(machine_nozzle_size * 0.875, 2)"
"value": "machine_nozzle_size"
},
"speed_support": {
"value": "speed_wall_0"

View file

@ -59,7 +59,7 @@
"speed_infill": { "value": "speed_print" },
"speed_wall_x": { "value": "speed_wall" },
"layer_height_0": { "value": "round(machine_nozzle_size / 1.5, 2)" },
"line_width": { "value": "round(machine_nozzle_size * 0.875, 2)" },
"line_width": { "value": "machine_nozzle_size" },
"optimize_wall_printing_order": { "value": "True" },
"zig_zaggify_infill": { "value": "gradual_infill_steps == 0" },
"speed_support": { "value": "speed_wall_0" },

View file

@ -84,20 +84,18 @@
"acceleration_enabled": { "value": "True" },
"acceleration_layer_0": { "value": "acceleration_topbottom" },
"acceleration_prime_tower": { "value": "math.ceil(acceleration_print * 2000 / 4000)" },
"acceleration_print": { "value": "4000" },
"acceleration_support": { "value": "math.ceil(acceleration_print * 2000 / 4000)" },
"acceleration_prime_tower": { "value": "math.ceil(acceleration_print * 2000 / 3500)" },
"acceleration_print": { "value": "3500" },
"acceleration_support": { "value": "math.ceil(acceleration_print * 2000 / 3500)" },
"acceleration_support_interface": { "value": "acceleration_topbottom" },
"acceleration_topbottom": { "value": "math.ceil(acceleration_print * 500 / 4000)" },
"acceleration_wall": { "value": "math.ceil(acceleration_print * 1000 / 4000)" },
"acceleration_wall_0": { "value": "math.ceil(acceleration_wall * 500 / 1000)" },
"acceleration_topbottom": { "value": "math.ceil(acceleration_print * 1000 / 3500)" },
"acceleration_wall": { "value": "math.ceil(acceleration_print * 1500 / 3500)" },
"acceleration_wall_0": { "value": "math.ceil(acceleration_wall * 1000 / 3500)" },
"brim_width": { "value": "3" },
"cool_fan_full_at_height": { "value": "layer_height_0 + 4 * layer_height" },
"cool_fan_speed": { "value": "50" },
"cool_fan_speed_max": { "value": "100" },
"cool_min_speed": { "value": "5" },
"infill_before_walls": { "value": false },
"infill_line_width": { "value": "round(line_width * 0.5 / 0.35, 2)" },
"infill_overlap": { "value": "0" },
"infill_pattern": { "value": "'zigzag' if infill_sparse_density > 80 else 'triangles'" },
"infill_wipe_dist": { "value": "0" },
@ -121,7 +119,6 @@
"layer_height_0": { "value": "round(machine_nozzle_size / 1.5, 2)" },
"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'))" },
"line_width": { "value": "round(machine_nozzle_size * 0.875, 3)" },
"machine_min_cool_heat_time_window": { "value": "15" },
"default_material_print_temperature": { "value": "200" },
"material_print_temperature_layer_0": { "value": "material_print_temperature + 5" },
@ -140,7 +137,6 @@
"raft_margin": { "value": "10" },
"raft_surface_layers": { "value": "1" },
"retraction_amount": { "value": "6.5" },
"retraction_combing": {"value": "'no_outer_surfaces'"},
"retraction_count_max": { "value": "10" },
"retraction_extrusion_window": { "value": "1" },
"retraction_hop": { "value": "2" },
@ -149,7 +145,6 @@
"retraction_min_travel": { "value": "5" },
"retraction_prime_speed": { "value": "15" },
"skin_overlap": { "value": "10" },
"skin_monotonic" : { "value": true },
"speed_layer_0": { "value": "20" },
"speed_prime_tower": { "value": "speed_topbottom" },
"speed_print": { "value": "35" },
@ -171,7 +166,6 @@
"top_bottom_thickness": { "value": "1" },
"travel_avoid_distance": { "value": "3 if extruders_enabled_count > 1 else machine_nozzle_tip_outer_diameter / 2 * 1.5" },
"wall_0_inset": { "value": "0" },
"wall_line_width_x": { "value": "round(wall_line_width * 0.3 / 0.35, 2)" },
"wall_thickness": { "value": "1" },
"zig_zaggify_infill": { "value": "gradual_infill_steps == 0" }
}

View file

@ -59,6 +59,9 @@
},
"machine_end_gcode": {
"value": "'M104 S0 ;extruder heater off' + ('\\nM140 S0 ;heated bed heater off' if machine_heated_bed else '') + '\\nG91 ;relative positioning\\nG1 E-1 F300 ;retract the filament a bit before lifting the nozzle, to release some of the pressure\\nG1 Z+0.5 E-5 X-20 Y-20 F9000 ;move Z up a bit and retract filament even more\\nG28 X0 Y0 ;move X/Y to min endstops, so the head is out of the way\\nM84 ;steppers off\\nG90 ;absolute positioning'"
},
"infill_before_walls": {
"value": "False"
}
}
}

View file

@ -77,20 +77,18 @@
"acceleration_enabled": { "value": "True" },
"acceleration_layer_0": { "value": "acceleration_topbottom" },
"acceleration_prime_tower": { "value": "math.ceil(acceleration_print * 2000 / 4000)" },
"acceleration_print": { "value": "4000" },
"acceleration_support": { "value": "math.ceil(acceleration_print * 2000 / 4000)" },
"acceleration_prime_tower": { "value": "math.ceil(acceleration_print * 2000 / 3500)" },
"acceleration_print": { "value": "3500" },
"acceleration_support": { "value": "math.ceil(acceleration_print * 2000 / 3500)" },
"acceleration_support_interface": { "value": "acceleration_topbottom" },
"acceleration_topbottom": { "value": "math.ceil(acceleration_print * 500 / 4000)" },
"acceleration_wall": { "value": "math.ceil(acceleration_print * 1000 / 4000)" },
"acceleration_wall_0": { "value": "math.ceil(acceleration_wall * 500 / 1000)" },
"acceleration_topbottom": { "value": "math.ceil(acceleration_print * 1000 / 3500)" },
"acceleration_wall": { "value": "math.ceil(acceleration_print * 1500 / 3500)" },
"acceleration_wall_0": { "value": "math.ceil(acceleration_wall * 1000 / 1000)" },
"brim_width": { "value": "3" },
"cool_fan_full_at_height": { "value": "layer_height_0 + 4 * layer_height" },
"cool_fan_speed": { "value": "50" },
"cool_fan_speed_max": { "value": "100" },
"cool_min_speed": { "value": "5" },
"infill_before_walls": { "value": false },
"infill_line_width": { "value": "round(line_width * 0.5 / 0.35, 2)" },
"infill_overlap": { "value": "0" },
"infill_pattern": { "value": "'zigzag' if infill_sparse_density > 80 else 'triangles'" },
"infill_wipe_dist": { "value": "0" },
@ -113,7 +111,6 @@
"layer_height_0": { "value": "round(machine_nozzle_size / 1.5, 2)" },
"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'))" },
"line_width": { "value": "machine_nozzle_size * 0.875" },
"machine_min_cool_heat_time_window": { "value": "15" },
"default_material_print_temperature": { "value": "200" },
"material_standby_temperature": { "value": "100" },
@ -132,7 +129,6 @@
"raft_speed": { "value": "25" },
"raft_surface_layers": { "value": "1" },
"retraction_amount": { "value": "6.5" },
"retraction_combing": { "value": "'no_outer_surfaces'"},
"retraction_count_max": { "value": "10" },
"retraction_extrusion_window": { "value": "1" },
"retraction_hop": { "value": "2" },
@ -140,9 +136,7 @@
"retraction_hop_only_when_collides": { "value": "True" },
"retraction_min_travel": { "value": "5" },
"retraction_prime_speed": { "value": "15" },
"skin_monotonic" : { "value": true },
"skin_overlap": { "value": "10" },
"speed_equalize_flow_enabled": { "value": "True" },
"speed_layer_0": { "value": "20" },
"speed_prime_tower": { "value": "speed_topbottom" },
"speed_print": { "value": "35" },
@ -164,11 +158,9 @@
"travel_avoid_supports": { "value": "True" },
"travel_avoid_distance": { "value": "3 if extruders_enabled_count > 1 else machine_nozzle_tip_outer_diameter / 2 * 1.5" },
"wall_0_inset": { "value": "0" },
"wall_line_width_x": { "value": "round(line_width * 0.3 / 0.35, 2)" },
"wall_thickness": { "value": "1" },
"meshfix_maximum_resolution": { "value": "(speed_wall_0 + speed_wall_x) / 60" },
"meshfix_maximum_deviation": { "value": "layer_height / 4" },
"optimize_wall_printing_order": { "value": "True" },
"initial_layer_line_width_factor": { "value": "120" },
"zig_zaggify_infill": { "value": "gradual_infill_steps == 0" }
}

View file

@ -79,20 +79,18 @@
"acceleration_enabled": { "value": "True" },
"acceleration_layer_0": { "value": "acceleration_topbottom" },
"acceleration_prime_tower": { "value": "math.ceil(acceleration_print * 2000 / 4000)" },
"acceleration_print": { "value": "4000" },
"acceleration_support": { "value": "math.ceil(acceleration_print * 2000 / 4000)" },
"acceleration_prime_tower": { "value": "math.ceil(acceleration_print * 2000 / 3500)" },
"acceleration_print": { "value": "3500" },
"acceleration_support": { "value": "math.ceil(acceleration_print * 2000 / 3500)" },
"acceleration_support_interface": { "value": "acceleration_topbottom" },
"acceleration_topbottom": { "value": "math.ceil(acceleration_print * 500 / 4000)" },
"acceleration_wall": { "value": "math.ceil(acceleration_print * 1000 / 4000)" },
"acceleration_wall_0": { "value": "math.ceil(acceleration_wall * 500 / 1000)" },
"acceleration_topbottom": { "value": "math.ceil(acceleration_print * 1000 / 3500)" },
"acceleration_wall": { "value": "math.ceil(acceleration_print * 1500 / 3500)" },
"acceleration_wall_0": { "value": "math.ceil(acceleration_wall * 1000 / 1000)" },
"brim_width": { "value": "3" },
"cool_fan_full_at_height": { "value": "layer_height_0 + 4 * layer_height" },
"cool_fan_speed": { "value": "50" },
"cool_fan_speed_max": { "value": "100" },
"cool_min_speed": { "value": "5" },
"infill_before_walls": { "value": false },
"infill_line_width": { "value": "round(line_width * 0.5 / 0.35, 2)" },
"infill_overlap": { "value": "0" },
"infill_pattern": { "value": "'zigzag' if infill_sparse_density > 80 else 'triangles'" },
"infill_wipe_dist": { "value": "0" },
@ -115,7 +113,6 @@
"layer_height_0": { "value": "round(machine_nozzle_size / 1.5, 2)" },
"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'))" },
"line_width": { "value": "machine_nozzle_size * 0.875" },
"machine_min_cool_heat_time_window": { "value": "15" },
"default_material_print_temperature": { "value": "200" },
"material_standby_temperature": { "value": "100" },
@ -141,9 +138,7 @@
"retraction_hop_only_when_collides": { "value": "True" },
"retraction_min_travel": { "value": "5" },
"retraction_prime_speed": { "value": "15" },
"skin_monotonic" : { "value": true },
"skin_overlap": { "value": "10" },
"speed_equalize_flow_enabled": { "value": "True" },
"speed_layer_0": { "value": "20" },
"speed_prime_tower": { "value": "speed_topbottom" },
"speed_print": { "value": "35" },
@ -165,7 +160,6 @@
"travel_avoid_supports": { "value": "True" },
"travel_avoid_distance": { "value": "3 if extruders_enabled_count > 1 else machine_nozzle_tip_outer_diameter / 2 * 1.5" },
"wall_0_inset": { "value": "0" },
"wall_line_width_x": { "value": "round(line_width * 0.3 / 0.35, 2)" },
"wall_thickness": { "value": "1" },
"meshfix_maximum_resolution": { "value": "(speed_wall_0 + speed_wall_x) / 60" },
"meshfix_maximum_deviation": { "value": "layer_height / 4" },

View file

@ -136,7 +136,6 @@
"layer_height_0": { "resolve": "max(0.2, min(extruderValues('layer_height')))" },
"line_width": { "value": "machine_nozzle_size * 1.125" },
"wall_line_width": { "value": "machine_nozzle_size" },
"fill_perimeter_gaps": { "default_value": "nowhere" },
"fill_outline_gaps": { "default_value": true },
"meshfix_maximum_resolution": { "default_value": 0.01 },
"infill_before_walls": { "default_value": false },

View file

@ -210,7 +210,6 @@
"cool_fan_speed": { "value": "50" },
"cool_fan_speed_max": { "value": "100" },
"cool_min_speed": { "value": "7" },
"fill_perimeter_gaps": { "value": "'everywhere'" },
"fill_outline_gaps": { "value": false },
"filter_out_tiny_gaps": { "value": false },
"infill_line_width": { "value": "round(line_width * 0.42 / 0.35, 2)" },
@ -273,7 +272,6 @@
"support_z_distance": { "value": "layer_height if layer_height >= 0.16 else layer_height*2" },
"support_supported_skin_fan_speed": { "value": 100 },
"switch_extruder_retraction_amount": { "value": 0 },
"travel_compensate_overlapping_walls_0_enabled": { "value": "False" },
"travel_avoid_other_parts": { "value": true },
"travel_retract_before_outer_wall": { "value": true },
"top_bottom_thickness": {"value": "line_width * 2" },

View file

@ -107,7 +107,6 @@
"speed_wall": { "value": "speed_print*wall_line_width_0/line_width" },
"speed_wall_0": { "value": "math.ceil(speed_wall * 0.6)" },
"speed_wall_x": { "value": "speed_wall" },
"speed_equalize_flow_enabled": { "value": "False" },
"support_angle": { "value": "50" },
"support_xy_distance": { "value": "1" },
"support_z_distance": { "value": "max((0.2 if(0.2%layer_height==0) else layer_height*int((0.2+layer_height)/layer_height)),layer_height)" },
@ -129,7 +128,6 @@
"support_interface_enable": { "value": "True" },
"support_interface_height": { "value": "0.5" },
"support_roof_pattern": { "value": "'concentric'" },
"z_seam_type": { "value": "'shortest'" },
"speed_equalize_flow_max": { "value": "65" }
"z_seam_type": { "value": "'shortest'" }
}
}

View file

@ -107,7 +107,6 @@
"speed_wall": { "value": "speed_print*wall_line_width_0/line_width" },
"speed_wall_0": { "value": "math.ceil(speed_wall * 0.6)" },
"speed_wall_x": { "value": "speed_wall" },
"speed_equalize_flow_enabled": { "value": "False" },
"support_angle": { "value": "50" },
"support_xy_distance": { "value": "1" },
"support_z_distance": { "value": "max((0.2 if(0.2%layer_height==0) else layer_height*int((0.2+layer_height)/layer_height)),layer_height)" },
@ -129,7 +128,6 @@
"support_interface_enable": { "value": "True" },
"support_interface_height": { "value": "0.5" },
"support_roof_pattern": { "value": "'concentric'" },
"z_seam_type": { "value": "'shortest'" },
"speed_equalize_flow_max": { "value": "65" }
"z_seam_type": { "value": "'shortest'" }
}
}

View file

@ -96,7 +96,6 @@
"speed_wall": { "value": "speed_print*wall_line_width_0/line_width" },
"speed_wall_0": { "value": "math.ceil(speed_wall * 0.6)" },
"speed_wall_x": { "value": "speed_wall" },
"speed_equalize_flow_enabled": { "value": "False" },
"support_angle": { "value": "50" },
"support_xy_distance": { "value": "1" },
"support_z_distance": { "value": "max((0.2 if(0.2%layer_height==0) else layer_height*int((0.2+layer_height)/layer_height)),layer_height)" },
@ -118,7 +117,6 @@
"support_interface_enable": { "value": "True" },
"support_interface_height": { "value": "0.5" },
"support_roof_pattern": { "value": "'concentric'" },
"z_seam_type": { "value": "'shortest'" },
"speed_equalize_flow_max": { "value": "65" }
"z_seam_type": { "value": "'shortest'" }
}
}

View file

@ -18,7 +18,7 @@
"default_value": 1.75
},
"machine_nozzle_offset_x": {
"default_value": -10.0
"default_value": 5
},
"machine_nozzle_offset_y": {
"default_value": 8.0

View file

@ -13,6 +13,12 @@
"maximum_value": "1"
},
"machine_nozzle_size": { "default_value": 0.4 },
"material_diameter": { "default_value": 1.75 }
"material_diameter": { "default_value": 1.75 },
"machine_extruder_start_code": {
"default_value": "T0 \nG92 E0 \nG1 F1000 E100 \nG92 E0 \nM104 S{material_print_temperature}"
},
"machine_extruder_end_code": {
"default_value": "G92 E0 \nG1 F2500 E-5 \nG1 F2400 X230 Y200 \nG1 F3000 E-100 \nG92 E0 \nG90"
}
}
}

View file

@ -13,6 +13,12 @@
"maximum_value": "1"
},
"machine_nozzle_size": { "default_value": 0.4 },
"material_diameter": { "default_value": 1.75 }
"material_diameter": { "default_value": 1.75 },
"machine_extruder_start_code": {
"default_value": "T1 \nG92 E0 \nG1 F1000 E100 \nG92 E0 \nM104 S{material_print_temperature}"
},
"machine_extruder_end_code": {
"default_value": "G92 E0 \nG1 F2500 E-5 \nG1 F2400 X230 Y200 \nG1 F3000 E-100 \nG92 E0 \nG90"
}
}
}

View file

@ -13,6 +13,12 @@
"maximum_value": "1"
},
"machine_nozzle_size": { "default_value": 0.4 },
"material_diameter": { "default_value": 1.75 }
"material_diameter": { "default_value": 1.75 },
"machine_extruder_start_code": {
"default_value": "T0 \nG92 E0 \nG1 F1000 E100 \nG92 E0 \nM104 S{material_print_temperature}"
},
"machine_extruder_end_code": {
"default_value": "G92 E0 \nG1 F2500 E-5 \nG1 F2400 X300 Y250 \nG1 F3000 E-100 \nG92 E0 \nG90"
}
}
}

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