Merge branch 'master' into CURA-7644_Refactor_ThreeMFWorkspaceReader

This commit is contained in:
Kostas Karmas 2020-08-14 13:19:54 +02:00
commit e8ef7699df
79 changed files with 492 additions and 240 deletions

View File

@ -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 # 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 # 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. # CuraVersion.py.in template.
CuraSDKVersion = "7.2.0" CuraSDKVersion = "7.3.0"
try: try:
from cura.CuraVersion import CuraAppName # type: ignore from cura.CuraVersion import CuraAppName # type: ignore

View File

@ -135,9 +135,7 @@ class MachineNode(ContainerNode):
groups_by_name[name] = QualityChangesGroup(name, quality_type = quality_changes["quality_type"], groups_by_name[name] = QualityChangesGroup(name, quality_type = quality_changes["quality_type"],
intent_category = quality_changes.get("intent_category", "default"), intent_category = quality_changes.get("intent_category", "default"),
parent = CuraApplication.getInstance()) parent = CuraApplication.getInstance())
# CURA-6882
# Custom qualities are always available, even if they are based on the "not supported" profile.
groups_by_name[name].is_available = True
elif groups_by_name[name].intent_category == "default": # Intent category should be stored as "default" if everything is default or as the intent if any of the extruder have an actual intent. elif groups_by_name[name].intent_category == "default": # Intent category should be stored as "default" if everything is default or as the intent if any of the extruder have an actual intent.
groups_by_name[name].intent_category = quality_changes.get("intent_category", "default") groups_by_name[name].intent_category = quality_changes.get("intent_category", "default")
@ -146,6 +144,18 @@ class MachineNode(ContainerNode):
else: # Global profile. else: # Global profile.
groups_by_name[name].metadata_for_global = quality_changes groups_by_name[name].metadata_for_global = quality_changes
quality_groups = self.getQualityGroups(variant_names, material_bases, extruder_enabled)
for quality_changes_group in groups_by_name.values():
if quality_changes_group.quality_type not in quality_groups:
if quality_changes_group.quality_type == "not_supported":
# Quality changes based on an empty profile are always available.
quality_changes_group.is_available = True
else:
quality_changes_group.is_available = False
else:
# Quality changes group is available iff the quality group it depends on is available. Irrespective of whether the intent category is available.
quality_changes_group.is_available = quality_groups[quality_changes_group.quality_type].is_available
return list(groups_by_name.values()) return list(groups_by_name.values())
def preferredGlobalQuality(self) -> "QualityNode": def preferredGlobalQuality(self) -> "QualityNode":

View File

@ -72,8 +72,8 @@ class GlobalStacksModel(ListModel):
section_name = self._catalog.i18nc("@info:title", section_name) section_name = self._catalog.i18nc("@info:title", section_name)
default_removal_warning = self._catalog.i18nc( default_removal_warning = self._catalog.i18nc(
"@label ({} is object name)", "@label {0} is the name of a printer that's about to be deleted.",
"Are you sure you wish to remove {}? This cannot be undone!", device_name "Are you sure you wish to remove {0}? This cannot be undone!", device_name
) )
removal_warning = container_stack.getMetaDataEntry("removal_warning", default_removal_warning) removal_warning = container_stack.getMetaDataEntry("removal_warning", default_removal_warning)

View File

@ -333,6 +333,7 @@ class QualityManagementModel(ListModel):
"layer_height": layer_height, # layer_height is only used for sorting "layer_height": layer_height, # layer_height is only used for sorting
} }
item_list.append(item) item_list.append(item)
# Sort by layer_height for built-in qualities # Sort by layer_height for built-in qualities
item_list = sorted(item_list, key = lambda x: x["layer_height"]) item_list = sorted(item_list, key = lambda x: x["layer_height"])
@ -341,6 +342,9 @@ class QualityManagementModel(ListModel):
available_intent_list = [i for i in available_intent_list if i[0] != "default"] available_intent_list = [i for i in available_intent_list if i[0] != "default"]
result = [] result = []
for intent_category, quality_type in available_intent_list: for intent_category, quality_type in available_intent_list:
if not quality_group_dict[quality_type].is_available:
continue
result.append({ result.append({
"name": quality_group_dict[quality_type].name, # Use the quality name as the display name "name": quality_group_dict[quality_type].name, # Use the quality name as the display name
"is_read_only": True, "is_read_only": True,
@ -361,6 +365,9 @@ class QualityManagementModel(ListModel):
# CURA-6913 Note that custom qualities can be based on "not supported", so the quality group can be None. # CURA-6913 Note that custom qualities can be based on "not supported", so the quality group can be None.
quality_group = quality_group_dict.get(quality_changes_group.quality_type) quality_group = quality_group_dict.get(quality_changes_group.quality_type)
quality_type = quality_changes_group.quality_type quality_type = quality_changes_group.quality_type
if not quality_changes_group.is_available:
continue
item = {"name": quality_changes_group.name, item = {"name": quality_changes_group.name,
"is_read_only": False, "is_read_only": False,
"quality_group": quality_group, "quality_group": quality_group,

View File

@ -76,8 +76,8 @@ class PreviewPass(RenderPass):
Logger.error("Unable to compile shader program: overhang.shader") Logger.error("Unable to compile shader program: overhang.shader")
if not self._non_printing_shader: if not self._non_printing_shader:
self._non_printing_shader = OpenGL.getInstance().createShaderProgram(Resources.getPath(Resources.Shaders, "transparent_object.shader"))
if self._non_printing_shader: if self._non_printing_shader:
self._non_printing_shader = OpenGL.getInstance().createShaderProgram(Resources.getPath(Resources.Shaders, "transparent_object.shader"))
self._non_printing_shader.setUniformValue("u_diffuseColor", [0.5, 0.5, 0.5, 0.5]) self._non_printing_shader.setUniformValue("u_diffuseColor", [0.5, 0.5, 0.5, 0.5])
self._non_printing_shader.setUniformValue("u_opacity", 0.6) self._non_printing_shader.setUniformValue("u_opacity", 0.6)

View File

@ -62,7 +62,8 @@ class CuraStackBuilder:
for position in extruder_dict: for position in extruder_dict:
try: try:
cls.createExtruderStackWithDefaultSetup(new_global_stack, position) cls.createExtruderStackWithDefaultSetup(new_global_stack, position)
except IndexError: except IndexError as e:
Logger.logException("e", "Failed to create an extruder stack for position {pos}: {err}".format(pos = position, err = str(e)))
return None return None
for new_extruder in new_global_stack.extruderList: # Only register the extruders if we're sure that all of them are correct. for new_extruder in new_global_stack.extruderList: # Only register the extruders if we're sure that all of them are correct.

View File

@ -1212,9 +1212,8 @@ class MachineManager(QObject):
return return
if not available_quality_types: if not available_quality_types:
if global_stack.qualityChanges == empty_quality_changes_container: Logger.log("i", "No available quality types found, setting all qualities to empty (Not Supported).")
Logger.log("i", "No available quality types found, setting all qualities to empty (Not Supported).") self._setEmptyQuality()
self._setEmptyQuality()
return return
if current_quality_type in available_quality_types: if current_quality_type in available_quality_types:

View File

@ -796,21 +796,22 @@ class ThreeMFWorkspaceReader(WorkspaceReader):
Job.yieldThread() Job.yieldThread()
QCoreApplication.processEvents() # Ensure that the GUI does not freeze. QCoreApplication.processEvents() # Ensure that the GUI does not freeze.
# Handle quality changes if any if global_stack:
self._processQualityChanges(global_stack) # Handle quality changes if any
self._processQualityChanges(global_stack)
# Prepare the machine # Prepare the machine
self._applyChangesToMachine(global_stack, extruder_stack_dict) self._applyChangesToMachine(global_stack, extruder_stack_dict)
Logger.log("d", "Workspace loading is notifying rest of the code of changes...") Logger.log("d", "Workspace loading is notifying rest of the code of changes...")
# Actually change the active machine. # Actually change the active machine.
# #
# This is scheduled for later is because it depends on the Variant/Material/Qualitiy Managers to have the latest # This is scheduled for later is because it depends on the Variant/Material/Qualitiy Managers to have the latest
# data, but those managers will only update upon a container/container metadata changed signal. Because this # data, but those managers will only update upon a container/container metadata changed signal. Because this
# function is running on the main thread (Qt thread), although those "changed" signals have been emitted, but # function is running on the main thread (Qt thread), although those "changed" signals have been emitted, but
# they won't take effect until this function is done. # they won't take effect until this function is done.
# To solve this, we schedule _updateActiveMachine() for later so it will have the latest data. # To solve this, we schedule _updateActiveMachine() for later so it will have the latest data.
self._updateActiveMachine(global_stack) self._updateActiveMachine(global_stack)
# Load all the nodes / mesh data of the workspace # Load all the nodes / mesh data of the workspace
nodes = self._3mf_mesh_reader.read(file_name) nodes = self._3mf_mesh_reader.read(file_name)

View File

@ -3,6 +3,6 @@
"author": "Ultimaker B.V.", "author": "Ultimaker B.V.",
"version": "1.0.1", "version": "1.0.1",
"description": "Provides support for reading 3MF files.", "description": "Provides support for reading 3MF files.",
"api": "7.2.0", "api": "7.3.0",
"i18n-catalog": "cura" "i18n-catalog": "cura"
} }

View File

@ -3,6 +3,6 @@
"author": "Ultimaker B.V.", "author": "Ultimaker B.V.",
"version": "1.0.1", "version": "1.0.1",
"description": "Provides support for writing 3MF files.", "description": "Provides support for writing 3MF files.",
"api": "7.2.0", "api": "7.3.0",
"i18n-catalog": "cura" "i18n-catalog": "cura"
} }

View File

@ -3,5 +3,5 @@
"author": "fieldOfView", "author": "fieldOfView",
"version": "1.0.0", "version": "1.0.0",
"description": "Provides support for reading AMF files.", "description": "Provides support for reading AMF files.",
"api": "7.2.0" "api": "7.3.0"
} }

View File

@ -3,6 +3,6 @@
"author": "Ultimaker B.V.", "author": "Ultimaker B.V.",
"description": "Backup and restore your configuration.", "description": "Backup and restore your configuration.",
"version": "1.2.0", "version": "1.2.0",
"api": "7.2.0", "api": "7.3.0",
"i18n-catalog": "cura" "i18n-catalog": "cura"
} }

View File

@ -2,7 +2,7 @@
"name": "CuraEngine Backend", "name": "CuraEngine Backend",
"author": "Ultimaker B.V.", "author": "Ultimaker B.V.",
"description": "Provides the link to the CuraEngine slicing backend.", "description": "Provides the link to the CuraEngine slicing backend.",
"api": "7.2.0", "api": "7.3.0",
"version": "1.0.1", "version": "1.0.1",
"i18n-catalog": "cura" "i18n-catalog": "cura"
} }

View File

@ -3,6 +3,6 @@
"author": "Ultimaker B.V.", "author": "Ultimaker B.V.",
"version": "1.0.1", "version": "1.0.1",
"description": "Provides support for importing Cura profiles.", "description": "Provides support for importing Cura profiles.",
"api": "7.2.0", "api": "7.3.0",
"i18n-catalog": "cura" "i18n-catalog": "cura"
} }

View File

@ -3,6 +3,6 @@
"author": "Ultimaker B.V.", "author": "Ultimaker B.V.",
"version": "1.0.1", "version": "1.0.1",
"description": "Provides support for exporting Cura profiles.", "description": "Provides support for exporting Cura profiles.",
"api": "7.2.0", "api": "7.3.0",
"i18n-catalog":"cura" "i18n-catalog":"cura"
} }

View File

@ -3,6 +3,6 @@
"author": "Ultimaker B.V.", "author": "Ultimaker B.V.",
"version": "1.0.1", "version": "1.0.1",
"description": "Checks for firmware updates.", "description": "Checks for firmware updates.",
"api": "7.2.0", "api": "7.3.0",
"i18n-catalog": "cura" "i18n-catalog": "cura"
} }

View File

@ -3,6 +3,6 @@
"author": "Ultimaker B.V.", "author": "Ultimaker B.V.",
"version": "1.0.1", "version": "1.0.1",
"description": "Provides a machine actions for updating firmware.", "description": "Provides a machine actions for updating firmware.",
"api": "7.2.0", "api": "7.3.0",
"i18n-catalog": "cura" "i18n-catalog": "cura"
} }

View File

@ -3,6 +3,6 @@
"author": "Ultimaker B.V.", "author": "Ultimaker B.V.",
"version": "1.0.1", "version": "1.0.1",
"description": "Reads g-code from a compressed archive.", "description": "Reads g-code from a compressed archive.",
"api": "7.2.0", "api": "7.3.0",
"i18n-catalog": "cura" "i18n-catalog": "cura"
} }

View File

@ -3,6 +3,6 @@
"author": "Ultimaker B.V.", "author": "Ultimaker B.V.",
"version": "1.0.1", "version": "1.0.1",
"description": "Writes g-code to a compressed archive.", "description": "Writes g-code to a compressed archive.",
"api": "7.2.0", "api": "7.3.0",
"i18n-catalog": "cura" "i18n-catalog": "cura"
} }

View File

@ -3,6 +3,6 @@
"author": "Ultimaker B.V.", "author": "Ultimaker B.V.",
"version": "1.0.1", "version": "1.0.1",
"description": "Provides support for importing profiles from g-code files.", "description": "Provides support for importing profiles from g-code files.",
"api": "7.2.0", "api": "7.3.0",
"i18n-catalog": "cura" "i18n-catalog": "cura"
} }

View File

@ -3,6 +3,6 @@
"author": "Victor Larchenko, Ultimaker B.V.", "author": "Victor Larchenko, Ultimaker B.V.",
"version": "1.0.1", "version": "1.0.1",
"description": "Allows loading and displaying G-code files.", "description": "Allows loading and displaying G-code files.",
"api": "7.2.0", "api": "7.3.0",
"i18n-catalog": "cura" "i18n-catalog": "cura"
} }

View File

@ -3,6 +3,6 @@
"author": "Ultimaker B.V.", "author": "Ultimaker B.V.",
"version": "1.0.1", "version": "1.0.1",
"description": "Writes g-code to a file.", "description": "Writes g-code to a file.",
"api": "7.2.0", "api": "7.3.0",
"i18n-catalog": "cura" "i18n-catalog": "cura"
} }

View File

@ -3,6 +3,6 @@
"author": "Ultimaker B.V.", "author": "Ultimaker B.V.",
"version": "1.0.1", "version": "1.0.1",
"description": "Enables ability to generate printable geometry from 2D image files.", "description": "Enables ability to generate printable geometry from 2D image files.",
"api": "7.2.0", "api": "7.3.0",
"i18n-catalog": "cura" "i18n-catalog": "cura"
} }

View File

@ -3,6 +3,6 @@
"author": "Ultimaker B.V.", "author": "Ultimaker B.V.",
"version": "1.0.1", "version": "1.0.1",
"description": "Provides support for importing profiles from legacy Cura versions.", "description": "Provides support for importing profiles from legacy Cura versions.",
"api": "7.2.0", "api": "7.3.0",
"i18n-catalog": "cura" "i18n-catalog": "cura"
} }

View File

@ -3,6 +3,6 @@
"author": "fieldOfView, Ultimaker B.V.", "author": "fieldOfView, Ultimaker B.V.",
"version": "1.0.1", "version": "1.0.1",
"description": "Provides a way to change machine settings (such as build volume, nozzle size, etc.).", "description": "Provides a way to change machine settings (such as build volume, nozzle size, etc.).",
"api": "7.2.0", "api": "7.3.0",
"i18n-catalog": "cura" "i18n-catalog": "cura"
} }

View File

@ -2,7 +2,7 @@
"name": "Model Checker", "name": "Model Checker",
"author": "Ultimaker B.V.", "author": "Ultimaker B.V.",
"version": "1.0.1", "version": "1.0.1",
"api": "7.2.0", "api": "7.3.0",
"description": "Checks models and print configuration for possible printing issues and give suggestions.", "description": "Checks models and print configuration for possible printing issues and give suggestions.",
"i18n-catalog": "cura" "i18n-catalog": "cura"
} }

View File

@ -3,6 +3,6 @@
"author": "Ultimaker B.V.", "author": "Ultimaker B.V.",
"version": "1.0.1", "version": "1.0.1",
"description": "Provides a monitor stage in Cura.", "description": "Provides a monitor stage in Cura.",
"api": "7.2.0", "api": "7.3.0",
"i18n-catalog": "cura" "i18n-catalog": "cura"
} }

View File

@ -3,6 +3,6 @@
"author": "Ultimaker B.V.", "author": "Ultimaker B.V.",
"version": "1.0.1", "version": "1.0.1",
"description": "Provides the Per Model Settings.", "description": "Provides the Per Model Settings.",
"api": "7.2.0", "api": "7.3.0",
"i18n-catalog": "cura" "i18n-catalog": "cura"
} }

View File

@ -2,7 +2,7 @@
"name": "Post Processing", "name": "Post Processing",
"author": "Ultimaker", "author": "Ultimaker",
"version": "2.2.1", "version": "2.2.1",
"api": "7.2.0", "api": "7.3.0",
"description": "Extension that allows for user created scripts for post processing", "description": "Extension that allows for user created scripts for post processing",
"catalog": "cura" "catalog": "cura"
} }

View File

@ -3,6 +3,6 @@
"author": "Ultimaker B.V.", "author": "Ultimaker B.V.",
"version": "1.0.1", "version": "1.0.1",
"description": "Provides a prepare stage in Cura.", "description": "Provides a prepare stage in Cura.",
"api": "7.2.0", "api": "7.3.0",
"i18n-catalog": "cura" "i18n-catalog": "cura"
} }

View File

@ -3,6 +3,6 @@
"author": "Ultimaker B.V.", "author": "Ultimaker B.V.",
"version": "1.0.1", "version": "1.0.1",
"description": "Provides a preview stage in Cura.", "description": "Provides a preview stage in Cura.",
"api": "7.2.0", "api": "7.3.0",
"i18n-catalog": "cura" "i18n-catalog": "cura"
} }

View File

@ -3,6 +3,6 @@
"author": "Ultimaker B.V.", "author": "Ultimaker B.V.",
"description": "Provides removable drive hotplugging and writing support.", "description": "Provides removable drive hotplugging and writing support.",
"version": "1.0.1", "version": "1.0.1",
"api": "7.2.0", "api": "7.3.0",
"i18n-catalog": "cura" "i18n-catalog": "cura"
} }

View File

@ -3,6 +3,6 @@
"author": "Ultimaker B.V.", "author": "Ultimaker B.V.",
"version": "1.0.0", "version": "1.0.0",
"description": "Logs certain events so that they can be used by the crash reporter", "description": "Logs certain events so that they can be used by the crash reporter",
"api": "7.2.0", "api": "7.3.0",
"i18n-catalog": "cura" "i18n-catalog": "cura"
} }

View File

@ -32,6 +32,7 @@ class SimulationPass(RenderPass):
self._current_shader = None # This shader will be the shadow or the normal depending if the user wants to see the paths or the layers self._current_shader = None # This shader will be the shadow or the normal depending if the user wants to see the paths or the layers
self._tool_handle_shader = None self._tool_handle_shader = None
self._nozzle_shader = None self._nozzle_shader = None
self._disabled_shader = None
self._old_current_layer = 0 self._old_current_layer = 0
self._old_current_path = 0 self._old_current_path = 0
self._switching_layers = True # It tracks when the user is moving the layers' slider self._switching_layers = True # It tracks when the user is moving the layers' slider
@ -90,9 +91,17 @@ class SimulationPass(RenderPass):
self._nozzle_shader = OpenGL.getInstance().createShaderProgram(Resources.getPath(Resources.Shaders, "color.shader")) self._nozzle_shader = OpenGL.getInstance().createShaderProgram(Resources.getPath(Resources.Shaders, "color.shader"))
self._nozzle_shader.setUniformValue("u_color", Color(*Application.getInstance().getTheme().getColor("layerview_nozzle").getRgb())) self._nozzle_shader.setUniformValue("u_color", Color(*Application.getInstance().getTheme().getColor("layerview_nozzle").getRgb()))
if not self._disabled_shader:
self._disabled_shader = OpenGL.getInstance().createShaderProgram(Resources.getPath(Resources.Shaders, "striped.shader"))
self._disabled_shader.setUniformValue("u_diffuseColor1", Color(*Application.getInstance().getTheme().getColor("model_unslicable").getRgb()))
self._disabled_shader.setUniformValue("u_diffuseColor2", Color(*Application.getInstance().getTheme().getColor("model_unslicable_alt").getRgb()))
self._disabled_shader.setUniformValue("u_width", 50.0)
self._disabled_shader.setUniformValue("u_opacity", 0.6)
self.bind() self.bind()
tool_handle_batch = RenderBatch(self._tool_handle_shader, type = RenderBatch.RenderType.Overlay, backface_cull = True) tool_handle_batch = RenderBatch(self._tool_handle_shader, type = RenderBatch.RenderType.Overlay, backface_cull = True)
disabled_batch = RenderBatch(self._disabled_shader)
head_position = None # Indicates the current position of the print head head_position = None # Indicates the current position of the print head
nozzle_node = None nozzle_node = None
@ -105,6 +114,9 @@ class SimulationPass(RenderPass):
nozzle_node = node nozzle_node = node
nozzle_node.setVisible(False) nozzle_node.setVisible(False)
elif getattr(node, "_outside_buildarea", False) and isinstance(node, SceneNode) and node.getMeshData() and node.isVisible():
disabled_batch.addItem(node.getWorldTransformation(copy=False), node.getMeshData())
elif isinstance(node, SceneNode) and (node.getMeshData() or node.callDecoration("isBlockSlicing")) and node.isVisible(): elif isinstance(node, SceneNode) and (node.getMeshData() or node.callDecoration("isBlockSlicing")) and node.isVisible():
layer_data = node.callDecoration("getLayerData") layer_data = node.callDecoration("getLayerData")
if not layer_data: if not layer_data:
@ -183,6 +195,9 @@ class SimulationPass(RenderPass):
nozzle_batch.addItem(nozzle_node.getWorldTransformation(), mesh = nozzle_node.getMeshData()) nozzle_batch.addItem(nozzle_node.getWorldTransformation(), mesh = nozzle_node.getMeshData())
nozzle_batch.render(self._scene.getActiveCamera()) nozzle_batch.render(self._scene.getActiveCamera())
if len(disabled_batch.items) > 0:
disabled_batch.render(self._scene.getActiveCamera())
# Render toolhandles on top of the layerview # Render toolhandles on top of the layerview
if len(tool_handle_batch.items) > 0: if len(tool_handle_batch.items) > 0:
tool_handle_batch.render(self._scene.getActiveCamera()) tool_handle_batch.render(self._scene.getActiveCamera())

View File

@ -3,6 +3,6 @@
"author": "Ultimaker B.V.", "author": "Ultimaker B.V.",
"version": "1.0.1", "version": "1.0.1",
"description": "Provides the Simulation view.", "description": "Provides the Simulation view.",
"api": "7.2.0", "api": "7.3.0",
"i18n-catalog": "cura" "i18n-catalog": "cura"
} }

View File

@ -3,6 +3,6 @@
"author": "Ultimaker B.V.", "author": "Ultimaker B.V.",
"version": "1.0.1", "version": "1.0.1",
"description": "Submits anonymous slice info. Can be disabled through preferences.", "description": "Submits anonymous slice info. Can be disabled through preferences.",
"api": "7.2.0", "api": "7.3.0",
"i18n-catalog": "cura" "i18n-catalog": "cura"
} }

View File

@ -3,6 +3,6 @@
"author": "Ultimaker B.V.", "author": "Ultimaker B.V.",
"version": "1.0.1", "version": "1.0.1",
"description": "Provides a normal solid mesh view.", "description": "Provides a normal solid mesh view.",
"api": "7.2.0", "api": "7.3.0",
"i18n-catalog": "cura" "i18n-catalog": "cura"
} }

View File

@ -3,6 +3,6 @@
"author": "Ultimaker B.V.", "author": "Ultimaker B.V.",
"version": "1.0.1", "version": "1.0.1",
"description": "Creates an eraser mesh to block the printing of support in certain places", "description": "Creates an eraser mesh to block the printing of support in certain places",
"api": "7.2.0", "api": "7.3.0",
"i18n-catalog": "cura" "i18n-catalog": "cura"
} }

View File

@ -2,6 +2,6 @@
"name": "Toolbox", "name": "Toolbox",
"author": "Ultimaker B.V.", "author": "Ultimaker B.V.",
"version": "1.0.1", "version": "1.0.1",
"api": "7.2.0", "api": "7.3.0",
"description": "Find, manage and install new Cura packages." "description": "Find, manage and install new Cura packages."
} }

View File

@ -48,7 +48,15 @@ Item
onClicked: onClicked:
{ {
toolbox.viewPage = "overview" toolbox.viewPage = "overview"
toolbox.filterModelByProp("packages", "type", toolbox.viewCategory) if (toolbox.viewCategory == "material")
{
toolbox.filterModelByProp("authors", "package_types", "material")
}
else if (toolbox.viewCategory == "plugin")
{
toolbox.filterModelByProp("packages", "type", "plugin")
}
} }
style: ButtonStyle style: ButtonStyle
{ {

View File

@ -3,5 +3,5 @@
"author": "Ultimaker B.V.", "author": "Ultimaker B.V.",
"version": "1.0.0", "version": "1.0.0",
"description": "Provides support for reading model files.", "description": "Provides support for reading model files.",
"api": "7.2.0" "api": "7.3.0"
} }

View File

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

View File

@ -3,6 +3,6 @@
"author": "Ultimaker B.V.", "author": "Ultimaker B.V.",
"version": "1.0.1", "version": "1.0.1",
"description": "Provides support for writing Ultimaker Format Packages.", "description": "Provides support for writing Ultimaker Format Packages.",
"api": "7.2.0", "api": "7.3.0",
"i18n-catalog": "cura" "i18n-catalog": "cura"
} }

View File

@ -3,6 +3,6 @@
"author": "Ultimaker B.V.", "author": "Ultimaker B.V.",
"description": "Manages network connections to Ultimaker networked printers.", "description": "Manages network connections to Ultimaker networked printers.",
"version": "2.0.0", "version": "2.0.0",
"api": "7.2.0", "api": "7.3.0",
"i18n-catalog": "cura" "i18n-catalog": "cura"
} }

View File

@ -282,12 +282,13 @@ Item
enabled: !cameraButton.enabled enabled: !cameraButton.enabled
} }
/* //Warning message is commented out because it's factually incorrect. Fix CURA-7637 to allow camera connections via cloud.
MonitorInfoBlurb MonitorInfoBlurb
{ {
id: cameraDisabledInfo id: cameraDisabledInfo
text: catalog.i18nc("@info", "The webcam is not available because you are monitoring a cloud printer.") text: catalog.i18nc("@info", "The webcam is not available because you are monitoring a cloud printer.")
target: cameraButton target: cameraButton
} }*/
} }
// Divider // Divider

View File

@ -1,5 +1,6 @@
# Copyright (c) 2019 Ultimaker B.V. # Copyright (c) 2020 Ultimaker B.V.
# Cura is released under the terms of the LGPLv3 or higher. # Cura is released under the terms of the LGPLv3 or higher.
import os import os
from typing import Dict, List, Optional, Set from typing import Dict, List, Optional, Set
@ -37,7 +38,7 @@ class CloudOutputDeviceManager:
SYNC_SERVICE_NAME = "CloudOutputDeviceManager" SYNC_SERVICE_NAME = "CloudOutputDeviceManager"
# The translation catalog for this device. # The translation catalog for this device.
I18N_CATALOG = i18nCatalog("cura") i18n_catalog = i18nCatalog("cura")
# Signal emitted when the list of discovered devices changed. # Signal emitted when the list of discovered devices changed.
discoveredDevicesChanged = Signal() discoveredDevicesChanged = Signal()
@ -221,7 +222,7 @@ class CloudOutputDeviceManager:
) )
message = Message( message = Message(
title = self.I18N_CATALOG.i18ncp( title = self.i18n_catalog.i18ncp(
"info:status", "info:status",
"New printer detected from your Ultimaker account", "New printer detected from your Ultimaker account",
"New printers detected from your Ultimaker account", "New printers detected from your Ultimaker account",
@ -234,11 +235,7 @@ class CloudOutputDeviceManager:
message.show() message.show()
for idx, device in enumerate(new_devices): for idx, device in enumerate(new_devices):
message_text = self.I18N_CATALOG.i18nc( message_text = self.i18n_catalog.i18nc("info:status Filled in with printer name and printer model.", "Adding printer {name} ({model}) from your account").format(name = device.name, model = device.printerTypeName)
"info:status", "Adding printer {} ({}) from your account",
device.name,
device.printerTypeName
)
message.setText(message_text) message.setText(message_text)
if len(new_devices) > 1: if len(new_devices) > 1:
message.setProgress((idx / len(new_devices)) * 100) message.setProgress((idx / len(new_devices)) * 100)
@ -255,16 +252,12 @@ class CloudOutputDeviceManager:
if len(new_devices) > max_disp_devices: if len(new_devices) > max_disp_devices:
num_hidden = len(new_devices) - max_disp_devices num_hidden = len(new_devices) - max_disp_devices
device_name_list = ["<li>{} ({})</li>".format(device.name, device.printerTypeName) for device in new_devices[0:max_disp_devices]] device_name_list = ["<li>{} ({})</li>".format(device.name, device.printerTypeName) for device in new_devices[0:max_disp_devices]]
device_name_list.append(self.I18N_CATALOG.i18nc("info:hidden list items", "<li>... and {} others</li>", num_hidden)) device_name_list.append("<li>" + self.i18n_catalog.i18ncp("info:{0} gets replaced by a number of printers", "... and {0} other", "... and {0} others", num_hidden) + "</li>")
device_names = "".join(device_name_list) device_names = "".join(device_name_list)
else: else:
device_names = "".join(["<li>{} ({})</li>".format(device.name, device.printerTypeName) for device in new_devices]) device_names = "".join(["<li>{} ({})</li>".format(device.name, device.printerTypeName) for device in new_devices])
message_text = self.I18N_CATALOG.i18nc( message_text = self.i18n_catalog.i18nc("info:status", "Printers added from Digital Factory:") + "<ul>" + device_names + "</ul>"
"info:status",
"Printers added from Digital Factory:<ul>{}</ul>",
device_names
)
message.setText(message_text) message.setText(message_text)
def _updateOutdatedMachine(self, outdated_machine: GlobalStack, new_cloud_output_device: CloudOutputDevice) -> None: def _updateOutdatedMachine(self, outdated_machine: GlobalStack, new_cloud_output_device: CloudOutputDevice) -> None:
@ -318,7 +311,7 @@ class CloudOutputDeviceManager:
# Generate message # Generate message
self._removed_printers_message = Message( self._removed_printers_message = Message(
title = self.I18N_CATALOG.i18ncp( title = self.i18n_catalog.i18ncp(
"info:status", "info:status",
"A cloud connection is not available for a printer", "A cloud connection is not available for a printer",
"A cloud connection is not available for some printers", "A cloud connection is not available for some printers",
@ -326,27 +319,27 @@ class CloudOutputDeviceManager:
) )
) )
device_names = "".join(["<li>{} ({})</li>".format(self._um_cloud_printers[device].name, self._um_cloud_printers[device].definition.name) for device in self.reported_device_ids]) device_names = "".join(["<li>{} ({})</li>".format(self._um_cloud_printers[device].name, self._um_cloud_printers[device].definition.name) for device in self.reported_device_ids])
message_text = self.I18N_CATALOG.i18ncp( message_text = self.i18n_catalog.i18ncp(
"info:status", "info:status",
"This printer is not linked to the Digital Factory:", "This printer is not linked to the Digital Factory:",
"These printers are not linked to the Digital Factory:", "These printers are not linked to the Digital Factory:",
len(self.reported_device_ids) len(self.reported_device_ids)
) )
message_text += "<br/><ul>{}</ul><br/>".format(device_names) message_text += "<br/><ul>{}</ul><br/>".format(device_names)
digital_factory_string = self.I18N_CATALOG.i18nc("info:name", "Ultimaker Digital Factory") digital_factory_string = self.i18n_catalog.i18nc("info:name", "Ultimaker Digital Factory")
message_text += self.I18N_CATALOG.i18nc( message_text += self.i18n_catalog.i18nc(
"info:status", "info:status",
"To establish a connection, please visit the {website_link}".format(website_link = "<a href='https://digitalfactory.ultimaker.com/'>{}</a>.".format(digital_factory_string)) "To establish a connection, please visit the {website_link}".format(website_link = "<a href='https://digitalfactory.ultimaker.com/'>{}</a>.".format(digital_factory_string))
) )
self._removed_printers_message.setText(message_text) self._removed_printers_message.setText(message_text)
self._removed_printers_message.addAction("keep_printer_configurations_action", self._removed_printers_message.addAction("keep_printer_configurations_action",
name = self.I18N_CATALOG.i18nc("@action:button", "Keep printer configurations"), name = self.i18n_catalog.i18nc("@action:button", "Keep printer configurations"),
icon = "", icon = "",
description = "Keep cloud printers in Ultimaker Cura when not connected to your account.", description = "Keep cloud printers in Ultimaker Cura when not connected to your account.",
button_align = Message.ActionButtonAlignment.ALIGN_RIGHT) button_align = Message.ActionButtonAlignment.ALIGN_RIGHT)
self._removed_printers_message.addAction("remove_printers_action", self._removed_printers_message.addAction("remove_printers_action",
name = self.I18N_CATALOG.i18nc("@action:button", "Remove printers"), name = self.i18n_catalog.i18nc("@action:button", "Remove printers"),
icon = "", icon = "",
description = "Remove cloud printer(s) which aren't linked to your account.", description = "Remove cloud printer(s) which aren't linked to your account.",
button_style = Message.ActionButtonStyle.SECONDARY, button_style = Message.ActionButtonStyle.SECONDARY,
@ -423,16 +416,11 @@ class CloudOutputDeviceManager:
machine.setMetaDataEntry(self.META_HOST_GUID, device.clusterData.host_guid) machine.setMetaDataEntry(self.META_HOST_GUID, device.clusterData.host_guid)
machine.setMetaDataEntry("group_name", device.name) machine.setMetaDataEntry("group_name", device.name)
machine.setMetaDataEntry("group_size", device.clusterSize) machine.setMetaDataEntry("group_size", device.clusterSize)
digital_factory_string = self.I18N_CATALOG.i18nc("info:name", "Ultimaker Digital Factory") digital_factory_string = self.i18n_catalog.i18nc("info:name", "Ultimaker Digital Factory")
digital_factory_link = "<a href='https://digitalfactory.ultimaker.com/'>{}</a>".format(digital_factory_string) digital_factory_link = "<a href='https://digitalfactory.ultimaker.com/'>{digital_factory_string}</a>".format(digital_factory_string = digital_factory_string)
removal_warning_string = self.I18N_CATALOG.i18nc( removal_warning_string = self.i18n_catalog.i18nc("@message {printer_name} is replaced with the name of the printer", "{printer_name} will be removed until the next account sync.").format(printer_name = device.name) \
"@label ({printer_name} is replaced with the name of the printer", + "<br>" + self.i18n_catalog.i18nc("@message {printer_name} is replaced with the name of the printer", "To remove {printer_name} permanently, visit {digital_factory_link}").format(printer_name = device.name, digital_factory_link = digital_factory_link) \
"{printer_name} will be removed until the next account sync. <br> To remove {printer_name} permanently, " + "<br><br>" + self.i18n_catalog.i18nc("@message {printer_name} is replaced with the name of the printer", "Are you sure you want to remove {printer_name} temporarily?").format(printer_name = device.name)
"visit {digital_factory_link}"
"<br><br>Are you sure you want to remove {printer_name} temporarily?".format(printer_name = device.name,
digital_factory_link = digital_factory_link)
)
machine.setMetaDataEntry("removal_warning", removal_warning_string) machine.setMetaDataEntry("removal_warning", removal_warning_string)
machine.addConfiguredConnectionType(device.connectionType.value) machine.addConfiguredConnectionType(device.connectionType.value)
@ -469,10 +457,15 @@ class CloudOutputDeviceManager:
remove_printers_ids = {self._um_cloud_printers[i].getId() for i in self.reported_device_ids} remove_printers_ids = {self._um_cloud_printers[i].getId() for i in self.reported_device_ids}
all_ids = {m.getId() for m in CuraApplication.getInstance().getContainerRegistry().findContainerStacks(type = "machine")} all_ids = {m.getId() for m in CuraApplication.getInstance().getContainerRegistry().findContainerStacks(type = "machine")}
question_title = self.I18N_CATALOG.i18nc("@title:window", "Remove printers?") question_title = self.i18n_catalog.i18nc("@title:window", "Remove printers?")
question_content = self.I18N_CATALOG.i18nc("@label", "You are about to remove {} printer(s) from Cura. This action cannot be undone. \nAre you sure you want to continue?".format(len(remove_printers_ids))) question_content = self.i18n_catalog.i18ncp(
"@label",
"You are about to remove {num_printers} printer from Cura. This action cannot be undone.\nAre you sure you want to continue?",
"You are about to remove {num_printers} printers from Cura. This action cannot be undone.\nAre you sure you want to continue?",
len(remove_printers_ids)
).format(num_printers = len(remove_printers_ids))
if remove_printers_ids == all_ids: if remove_printers_ids == all_ids:
question_content = self.I18N_CATALOG.i18nc("@label", "You are about to remove all printers from Cura. This action cannot be undone. \nAre you sure you want to continue?") question_content = self.i18n_catalog.i18nc("@label", "You are about to remove all printers from Cura. This action cannot be undone.\nAre you sure you want to continue?")
result = QMessageBox.question(None, question_title, question_content) result = QMessageBox.question(None, question_title, question_content)
if result == QMessageBox.No: if result == QMessageBox.No:
return return

View File

@ -2,7 +2,7 @@
"name": "USB printing", "name": "USB printing",
"author": "Ultimaker B.V.", "author": "Ultimaker B.V.",
"version": "1.0.2", "version": "1.0.2",
"api": "7.2.0", "api": "7.3.0",
"description": "Accepts G-Code and sends them to a printer. Plugin can also update firmware.", "description": "Accepts G-Code and sends them to a printer. Plugin can also update firmware.",
"i18n-catalog": "cura" "i18n-catalog": "cura"
} }

View File

@ -3,6 +3,6 @@
"author": "Ultimaker B.V.", "author": "Ultimaker B.V.",
"version": "1.0.1", "version": "1.0.1",
"description": "Provides machine actions for Ultimaker machines (such as bed leveling wizard, selecting upgrades, etc.).", "description": "Provides machine actions for Ultimaker machines (such as bed leveling wizard, selecting upgrades, etc.).",
"api": "7.2.0", "api": "7.3.0",
"i18n-catalog": "cura" "i18n-catalog": "cura"
} }

View File

@ -3,6 +3,6 @@
"author": "Ultimaker B.V.", "author": "Ultimaker B.V.",
"version": "1.0.1", "version": "1.0.1",
"description": "Upgrades configurations from Cura 2.1 to Cura 2.2.", "description": "Upgrades configurations from Cura 2.1 to Cura 2.2.",
"api": "7.2.0", "api": "7.3.0",
"i18n-catalog": "cura" "i18n-catalog": "cura"
} }

View File

@ -3,6 +3,6 @@
"author": "Ultimaker B.V.", "author": "Ultimaker B.V.",
"version": "1.0.1", "version": "1.0.1",
"description": "Upgrades configurations from Cura 2.2 to Cura 2.4.", "description": "Upgrades configurations from Cura 2.2 to Cura 2.4.",
"api": "7.2.0", "api": "7.3.0",
"i18n-catalog": "cura" "i18n-catalog": "cura"
} }

View File

@ -3,6 +3,6 @@
"author": "Ultimaker B.V.", "author": "Ultimaker B.V.",
"version": "1.0.1", "version": "1.0.1",
"description": "Upgrades configurations from Cura 2.5 to Cura 2.6.", "description": "Upgrades configurations from Cura 2.5 to Cura 2.6.",
"api": "7.2.0", "api": "7.3.0",
"i18n-catalog": "cura" "i18n-catalog": "cura"
} }

View File

@ -3,6 +3,6 @@
"author": "Ultimaker B.V.", "author": "Ultimaker B.V.",
"version": "1.0.1", "version": "1.0.1",
"description": "Upgrades configurations from Cura 2.6 to Cura 2.7.", "description": "Upgrades configurations from Cura 2.6 to Cura 2.7.",
"api": "7.2.0", "api": "7.3.0",
"i18n-catalog": "cura" "i18n-catalog": "cura"
} }

View File

@ -3,6 +3,6 @@
"author": "Ultimaker B.V.", "author": "Ultimaker B.V.",
"version": "1.0.1", "version": "1.0.1",
"description": "Upgrades configurations from Cura 2.7 to Cura 3.0.", "description": "Upgrades configurations from Cura 2.7 to Cura 3.0.",
"api": "7.2.0", "api": "7.3.0",
"i18n-catalog": "cura" "i18n-catalog": "cura"
} }

View File

@ -3,6 +3,6 @@
"author": "Ultimaker B.V.", "author": "Ultimaker B.V.",
"version": "1.0.1", "version": "1.0.1",
"description": "Upgrades configurations from Cura 3.0 to Cura 3.1.", "description": "Upgrades configurations from Cura 3.0 to Cura 3.1.",
"api": "7.2.0", "api": "7.3.0",
"i18n-catalog": "cura" "i18n-catalog": "cura"
} }

View File

@ -3,6 +3,6 @@
"author": "Ultimaker B.V.", "author": "Ultimaker B.V.",
"version": "1.0.1", "version": "1.0.1",
"description": "Upgrades configurations from Cura 3.2 to Cura 3.3.", "description": "Upgrades configurations from Cura 3.2 to Cura 3.3.",
"api": "7.2.0", "api": "7.3.0",
"i18n-catalog": "cura" "i18n-catalog": "cura"
} }

View File

@ -3,6 +3,6 @@
"author": "Ultimaker B.V.", "author": "Ultimaker B.V.",
"version": "1.0.1", "version": "1.0.1",
"description": "Upgrades configurations from Cura 3.3 to Cura 3.4.", "description": "Upgrades configurations from Cura 3.3 to Cura 3.4.",
"api": "7.2.0", "api": "7.3.0",
"i18n-catalog": "cura" "i18n-catalog": "cura"
} }

View File

@ -3,6 +3,6 @@
"author": "Ultimaker B.V.", "author": "Ultimaker B.V.",
"version": "1.0.1", "version": "1.0.1",
"description": "Upgrades configurations from Cura 3.4 to Cura 3.5.", "description": "Upgrades configurations from Cura 3.4 to Cura 3.5.",
"api": "7.2.0", "api": "7.3.0",
"i18n-catalog": "cura" "i18n-catalog": "cura"
} }

View File

@ -3,6 +3,6 @@
"author": "Ultimaker B.V.", "author": "Ultimaker B.V.",
"version": "1.0.0", "version": "1.0.0",
"description": "Upgrades configurations from Cura 3.5 to Cura 4.0.", "description": "Upgrades configurations from Cura 3.5 to Cura 4.0.",
"api": "7.2.0", "api": "7.3.0",
"i18n-catalog": "cura" "i18n-catalog": "cura"
} }

View File

@ -3,6 +3,6 @@
"author": "Ultimaker B.V.", "author": "Ultimaker B.V.",
"version": "1.0.1", "version": "1.0.1",
"description": "Upgrades configurations from Cura 4.0 to Cura 4.1.", "description": "Upgrades configurations from Cura 4.0 to Cura 4.1.",
"api": "7.2.0", "api": "7.3.0",
"i18n-catalog": "cura" "i18n-catalog": "cura"
} }

View File

@ -3,6 +3,6 @@
"author": "Ultimaker B.V.", "author": "Ultimaker B.V.",
"version": "1.0.0", "version": "1.0.0",
"description": "Upgrades configurations from Cura 4.1 to Cura 4.2.", "description": "Upgrades configurations from Cura 4.1 to Cura 4.2.",
"api": "7.2.0", "api": "7.3.0",
"i18n-catalog": "cura" "i18n-catalog": "cura"
} }

View File

@ -3,6 +3,6 @@
"author": "Ultimaker B.V.", "author": "Ultimaker B.V.",
"version": "1.0.0", "version": "1.0.0",
"description": "Upgrades configurations from Cura 4.2 to Cura 4.3.", "description": "Upgrades configurations from Cura 4.2 to Cura 4.3.",
"api": "7.2.0", "api": "7.3.0",
"i18n-catalog": "cura" "i18n-catalog": "cura"
} }

View File

@ -3,6 +3,6 @@
"author": "Ultimaker B.V.", "author": "Ultimaker B.V.",
"version": "1.0.0", "version": "1.0.0",
"description": "Upgrades configurations from Cura 4.3 to Cura 4.4.", "description": "Upgrades configurations from Cura 4.3 to Cura 4.4.",
"api": "7.2.0", "api": "7.3.0",
"i18n-catalog": "cura" "i18n-catalog": "cura"
} }

View File

@ -3,6 +3,6 @@
"author": "Ultimaker B.V.", "author": "Ultimaker B.V.",
"version": "1.0.0", "version": "1.0.0",
"description": "Upgrades configurations from Cura 4.4 to Cura 4.5.", "description": "Upgrades configurations from Cura 4.4 to Cura 4.5.",
"api": "7.2.0", "api": "7.3.0",
"i18n-catalog": "cura" "i18n-catalog": "cura"
} }

View File

@ -3,6 +3,6 @@
"author": "Ultimaker B.V.", "author": "Ultimaker B.V.",
"version": "1.0.0", "version": "1.0.0",
"description": "Upgrades configurations from Cura 4.5 to Cura 4.6.", "description": "Upgrades configurations from Cura 4.5 to Cura 4.6.",
"api": "7.2.0", "api": "7.3.0",
"i18n-catalog": "cura" "i18n-catalog": "cura"
} }

View File

@ -3,6 +3,6 @@
"author": "Ultimaker B.V.", "author": "Ultimaker B.V.",
"version": "1.0.0", "version": "1.0.0",
"description": "Upgrades configurations from Cura 4.6.0 to Cura 4.6.2.", "description": "Upgrades configurations from Cura 4.6.0 to Cura 4.6.2.",
"api": "7.2.0", "api": "7.3.0",
"i18n-catalog": "cura" "i18n-catalog": "cura"
} }

View File

@ -3,6 +3,6 @@
"author": "Ultimaker B.V.", "author": "Ultimaker B.V.",
"version": "1.0.0", "version": "1.0.0",
"description": "Upgrades configurations from Cura 4.6.2 to Cura 4.7.", "description": "Upgrades configurations from Cura 4.6.2 to Cura 4.7.",
"api": "7.2.0", "api": "7.3.0",
"i18n-catalog": "cura" "i18n-catalog": "cura"
} }

View File

@ -3,6 +3,6 @@
"author": "Seva Alekseyev, Ultimaker B.V.", "author": "Seva Alekseyev, Ultimaker B.V.",
"version": "1.0.1", "version": "1.0.1",
"description": "Provides support for reading X3D files.", "description": "Provides support for reading X3D files.",
"api": "7.2.0", "api": "7.3.0",
"i18n-catalog": "cura" "i18n-catalog": "cura"
} }

View File

@ -3,6 +3,6 @@
"author": "Ultimaker B.V.", "author": "Ultimaker B.V.",
"version": "1.0.1", "version": "1.0.1",
"description": "Provides the X-Ray view.", "description": "Provides the X-Ray view.",
"api": "7.2.0", "api": "7.3.0",
"i18n-catalog": "cura" "i18n-catalog": "cura"
} }

View File

@ -3,6 +3,6 @@
"author": "Ultimaker B.V.", "author": "Ultimaker B.V.",
"version": "1.0.1", "version": "1.0.1",
"description": "Provides capabilities to read and write XML-based material profiles.", "description": "Provides capabilities to read and write XML-based material profiles.",
"api": "7.2.0", "api": "7.3.0",
"i18n-catalog": "cura" "i18n-catalog": "cura"
} }

View File

@ -6,7 +6,7 @@
"display_name": "3MF Reader", "display_name": "3MF Reader",
"description": "Provides support for reading 3MF files.", "description": "Provides support for reading 3MF files.",
"package_version": "1.0.1", "package_version": "1.0.1",
"sdk_version": "7.2.0", "sdk_version": "7.3.0",
"website": "https://ultimaker.com", "website": "https://ultimaker.com",
"author": { "author": {
"author_id": "UltimakerPackages", "author_id": "UltimakerPackages",
@ -23,7 +23,7 @@
"display_name": "3MF Writer", "display_name": "3MF Writer",
"description": "Provides support for writing 3MF files.", "description": "Provides support for writing 3MF files.",
"package_version": "1.0.1", "package_version": "1.0.1",
"sdk_version": "7.2.0", "sdk_version": "7.3.0",
"website": "https://ultimaker.com", "website": "https://ultimaker.com",
"author": { "author": {
"author_id": "UltimakerPackages", "author_id": "UltimakerPackages",
@ -40,7 +40,7 @@
"display_name": "AMF Reader", "display_name": "AMF Reader",
"description": "Provides support for reading AMF files.", "description": "Provides support for reading AMF files.",
"package_version": "1.0.0", "package_version": "1.0.0",
"sdk_version": "7.2.0", "sdk_version": "7.3.0",
"website": "https://ultimaker.com", "website": "https://ultimaker.com",
"author": { "author": {
"author_id": "fieldOfView", "author_id": "fieldOfView",
@ -57,7 +57,7 @@
"display_name": "Cura Backups", "display_name": "Cura Backups",
"description": "Backup and restore your configuration.", "description": "Backup and restore your configuration.",
"package_version": "1.2.0", "package_version": "1.2.0",
"sdk_version": "7.2.0", "sdk_version": "7.3.0",
"website": "https://ultimaker.com", "website": "https://ultimaker.com",
"author": { "author": {
"author_id": "UltimakerPackages", "author_id": "UltimakerPackages",
@ -74,7 +74,7 @@
"display_name": "CuraEngine Backend", "display_name": "CuraEngine Backend",
"description": "Provides the link to the CuraEngine slicing backend.", "description": "Provides the link to the CuraEngine slicing backend.",
"package_version": "1.0.1", "package_version": "1.0.1",
"sdk_version": "7.2.0", "sdk_version": "7.3.0",
"website": "https://ultimaker.com", "website": "https://ultimaker.com",
"author": { "author": {
"author_id": "UltimakerPackages", "author_id": "UltimakerPackages",
@ -91,7 +91,7 @@
"display_name": "Cura Profile Reader", "display_name": "Cura Profile Reader",
"description": "Provides support for importing Cura profiles.", "description": "Provides support for importing Cura profiles.",
"package_version": "1.0.1", "package_version": "1.0.1",
"sdk_version": "7.2.0", "sdk_version": "7.3.0",
"website": "https://ultimaker.com", "website": "https://ultimaker.com",
"author": { "author": {
"author_id": "UltimakerPackages", "author_id": "UltimakerPackages",
@ -108,7 +108,7 @@
"display_name": "Cura Profile Writer", "display_name": "Cura Profile Writer",
"description": "Provides support for exporting Cura profiles.", "description": "Provides support for exporting Cura profiles.",
"package_version": "1.0.1", "package_version": "1.0.1",
"sdk_version": "7.2.0", "sdk_version": "7.3.0",
"website": "https://ultimaker.com", "website": "https://ultimaker.com",
"author": { "author": {
"author_id": "UltimakerPackages", "author_id": "UltimakerPackages",
@ -125,7 +125,7 @@
"display_name": "Firmware Update Checker", "display_name": "Firmware Update Checker",
"description": "Checks for firmware updates.", "description": "Checks for firmware updates.",
"package_version": "1.0.1", "package_version": "1.0.1",
"sdk_version": "7.2.0", "sdk_version": "7.3.0",
"website": "https://ultimaker.com", "website": "https://ultimaker.com",
"author": { "author": {
"author_id": "UltimakerPackages", "author_id": "UltimakerPackages",
@ -142,7 +142,7 @@
"display_name": "Firmware Updater", "display_name": "Firmware Updater",
"description": "Provides a machine actions for updating firmware.", "description": "Provides a machine actions for updating firmware.",
"package_version": "1.0.1", "package_version": "1.0.1",
"sdk_version": "7.2.0", "sdk_version": "7.3.0",
"website": "https://ultimaker.com", "website": "https://ultimaker.com",
"author": { "author": {
"author_id": "UltimakerPackages", "author_id": "UltimakerPackages",
@ -159,7 +159,7 @@
"display_name": "Compressed G-code Reader", "display_name": "Compressed G-code Reader",
"description": "Reads g-code from a compressed archive.", "description": "Reads g-code from a compressed archive.",
"package_version": "1.0.1", "package_version": "1.0.1",
"sdk_version": "7.2.0", "sdk_version": "7.3.0",
"website": "https://ultimaker.com", "website": "https://ultimaker.com",
"author": { "author": {
"author_id": "UltimakerPackages", "author_id": "UltimakerPackages",
@ -176,7 +176,7 @@
"display_name": "Compressed G-code Writer", "display_name": "Compressed G-code Writer",
"description": "Writes g-code to a compressed archive.", "description": "Writes g-code to a compressed archive.",
"package_version": "1.0.1", "package_version": "1.0.1",
"sdk_version": "7.2.0", "sdk_version": "7.3.0",
"website": "https://ultimaker.com", "website": "https://ultimaker.com",
"author": { "author": {
"author_id": "UltimakerPackages", "author_id": "UltimakerPackages",
@ -193,7 +193,7 @@
"display_name": "G-Code Profile Reader", "display_name": "G-Code Profile Reader",
"description": "Provides support for importing profiles from g-code files.", "description": "Provides support for importing profiles from g-code files.",
"package_version": "1.0.1", "package_version": "1.0.1",
"sdk_version": "7.2.0", "sdk_version": "7.3.0",
"website": "https://ultimaker.com", "website": "https://ultimaker.com",
"author": { "author": {
"author_id": "UltimakerPackages", "author_id": "UltimakerPackages",
@ -210,7 +210,7 @@
"display_name": "G-Code Reader", "display_name": "G-Code Reader",
"description": "Allows loading and displaying G-code files.", "description": "Allows loading and displaying G-code files.",
"package_version": "1.0.1", "package_version": "1.0.1",
"sdk_version": "7.2.0", "sdk_version": "7.3.0",
"website": "https://ultimaker.com", "website": "https://ultimaker.com",
"author": { "author": {
"author_id": "VictorLarchenko", "author_id": "VictorLarchenko",
@ -227,7 +227,7 @@
"display_name": "G-Code Writer", "display_name": "G-Code Writer",
"description": "Writes g-code to a file.", "description": "Writes g-code to a file.",
"package_version": "1.0.1", "package_version": "1.0.1",
"sdk_version": "7.2.0", "sdk_version": "7.3.0",
"website": "https://ultimaker.com", "website": "https://ultimaker.com",
"author": { "author": {
"author_id": "UltimakerPackages", "author_id": "UltimakerPackages",
@ -244,7 +244,7 @@
"display_name": "Image Reader", "display_name": "Image Reader",
"description": "Enables ability to generate printable geometry from 2D image files.", "description": "Enables ability to generate printable geometry from 2D image files.",
"package_version": "1.0.1", "package_version": "1.0.1",
"sdk_version": "7.2.0", "sdk_version": "7.3.0",
"website": "https://ultimaker.com", "website": "https://ultimaker.com",
"author": { "author": {
"author_id": "UltimakerPackages", "author_id": "UltimakerPackages",
@ -261,7 +261,7 @@
"display_name": "Legacy Cura Profile Reader", "display_name": "Legacy Cura Profile Reader",
"description": "Provides support for importing profiles from legacy Cura versions.", "description": "Provides support for importing profiles from legacy Cura versions.",
"package_version": "1.0.1", "package_version": "1.0.1",
"sdk_version": "7.2.0", "sdk_version": "7.3.0",
"website": "https://ultimaker.com", "website": "https://ultimaker.com",
"author": { "author": {
"author_id": "UltimakerPackages", "author_id": "UltimakerPackages",
@ -278,7 +278,7 @@
"display_name": "Machine Settings Action", "display_name": "Machine Settings Action",
"description": "Provides a way to change machine settings (such as build volume, nozzle size, etc.).", "description": "Provides a way to change machine settings (such as build volume, nozzle size, etc.).",
"package_version": "1.0.1", "package_version": "1.0.1",
"sdk_version": "7.2.0", "sdk_version": "7.3.0",
"website": "https://ultimaker.com", "website": "https://ultimaker.com",
"author": { "author": {
"author_id": "fieldOfView", "author_id": "fieldOfView",
@ -295,7 +295,7 @@
"display_name": "Model Checker", "display_name": "Model Checker",
"description": "Checks models and print configuration for possible printing issues and give suggestions.", "description": "Checks models and print configuration for possible printing issues and give suggestions.",
"package_version": "1.0.1", "package_version": "1.0.1",
"sdk_version": "7.2.0", "sdk_version": "7.3.0",
"website": "https://ultimaker.com", "website": "https://ultimaker.com",
"author": { "author": {
"author_id": "UltimakerPackages", "author_id": "UltimakerPackages",
@ -312,7 +312,7 @@
"display_name": "Monitor Stage", "display_name": "Monitor Stage",
"description": "Provides a monitor stage in Cura.", "description": "Provides a monitor stage in Cura.",
"package_version": "1.0.1", "package_version": "1.0.1",
"sdk_version": "7.2.0", "sdk_version": "7.3.0",
"website": "https://ultimaker.com", "website": "https://ultimaker.com",
"author": { "author": {
"author_id": "UltimakerPackages", "author_id": "UltimakerPackages",
@ -329,7 +329,7 @@
"display_name": "Per-Object Settings Tool", "display_name": "Per-Object Settings Tool",
"description": "Provides the per-model settings.", "description": "Provides the per-model settings.",
"package_version": "1.0.1", "package_version": "1.0.1",
"sdk_version": "7.2.0", "sdk_version": "7.3.0",
"website": "https://ultimaker.com", "website": "https://ultimaker.com",
"author": { "author": {
"author_id": "UltimakerPackages", "author_id": "UltimakerPackages",
@ -346,7 +346,7 @@
"display_name": "Post Processing", "display_name": "Post Processing",
"description": "Extension that allows for user created scripts for post processing.", "description": "Extension that allows for user created scripts for post processing.",
"package_version": "2.2.1", "package_version": "2.2.1",
"sdk_version": "7.2.0", "sdk_version": "7.3.0",
"website": "https://ultimaker.com", "website": "https://ultimaker.com",
"author": { "author": {
"author_id": "UltimakerPackages", "author_id": "UltimakerPackages",
@ -363,7 +363,7 @@
"display_name": "Prepare Stage", "display_name": "Prepare Stage",
"description": "Provides a prepare stage in Cura.", "description": "Provides a prepare stage in Cura.",
"package_version": "1.0.1", "package_version": "1.0.1",
"sdk_version": "7.2.0", "sdk_version": "7.3.0",
"website": "https://ultimaker.com", "website": "https://ultimaker.com",
"author": { "author": {
"author_id": "UltimakerPackages", "author_id": "UltimakerPackages",
@ -380,7 +380,7 @@
"display_name": "Preview Stage", "display_name": "Preview Stage",
"description": "Provides a preview stage in Cura.", "description": "Provides a preview stage in Cura.",
"package_version": "1.0.1", "package_version": "1.0.1",
"sdk_version": "7.2.0", "sdk_version": "7.3.0",
"website": "https://ultimaker.com", "website": "https://ultimaker.com",
"author": { "author": {
"author_id": "UltimakerPackages", "author_id": "UltimakerPackages",
@ -397,7 +397,7 @@
"display_name": "Removable Drive Output Device", "display_name": "Removable Drive Output Device",
"description": "Provides removable drive hotplugging and writing support.", "description": "Provides removable drive hotplugging and writing support.",
"package_version": "1.0.1", "package_version": "1.0.1",
"sdk_version": "7.2.0", "sdk_version": "7.3.0",
"website": "https://ultimaker.com", "website": "https://ultimaker.com",
"author": { "author": {
"author_id": "UltimakerPackages", "author_id": "UltimakerPackages",
@ -414,7 +414,7 @@
"display_name": "Sentry Logger", "display_name": "Sentry Logger",
"description": "Logs certain events so that they can be used by the crash reporter", "description": "Logs certain events so that they can be used by the crash reporter",
"package_version": "1.0.0", "package_version": "1.0.0",
"sdk_version": "7.2.0", "sdk_version": "7.3.0",
"website": "https://ultimaker.com", "website": "https://ultimaker.com",
"author": { "author": {
"author_id": "UltimakerPackages", "author_id": "UltimakerPackages",
@ -431,7 +431,7 @@
"display_name": "Simulation View", "display_name": "Simulation View",
"description": "Provides the Simulation view.", "description": "Provides the Simulation view.",
"package_version": "1.0.1", "package_version": "1.0.1",
"sdk_version": "7.2.0", "sdk_version": "7.3.0",
"website": "https://ultimaker.com", "website": "https://ultimaker.com",
"author": { "author": {
"author_id": "UltimakerPackages", "author_id": "UltimakerPackages",
@ -448,7 +448,7 @@
"display_name": "Slice Info", "display_name": "Slice Info",
"description": "Submits anonymous slice info. Can be disabled through preferences.", "description": "Submits anonymous slice info. Can be disabled through preferences.",
"package_version": "1.0.1", "package_version": "1.0.1",
"sdk_version": "7.2.0", "sdk_version": "7.3.0",
"website": "https://ultimaker.com", "website": "https://ultimaker.com",
"author": { "author": {
"author_id": "UltimakerPackages", "author_id": "UltimakerPackages",
@ -465,7 +465,7 @@
"display_name": "Solid View", "display_name": "Solid View",
"description": "Provides a normal solid mesh view.", "description": "Provides a normal solid mesh view.",
"package_version": "1.0.1", "package_version": "1.0.1",
"sdk_version": "7.2.0", "sdk_version": "7.3.0",
"website": "https://ultimaker.com", "website": "https://ultimaker.com",
"author": { "author": {
"author_id": "UltimakerPackages", "author_id": "UltimakerPackages",
@ -482,7 +482,7 @@
"display_name": "Support Eraser Tool", "display_name": "Support Eraser Tool",
"description": "Creates an eraser mesh to block the printing of support in certain places.", "description": "Creates an eraser mesh to block the printing of support in certain places.",
"package_version": "1.0.1", "package_version": "1.0.1",
"sdk_version": "7.2.0", "sdk_version": "7.3.0",
"website": "https://ultimaker.com", "website": "https://ultimaker.com",
"author": { "author": {
"author_id": "UltimakerPackages", "author_id": "UltimakerPackages",
@ -499,7 +499,7 @@
"display_name": "Trimesh Reader", "display_name": "Trimesh Reader",
"description": "Provides support for reading model files.", "description": "Provides support for reading model files.",
"package_version": "1.0.0", "package_version": "1.0.0",
"sdk_version": "7.2.0", "sdk_version": "7.3.0",
"website": "https://ultimaker.com", "website": "https://ultimaker.com",
"author": { "author": {
"author_id": "UltimakerPackages", "author_id": "UltimakerPackages",
@ -516,7 +516,7 @@
"display_name": "Toolbox", "display_name": "Toolbox",
"description": "Find, manage and install new Cura packages.", "description": "Find, manage and install new Cura packages.",
"package_version": "1.0.1", "package_version": "1.0.1",
"sdk_version": "7.2.0", "sdk_version": "7.3.0",
"website": "https://ultimaker.com", "website": "https://ultimaker.com",
"author": { "author": {
"author_id": "UltimakerPackages", "author_id": "UltimakerPackages",
@ -533,7 +533,7 @@
"display_name": "UFP Reader", "display_name": "UFP Reader",
"description": "Provides support for reading Ultimaker Format Packages.", "description": "Provides support for reading Ultimaker Format Packages.",
"package_version": "1.0.0", "package_version": "1.0.0",
"sdk_version": "7.2.0", "sdk_version": "7.3.0",
"website": "https://ultimaker.com", "website": "https://ultimaker.com",
"author": { "author": {
"author_id": "UltimakerPackages", "author_id": "UltimakerPackages",
@ -550,7 +550,7 @@
"display_name": "UFP Writer", "display_name": "UFP Writer",
"description": "Provides support for writing Ultimaker Format Packages.", "description": "Provides support for writing Ultimaker Format Packages.",
"package_version": "1.0.1", "package_version": "1.0.1",
"sdk_version": "7.2.0", "sdk_version": "7.3.0",
"website": "https://ultimaker.com", "website": "https://ultimaker.com",
"author": { "author": {
"author_id": "UltimakerPackages", "author_id": "UltimakerPackages",
@ -567,7 +567,7 @@
"display_name": "Ultimaker Machine Actions", "display_name": "Ultimaker Machine Actions",
"description": "Provides machine actions for Ultimaker machines (such as bed leveling wizard, selecting upgrades, etc.).", "description": "Provides machine actions for Ultimaker machines (such as bed leveling wizard, selecting upgrades, etc.).",
"package_version": "1.0.1", "package_version": "1.0.1",
"sdk_version": "7.2.0", "sdk_version": "7.3.0",
"website": "https://ultimaker.com", "website": "https://ultimaker.com",
"author": { "author": {
"author_id": "UltimakerPackages", "author_id": "UltimakerPackages",
@ -584,7 +584,7 @@
"display_name": "UM3 Network Printing", "display_name": "UM3 Network Printing",
"description": "Manages network connections to Ultimaker 3 printers.", "description": "Manages network connections to Ultimaker 3 printers.",
"package_version": "1.0.1", "package_version": "1.0.1",
"sdk_version": "7.2.0", "sdk_version": "7.3.0",
"website": "https://ultimaker.com", "website": "https://ultimaker.com",
"author": { "author": {
"author_id": "UltimakerPackages", "author_id": "UltimakerPackages",
@ -601,7 +601,7 @@
"display_name": "USB Printing", "display_name": "USB Printing",
"description": "Accepts G-Code and sends them to a printer. Plugin can also update firmware.", "description": "Accepts G-Code and sends them to a printer. Plugin can also update firmware.",
"package_version": "1.0.2", "package_version": "1.0.2",
"sdk_version": "7.2.0", "sdk_version": "7.3.0",
"website": "https://ultimaker.com", "website": "https://ultimaker.com",
"author": { "author": {
"author_id": "UltimakerPackages", "author_id": "UltimakerPackages",
@ -618,7 +618,7 @@
"display_name": "Version Upgrade 2.1 to 2.2", "display_name": "Version Upgrade 2.1 to 2.2",
"description": "Upgrades configurations from Cura 2.1 to Cura 2.2.", "description": "Upgrades configurations from Cura 2.1 to Cura 2.2.",
"package_version": "1.0.1", "package_version": "1.0.1",
"sdk_version": "7.2.0", "sdk_version": "7.3.0",
"website": "https://ultimaker.com", "website": "https://ultimaker.com",
"author": { "author": {
"author_id": "UltimakerPackages", "author_id": "UltimakerPackages",
@ -635,7 +635,7 @@
"display_name": "Version Upgrade 2.2 to 2.4", "display_name": "Version Upgrade 2.2 to 2.4",
"description": "Upgrades configurations from Cura 2.2 to Cura 2.4.", "description": "Upgrades configurations from Cura 2.2 to Cura 2.4.",
"package_version": "1.0.1", "package_version": "1.0.1",
"sdk_version": "7.2.0", "sdk_version": "7.3.0",
"website": "https://ultimaker.com", "website": "https://ultimaker.com",
"author": { "author": {
"author_id": "UltimakerPackages", "author_id": "UltimakerPackages",
@ -652,7 +652,7 @@
"display_name": "Version Upgrade 2.5 to 2.6", "display_name": "Version Upgrade 2.5 to 2.6",
"description": "Upgrades configurations from Cura 2.5 to Cura 2.6.", "description": "Upgrades configurations from Cura 2.5 to Cura 2.6.",
"package_version": "1.0.1", "package_version": "1.0.1",
"sdk_version": "7.2.0", "sdk_version": "7.3.0",
"website": "https://ultimaker.com", "website": "https://ultimaker.com",
"author": { "author": {
"author_id": "UltimakerPackages", "author_id": "UltimakerPackages",
@ -669,7 +669,7 @@
"display_name": "Version Upgrade 2.6 to 2.7", "display_name": "Version Upgrade 2.6 to 2.7",
"description": "Upgrades configurations from Cura 2.6 to Cura 2.7.", "description": "Upgrades configurations from Cura 2.6 to Cura 2.7.",
"package_version": "1.0.1", "package_version": "1.0.1",
"sdk_version": "7.2.0", "sdk_version": "7.3.0",
"website": "https://ultimaker.com", "website": "https://ultimaker.com",
"author": { "author": {
"author_id": "UltimakerPackages", "author_id": "UltimakerPackages",
@ -686,7 +686,7 @@
"display_name": "Version Upgrade 2.7 to 3.0", "display_name": "Version Upgrade 2.7 to 3.0",
"description": "Upgrades configurations from Cura 2.7 to Cura 3.0.", "description": "Upgrades configurations from Cura 2.7 to Cura 3.0.",
"package_version": "1.0.1", "package_version": "1.0.1",
"sdk_version": "7.2.0", "sdk_version": "7.3.0",
"website": "https://ultimaker.com", "website": "https://ultimaker.com",
"author": { "author": {
"author_id": "UltimakerPackages", "author_id": "UltimakerPackages",
@ -703,7 +703,7 @@
"display_name": "Version Upgrade 3.0 to 3.1", "display_name": "Version Upgrade 3.0 to 3.1",
"description": "Upgrades configurations from Cura 3.0 to Cura 3.1.", "description": "Upgrades configurations from Cura 3.0 to Cura 3.1.",
"package_version": "1.0.1", "package_version": "1.0.1",
"sdk_version": "7.2.0", "sdk_version": "7.3.0",
"website": "https://ultimaker.com", "website": "https://ultimaker.com",
"author": { "author": {
"author_id": "UltimakerPackages", "author_id": "UltimakerPackages",
@ -720,7 +720,7 @@
"display_name": "Version Upgrade 3.2 to 3.3", "display_name": "Version Upgrade 3.2 to 3.3",
"description": "Upgrades configurations from Cura 3.2 to Cura 3.3.", "description": "Upgrades configurations from Cura 3.2 to Cura 3.3.",
"package_version": "1.0.1", "package_version": "1.0.1",
"sdk_version": "7.2.0", "sdk_version": "7.3.0",
"website": "https://ultimaker.com", "website": "https://ultimaker.com",
"author": { "author": {
"author_id": "UltimakerPackages", "author_id": "UltimakerPackages",
@ -737,7 +737,7 @@
"display_name": "Version Upgrade 3.3 to 3.4", "display_name": "Version Upgrade 3.3 to 3.4",
"description": "Upgrades configurations from Cura 3.3 to Cura 3.4.", "description": "Upgrades configurations from Cura 3.3 to Cura 3.4.",
"package_version": "1.0.1", "package_version": "1.0.1",
"sdk_version": "7.2.0", "sdk_version": "7.3.0",
"website": "https://ultimaker.com", "website": "https://ultimaker.com",
"author": { "author": {
"author_id": "UltimakerPackages", "author_id": "UltimakerPackages",
@ -754,7 +754,7 @@
"display_name": "Version Upgrade 3.4 to 3.5", "display_name": "Version Upgrade 3.4 to 3.5",
"description": "Upgrades configurations from Cura 3.4 to Cura 3.5.", "description": "Upgrades configurations from Cura 3.4 to Cura 3.5.",
"package_version": "1.0.1", "package_version": "1.0.1",
"sdk_version": "7.2.0", "sdk_version": "7.3.0",
"website": "https://ultimaker.com", "website": "https://ultimaker.com",
"author": { "author": {
"author_id": "UltimakerPackages", "author_id": "UltimakerPackages",
@ -771,7 +771,7 @@
"display_name": "Version Upgrade 3.5 to 4.0", "display_name": "Version Upgrade 3.5 to 4.0",
"description": "Upgrades configurations from Cura 3.5 to Cura 4.0.", "description": "Upgrades configurations from Cura 3.5 to Cura 4.0.",
"package_version": "1.0.0", "package_version": "1.0.0",
"sdk_version": "7.2.0", "sdk_version": "7.3.0",
"website": "https://ultimaker.com", "website": "https://ultimaker.com",
"author": { "author": {
"author_id": "UltimakerPackages", "author_id": "UltimakerPackages",
@ -788,7 +788,7 @@
"display_name": "Version Upgrade 4.0 to 4.1", "display_name": "Version Upgrade 4.0 to 4.1",
"description": "Upgrades configurations from Cura 4.0 to Cura 4.1.", "description": "Upgrades configurations from Cura 4.0 to Cura 4.1.",
"package_version": "1.0.1", "package_version": "1.0.1",
"sdk_version": "7.2.0", "sdk_version": "7.3.0",
"website": "https://ultimaker.com", "website": "https://ultimaker.com",
"author": { "author": {
"author_id": "UltimakerPackages", "author_id": "UltimakerPackages",
@ -805,7 +805,7 @@
"display_name": "Version Upgrade 4.1 to 4.2", "display_name": "Version Upgrade 4.1 to 4.2",
"description": "Upgrades configurations from Cura 4.1 to Cura 4.2.", "description": "Upgrades configurations from Cura 4.1 to Cura 4.2.",
"package_version": "1.0.0", "package_version": "1.0.0",
"sdk_version": "7.2.0", "sdk_version": "7.3.0",
"website": "https://ultimaker.com", "website": "https://ultimaker.com",
"author": { "author": {
"author_id": "UltimakerPackages", "author_id": "UltimakerPackages",
@ -822,7 +822,7 @@
"display_name": "Version Upgrade 4.2 to 4.3", "display_name": "Version Upgrade 4.2 to 4.3",
"description": "Upgrades configurations from Cura 4.2 to Cura 4.3.", "description": "Upgrades configurations from Cura 4.2 to Cura 4.3.",
"package_version": "1.0.0", "package_version": "1.0.0",
"sdk_version": "7.2.0", "sdk_version": "7.3.0",
"website": "https://ultimaker.com", "website": "https://ultimaker.com",
"author": { "author": {
"author_id": "UltimakerPackages", "author_id": "UltimakerPackages",
@ -839,7 +839,7 @@
"display_name": "Version Upgrade 4.3 to 4.4", "display_name": "Version Upgrade 4.3 to 4.4",
"description": "Upgrades configurations from Cura 4.3 to Cura 4.4.", "description": "Upgrades configurations from Cura 4.3 to Cura 4.4.",
"package_version": "1.0.0", "package_version": "1.0.0",
"sdk_version": "7.2.0", "sdk_version": "7.3.0",
"website": "https://ultimaker.com", "website": "https://ultimaker.com",
"author": { "author": {
"author_id": "UltimakerPackages", "author_id": "UltimakerPackages",
@ -856,7 +856,7 @@
"display_name": "Version Upgrade 4.4 to 4.5", "display_name": "Version Upgrade 4.4 to 4.5",
"description": "Upgrades configurations from Cura 4.4 to Cura 4.5.", "description": "Upgrades configurations from Cura 4.4 to Cura 4.5.",
"package_version": "1.0.0", "package_version": "1.0.0",
"sdk_version": "7.2.0", "sdk_version": "7.3.0",
"website": "https://ultimaker.com", "website": "https://ultimaker.com",
"author": { "author": {
"author_id": "UltimakerPackages", "author_id": "UltimakerPackages",
@ -873,7 +873,7 @@
"display_name": "Version Upgrade 4.5 to 4.6", "display_name": "Version Upgrade 4.5 to 4.6",
"description": "Upgrades configurations from Cura 4.5 to Cura 4.6.", "description": "Upgrades configurations from Cura 4.5 to Cura 4.6.",
"package_version": "1.0.0", "package_version": "1.0.0",
"sdk_version": "7.2.0", "sdk_version": "7.3.0",
"website": "https://ultimaker.com", "website": "https://ultimaker.com",
"author": { "author": {
"author_id": "UltimakerPackages", "author_id": "UltimakerPackages",
@ -890,7 +890,7 @@
"display_name": "Version Upgrade 4.6.0 to 4.6.2", "display_name": "Version Upgrade 4.6.0 to 4.6.2",
"description": "Upgrades configurations from Cura 4.6.0 to Cura 4.6.2.", "description": "Upgrades configurations from Cura 4.6.0 to Cura 4.6.2.",
"package_version": "1.0.0", "package_version": "1.0.0",
"sdk_version": "7.2.0", "sdk_version": "7.3.0",
"website": "https://ultimaker.com", "website": "https://ultimaker.com",
"author": { "author": {
"author_id": "UltimakerPackages", "author_id": "UltimakerPackages",
@ -907,7 +907,7 @@
"display_name": "Version Upgrade 4.6.2 to 4.7", "display_name": "Version Upgrade 4.6.2 to 4.7",
"description": "Upgrades configurations from Cura 4.6.2 to Cura 4.7.", "description": "Upgrades configurations from Cura 4.6.2 to Cura 4.7.",
"package_version": "1.0.0", "package_version": "1.0.0",
"sdk_version": "7.2.0", "sdk_version": "7.3.0",
"website": "https://ultimaker.com", "website": "https://ultimaker.com",
"author": { "author": {
"author_id": "UltimakerPackages", "author_id": "UltimakerPackages",
@ -924,7 +924,7 @@
"display_name": "X3D Reader", "display_name": "X3D Reader",
"description": "Provides support for reading X3D files.", "description": "Provides support for reading X3D files.",
"package_version": "1.0.1", "package_version": "1.0.1",
"sdk_version": "7.2.0", "sdk_version": "7.3.0",
"website": "https://ultimaker.com", "website": "https://ultimaker.com",
"author": { "author": {
"author_id": "SevaAlekseyev", "author_id": "SevaAlekseyev",
@ -941,7 +941,7 @@
"display_name": "XML Material Profiles", "display_name": "XML Material Profiles",
"description": "Provides capabilities to read and write XML-based material profiles.", "description": "Provides capabilities to read and write XML-based material profiles.",
"package_version": "1.0.1", "package_version": "1.0.1",
"sdk_version": "7.2.0", "sdk_version": "7.3.0",
"website": "https://ultimaker.com", "website": "https://ultimaker.com",
"author": { "author": {
"author_id": "UltimakerPackages", "author_id": "UltimakerPackages",
@ -958,7 +958,7 @@
"display_name": "X-Ray View", "display_name": "X-Ray View",
"description": "Provides the X-Ray view.", "description": "Provides the X-Ray view.",
"package_version": "1.0.1", "package_version": "1.0.1",
"sdk_version": "7.2.0", "sdk_version": "7.3.0",
"website": "https://ultimaker.com", "website": "https://ultimaker.com",
"author": { "author": {
"author_id": "UltimakerPackages", "author_id": "UltimakerPackages",
@ -975,7 +975,7 @@
"display_name": "Generic ABS", "display_name": "Generic ABS",
"description": "The generic ABS profile which other profiles can be based upon.", "description": "The generic ABS profile which other profiles can be based upon.",
"package_version": "1.2.1", "package_version": "1.2.1",
"sdk_version": "7.2.0", "sdk_version": "7.3.0",
"website": "https://github.com/Ultimaker/fdm_materials", "website": "https://github.com/Ultimaker/fdm_materials",
"author": { "author": {
"author_id": "Generic", "author_id": "Generic",
@ -993,7 +993,7 @@
"display_name": "Generic BAM", "display_name": "Generic BAM",
"description": "The generic BAM profile which other profiles can be based upon.", "description": "The generic BAM profile which other profiles can be based upon.",
"package_version": "1.2.1", "package_version": "1.2.1",
"sdk_version": "7.2.0", "sdk_version": "7.3.0",
"website": "https://github.com/Ultimaker/fdm_materials", "website": "https://github.com/Ultimaker/fdm_materials",
"author": { "author": {
"author_id": "Generic", "author_id": "Generic",
@ -1011,7 +1011,7 @@
"display_name": "Generic CFF CPE", "display_name": "Generic CFF CPE",
"description": "The generic CFF CPE profile which other profiles can be based upon.", "description": "The generic CFF CPE profile which other profiles can be based upon.",
"package_version": "1.1.1", "package_version": "1.1.1",
"sdk_version": "7.2.0", "sdk_version": "7.3.0",
"website": "https://github.com/Ultimaker/fdm_materials", "website": "https://github.com/Ultimaker/fdm_materials",
"author": { "author": {
"author_id": "Generic", "author_id": "Generic",
@ -1029,7 +1029,7 @@
"display_name": "Generic CFF PA", "display_name": "Generic CFF PA",
"description": "The generic CFF PA profile which other profiles can be based upon.", "description": "The generic CFF PA profile which other profiles can be based upon.",
"package_version": "1.1.1", "package_version": "1.1.1",
"sdk_version": "7.2.0", "sdk_version": "7.3.0",
"website": "https://github.com/Ultimaker/fdm_materials", "website": "https://github.com/Ultimaker/fdm_materials",
"author": { "author": {
"author_id": "Generic", "author_id": "Generic",
@ -1047,7 +1047,7 @@
"display_name": "Generic CPE", "display_name": "Generic CPE",
"description": "The generic CPE profile which other profiles can be based upon.", "description": "The generic CPE profile which other profiles can be based upon.",
"package_version": "1.2.1", "package_version": "1.2.1",
"sdk_version": "7.2.0", "sdk_version": "7.3.0",
"website": "https://github.com/Ultimaker/fdm_materials", "website": "https://github.com/Ultimaker/fdm_materials",
"author": { "author": {
"author_id": "Generic", "author_id": "Generic",
@ -1065,7 +1065,7 @@
"display_name": "Generic CPE+", "display_name": "Generic CPE+",
"description": "The generic CPE+ profile which other profiles can be based upon.", "description": "The generic CPE+ profile which other profiles can be based upon.",
"package_version": "1.2.1", "package_version": "1.2.1",
"sdk_version": "7.2.0", "sdk_version": "7.3.0",
"website": "https://github.com/Ultimaker/fdm_materials", "website": "https://github.com/Ultimaker/fdm_materials",
"author": { "author": {
"author_id": "Generic", "author_id": "Generic",
@ -1083,7 +1083,7 @@
"display_name": "Generic GFF CPE", "display_name": "Generic GFF CPE",
"description": "The generic GFF CPE profile which other profiles can be based upon.", "description": "The generic GFF CPE profile which other profiles can be based upon.",
"package_version": "1.1.1", "package_version": "1.1.1",
"sdk_version": "7.2.0", "sdk_version": "7.3.0",
"website": "https://github.com/Ultimaker/fdm_materials", "website": "https://github.com/Ultimaker/fdm_materials",
"author": { "author": {
"author_id": "Generic", "author_id": "Generic",
@ -1101,7 +1101,7 @@
"display_name": "Generic GFF PA", "display_name": "Generic GFF PA",
"description": "The generic GFF PA profile which other profiles can be based upon.", "description": "The generic GFF PA profile which other profiles can be based upon.",
"package_version": "1.1.1", "package_version": "1.1.1",
"sdk_version": "7.2.0", "sdk_version": "7.3.0",
"website": "https://github.com/Ultimaker/fdm_materials", "website": "https://github.com/Ultimaker/fdm_materials",
"author": { "author": {
"author_id": "Generic", "author_id": "Generic",
@ -1119,7 +1119,7 @@
"display_name": "Generic HIPS", "display_name": "Generic HIPS",
"description": "The generic HIPS profile which other profiles can be based upon.", "description": "The generic HIPS profile which other profiles can be based upon.",
"package_version": "1.0.1", "package_version": "1.0.1",
"sdk_version": "7.2.0", "sdk_version": "7.3.0",
"website": "https://github.com/Ultimaker/fdm_materials", "website": "https://github.com/Ultimaker/fdm_materials",
"author": { "author": {
"author_id": "Generic", "author_id": "Generic",
@ -1137,7 +1137,7 @@
"display_name": "Generic Nylon", "display_name": "Generic Nylon",
"description": "The generic Nylon profile which other profiles can be based upon.", "description": "The generic Nylon profile which other profiles can be based upon.",
"package_version": "1.2.1", "package_version": "1.2.1",
"sdk_version": "7.2.0", "sdk_version": "7.3.0",
"website": "https://github.com/Ultimaker/fdm_materials", "website": "https://github.com/Ultimaker/fdm_materials",
"author": { "author": {
"author_id": "Generic", "author_id": "Generic",
@ -1155,7 +1155,7 @@
"display_name": "Generic PC", "display_name": "Generic PC",
"description": "The generic PC profile which other profiles can be based upon.", "description": "The generic PC profile which other profiles can be based upon.",
"package_version": "1.2.1", "package_version": "1.2.1",
"sdk_version": "7.2.0", "sdk_version": "7.3.0",
"website": "https://github.com/Ultimaker/fdm_materials", "website": "https://github.com/Ultimaker/fdm_materials",
"author": { "author": {
"author_id": "Generic", "author_id": "Generic",
@ -1173,7 +1173,7 @@
"display_name": "Generic PETG", "display_name": "Generic PETG",
"description": "The generic PETG profile which other profiles can be based upon.", "description": "The generic PETG profile which other profiles can be based upon.",
"package_version": "1.0.1", "package_version": "1.0.1",
"sdk_version": "7.2.0", "sdk_version": "7.3.0",
"website": "https://github.com/Ultimaker/fdm_materials", "website": "https://github.com/Ultimaker/fdm_materials",
"author": { "author": {
"author_id": "Generic", "author_id": "Generic",
@ -1191,7 +1191,7 @@
"display_name": "Generic PLA", "display_name": "Generic PLA",
"description": "The generic PLA profile which other profiles can be based upon.", "description": "The generic PLA profile which other profiles can be based upon.",
"package_version": "1.2.1", "package_version": "1.2.1",
"sdk_version": "7.2.0", "sdk_version": "7.3.0",
"website": "https://github.com/Ultimaker/fdm_materials", "website": "https://github.com/Ultimaker/fdm_materials",
"author": { "author": {
"author_id": "Generic", "author_id": "Generic",
@ -1209,7 +1209,7 @@
"display_name": "Generic PP", "display_name": "Generic PP",
"description": "The generic PP profile which other profiles can be based upon.", "description": "The generic PP profile which other profiles can be based upon.",
"package_version": "1.2.1", "package_version": "1.2.1",
"sdk_version": "7.2.0", "sdk_version": "7.3.0",
"website": "https://github.com/Ultimaker/fdm_materials", "website": "https://github.com/Ultimaker/fdm_materials",
"author": { "author": {
"author_id": "Generic", "author_id": "Generic",
@ -1227,7 +1227,7 @@
"display_name": "Generic PVA", "display_name": "Generic PVA",
"description": "The generic PVA profile which other profiles can be based upon.", "description": "The generic PVA profile which other profiles can be based upon.",
"package_version": "1.2.1", "package_version": "1.2.1",
"sdk_version": "7.2.0", "sdk_version": "7.3.0",
"website": "https://github.com/Ultimaker/fdm_materials", "website": "https://github.com/Ultimaker/fdm_materials",
"author": { "author": {
"author_id": "Generic", "author_id": "Generic",
@ -1245,7 +1245,7 @@
"display_name": "Generic Tough PLA", "display_name": "Generic Tough PLA",
"description": "The generic Tough PLA profile which other profiles can be based upon.", "description": "The generic Tough PLA profile which other profiles can be based upon.",
"package_version": "1.0.2", "package_version": "1.0.2",
"sdk_version": "7.2.0", "sdk_version": "7.3.0",
"website": "https://github.com/Ultimaker/fdm_materials", "website": "https://github.com/Ultimaker/fdm_materials",
"author": { "author": {
"author_id": "Generic", "author_id": "Generic",
@ -1263,7 +1263,7 @@
"display_name": "Generic TPU", "display_name": "Generic TPU",
"description": "The generic TPU profile which other profiles can be based upon.", "description": "The generic TPU profile which other profiles can be based upon.",
"package_version": "1.2.1", "package_version": "1.2.1",
"sdk_version": "7.2.0", "sdk_version": "7.3.0",
"website": "https://github.com/Ultimaker/fdm_materials", "website": "https://github.com/Ultimaker/fdm_materials",
"author": { "author": {
"author_id": "Generic", "author_id": "Generic",
@ -1281,7 +1281,7 @@
"display_name": "Dagoma Chromatik PLA", "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.", "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", "package_version": "1.0.1",
"sdk_version": "7.2.0", "sdk_version": "7.3.0",
"website": "https://dagoma.fr/boutique/filaments.html", "website": "https://dagoma.fr/boutique/filaments.html",
"author": { "author": {
"author_id": "Dagoma", "author_id": "Dagoma",
@ -1298,7 +1298,7 @@
"display_name": "FABtotum ABS", "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.", "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.0.1", "package_version": "1.0.1",
"sdk_version": "7.2.0", "sdk_version": "7.3.0",
"website": "https://store.fabtotum.com/eu/products/filaments.html?filament_type=40", "website": "https://store.fabtotum.com/eu/products/filaments.html?filament_type=40",
"author": { "author": {
"author_id": "FABtotum", "author_id": "FABtotum",
@ -1315,7 +1315,7 @@
"display_name": "FABtotum Nylon", "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.", "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.0.1", "package_version": "1.0.1",
"sdk_version": "7.2.0", "sdk_version": "7.3.0",
"website": "https://store.fabtotum.com/eu/products/filaments.html?filament_type=53", "website": "https://store.fabtotum.com/eu/products/filaments.html?filament_type=53",
"author": { "author": {
"author_id": "FABtotum", "author_id": "FABtotum",
@ -1332,7 +1332,7 @@
"display_name": "FABtotum PLA", "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°.", "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.0.1", "package_version": "1.0.1",
"sdk_version": "7.2.0", "sdk_version": "7.3.0",
"website": "https://store.fabtotum.com/eu/products/filaments.html?filament_type=39", "website": "https://store.fabtotum.com/eu/products/filaments.html?filament_type=39",
"author": { "author": {
"author_id": "FABtotum", "author_id": "FABtotum",
@ -1349,7 +1349,7 @@
"display_name": "FABtotum TPU Shore 98A", "display_name": "FABtotum TPU Shore 98A",
"description": "", "description": "",
"package_version": "1.0.1", "package_version": "1.0.1",
"sdk_version": "7.2.0", "sdk_version": "7.3.0",
"website": "https://store.fabtotum.com/eu/products/filaments.html?filament_type=66", "website": "https://store.fabtotum.com/eu/products/filaments.html?filament_type=66",
"author": { "author": {
"author_id": "FABtotum", "author_id": "FABtotum",
@ -1366,7 +1366,7 @@
"display_name": "Fiberlogy HD PLA", "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.", "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", "package_version": "1.0.1",
"sdk_version": "7.2.0", "sdk_version": "7.3.0",
"website": "http://fiberlogy.com/en/fiberlogy-filaments/filament-hd-pla/", "website": "http://fiberlogy.com/en/fiberlogy-filaments/filament-hd-pla/",
"author": { "author": {
"author_id": "Fiberlogy", "author_id": "Fiberlogy",
@ -1383,7 +1383,7 @@
"display_name": "Filo3D PLA", "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.", "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", "package_version": "1.0.1",
"sdk_version": "7.2.0", "sdk_version": "7.3.0",
"website": "https://dagoma.fr", "website": "https://dagoma.fr",
"author": { "author": {
"author_id": "Dagoma", "author_id": "Dagoma",
@ -1400,7 +1400,7 @@
"display_name": "IMADE3D JellyBOX PETG", "display_name": "IMADE3D JellyBOX PETG",
"description": "", "description": "",
"package_version": "1.0.1", "package_version": "1.0.1",
"sdk_version": "7.2.0", "sdk_version": "7.3.0",
"website": "http://shop.imade3d.com/filament.html", "website": "http://shop.imade3d.com/filament.html",
"author": { "author": {
"author_id": "IMADE3D", "author_id": "IMADE3D",
@ -1417,7 +1417,7 @@
"display_name": "IMADE3D JellyBOX PLA", "display_name": "IMADE3D JellyBOX PLA",
"description": "", "description": "",
"package_version": "1.0.1", "package_version": "1.0.1",
"sdk_version": "7.2.0", "sdk_version": "7.3.0",
"website": "http://shop.imade3d.com/filament.html", "website": "http://shop.imade3d.com/filament.html",
"author": { "author": {
"author_id": "IMADE3D", "author_id": "IMADE3D",
@ -1434,7 +1434,7 @@
"display_name": "Octofiber PLA", "display_name": "Octofiber PLA",
"description": "PLA material from Octofiber.", "description": "PLA material from Octofiber.",
"package_version": "1.0.1", "package_version": "1.0.1",
"sdk_version": "7.2.0", "sdk_version": "7.3.0",
"website": "https://nl.octofiber.com/3d-printing-filament/pla.html", "website": "https://nl.octofiber.com/3d-printing-filament/pla.html",
"author": { "author": {
"author_id": "Octofiber", "author_id": "Octofiber",
@ -1451,7 +1451,7 @@
"display_name": "PolyFlex™ PLA", "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.", "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", "package_version": "1.0.1",
"sdk_version": "7.2.0", "sdk_version": "7.3.0",
"website": "http://www.polymaker.com/shop/polyflex/", "website": "http://www.polymaker.com/shop/polyflex/",
"author": { "author": {
"author_id": "Polymaker", "author_id": "Polymaker",
@ -1468,7 +1468,7 @@
"display_name": "PolyMax™ PLA", "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.", "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", "package_version": "1.0.1",
"sdk_version": "7.2.0", "sdk_version": "7.3.0",
"website": "http://www.polymaker.com/shop/polymax/", "website": "http://www.polymaker.com/shop/polymax/",
"author": { "author": {
"author_id": "Polymaker", "author_id": "Polymaker",
@ -1485,7 +1485,7 @@
"display_name": "PolyPlus™ PLA True Colour", "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.", "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", "package_version": "1.0.1",
"sdk_version": "7.2.0", "sdk_version": "7.3.0",
"website": "http://www.polymaker.com/shop/polyplus-true-colour/", "website": "http://www.polymaker.com/shop/polyplus-true-colour/",
"author": { "author": {
"author_id": "Polymaker", "author_id": "Polymaker",
@ -1502,7 +1502,7 @@
"display_name": "PolyWood™ PLA", "display_name": "PolyWood™ PLA",
"description": "PolyWood™ is a wood mimic printing material that contains no actual wood ensuring a clean Jam-Free™ printing experience.", "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", "package_version": "1.0.1",
"sdk_version": "7.2.0", "sdk_version": "7.3.0",
"website": "http://www.polymaker.com/shop/polywood/", "website": "http://www.polymaker.com/shop/polywood/",
"author": { "author": {
"author_id": "Polymaker", "author_id": "Polymaker",
@ -1519,7 +1519,7 @@
"display_name": "Ultimaker ABS", "display_name": "Ultimaker ABS",
"description": "Example package for material and quality profiles for Ultimaker materials.", "description": "Example package for material and quality profiles for Ultimaker materials.",
"package_version": "1.2.2", "package_version": "1.2.2",
"sdk_version": "7.2.0", "sdk_version": "7.3.0",
"website": "https://ultimaker.com/products/materials/abs", "website": "https://ultimaker.com/products/materials/abs",
"author": { "author": {
"author_id": "UltimakerPackages", "author_id": "UltimakerPackages",
@ -1538,7 +1538,7 @@
"display_name": "Ultimaker Breakaway", "display_name": "Ultimaker Breakaway",
"description": "Example package for material and quality profiles for Ultimaker materials.", "description": "Example package for material and quality profiles for Ultimaker materials.",
"package_version": "1.2.1", "package_version": "1.2.1",
"sdk_version": "7.2.0", "sdk_version": "7.3.0",
"website": "https://ultimaker.com/products/materials/breakaway", "website": "https://ultimaker.com/products/materials/breakaway",
"author": { "author": {
"author_id": "UltimakerPackages", "author_id": "UltimakerPackages",
@ -1557,7 +1557,7 @@
"display_name": "Ultimaker CPE", "display_name": "Ultimaker CPE",
"description": "Example package for material and quality profiles for Ultimaker materials.", "description": "Example package for material and quality profiles for Ultimaker materials.",
"package_version": "1.2.2", "package_version": "1.2.2",
"sdk_version": "7.2.0", "sdk_version": "7.3.0",
"website": "https://ultimaker.com/products/materials/abs", "website": "https://ultimaker.com/products/materials/abs",
"author": { "author": {
"author_id": "UltimakerPackages", "author_id": "UltimakerPackages",
@ -1576,7 +1576,7 @@
"display_name": "Ultimaker CPE+", "display_name": "Ultimaker CPE+",
"description": "Example package for material and quality profiles for Ultimaker materials.", "description": "Example package for material and quality profiles for Ultimaker materials.",
"package_version": "1.2.2", "package_version": "1.2.2",
"sdk_version": "7.2.0", "sdk_version": "7.3.0",
"website": "https://ultimaker.com/products/materials/cpe", "website": "https://ultimaker.com/products/materials/cpe",
"author": { "author": {
"author_id": "UltimakerPackages", "author_id": "UltimakerPackages",
@ -1595,7 +1595,7 @@
"display_name": "Ultimaker Nylon", "display_name": "Ultimaker Nylon",
"description": "Example package for material and quality profiles for Ultimaker materials.", "description": "Example package for material and quality profiles for Ultimaker materials.",
"package_version": "1.2.2", "package_version": "1.2.2",
"sdk_version": "7.2.0", "sdk_version": "7.3.0",
"website": "https://ultimaker.com/products/materials/abs", "website": "https://ultimaker.com/products/materials/abs",
"author": { "author": {
"author_id": "UltimakerPackages", "author_id": "UltimakerPackages",
@ -1614,7 +1614,7 @@
"display_name": "Ultimaker PC", "display_name": "Ultimaker PC",
"description": "Example package for material and quality profiles for Ultimaker materials.", "description": "Example package for material and quality profiles for Ultimaker materials.",
"package_version": "1.2.2", "package_version": "1.2.2",
"sdk_version": "7.2.0", "sdk_version": "7.3.0",
"website": "https://ultimaker.com/products/materials/pc", "website": "https://ultimaker.com/products/materials/pc",
"author": { "author": {
"author_id": "UltimakerPackages", "author_id": "UltimakerPackages",
@ -1633,7 +1633,7 @@
"display_name": "Ultimaker PLA", "display_name": "Ultimaker PLA",
"description": "Example package for material and quality profiles for Ultimaker materials.", "description": "Example package for material and quality profiles for Ultimaker materials.",
"package_version": "1.2.2", "package_version": "1.2.2",
"sdk_version": "7.2.0", "sdk_version": "7.3.0",
"website": "https://ultimaker.com/products/materials/abs", "website": "https://ultimaker.com/products/materials/abs",
"author": { "author": {
"author_id": "UltimakerPackages", "author_id": "UltimakerPackages",
@ -1652,7 +1652,7 @@
"display_name": "Ultimaker PP", "display_name": "Ultimaker PP",
"description": "Example package for material and quality profiles for Ultimaker materials.", "description": "Example package for material and quality profiles for Ultimaker materials.",
"package_version": "1.2.2", "package_version": "1.2.2",
"sdk_version": "7.2.0", "sdk_version": "7.3.0",
"website": "https://ultimaker.com/products/materials/pp", "website": "https://ultimaker.com/products/materials/pp",
"author": { "author": {
"author_id": "UltimakerPackages", "author_id": "UltimakerPackages",
@ -1671,7 +1671,7 @@
"display_name": "Ultimaker PVA", "display_name": "Ultimaker PVA",
"description": "Example package for material and quality profiles for Ultimaker materials.", "description": "Example package for material and quality profiles for Ultimaker materials.",
"package_version": "1.2.1", "package_version": "1.2.1",
"sdk_version": "7.2.0", "sdk_version": "7.3.0",
"website": "https://ultimaker.com/products/materials/abs", "website": "https://ultimaker.com/products/materials/abs",
"author": { "author": {
"author_id": "UltimakerPackages", "author_id": "UltimakerPackages",
@ -1690,7 +1690,7 @@
"display_name": "Ultimaker TPU 95A", "display_name": "Ultimaker TPU 95A",
"description": "Example package for material and quality profiles for Ultimaker materials.", "description": "Example package for material and quality profiles for Ultimaker materials.",
"package_version": "1.2.2", "package_version": "1.2.2",
"sdk_version": "7.2.0", "sdk_version": "7.3.0",
"website": "https://ultimaker.com/products/materials/tpu-95a", "website": "https://ultimaker.com/products/materials/tpu-95a",
"author": { "author": {
"author_id": "UltimakerPackages", "author_id": "UltimakerPackages",
@ -1709,7 +1709,7 @@
"display_name": "Ultimaker Tough PLA", "display_name": "Ultimaker Tough PLA",
"description": "Example package for material and quality profiles for Ultimaker materials.", "description": "Example package for material and quality profiles for Ultimaker materials.",
"package_version": "1.0.3", "package_version": "1.0.3",
"sdk_version": "7.2.0", "sdk_version": "7.3.0",
"website": "https://ultimaker.com/products/materials/tough-pla", "website": "https://ultimaker.com/products/materials/tough-pla",
"author": { "author": {
"author_id": "UltimakerPackages", "author_id": "UltimakerPackages",
@ -1728,7 +1728,7 @@
"display_name": "Vertex Delta ABS", "display_name": "Vertex Delta ABS",
"description": "ABS material and quality files for the Delta Vertex K8800.", "description": "ABS material and quality files for the Delta Vertex K8800.",
"package_version": "1.0.1", "package_version": "1.0.1",
"sdk_version": "7.2.0", "sdk_version": "7.3.0",
"website": "https://vertex3dprinter.eu", "website": "https://vertex3dprinter.eu",
"author": { "author": {
"author_id": "Velleman", "author_id": "Velleman",
@ -1745,7 +1745,7 @@
"display_name": "Vertex Delta PET", "display_name": "Vertex Delta PET",
"description": "ABS material and quality files for the Delta Vertex K8800.", "description": "ABS material and quality files for the Delta Vertex K8800.",
"package_version": "1.0.1", "package_version": "1.0.1",
"sdk_version": "7.2.0", "sdk_version": "7.3.0",
"website": "https://vertex3dprinter.eu", "website": "https://vertex3dprinter.eu",
"author": { "author": {
"author_id": "Velleman", "author_id": "Velleman",
@ -1762,7 +1762,7 @@
"display_name": "Vertex Delta PLA", "display_name": "Vertex Delta PLA",
"description": "ABS material and quality files for the Delta Vertex K8800.", "description": "ABS material and quality files for the Delta Vertex K8800.",
"package_version": "1.0.1", "package_version": "1.0.1",
"sdk_version": "7.2.0", "sdk_version": "7.3.0",
"website": "https://vertex3dprinter.eu", "website": "https://vertex3dprinter.eu",
"author": { "author": {
"author_id": "Velleman", "author_id": "Velleman",
@ -1779,7 +1779,7 @@
"display_name": "Vertex Delta TPU", "display_name": "Vertex Delta TPU",
"description": "ABS material and quality files for the Delta Vertex K8800.", "description": "ABS material and quality files for the Delta Vertex K8800.",
"package_version": "1.0.1", "package_version": "1.0.1",
"sdk_version": "7.2.0", "sdk_version": "7.3.0",
"website": "https://vertex3dprinter.eu", "website": "https://vertex3dprinter.eu",
"author": { "author": {
"author_id": "Velleman", "author_id": "Velleman",

View File

@ -0,0 +1,79 @@
{
"name": "Cocoon Create",
"version": 2,
"inherits": "fdmprinter",
"metadata": {
"visible": true,
"author": "Thushan Fernando",
"manufacturer": "Cocoon Create",
"file_formats": "text/x-gcode",
"preferred_quality_type": "fine",
"has_materials": true,
"platform": "wanhao_200_200_platform.obj",
"platform_texture": "Cocoon-backplate.png",
"machine_extruder_trains": {
"0": "cocoon_create_extruder_0"
},
"platform_offset": [
0,
-28,
0
]
},
"overrides": {
"machine_name": {
"default_value": "Cocoon Create"
},
"machine_width": {
"default_value": 200
},
"machine_height": {
"default_value": 180
},
"machine_depth": {
"default_value": 200
},
"machine_heated_bed": {
"default_value": true
},
"machine_gcode_flavor": {
"default_value": "RepRap (Marlin/Sprinter)"
},
"machine_start_gcode": {
"default_value": "G21 ;metric values\n G90 ;absolute positioning\n M82 ;set extruder to absolute mode\n M107 ;start with the fan off\n G28 X0 Y0 ;move X/Y to min endstops\n G28 Z0 ;move Z to min endstops\n G1 Z15.0 F{speed_travel} ;move the platform down 15mm\n G92 E0 ;zero the extruded length\n G1 F200 E3 ;extrude 3mm of feed stock\n G92 E0 ;zero the extruded length again\n G1 F{speed_travel} \n ;Put printing message on LCD screen\n M117 Printing..."
},
"machine_end_gcode": {
"default_value": "M104 S0 ;extruder heater off \n G91 ;relative positioning\n G1 E-1 F300 ;retract the filament a bit before lifting the nozzle, to release some of the pressure\n G1 Z+0.5 E-5 X-20 Y-20 F{speed_travel} ;move Z up a bit and retract filament even more\n G28 X0 Y0 ;move X/Y to min endstops, so the head is out of the way\n M84 ;steppers off\n G90 ;absolute positioning"
},
"material_diameter": {
"default_value": 1.75
},
"layer_height": {
"default_value": 0.10
},
"layer_height_0": {
"default_value": 0.2
},
"wall_thickness": {
"value": "0.8"
},
"top_bottom_thickness": {
"default_value": 0.6
},
"speed_print": {
"default_value": 50
},
"support_enable": {
"default_value": true
},
"retraction_enable": {
"default_value": true
},
"retraction_amount": {
"default_value": 4.5
},
"retraction_speed": {
"default_value": 25
}
}
}

View File

@ -0,0 +1,79 @@
{
"name": "Cocoon Create Touch",
"version": 2,
"inherits": "fdmprinter",
"metadata": {
"visible": true,
"author": "Thushan Fernando",
"manufacturer": "Cocoon Create",
"file_formats": "text/x-gcode",
"preferred_quality_type": "fine",
"has_materials": true,
"platform": "wanhao_200_200_platform.obj",
"platform_texture": "Cocoon-backplate.png",
"machine_extruder_trains": {
"0": "cocoon_create_touch_extruder_0"
},
"platform_offset": [
0,
-28,
0
]
},
"overrides": {
"machine_name": {
"default_value": "Cocoon Create Touch"
},
"machine_width": {
"default_value": 200
},
"machine_height": {
"default_value": 180
},
"machine_depth": {
"default_value": 200
},
"machine_heated_bed": {
"default_value": true
},
"machine_gcode_flavor": {
"default_value": "RepRap (Marlin/Sprinter)"
},
"machine_start_gcode": {
"default_value": "G21 ;metric values\n G90 ;absolute positioning\n M82 ;set extruder to absolute mode\n M107 ;start with the fan off\n G28 X0 Y0 ;move X/Y to min endstops\n G28 Z0 ;move Z to min endstops\n G1 Z15.0 F{speed_travel} ;move the platform down 15mm\n G92 E0 ;zero the extruded length\n G1 F200 E3 ;extrude 3mm of feed stock\n G92 E0 ;zero the extruded length again\n G1 F{speed_travel} \n ;Put printing message on LCD screen\n M117 Printing..."
},
"machine_end_gcode": {
"default_value": "M104 S0 ;extruder heater off \n G91 ;relative positioning\n G1 E-1 F300 ;retract the filament a bit before lifting the nozzle, to release some of the pressure\n G1 Z+0.5 E-5 X-20 Y-20 F{speed_travel} ;move Z up a bit and retract filament even more\n G28 X0 Y0 ;move X/Y to min endstops, so the head is out of the way\n M84 ;steppers off\n G90 ;absolute positioning"
},
"material_diameter": {
"default_value": 1.75
},
"layer_height": {
"default_value": 0.10
},
"layer_height_0": {
"default_value": 0.2
},
"wall_thickness": {
"value": "0.8"
},
"top_bottom_thickness": {
"default_value": 0.6
},
"speed_print": {
"default_value": 50
},
"support_enable": {
"default_value": true
},
"retraction_enable": {
"default_value": true
},
"retraction_amount": {
"default_value": 4.5
},
"retraction_speed": {
"default_value": 25
}
}
}

View File

@ -6152,7 +6152,7 @@
"infill_mesh_order": "infill_mesh_order":
{ {
"label": "Mesh Processing Rank", "label": "Mesh Processing Rank",
"description": "Determines the priority of this mesh when considering overlapping volumes. Areas where multiple meshes reside will be won by the lower rank mesh. An infill mesh with a higher order will modify the infill of infill meshes with lower order and normal meshes.", "description": "Determines the priority of this mesh when considering multiple overlapping infill meshes. Areas where multiple infill meshes overlap will take on the settings of the mesh with the lowest rank. An infill mesh with a higher order will modify the infill of infill meshes with lower order and normal meshes.",
"default_value": 0, "default_value": 0,
"value": "1 if infill_mesh else 0", "value": "1 if infill_mesh else 0",
"minimum_value_warning": "1", "minimum_value_warning": "1",

View File

@ -0,0 +1,15 @@
{
"version": 2,
"name": "Extruder 1",
"inherits": "fdmextruder",
"metadata": {
"machine": "cocoon_create",
"position": "0"
},
"overrides": {
"extruder_nr": { "default_value": 0 },
"machine_nozzle_size": { "default_value": 0.4 },
"material_diameter": { "default_value": 1.75 }
}
}

View File

@ -0,0 +1,15 @@
{
"version": 2,
"name": "Extruder 1",
"inherits": "fdmextruder",
"metadata": {
"machine": "cocoon_create_touch",
"position": "0"
},
"overrides": {
"extruder_nr": { "default_value": 0 },
"machine_nozzle_size": { "default_value": 0.4 },
"material_diameter": { "default_value": 1.75 }
}
}

View File

@ -1488,12 +1488,12 @@ msgstr "다림질 라인 사이의 거리."
#: fdmprinter.def.json #: fdmprinter.def.json
msgctxt "ironing_flow label" msgctxt "ironing_flow label"
msgid "Ironing Flow" msgid "Ironing Flow"
msgstr "다림질 과정" msgstr "다림질 압출량"
#: fdmprinter.def.json #: fdmprinter.def.json
msgctxt "ironing_flow description" msgctxt "ironing_flow description"
msgid "The amount of material, relative to a normal skin line, to extrude during ironing. Keeping the nozzle filled helps filling some of the crevices of the top surface, but too much results in overextrusion and blips on the side of the surface." msgid "The amount of material, relative to a normal skin line, to extrude during ironing. Keeping the nozzle filled helps filling some of the crevices of the top surface, but too much results in overextrusion and blips on the side of the surface."
msgstr "다림질하는 동안 기본 스킨 라인을 기준으로 한 재료의 양. 노즐을 가득 채우면 윗면의 틈새가 채워서포트만 표면의 과도한 압출과 틈이 너무 많이 생깁니다." msgstr "다림질하는 동안 기본 스킨 라인을 기준으로 한 재료의 압출량. 노즐을 가득 채우면 윗면의 틈새를 채울 수 있지만 표면에 과도한 압출과 필라멘트 덩어리가 생길 수 있습니다."
#: fdmprinter.def.json #: fdmprinter.def.json
msgctxt "ironing_inset label" msgctxt "ironing_inset label"

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

View File

@ -1,4 +1,4 @@
// Copyright (c) 2019 Ultimaker B.V. // Copyright (c) 2020 Ultimaker B.V.
// Cura is released under the terms of the LGPLv3 or higher. // Cura is released under the terms of the LGPLv3 or higher.
import QtQuick 2.7 import QtQuick 2.7
@ -11,7 +11,7 @@ UM.PointingRectangle
id: base id: base
property real sourceWidth: 0 property real sourceWidth: 0
width: UM.Theme.getSize("tooltip").width width: UM.Theme.getSize("tooltip").width
height: label.height + UM.Theme.getSize("tooltip_margins").height * 2 height: textScroll.height + UM.Theme.getSize("tooltip_margins").height * 2
color: UM.Theme.getColor("tooltip") color: UM.Theme.getColor("tooltip")
arrowSize: UM.Theme.getSize("default_arrow").width arrowSize: UM.Theme.getSize("default_arrow").width
@ -59,22 +59,48 @@ UM.PointingRectangle
base.opacity = 0; base.opacity = 0;
} }
Label MouseArea
{ {
id: label; enabled: parent.opacity > 0
anchors visible: enabled
anchors.fill: parent
acceptedButtons: Qt.NoButton
hoverEnabled: true
onHoveredChanged:
{ {
top: parent.top; if(containsMouse && base.opacity > 0)
topMargin: UM.Theme.getSize("tooltip_margins").height; {
left: parent.left; base.show(Qt.point(target.x - 1, target.y - UM.Theme.getSize("tooltip_arrow_margins").height / 2)); //Same arrow position as before.
leftMargin: UM.Theme.getSize("tooltip_margins").width; }
right: parent.right; else
rightMargin: UM.Theme.getSize("tooltip_margins").width; {
base.hide();
}
}
ScrollView
{
id: textScroll
width: parent.width
height: Math.min(label.height, base.parent.height)
ScrollBar.horizontal: ScrollBar {
active: false //Only allow vertical scrolling. We should grow vertically only, but due to how the label is positioned it allocates space in the ScrollView horizontally.
}
Label
{
id: label
x: UM.Theme.getSize("tooltip_margins").width
y: UM.Theme.getSize("tooltip_margins").height
width: base.width - UM.Theme.getSize("tooltip_margins").width * 2
wrapMode: Text.Wrap;
textFormat: Text.RichText
font: UM.Theme.getFont("default");
color: UM.Theme.getColor("tooltip_text");
renderType: Text.NativeRendering
}
} }
wrapMode: Text.Wrap;
textFormat: Text.RichText
font: UM.Theme.getFont("default");
color: UM.Theme.getColor("tooltip_text");
renderType: Text.NativeRendering
} }
} }

View File

@ -29,6 +29,7 @@ fragment =
uniform mediump vec4 u_diffuseColor1; uniform mediump vec4 u_diffuseColor1;
uniform mediump vec4 u_diffuseColor2; uniform mediump vec4 u_diffuseColor2;
uniform mediump vec4 u_specularColor; uniform mediump vec4 u_specularColor;
uniform mediump float u_opacity;
uniform highp vec3 u_lightPosition; uniform highp vec3 u_lightPosition;
uniform mediump float u_shininess; uniform mediump float u_shininess;
uniform highp vec3 u_viewPosition; uniform highp vec3 u_viewPosition;
@ -65,7 +66,7 @@ fragment =
finalColor += pow(NdotR, u_shininess) * u_specularColor; finalColor += pow(NdotR, u_shininess) * u_specularColor;
gl_FragColor = finalColor; gl_FragColor = finalColor;
gl_FragColor.a = 1.0; gl_FragColor.a = u_opacity;
} }
vertex41core = vertex41core =
@ -100,6 +101,7 @@ fragment41core =
uniform mediump vec4 u_diffuseColor1; uniform mediump vec4 u_diffuseColor1;
uniform mediump vec4 u_diffuseColor2; uniform mediump vec4 u_diffuseColor2;
uniform mediump vec4 u_specularColor; uniform mediump vec4 u_specularColor;
uniform mediump float u_opacity;
uniform highp vec3 u_lightPosition; uniform highp vec3 u_lightPosition;
uniform mediump float u_shininess; uniform mediump float u_shininess;
uniform highp vec3 u_viewPosition; uniform highp vec3 u_viewPosition;
@ -138,7 +140,7 @@ fragment41core =
finalColor += pow(NdotR, u_shininess) * u_specularColor; finalColor += pow(NdotR, u_shininess) * u_specularColor;
frag_color = finalColor; frag_color = finalColor;
frag_color.a = 1.0; frag_color.a = u_opacity;
} }
[defaults] [defaults]
@ -146,6 +148,7 @@ u_ambientColor = [0.3, 0.3, 0.3, 1.0]
u_diffuseColor1 = [1.0, 0.5, 0.5, 1.0] u_diffuseColor1 = [1.0, 0.5, 0.5, 1.0]
u_diffuseColor2 = [0.5, 0.5, 0.5, 1.0] u_diffuseColor2 = [0.5, 0.5, 0.5, 1.0]
u_specularColor = [0.4, 0.4, 0.4, 1.0] u_specularColor = [0.4, 0.4, 0.4, 1.0]
u_opacity = 1.0
u_shininess = 20.0 u_shininess = 20.0
u_width = 5.0 u_width = 5.0
u_vertical_stripes = 0 u_vertical_stripes = 0