diff --git a/.gitignore b/.gitignore index 0a7523ff37..fd01d5ce76 100644 --- a/.gitignore +++ b/.gitignore @@ -26,3 +26,10 @@ LC_MESSAGES # Debian packaging debian* + +#Externally located plug-ins. +plugins/Doodle3D-cura-plugin +plugins/GodMode +plugins/PostProcessingPlugin +plugins/UM3NetworkPrinting +plugins/X3GWriter \ No newline at end of file diff --git a/CMakeLists.txt b/CMakeLists.txt index 265e471dd2..c591ffa625 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -43,6 +43,8 @@ if(NOT APPLE AND NOT WIN32) DESTINATION lib/python${PYTHON_VERSION_MAJOR}/dist-packages/cura) install(FILES ${CMAKE_BINARY_DIR}/cura.desktop DESTINATION ${CMAKE_INSTALL_DATADIR}/applications) + install(FILES cura.appdata.xml + DESTINATION ${CMAKE_INSTALL_DATADIR}/appdata) install(FILES cura.sharedmimeinfo DESTINATION ${CMAKE_INSTALL_DATADIR}/mime/packages/ RENAME cura.xml ) diff --git a/cura.appdata.xml b/cura.appdata.xml new file mode 100644 index 0000000000..5c67814fae --- /dev/null +++ b/cura.appdata.xml @@ -0,0 +1,31 @@ + + + + cura.desktop + CC0-1.0 + AGPL-3.0 and CC-BY-SA-4.0 + Cura + The world's most advanced 3d printer software + +

+ Cura creates a seamless integration between hardware, software and + materials for the best 3D printing experience around. + Cura supports the 3MF, OBJ and STL file formats and is available on + Windows, Mac and Linux. +

+ +
+ + http://software.ultimaker.com/Cura.png + + https://ultimaker.com/en/products/cura-software + Cura +
diff --git a/cura.desktop.in b/cura.desktop.in index 0ac25c9521..ceb5c99f08 100644 --- a/cura.desktop.in +++ b/cura.desktop.in @@ -5,6 +5,7 @@ Name[de]=Cura GenericName=3D Printing Software GenericName[de]=3D-Druck-Software Comment=Cura converts 3D models into paths for a 3D printer. It prepares your print for maximum accuracy, minimum printing time and good reliability with many extra features that make your print come out great. +Comment[de]=Cura wandelt 3D-Modelle in Pfade für einen 3D-Drucker um. Es bereitet Ihren Druck für maximale Genauigkeit, minimale Druckzeit und guter Zuverlässigkeit mit vielen zusätzlichen Funktionen vor, damit Ihr Druck großartig wird. Exec=@CMAKE_INSTALL_FULL_BINDIR@/cura %F TryExec=@CMAKE_INSTALL_FULL_BINDIR@/cura Icon=@CMAKE_INSTALL_FULL_DATADIR@/cura/resources/images/cura-icon.png diff --git a/cura/BuildVolume.py b/cura/BuildVolume.py index ce9967a5a2..c1a62c872b 100644 --- a/cura/BuildVolume.py +++ b/cura/BuildVolume.py @@ -33,6 +33,9 @@ PRIME_CLEARANCE = 1.5 ## Build volume is a special kind of node that is responsible for rendering the printable area & disallowed areas. class BuildVolume(SceneNode): VolumeOutlineColor = Color(12, 169, 227, 255) + XAxisColor = Color(255, 0, 0, 255) + YAxisColor = Color(0, 0, 255, 255) + ZAxisColor = Color(0, 255, 0, 255) raftThicknessChanged = Signal() @@ -45,6 +48,10 @@ class BuildVolume(SceneNode): self._shader = None + self._origin_mesh = None + self._origin_line_length = 20 + self._origin_line_width = 0.5 + self._grid_mesh = None self._grid_shader = None @@ -128,6 +135,7 @@ class BuildVolume(SceneNode): self._grid_shader = OpenGL.getInstance().createShaderProgram(Resources.getPath(Resources.Shaders, "grid.shader")) renderer.queueNode(self, mode = RenderBatch.RenderMode.Lines) + renderer.queueNode(self, mesh = self._origin_mesh) renderer.queueNode(self, mesh = self._grid_mesh, shader = self._grid_shader, backface_cull = True) if self._disallowed_area_mesh: renderer.queueNode(self, mesh = self._disallowed_area_mesh, shader = self._shader, transparent = True, backface_cull = True, sort = -9) @@ -170,6 +178,37 @@ class BuildVolume(SceneNode): self.setMeshData(mb.build()) + mb = MeshBuilder() + + # Indication of the machine origin + if self._global_container_stack.getProperty("machine_center_is_zero", "value"): + origin = (Vector(min_w, min_h, min_d) + Vector(max_w, min_h, max_d)) / 2 + else: + origin = Vector(min_w, min_h, max_d) + + mb.addCube( + width = self._origin_line_length, + height = self._origin_line_width, + depth = self._origin_line_width, + center = origin + Vector(self._origin_line_length / 2, 0, 0), + color = self.XAxisColor + ) + mb.addCube( + width = self._origin_line_width, + height = self._origin_line_length, + depth = self._origin_line_width, + center = origin + Vector(0, self._origin_line_length / 2, 0), + color = self.YAxisColor + ) + mb.addCube( + width = self._origin_line_width, + height = self._origin_line_width, + depth = self._origin_line_length, + center = origin - Vector(0, 0, self._origin_line_length / 2), + color = self.ZAxisColor + ) + self._origin_mesh = mb.build() + mb = MeshBuilder() mb.addQuad( Vector(min_w, min_h - 0.2, min_d), @@ -481,6 +520,15 @@ class BuildVolume(SceneNode): def _getSettingFromAdhesionExtruder(self, setting_key, property = "value"): return self._getSettingFromExtruder(setting_key, "adhesion_extruder_nr", property) + ## Private convenience function to get a setting from every extruder. + # + # For single extrusion machines, this gets the setting from the global + # stack. + # + # \return A sequence of setting values, one for each extruder. + def _getSettingFromAllExtruders(self, setting_key, property = "value"): + return ExtruderManager.getInstance().getAllExtruderSettings(setting_key, property) + ## Private convenience function to get a setting from the support infill # extruder. # @@ -553,7 +601,7 @@ class BuildVolume(SceneNode): raise Exception("Unknown bed adhesion type. Did you forget to update the build volume calculations for your new bed adhesion type?") support_expansion = 0 - if self._getSettingFromSupportInfillExtruder("support_offset"): + if self._getSettingFromSupportInfillExtruder("support_offset") and self._global_container_stack.getProperty("support_enable", "value"): support_expansion += self._getSettingFromSupportInfillExtruder("support_offset") farthest_shield_distance = 0 @@ -563,10 +611,12 @@ class BuildVolume(SceneNode): farthest_shield_distance = max(farthest_shield_distance, container_stack.getProperty("ooze_shield_dist", "value")) move_from_wall_radius = 0 # Moves that start from outer wall. - if self._getSettingFromAdhesionExtruder("infill_wipe_dist"): - move_from_wall_radius = max(move_from_wall_radius, self._getSettingFromAdhesionExtruder("infill_wipe_dist")) - if self._getSettingFromAdhesionExtruder("travel_avoid_distance"): - move_from_wall_radius = max(move_from_wall_radius, self._getSettingFromAdhesionExtruder("travel_avoid_distance")) + move_from_wall_radius = max(move_from_wall_radius, max(self._getSettingFromAllExtruders("infill_wipe_dist"))) + avoid_enabled_per_extruder = self._getSettingFromAllExtruders(("travel_avoid_other_parts")) + avoid_distance_per_extruder = self._getSettingFromAllExtruders("travel_avoid_distance") + for index, avoid_other_parts_enabled in enumerate(avoid_enabled_per_extruder): #For each extruder (or just global). + if avoid_other_parts_enabled: + move_from_wall_radius = max(move_from_wall_radius, avoid_distance_per_extruder[index]) #Index of the same extruder. #Now combine our different pieces of data to get the final border size. #Support expansion is added to the bed adhesion, since the bed adhesion goes around support. @@ -582,4 +632,4 @@ class BuildVolume(SceneNode): _prime_settings = ["extruder_prime_pos_x", "extruder_prime_pos_y", "extruder_prime_pos_z"] _tower_settings = ["prime_tower_enable", "prime_tower_size", "prime_tower_position_x", "prime_tower_position_y"] _ooze_shield_settings = ["ooze_shield_enabled", "ooze_shield_dist"] - _distance_settings = ["infill_wipe_dist", "travel_avoid_distance", "support_offset"] + _distance_settings = ["infill_wipe_dist", "travel_avoid_distance", "support_offset", "support_enable", "travel_avoid_other_parts"] diff --git a/cura/CuraApplication.py b/cura/CuraApplication.py index 7c45408488..bd54209e36 100644 --- a/cura/CuraApplication.py +++ b/cura/CuraApplication.py @@ -382,7 +382,7 @@ class CuraApplication(QtApplication): if path: instance.setPath(path) - with SaveFile(path, "wt", -1, "utf-8") as f: + with SaveFile(path, "wt") as f: f.write(data) for stack in ContainerRegistry.getInstance().findContainerStacks(): @@ -409,7 +409,7 @@ class CuraApplication(QtApplication): path = Resources.getStoragePath(self.ResourceTypes.ExtruderStack, file_name) if path: stack.setPath(path) - with SaveFile(path, "wt", -1, "utf-8") as f: + with SaveFile(path, "wt") as f: f.write(data) @@ -549,11 +549,12 @@ class CuraApplication(QtApplication): qmlRegisterType(cura.Settings.ExtrudersModel, "Cura", 1, 0, "ExtrudersModel") qmlRegisterType(cura.Settings.ContainerSettingsModel, "Cura", 1, 0, "ContainerSettingsModel") - qmlRegisterType(cura.Settings.ProfilesModel, "Cura", 1, 0, "ProfilesModel") + qmlRegisterSingletonType(cura.Settings.ProfilesModel, "Cura", 1, 0, "ProfilesModel", cura.Settings.ProfilesModel.createProfilesModel) qmlRegisterType(cura.Settings.QualityAndUserProfilesModel, "Cura", 1, 0, "QualityAndUserProfilesModel") qmlRegisterType(cura.Settings.UserProfilesModel, "Cura", 1, 0, "UserProfilesModel") qmlRegisterType(cura.Settings.MaterialSettingsVisibilityHandler, "Cura", 1, 0, "MaterialSettingsVisibilityHandler") qmlRegisterType(cura.Settings.QualitySettingsModel, "Cura", 1, 0, "QualitySettingsModel") + qmlRegisterType(cura.Settings.MachineNameValidator, "Cura", 1, 0, "MachineNameValidator") qmlRegisterSingletonType(cura.Settings.ContainerManager, "Cura", 1, 0, "ContainerManager", cura.Settings.ContainerManager.createContainerManager) diff --git a/cura/PlatformPhysics.py b/cura/PlatformPhysics.py index 4325703a37..0bd7009ac8 100644 --- a/cura/PlatformPhysics.py +++ b/cura/PlatformPhysics.py @@ -82,7 +82,7 @@ class PlatformPhysics: # Move it downwards if bottom is above platform move_vector = Vector() - if Preferences.getInstance().getValue("physics/automatic_drop_down") and not (node.getParent() and node.getParent().callDecoration("isGroup")): #If an object is grouped, don't move it down + if Preferences.getInstance().getValue("physics/automatic_drop_down") and not (node.getParent() and node.getParent().callDecoration("isGroup")) and node.isEnabled(): #If an object is grouped, don't move it down z_offset = node.callDecoration("getZOffset") if node.getDecorator(ZOffsetDecorator.ZOffsetDecorator) else 0 move_vector = move_vector.set(y=-bbox.bottom + z_offset) diff --git a/cura/PlatformPhysicsOperation.py b/cura/PlatformPhysicsOperation.py index fa58e45d9c..04f7e1616c 100644 --- a/cura/PlatformPhysicsOperation.py +++ b/cura/PlatformPhysicsOperation.py @@ -3,21 +3,22 @@ from UM.Operations.Operation import Operation from UM.Operations.GroupedOperation import GroupedOperation +from UM.Scene.SceneNode import SceneNode ## A specialised operation designed specifically to modify the previous operation. class PlatformPhysicsOperation(Operation): def __init__(self, node, translation): super().__init__() self._node = node - self._old_position = node.getPosition() - self._new_position = node.getPosition() + translation + self._old_transformation = node.getLocalTransformation() + self._translation = translation self._always_merge = True def undo(self): - self._node.setPosition(self._old_position) + self._node.setTransformation(self._old_transformation) def redo(self): - self._node.setPosition(self._new_position) + self._node.translate(self._translation, SceneNode.TransformSpace.World) def mergeWith(self, other): group = GroupedOperation() @@ -28,4 +29,4 @@ class PlatformPhysicsOperation(Operation): return group def __repr__(self): - return "PlatformPhysicsOperation(new_position = {0})".format(self._new_position) + return "PlatformPhysicsOperation(translation = {0})".format(self._translation) diff --git a/cura/PrinterOutputDevice.py b/cura/PrinterOutputDevice.py index 12335e940b..bbf35da6f8 100644 --- a/cura/PrinterOutputDevice.py +++ b/cura/PrinterOutputDevice.py @@ -49,7 +49,7 @@ class PrinterOutputDevice(QObject, OutputDevice): self._printer_state = "" self._printer_type = "unknown" - def requestWrite(self, node, file_name = None, filter_by_machine = False): + def requestWrite(self, nodes, file_name = None, filter_by_machine = False): raise NotImplementedError("requestWrite needs to be implemented") ## Signals diff --git a/cura/QualityManager.py b/cura/QualityManager.py index 09e9d283ed..0b4353442e 100644 --- a/cura/QualityManager.py +++ b/cura/QualityManager.py @@ -27,10 +27,17 @@ class QualityManager: # specified then the currently selected machine definition is used. # \param material_containers (Optional) \type{List[ContainerInstance]} If nothing is specified then # the current set of selected materials is used. - # \return the matching quality containers \type{List[ContainerInstance]} + # \return the matching quality container \type{ContainerInstance} def findQualityByName(self, quality_name, machine_definition=None, material_containers=None): criteria = {"type": "quality", "name": quality_name} - return self._getFilteredContainersForStack(machine_definition, material_containers, **criteria) + result = self._getFilteredContainersForStack(machine_definition, material_containers, **criteria) + + # Fall back to using generic materials and qualities if nothing could be found. + if not result and material_containers and len(material_containers) == 1: + basic_materials = self._getBasicMaterials(material_containers[0]) + result = self._getFilteredContainersForStack(machine_definition, basic_materials, **criteria) + + return result[0] if result else None ## Find a quality changes container by name. # @@ -82,8 +89,9 @@ class QualityManager: # \param material_containers (Optional) \type{List[ContainerInstance]} If nothing is specified then # the current set of selected materials is used. # \return the matching quality container \type{ContainerInstance} - def findQualityByQualityType(self, quality_type, machine_definition=None, material_containers=None): - criteria = {"type": "quality"} + def findQualityByQualityType(self, quality_type, machine_definition=None, material_containers=None, **kwargs): + criteria = kwargs + criteria["type"] = "quality" if quality_type: criteria["quality_type"] = quality_type result = self._getFilteredContainersForStack(machine_definition, material_containers, **criteria) @@ -160,7 +168,8 @@ class QualityManager: # \return \type{List[InstanceContainer]} a list of the basic materials or an empty list if one could not be found. def _getBasicMaterials(self, material_container): base_material = material_container.getMetaDataEntry("material") - if material_container.getDefinition().getMetaDataEntry("has_machine_quality"): + material_container_definition = material_container.getDefinition() + if material_container_definition and material_container_definition.getMetaDataEntry("has_machine_quality"): definition_id = material_container.getDefinition().getMetaDataEntry("quality_definition", material_container.getDefinition().getId()) else: definition_id = "fdmprinter" @@ -218,7 +227,7 @@ class QualityManager: result = [] for container in containers: # If the machine specifies we should filter by material, exclude containers that do not match any active material. - if filter_by_material and container.getMetaDataEntry("material") not in material_ids: + if filter_by_material and container.getMetaDataEntry("material") not in material_ids and not "global_quality" in kwargs: continue result.append(container) return result diff --git a/cura/SetParentOperation.py b/cura/SetParentOperation.py index c40ce54909..e2fb18feff 100644 --- a/cura/SetParentOperation.py +++ b/cura/SetParentOperation.py @@ -32,14 +32,27 @@ class SetParentOperation(Operation.Operation): # \param new_parent The new parent. Note: this argument can be None, which would hide the node from the scene. def _set_parent(self, new_parent): if new_parent: - self._node.setPosition(self._node.getWorldPosition() - new_parent.getWorldPosition()) current_parent = self._node.getParent() if current_parent: - self._node.scale(current_parent.getScale() / new_parent.getScale()) - self._node.rotate(current_parent.getOrientation()) - else: - self._node.scale(Vector(1, 1, 1) / new_parent.getScale()) - self._node.rotate(new_parent.getOrientation().getInverse()) + # Special casing for groups that have been removed. + # In that case we want to put them back where they belong before checking the depth difference. + # If we don't, we always get 0. + old_parent = new_parent.callDecoration("getOldParent") + if old_parent: + new_parent.callDecoration("getNode").setParent(old_parent) + + # Based on the depth difference, we need to do something different. + depth_difference = current_parent.getDepth() - new_parent.getDepth() + child_transformation = self._node.getLocalTransformation() + if depth_difference > 0: + parent_transformation = current_parent.getLocalTransformation() + # A node in the chain was removed, so we need to squash the parent info into all the nodes, so positions remain the same. + self._node.setTransformation(parent_transformation.multiply(child_transformation)) + else: + # A node is inserted into the chain, so use the inverse of the parent to set the transformation of it's children. + parent_transformation = new_parent.getLocalTransformation() + result = parent_transformation.getInverse().multiply(child_transformation, copy = True) + self._node.setTransformation(result) self._node.setParent(new_parent) diff --git a/cura/Settings/ContainerManager.py b/cura/Settings/ContainerManager.py index 7f2555af03..a51f9823cc 100644 --- a/cura/Settings/ContainerManager.py +++ b/cura/Settings/ContainerManager.py @@ -611,13 +611,12 @@ class ContainerManager(QObject): if base_name is None: base_name = quality_name - # Try to find a Quality with the name. - containers = QualityManager.getInstance().findQualityByName(quality_name, machine_definition, material_instances) - if containers: - container = containers[0] + container = QualityManager.getInstance().findQualityByName(quality_name, machine_definition, material_instances) + if container: + UM.Logger.log("d", "We found a quality to duplicate.") return self._duplicateQualityForMachineType(container, base_name, machine_definition) - + UM.Logger.log("d", "We found a quality_changes to duplicate.") # Assume it is a quality changes. return self._duplicateQualityChangesForMachineType(quality_name, base_name, machine_definition) @@ -650,7 +649,10 @@ class ContainerManager(QObject): new_change_instances = [] for container in QualityManager.getInstance().findQualityChangesByName(quality_changes_name, machine_definition): - new_unique_id = self._createUniqueId(container.getId(), base_name) + base_id = container.getMetaDataEntry("extruder") + if not base_id: + base_id = container.getDefinition().getId() + new_unique_id = self._createUniqueId(base_id, base_name) new_container = container.duplicate(new_unique_id, base_name) new_change_instances.append(new_container) self._container_registry.addContainer(new_container) diff --git a/cura/Settings/CuraContainerRegistry.py b/cura/Settings/CuraContainerRegistry.py index 86fc5335be..98c37da617 100644 --- a/cura/Settings/CuraContainerRegistry.py +++ b/cura/Settings/CuraContainerRegistry.py @@ -165,20 +165,19 @@ class CuraContainerRegistry(ContainerRegistry): profile_or_list = profile_reader.read(file_name) # Try to open the file with the profile reader. except Exception as e: # Note that this will fail quickly. That is, if any profile reader throws an exception, it will stop reading. It will only continue reading if the reader returned None. - Logger.log("e", "Failed to import profile from %s: %s while using profile reader", file_name, str(e), profile_reader.getPluginId()) + Logger.log("e", "Failed to import profile from %s: %s while using profile reader. Got exception %s", file_name,profile_reader.getPluginId(), str(e)) return { "status": "error", "message": catalog.i18nc("@info:status", "Failed to import profile from {0}: {1}", file_name, str(e))} if profile_or_list: # Success! name_seed = os.path.splitext(os.path.basename(file_name))[0] + new_name = self.uniqueName(name_seed) if type(profile_or_list) is not list: profile = profile_or_list - self._configureProfile(profile, name_seed) + self._configureProfile(profile, name_seed, new_name) return { "status": "ok", "message": catalog.i18nc("@info:status", "Successfully imported profile {0}", profile.getName()) } else: profile_index = -1 global_profile = None - new_name = self.uniqueName(name_seed) - for profile in profile_or_list: if profile_index >= 0: if len(machine_extruders) > profile_index: diff --git a/cura/Settings/ExtruderManager.py b/cura/Settings/ExtruderManager.py index d0da064f92..d3005a78fe 100644 --- a/cura/Settings/ExtruderManager.py +++ b/cura/Settings/ExtruderManager.py @@ -50,8 +50,11 @@ class ExtruderManager(QObject): @pyqtProperty(int, notify = extrudersChanged) def extruderCount(self): if not UM.Application.getInstance().getGlobalContainerStack(): - return 0 # No active machine, so no extruders. - return len(self._extruder_trains[UM.Application.getInstance().getGlobalContainerStack().getId()]) + return 0 # No active machine, so no extruders. + try: + return len(self._extruder_trains[UM.Application.getInstance().getGlobalContainerStack().getId()]) + except KeyError: + return 0 @pyqtProperty("QVariantMap", notify=extrudersChanged) def extruderIds(self): @@ -265,18 +268,26 @@ class ExtruderManager(QObject): container_registry.addContainer(container_stack) def getAllExtruderValues(self, setting_key): + return self.getAllExtruderSettings(setting_key, "value") + + ## Gets a property of a setting for all extruders. + # + # \param setting_key \type{str} The setting to get the property of. + # \param property \type{str} The property to get. + # \return \type{List} the list of results + def getAllExtruderSettings(self, setting_key, property): global_container_stack = UM.Application.getInstance().getGlobalContainerStack() - multi_extrusion = global_container_stack.getProperty("machine_extruder_count", "value") > 1 - if not multi_extrusion: - return [global_container_stack.getProperty(setting_key, "value")] + if global_container_stack.getProperty("machine_extruder_count", "value") <= 1: + return [global_container_stack.getProperty(setting_key, property)] result = [] for index in self.extruderIds: extruder_stack_id = self.extruderIds[str(index)] - stack = UM.Settings.ContainerRegistry.getInstance().findContainerStacks(id=extruder_stack_id)[0] - result.append(stack.getProperty(setting_key, "value")) + stack = UM.Settings.ContainerRegistry.getInstance().findContainerStacks(id = extruder_stack_id)[0] + result.append(stack.getProperty(setting_key, property)) return result + ## Removes the container stack and user profile for the extruders for a specific machine. # # \param machine_id The machine to remove the extruders for. diff --git a/cura/Settings/MachineManager.py b/cura/Settings/MachineManager.py index 326a011562..fce82212cd 100644 --- a/cura/Settings/MachineManager.py +++ b/cura/Settings/MachineManager.py @@ -34,7 +34,7 @@ class MachineManager(QObject): self.globalContainerChanged.connect(self.activeVariantChanged) self.globalContainerChanged.connect(self.activeQualityChanged) - self._active_stack_valid = None + self._stacks_have_errors = None self._onGlobalContainerChanged() ExtruderManager.getInstance().activeExtruderChanged.connect(self._onActiveExtruderStackChanged) @@ -74,7 +74,7 @@ class MachineManager(QObject): self._auto_hotends_changed = {} self._material_incompatible_message = Message(catalog.i18nc("@info:status", - "The selected material is imcompatible with the selected machine or configuration.")) + "The selected material is incompatible with the selected machine or configuration.")) globalContainerChanged = pyqtSignal() # Emitted whenever the global stack is changed (ie: when changing between printers, changing a global profile, but not when changing a value) activeMaterialChanged = pyqtSignal() @@ -85,6 +85,7 @@ class MachineManager(QObject): globalValueChanged = pyqtSignal() # Emitted whenever a value inside global container is changed. activeStackValueChanged = pyqtSignal() # Emitted whenever a value inside the active stack is changed. activeStackValidationChanged = pyqtSignal() # Emitted whenever a validation inside active container is changed + stacksValidationChanged = pyqtSignal() # Emitted whenever a validation is changed blurSettings = pyqtSignal() # Emitted to force fields in the advanced sidebar to un-focus, so they update properly @@ -225,15 +226,36 @@ class MachineManager(QObject): self._global_container_stack.nameChanged.connect(self._onMachineNameChanged) self._global_container_stack.containersChanged.connect(self._onInstanceContainersChanged) self._global_container_stack.propertyChanged.connect(self._onPropertyChanged) - material = self._global_container_stack.findContainer({"type": "material"}) - material.nameChanged.connect(self._onMaterialNameChanged) - quality = self._global_container_stack.findContainer({"type": "quality"}) - quality.nameChanged.connect(self._onQualityNameChanged) + if self._global_container_stack.getProperty("machine_extruder_count", "value") > 1: + # For multi-extrusion machines, we do not want variant or material profiles in the stack, + # because these are extruder specific and may cause wrong values to be used for extruders + # that did not specify a value in the extruder. + global_variant = self._global_container_stack.findContainer(type = "variant") + if global_variant != self._empty_variant_container: + self._global_container_stack.replaceContainer(self._global_container_stack.getContainerIndex(global_variant), self._empty_variant_container) + + global_material = self._global_container_stack.findContainer(type = "material") + if global_material != self._empty_material_container: + self._global_container_stack.replaceContainer(self._global_container_stack.getContainerIndex(global_material), self._empty_material_container) + + else: + material = self._global_container_stack.findContainer({"type": "material"}) + material.nameChanged.connect(self._onMaterialNameChanged) + + quality = self._global_container_stack.findContainer({"type": "quality"}) + quality.nameChanged.connect(self._onQualityNameChanged) + + + ## Update self._stacks_valid according to _checkStacksForErrors and emit if change. + def _updateStacksHaveErrors(self): + old_stacks_have_errors = self._stacks_have_errors + self._stacks_have_errors = self._checkStacksHaveErrors() + if old_stacks_have_errors != self._stacks_have_errors: + self.stacksValidationChanged.emit() def _onActiveExtruderStackChanged(self): self.blurSettings.emit() # Ensure no-one has focus. - old_active_container_stack = self._active_container_stack if self._active_container_stack and self._active_container_stack != self._global_container_stack: @@ -246,10 +268,7 @@ class MachineManager(QObject): else: self._active_container_stack = self._global_container_stack - old_active_stack_valid = self._active_stack_valid - self._active_stack_valid = not self._checkStackForErrors(self._active_container_stack) - if old_active_stack_valid != self._active_stack_valid: - self.activeStackValidationChanged.emit() + self._updateStacksHaveErrors() if old_active_container_stack != self._active_container_stack: # Many methods and properties related to the active quality actually depend @@ -272,18 +291,18 @@ class MachineManager(QObject): self.activeStackValueChanged.emit() if property_name == "validationState": - if self._active_stack_valid: + if not self._stacks_have_errors: + # fast update, we only have to look at the current changed property if self._active_container_stack.getProperty(key, "settable_per_extruder"): changed_validation_state = self._active_container_stack.getProperty(key, property_name) else: changed_validation_state = self._global_container_stack.getProperty(key, property_name) if changed_validation_state in (UM.Settings.ValidatorState.Exception, UM.Settings.ValidatorState.MaximumError, UM.Settings.ValidatorState.MinimumError): - self._active_stack_valid = False - self.activeStackValidationChanged.emit() + self._stacks_have_errors = True + self.stacksValidationChanged.emit() else: - if not self._checkStackForErrors(self._active_container_stack) and not self._checkStackForErrors(self._global_container_stack): - self._active_stack_valid = True - self.activeStackValidationChanged.emit() + # Normal check + self._updateStacksHaveErrors() @pyqtSlot(str) def setActiveMachine(self, stack_id): @@ -337,15 +356,17 @@ class MachineManager(QObject): def _createUniqueName(self, container_type, current_name, new_name, fallback_name): return UM.Settings.ContainerRegistry.getInstance().createUniqueName(container_type, current_name, new_name, fallback_name) - ## Convenience function to check if a stack has errors. - def _checkStackForErrors(self, stack): - if stack is None: - return False + def _checkStacksHaveErrors(self): + if self._global_container_stack is not None and self._global_container_stack.hasErrors(): + return True - for key in stack.getAllKeys(): - validation_state = stack.getProperty(key, "validationState") - if validation_state in (UM.Settings.ValidatorState.Exception, UM.Settings.ValidatorState.MaximumError, UM.Settings.ValidatorState.MinimumError): + if self._global_container_stack is None: + return False + stacks = list(ExtruderManager.getInstance().getMachineExtruders(self._global_container_stack.getId())) + for stack in stacks: + if stack.hasErrors(): return True + return False ## Remove all instances from the top instanceContainer (effectively removing all user-changed settings) @@ -405,12 +426,12 @@ class MachineManager(QObject): for container in send_emits_containers: container.sendPostponedEmits() - ## Check if the global profile does not contain error states - # Note that the _active_stack_valid is cached due to performance issues - # Calling _checkStackForErrors on every change is simply too expensive - @pyqtProperty(bool, notify = activeStackValidationChanged) - def isActiveStackValid(self): - return bool(self._active_stack_valid) + ## Check if none of the stacks contain error states + # Note that the _stacks_have_errors is cached due to performance issues + # Calling _checkStack(s)ForErrors on every change is simply too expensive + @pyqtProperty(bool, notify = stacksValidationChanged) + def stacksHaveErrors(self): + return bool(self._stacks_have_errors) @pyqtProperty(str, notify = activeStackChanged) def activeUserProfileId(self): @@ -566,7 +587,7 @@ class MachineManager(QObject): quality = self._active_container_stack.findContainer(type = "quality") if quality: return Util.parseBool(quality.getMetaDataEntry("supported", True)) - return "" + return False ## Get the Quality ID associated with the currently active extruder # Note that this only returns the "quality", not the "quality_changes" @@ -754,6 +775,8 @@ class MachineManager(QObject): result = [] empty_quality_changes = self._empty_quality_changes_container global_container_stack = self._global_container_stack + if not global_container_stack: + return [] global_machine_definition = quality_manager.getParentMachineDefinition(global_container_stack.getBottom()) extruder_stacks = ExtruderManager.getInstance().getActiveExtruderStacks() @@ -769,8 +792,13 @@ class MachineManager(QObject): if extruder_stacks: # Add an extra entry for the global stack. - result.append({"stack": global_container_stack, "quality": result[0]["quality"], - "quality_changes": empty_quality_changes}) + global_quality = quality_manager.findQualityByQualityType(quality_type, global_machine_definition, [], global_quality = "True") + + if not global_quality: + global_quality = self._empty_quality_container + + result.append({"stack": global_container_stack, "quality": global_quality, "quality_changes": empty_quality_changes}) + return result ## Determine the quality and quality changes settings for the current machine for a quality changes name. @@ -793,7 +821,10 @@ class MachineManager(QObject): # For the global stack, find a quality which matches the quality_type in # the quality changes profile and also satisfies any material constraints. quality_type = global_quality_changes.getMetaDataEntry("quality_type") - global_quality = quality_manager.findQualityByQualityType(quality_type, global_machine_definition, [material]) + if global_container_stack.getProperty("machine_extruder_count", "value") > 1: + global_quality = quality_manager.findQualityByQualityType(quality_type, global_machine_definition, [], global_quality = True) + else: + global_quality = quality_manager.findQualityByQualityType(quality_type, global_machine_definition, [material]) # Find the values for each extruder. extruder_stacks = ExtruderManager.getInstance().getActiveExtruderStacks() @@ -814,9 +845,10 @@ class MachineManager(QObject): result.append({"stack": stack, "quality": quality, "quality_changes": quality_changes}) if extruder_stacks: - # Duplicate the quality from the 1st extruder into the global stack. If anyone - # then looks in the global stack, they should get a reasonable view. - result.append({"stack": global_container_stack, "quality": result[0]["quality"], "quality_changes": global_quality_changes}) + global_quality = quality_manager.findQualityByQualityType(quality_type, global_machine_definition, [material], global_quality = "True") + if not global_quality: + global_quality = self._empty_quality_container + result.append({"stack": global_container_stack, "quality": global_quality, "quality_changes": global_quality_changes}) else: result.append({"stack": global_container_stack, "quality": global_quality, "quality_changes": global_quality_changes}) diff --git a/cura/Settings/MachineNameValidator.py b/cura/Settings/MachineNameValidator.py new file mode 100644 index 0000000000..34b6351144 --- /dev/null +++ b/cura/Settings/MachineNameValidator.py @@ -0,0 +1,66 @@ +# Copyright (c) 2016 Ultimaker B.V. +# Cura is released under the terms of the AGPLv3 or higher. + +from PyQt5.QtCore import pyqtSlot, pyqtProperty, QObject, pyqtSignal, QRegExp +from PyQt5.QtGui import QValidator +import os #For statvfs. +import urllib #To escape machine names for how they're saved to file. + +import UM.Resources +import UM.Settings.ContainerRegistry +import UM.Settings.InstanceContainer + +## Are machine names valid? +# +# Performs checks based on the length of the name. +class MachineNameValidator(QObject): + def __init__(self, parent = None): + super().__init__(parent) + + #Compute the validation regex for printer names. This is limited by the maximum file name length. + try: + filename_max_length = os.statvfs(UM.Resources.getDataStoragePath()).f_namemax + except AttributeError: #Doesn't support statvfs. Probably because it's not a Unix system. + filename_max_length = 255 #Assume it's Windows on NTFS. + machine_name_max_length = filename_max_length - len("_current_settings.") - len(UM.Settings.ContainerRegistry.getMimeTypeForContainer(UM.Settings.InstanceContainer).preferredSuffix) + # Characters that urllib.parse.quote_plus escapes count for 12! So now + # we must devise a regex that allows only 12 normal characters or 1 + # special character, and that up to [machine_name_max_length / 12] times. + maximum_special_characters = int(machine_name_max_length / 12) + unescaped = r"[a-zA-Z0-9_\-\.\/]" + self.machine_name_regex = r"^((" + unescaped + "){0,12}|.){0," + str(maximum_special_characters) + r"}$" + + validationChanged = pyqtSignal() + + ## Check if a specified machine name is allowed. + # + # \param name The machine name to check. + # \param position The current position of the cursor in the text box. + # \return ``QValidator.Invalid`` if it's disallowed, or + # ``QValidator.Acceptable`` if it's allowed. + def validate(self, name, position): + #Check for file name length of the current settings container (which is the longest file we're saving with the name). + try: + filename_max_length = os.statvfs(UM.Resources.getDataStoragePath()).f_namemax + except AttributeError: #Doesn't support statvfs. Probably because it's not a Unix system. + filename_max_length = 255 #Assume it's Windows on NTFS. + escaped_name = urllib.parse.quote_plus(name) + current_settings_filename = escaped_name + "_current_settings." + UM.Settings.ContainerRegistry.getMimeTypeForContainer(UM.Settings.InstanceContainer).preferredSuffix + if len(current_settings_filename) > filename_max_length: + return QValidator.Invalid + + return QValidator.Acceptable #All checks succeeded. + + ## Updates the validation state of a machine name text field. + @pyqtSlot(str) + def updateValidation(self, new_name): + is_valid = self.validate(new_name, 0) + if is_valid == QValidator.Acceptable: + self.validation_regex = "^.*$" #Matches anything. + else: + self.validation_regex = "a^" #Never matches (unless you manage to get "a" before the start of the string... good luck). + self.validationChanged.emit() + + @pyqtProperty("QRegExp", notify=validationChanged) + def machineNameRegex(self): + return QRegExp(self.machine_name_regex) \ No newline at end of file diff --git a/cura/Settings/ProfilesModel.py b/cura/Settings/ProfilesModel.py index 6f17349edd..c03e074053 100644 --- a/cura/Settings/ProfilesModel.py +++ b/cura/Settings/ProfilesModel.py @@ -25,6 +25,21 @@ class ProfilesModel(InstanceContainersModel): Application.getInstance().getMachineManager().activeStackChanged.connect(self._update) Application.getInstance().getMachineManager().activeMaterialChanged.connect(self._update) + # Factory function, used by QML + @staticmethod + def createProfilesModel(engine, js_engine): + return ProfilesModel.getInstance() + + ## Get the singleton instance for this class. + @classmethod + def getInstance(cls): + # Note: Explicit use of class name to prevent issues with inheritance. + if ProfilesModel.__instance is None: + ProfilesModel.__instance = cls() + return ProfilesModel.__instance + + __instance = None + ## Fetch the list of containers to display. # # See UM.Settings.Models.InstanceContainersModel._fetchInstanceContainers(). @@ -56,6 +71,8 @@ class ProfilesModel(InstanceContainersModel): machine_manager = Application.getInstance().getMachineManager() unit = global_container_stack.getBottom().getProperty("layer_height", "unit") + if not unit: + unit = "" for item in super()._recomputeItems(): profile = container_registry.findContainers(id = item["id"]) @@ -80,7 +97,10 @@ class ProfilesModel(InstanceContainersModel): quality = quality_result["quality"] break else: #No global container stack in the results: - quality = quality_results[0]["quality"] #Take any of the extruders. + if quality_results: + quality = quality_results[0]["quality"] #Take any of the extruders. + else: + quality = None if quality and quality.hasProperty("layer_height", "value"): item["layer_height"] = str(quality.getProperty("layer_height", "value")) + unit yield item diff --git a/cura/Settings/SettingInheritanceManager.py b/cura/Settings/SettingInheritanceManager.py index 84002128c7..9a2db55dc7 100644 --- a/cura/Settings/SettingInheritanceManager.py +++ b/cura/Settings/SettingInheritanceManager.py @@ -5,6 +5,7 @@ from PyQt5.QtCore import QObject, pyqtSlot, pyqtProperty, pyqtSignal import UM.Settings from UM.Application import Application import cura.Settings +from UM.Logger import Logger ## The settingInheritance manager is responsible for checking each setting in order to see if one of the "deeper" @@ -38,6 +39,26 @@ class SettingInheritanceManager(QObject): result.append(key) return result + @pyqtSlot(str, str, result = "QStringList") + def getOverridesForExtruder(self, key, extruder_index): + multi_extrusion = self._global_container_stack.getProperty("machine_extruder_count", "value") > 1 + if not multi_extrusion: + return self._settings_with_inheritance_warning + extruder = cura.Settings.ExtruderManager.getInstance().getExtruderStack(extruder_index) + if not extruder: + Logger.log("w", "Unable to find extruder for current machine with index %s", extruder_index) + return [] + + definitions = self._global_container_stack.getBottom().findDefinitions(key=key) + if not definitions: + return + result = [] + for key in definitions[0].getAllKeys(): + if self._settingIsOverwritingInheritance(key, extruder): + result.append(key) + + return result + @pyqtSlot(str) def manualRemoveOverride(self, key): if key in self._settings_with_inheritance_warning: @@ -56,9 +77,11 @@ class SettingInheritanceManager(QObject): if new_active_stack != self._active_container_stack: # Check if changed if self._active_container_stack: # Disconnect signal from old container (if any) self._active_container_stack.propertyChanged.disconnect(self._onPropertyChanged) + self._active_container_stack.containersChanged.disconnect(self._onContainersChanged) self._active_container_stack = new_active_stack self._active_container_stack.propertyChanged.connect(self._onPropertyChanged) + self._active_container_stack.containersChanged.connect(self._onContainersChanged) self._update() # Ensure that the settings_with_inheritance_warning list is populated. def _onPropertyChanged(self, key, property_name): @@ -113,22 +136,23 @@ class SettingInheritanceManager(QObject): return self._settings_with_inheritance_warning ## Check if a setting has an inheritance function that is overwritten - def _settingIsOverwritingInheritance(self, key): + def _settingIsOverwritingInheritance(self, key, stack = None): has_setting_function = False - stack = self._active_container_stack + if not stack: + stack = self._active_container_stack containers = [] ## Check if the setting has a user state. If not, it is never overwritten. - has_user_state = self._active_container_stack.getProperty(key, "state") == UM.Settings.InstanceState.User + has_user_state = stack.getProperty(key, "state") == UM.Settings.InstanceState.User if not has_user_state: return False ## If a setting is not enabled, don't label it as overwritten (It's never visible anyway). - if not self._active_container_stack.getProperty(key, "enabled"): + if not stack.getProperty(key, "enabled"): return False ## Also check if the top container is not a setting function (this happens if the inheritance is restored). - if isinstance(self._active_container_stack.getTop().getProperty(key, "value"), UM.Settings.SettingFunction): + if isinstance(stack.getTop().getProperty(key, "value"), UM.Settings.SettingFunction): return False ## Mash all containers for all the stacks together. @@ -178,8 +202,10 @@ class SettingInheritanceManager(QObject): self._onActiveExtruderChanged() def _onContainersChanged(self, container): - self._onActiveExtruderChanged() + # TODO: Multiple container changes in sequence now cause quite a few recalculations. + # This isn't that big of an issue, but it could be in the future. + self._update() @staticmethod def createSettingInheritanceManager(engine=None, script_engine=None): - return SettingInheritanceManager() \ No newline at end of file + return SettingInheritanceManager() diff --git a/cura/Settings/SettingOverrideDecorator.py b/cura/Settings/SettingOverrideDecorator.py index 8c10542069..a8cfcd8d80 100644 --- a/cura/Settings/SettingOverrideDecorator.py +++ b/cura/Settings/SettingOverrideDecorator.py @@ -61,6 +61,15 @@ class SettingOverrideDecorator(SceneNodeDecorator): def getActiveExtruder(self): return self._extruder_stack + ## Gets the currently active extruders position + # + # \return An extruder's position, or None if no position info is available. + def getActiveExtruderPosition(self): + containers = ContainerRegistry.getInstance().findContainers(id = self.getActiveExtruder()) + if containers: + container_stack = containers[0] + return container_stack.getMetaDataEntry("position", default=None) + def _onSettingChanged(self, instance, property_name): # Reminder: 'property' is a built-in function if property_name == "value": # Only reslice if the value has changed. Application.getInstance().getBackend().forceSlice() diff --git a/cura/Settings/__init__.py b/cura/Settings/__init__.py index a28073fa7f..0298ac886d 100644 --- a/cura/Settings/__init__.py +++ b/cura/Settings/__init__.py @@ -8,6 +8,7 @@ from .CuraContainerRegistry import CuraContainerRegistry from .ExtruderManager import ExtruderManager from .ExtrudersModel import ExtrudersModel from .MachineManager import MachineManager +from .MachineNameValidator import MachineNameValidator from .MaterialSettingsVisibilityHandler import MaterialSettingsVisibilityHandler from .SettingOverrideDecorator import SettingOverrideDecorator from .QualitySettingsModel import QualitySettingsModel diff --git a/docs/Cura_Data_Model.odg b/docs/Cura_Data_Model.odg new file mode 100644 index 0000000000..b4a6dd548b Binary files /dev/null and b/docs/Cura_Data_Model.odg differ diff --git a/plugins/3MFReader/ThreeMFReader.py b/plugins/3MFReader/ThreeMFReader.py index c833e1195a..0eff4fa78c 100644 --- a/plugins/3MFReader/ThreeMFReader.py +++ b/plugins/3MFReader/ThreeMFReader.py @@ -11,9 +11,8 @@ from UM.Scene.GroupDecorator import GroupDecorator import UM.Application from UM.Job import Job -from UM.Math.Quaternion import Quaternion -import math +import os.path import zipfile try: @@ -31,9 +30,12 @@ class ThreeMFReader(MeshReader): "3mf": "http://schemas.microsoft.com/3dmanufacturing/core/2015/02", "cura": "http://software.ultimaker.com/xml/cura/3mf/2015/10" } + self._base_name = "" + self._unit = None def _createNodeFromObject(self, object, name = ""): node = SceneNode() + node.setName(name) mesh_builder = MeshBuilder() vertex_list = [] @@ -42,8 +44,7 @@ class ThreeMFReader(MeshReader): for component in components: id = component.get("objectid") new_object = self._root.find("./3mf:resources/3mf:object[@id='{0}']".format(id), self._namespaces) - - new_node = self._createNodeFromObject(new_object) + new_node = self._createNodeFromObject(new_object, self._base_name + "_" + str(id)) node.addChild(new_node) transform = component.get("transform") if transform is not None: @@ -54,10 +55,6 @@ class ThreeMFReader(MeshReader): vertex_list.append([vertex.get("x"), vertex.get("y"), vertex.get("z")]) Job.yieldThread() - # If this object has no vertices and just one child, just return the child. - if len(vertex_list) == 0 and len(node.getChildren()) == 1: - return node.getChildren()[0] - if len(node.getChildren()) > 0: group_decorator = GroupDecorator() node.addDecorator(group_decorator) @@ -76,20 +73,10 @@ class ThreeMFReader(MeshReader): Job.yieldThread() - # Rotate the model; We use a different coordinate frame. - rotation = Matrix() - rotation.setByRotationAxis(-0.5 * math.pi, Vector(1, 0, 0)) - flip_matrix = Matrix() - - flip_matrix._data[1, 1] = 0 - flip_matrix._data[1, 2] = 1 - flip_matrix._data[2, 1] = 1 - flip_matrix._data[2, 2] = 0 - # TODO: We currently do not check for normals and simply recalculate them. mesh_builder.calculateNormals() mesh_builder.setFileName(name) - mesh_data = mesh_builder.build().getTransformed(flip_matrix) + mesh_data = mesh_builder.build() if len(mesh_data.getVertices()): node.setMeshData(mesh_data) @@ -122,31 +109,71 @@ class ThreeMFReader(MeshReader): temp_mat._data[1, 3] = splitted_transformation[10] temp_mat._data[2, 3] = splitted_transformation[11] - flip_matrix = Matrix() - flip_matrix._data[1, 1] = 0 - flip_matrix._data[1, 2] = 1 - flip_matrix._data[2, 1] = 1 - flip_matrix._data[2, 2] = 0 - temp_mat.multiply(flip_matrix) - return temp_mat def read(self, file_name): result = SceneNode() + group_decorator = GroupDecorator() + result.addDecorator(group_decorator) # The base object of 3mf is a zipped archive. archive = zipfile.ZipFile(file_name, "r") + self._base_name = os.path.basename(file_name) try: self._root = ET.parse(archive.open("3D/3dmodel.model")) + self._unit = self._root.getroot().get("unit") build_items = self._root.findall("./3mf:build/3mf:item", self._namespaces) for build_item in build_items: id = build_item.get("objectid") object = self._root.find("./3mf:resources/3mf:object[@id='{0}']".format(id), self._namespaces) - build_item_node = self._createNodeFromObject(object) + if "type" in object.attrib: + if object.attrib["type"] == "support" or object.attrib["type"] == "other": + # Ignore support objects, as cura does not support these. + # We can't guarantee that they wont be made solid. + # We also ignore "other", as I have no idea what to do with them. + Logger.log("w", "3MF file contained an object of type %s which is not supported by Cura", object.attrib["type"]) + continue + elif object.attrib["type"] == "solidsupport" or object.attrib["type"] == "model": + pass # Load these as normal + else: + # We should technically fail at this point because it's an invalid 3MF, but try to continue anyway. + Logger.log("e", "3MF file contained an object of type %s which is not supported by the 3mf spec", + object.attrib["type"]) + continue + + build_item_node = self._createNodeFromObject(object, self._base_name + "_" + str(id)) transform = build_item.get("transform") if transform is not None: build_item_node.setTransformation(self._createMatrixFromTransformationString(transform)) + global_container_stack = UM.Application.getInstance().getGlobalContainerStack() + + # Create a transformation Matrix to convert from 3mf worldspace into ours. + # First step: flip the y and z axis. + transformation_matrix = Matrix() + transformation_matrix._data[1, 1] = 0 + transformation_matrix._data[1, 2] = 1 + transformation_matrix._data[2, 1] = -1 + transformation_matrix._data[2, 2] = 0 + + # Second step: 3MF defines the left corner of the machine as center, whereas cura uses the center of the + # build volume. + if global_container_stack: + translation_vector = Vector(x = -global_container_stack.getProperty("machine_width", "value") / 2, + y = -global_container_stack.getProperty("machine_depth", "value") / 2, + z = 0) + translation_matrix = Matrix() + translation_matrix.setByTranslation(translation_vector) + transformation_matrix.multiply(translation_matrix) + + # Third step: 3MF also defines a unit, wheras Cura always assumes mm. + scale_matrix = Matrix() + scale_matrix.setByScaleVector(self._getScaleFromUnit(self._unit)) + transformation_matrix.multiply(scale_matrix) + + # Pre multiply the transformation with the loaded transformation, so the data is handled correctly. + build_item_node.setTransformation(build_item_node.getLocalTransformation().preMultiply(transformation_matrix)) + result.addChild(build_item_node) except Exception as e: @@ -157,10 +184,35 @@ class ThreeMFReader(MeshReader): except: return None - global_container_stack = UM.Application.getInstance().getGlobalContainerStack() - if global_container_stack: - translation = Vector(x=-global_container_stack.getProperty("machine_width", "value") / 2, y=0, - z=global_container_stack.getProperty("machine_depth", "value") / 2) - result.translate(translation, SceneNode.TransformSpace.World) + result.setEnabled(False) # The result should not be moved in any way, so disable it. return result + + ## Create a scale vector based on a unit string. + # The core spec defines the following: + # * micron + # * millimeter (default) + # * centimeter + # * inch + # * foot + # * meter + def _getScaleFromUnit(self, unit): + if unit is None: + unit = "millimeter" + if unit == "micron": + scale = 0.001 + elif unit == "millimeter": + scale = 1 + elif unit == "centimeter": + scale = 10 + elif unit == "inch": + scale = 25.4 + elif unit == "foot": + scale = 304.8 + elif unit == "meter": + scale = 1000 + else: + Logger.log("w", "Unrecognised unit %s used. Assuming mm instead", unit) + scale = 1 + + return Vector(scale, scale, scale) \ No newline at end of file diff --git a/plugins/ChangeLogPlugin/ChangeLog.txt b/plugins/ChangeLogPlugin/ChangeLog.txt index 9504ccf04f..496efd1615 100644 --- a/plugins/ChangeLogPlugin/ChangeLog.txt +++ b/plugins/ChangeLogPlugin/ChangeLog.txt @@ -3,25 +3,35 @@ The layer height of each profile is now shown in the profile selection menu. *Bug fixes -Upgrading from version 2.1 on OSX works again. -You can import g-code from related machines as profile. -Fixed inheritance taking from the wrong extruder. -Moved z-hop and extruder selection settings to a better category. +Editing material settings has actual effect on the prints again +Upgrading from version 2.1 on OSX works again +You can import g-code from related machines as profile +Fixed inheritance taking from the wrong extruder +The i-symbol is updated properly +Fixed a freeze that could sometimes occur while printing via Wi-Fi [2.3.0] +*Multi Extrusion Support +Machines with multiple extruders are now supported. Ultimaker 3 printers and Ultimaker Original printers with dual extrusion upgrade kit are currently supported. + +*Network Printing for Ultimaker 3 +Sending a print to an Ultimaker 3 remotely via the network is now possible. Requires Wi-Fi or LAN to connect to the printer. + +*Print Monitoring for Ultimaker 3 +You can monitor your print on an Ultimaker 3 with a live camera feed. Requires Wi-Fi or LAN to connect to the printer. + +*Material and Print Core Synchronization +Connecting to an Ultimaker 3 now gives you the option to synchronize the materials in Cura with what is loaded in the printer. *Speed improvements -The first thing you will notice is the speed. STL loading is now 10 to 20 times faster, layerview is significantly faster and slicing speed is slightly improved. - -*Multi Extrusion Support -Machines with multiple extruders are now supported. If you’ve got the Ultimaker Original with the dual extrusion upgrade kit, we’ve got you covered. - -*Custom Machine Support -It’s now much easier to use Cura with custom machines. You can edit the machine settings when you load a new custom machine. +The first thing you will notice is the speed. STL loading is now 10 to 20 times faster, layer view is significantly faster and slicing speed is slightly improved. *Improved Position Tool Place objects precisely where you want them by manually entering the values for the position. +*Custom Machine Support +It’s now much easier to use Cura with custom machines. You can edit the machine settings when you load a new custom machine. + *Improved Grouping It's now possible to transform objects that are already grouped. Select an individual item in a group or merged object and edit as usual. Just Ctrl + Click and edit away. @@ -30,7 +40,7 @@ Select an individual item in a group or merged object and edit as usual. Just Ct Profile management is improved. You can now easily see and track changes made to your profiles. *Improved Setting Visibility -Make multiple settings visible at once. The Visibility Overview setting indicates why a setting is not shown in the sidebar even if it is enabled. +Make multiple settings visible at the same time with a checkbox. The Visibility Overview setting indicates why a setting is not shown in the sidebar even if it is enabled. *Improved time estimation Time estimations are more accurate. Based on our test time estimations should be within 5% accuracy for Ultimaker printers. @@ -46,10 +56,10 @@ Configurations from older installations of Cura 2.1 are automatically imported i *Slicing features *Infill Types -We've introduced two new infill types: Tetrahedral and Cubic. They change along with the Z-axis for more uniform strength in all directions. There are now 7 infill types to choose from. +Two new infill types are now introduced: Tetrahedral and Cubic. They change along with the Z-axis for more uniform strength in all directions. There are now seven infill types to choose from. *Gradual Infill -Now you can change the density of the infill based on the distance from the top layers. Your objects print faster, use less material, while top surfaces have the same quality. +Gradual infill lets users adjust infill density, based on the distance from the top layers. This offers faster printing and reduced material requirements, whilst maintaining surface quality. *Set Acceleration and Jerk by Feature You can now set Jerk and Acceleration by feature-type (infill, walls, top/bottom, etc), for more precision. @@ -66,7 +76,7 @@ Can’t avoid previously printed parts by horizontal moves? The Z Hop Only Over *Skin and Wall Overlap The Skin Overlap setting allows you to overlap the skin lines with the walls for better adhesion. -*Control Initial Layer Travel Speed +*Adjust Initial Layer Travel Speed Set the travel speed of the initial layer(s) to reduce risk of extruder pulling the print from the bed. *Support Interface @@ -76,39 +86,39 @@ It is now possible to print a support bottom as well as a support roof. Support Deleting grouped objects Duplicating groups Bridging -Drag and drop on the first run on Windows +Drag and drop (first Windows run) Unretraction speeds Bottom layer in Spiralize mode Overlap Compensation -Retractions on Raft -Retractions now occur after each object printed in one-at-a-time mode. -Rafts are no longer printed outside of build area. -Spiralize no longer only spiralizes the first printed segment only. -Line distance is now the actual line distance. -Enabling raft doesn’t influence at which height the model is sliced any more. -Brim is now always printed just once. -Support roofs now only occur just below overhang. +Raft retractions +Retractions now occur after each object printed in one-at-a-time mode +Rafts are no longer printed outside of build area +Spiralize no longer limited to the first printed segment only +Line distance is now the actual line distance +Enabling raft doesn’t influence at which height the model is sliced any more +Brim is now always printed just once +Support roofs now only occur just below overhang *Minor changes -Messages are now displayed 30 seconds instead of 10, making it less likely that certain messages are missed. -You are now notified if you try to save to a locked SD card. -Engine log is now included in the application log. -Undo and Redo now work correctly with multiple operations. -The last used folder is now remembered (instead of defaulting to home folder). -Import X3D files. -Made it possible to add multiple Per Model Settings at once. -Bed Level and Checkup procedures for UMO+ can now be done without re-adding machine. -Combing is applied in more cases and results in better paths. -Infill thickness now supports Grid infill also for even multiples of the layer height. -Support is no longer removed by unprintable thin parts of the model. -Support is now generated on each layer it’s supposed to. -Support doesn't go outside overhang areas any more. -Support doesn't remove brim around the object any more. -Brim is now also generated under the support. -Draft shield and Ooze shield get their own brim or raft. -Settings shared between skirt and brim now also activate when brim is selected. -Compensate overlapping wall parts now also works for inner walls. -You can now adjust the speed at which the bed is lowered each layer. +Message display time increased to 30 seconds +Notification if you try to save to a locked SD card +Engine log now included in the application log +Undo and Redo now function with multiple operations +The last used folder is now remembered rather than defaulting to home folder +Import X3D files +Made it possible to add multiple Per Model Settings at once +Bed Level and Checkup procedures for UMO+ can be performed without re-adding machine +Combing applied in more cases and results in better paths +Infill thickness now supports Grid infill also for even multiples of the layer height +Support is no longer removed by unprintable thin parts of the model +Support generated on each appropriate layer +Support no longer goes outside overhang areas +Support no longer removes brim around the object +Brim is now also generated under the support +Draft and Ooze shield get their own brim or raft +Settings shared between skirt and brim now also activate when brim is selected +Compensate overlapping wall parts now also works for inner walls +Bed lowering speed can be adjusted for each layer [2.1.3] diff --git a/plugins/CuraEngineBackend/CuraEngineBackend.py b/plugins/CuraEngineBackend/CuraEngineBackend.py index c24ea1cf76..f82e210524 100644 --- a/plugins/CuraEngineBackend/CuraEngineBackend.py +++ b/plugins/CuraEngineBackend/CuraEngineBackend.py @@ -230,7 +230,7 @@ class CuraEngineBackend(Backend): if job.getResult() == StartSliceJob.StartJobResult.MaterialIncompatible: if Application.getInstance().getPlatformActivity: self._error_message = Message(catalog.i18nc("@info:status", - "The selected material is imcompatible with the selected machine or configuration.")) + "The selected material is incompatible with the selected machine or configuration.")) self._error_message.show() self.backendStateChange.emit(BackendState.Error) else: diff --git a/plugins/CuraEngineBackend/StartSliceJob.py b/plugins/CuraEngineBackend/StartSliceJob.py index 18c7fb1f5c..650bc9e45d 100644 --- a/plugins/CuraEngineBackend/StartSliceJob.py +++ b/plugins/CuraEngineBackend/StartSliceJob.py @@ -75,7 +75,7 @@ class StartSliceJob(Job): return # Don't slice if there is a setting with an error value. - if not Application.getInstance().getMachineManager().isActiveStackValid: + if Application.getInstance().getMachineManager().stacksHaveErrors: self.setResult(StartJobResult.SettingError) return diff --git a/plugins/GCodeWriter/GCodeWriter.py b/plugins/GCodeWriter/GCodeWriter.py index 9ff1105b9f..d503f547b0 100644 --- a/plugins/GCodeWriter/GCodeWriter.py +++ b/plugins/GCodeWriter/GCodeWriter.py @@ -47,7 +47,17 @@ class GCodeWriter(MeshWriter): def __init__(self): super().__init__() - def write(self, stream, node, mode = MeshWriter.OutputMode.TextMode): + ## Writes the g-code for the entire scene to a stream. + # + # Note that even though the function accepts a collection of nodes, the + # entire scene is always written to the file since it is not possible to + # separate the g-code for just specific nodes. + # + # \param stream The stream to write the g-code to. + # \param nodes This is ignored. + # \param mode Additional information on how to format the g-code in the + # file. This must always be text mode. + def write(self, stream, nodes, mode = MeshWriter.OutputMode.TextMode): if mode != MeshWriter.OutputMode.TextMode: Logger.log("e", "GCode Writer does not support non-text mode.") return False diff --git a/plugins/LegacyProfileReader/LegacyProfileReader.py b/plugins/LegacyProfileReader/LegacyProfileReader.py index 5105bf71da..70a19f02ee 100644 --- a/plugins/LegacyProfileReader/LegacyProfileReader.py +++ b/plugins/LegacyProfileReader/LegacyProfileReader.py @@ -66,8 +66,11 @@ class LegacyProfileReader(ProfileReader): def read(self, file_name): if file_name.split(".")[-1] != "ini": return None + global_container_stack = Application.getInstance().getGlobalContainerStack() + if not global_container_stack: + return None - multi_extrusion = Application.getInstance().getGlobalContainerStack().getProperty("machine_extruder_count", "value") > 1 + multi_extrusion = global_container_stack.getProperty("machine_extruder_count", "value") > 1 if multi_extrusion: Logger.log("e", "Unable to import legacy profile %s. Multi extrusion is not supported", file_name) raise Exception("Unable to import legacy profile. Multi extrusion is not supported") @@ -117,7 +120,7 @@ class LegacyProfileReader(ProfileReader): if "translation" not in dict_of_doom: Logger.log("e", "Dictionary of Doom has no translation. Is it the correct JSON file?") return None - current_printer_definition = Application.getInstance().getGlobalContainerStack().getBottom() + current_printer_definition = global_container_stack.getBottom() profile.setDefinition(current_printer_definition) for new_setting in dict_of_doom["translation"]: #Evaluate all new settings that would get a value from the translations. old_setting_expression = dict_of_doom["translation"][new_setting] @@ -137,5 +140,5 @@ class LegacyProfileReader(ProfileReader): Logger.log("i", "A legacy profile was imported but everything evaluates to the defaults, creating an empty profile.") profile.setDirty(True) profile.addMetaDataEntry("type", "quality_changes") - profile.addMetaDataEntry("quality", "normal") + profile.addMetaDataEntry("quality_type", "normal") return profile \ No newline at end of file diff --git a/plugins/PerObjectSettingsTool/PerObjectSettingsTool.py b/plugins/PerObjectSettingsTool/PerObjectSettingsTool.py index a90bb4b6d0..5834a5c606 100644 --- a/plugins/PerObjectSettingsTool/PerObjectSettingsTool.py +++ b/plugins/PerObjectSettingsTool/PerObjectSettingsTool.py @@ -84,11 +84,20 @@ class PerObjectSettingsTool(Tool): default_stack = ExtruderManager.getInstance().getExtruderStack(0) if default_stack: default_stack_id = default_stack.getId() - else: default_stack_id = global_container_stack.getId() + else: + default_stack_id = global_container_stack.getId() root_node = Application.getInstance().getController().getScene().getRoot() for node in DepthFirstIterator(root_node): - node.callDecoration("setActiveExtruder", default_stack_id) + new_stack_id = default_stack_id + # Get position of old extruder stack for this node + old_extruder_pos = node.callDecoration("getActiveExtruderPosition") + if old_extruder_pos is not None: + # Fetch current (new) extruder stack at position + new_stack = ExtruderManager.getInstance().getExtruderStack(old_extruder_pos) + if new_stack: + new_stack_id = new_stack.getId() + node.callDecoration("setActiveExtruder", new_stack_id) self._updateEnabled() diff --git a/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py b/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py index 8b6dce8292..3fdd6b3e3e 100644 --- a/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py +++ b/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py @@ -1,3 +1,6 @@ +# Copyright (c) 2016 Ultimaker B.V. +# Cura is released under the terms of the AGPLv3 or higher. + import os.path from UM.Application import Application @@ -17,7 +20,7 @@ class RemovableDriveOutputDevice(OutputDevice): super().__init__(device_id) self.setName(device_name) - self.setShortDescription(catalog.i18nc("@action:button", "Save to Removable Drive")) + self.setShortDescription(catalog.i18nc("@action:button Preceded by 'Ready to'.", "Save to Removable Drive")) self.setDescription(catalog.i18nc("@item:inlistbox", "Save to Removable Drive {0}").format(device_name)) self.setIconName("save_sd") self.setPriority(1) @@ -25,7 +28,16 @@ class RemovableDriveOutputDevice(OutputDevice): self._writing = False self._stream = None - def requestWrite(self, node, file_name = None, filter_by_machine = False): + ## Request the specified nodes to be written to the removable drive. + # + # \param nodes A collection of scene nodes that should be written to the + # removable drive. + # \param file_name \type{string} A suggestion for the file name to write + # to. If none is provided, a file name will be made from the names of the + # meshes. + # \param limit_mimetypes Should we limit the available MIME types to the + # MIME types available to the currently active machine? + def requestWrite(self, nodes, file_name = None, filter_by_machine = False): filter_by_machine = True # This plugin is indended to be used by machine (regardless of what it was told to do) if self._writing: raise OutputDeviceError.DeviceBusyError() @@ -50,15 +62,7 @@ class RemovableDriveOutputDevice(OutputDevice): extension = file_formats[0]["extension"] if file_name is None: - for n in BreadthFirstIterator(node): - if n.getMeshData(): - file_name = n.getName() - if file_name: - break - - if not file_name: - Logger.log("e", "Could not determine a proper file name when trying to write to %s, aborting", self.getName()) - raise OutputDeviceError.WriteRequestFailedError() + file_name = self._automaticFileName(nodes) if extension: # Not empty string. extension = "." + extension @@ -67,8 +71,8 @@ class RemovableDriveOutputDevice(OutputDevice): try: Logger.log("d", "Writing to %s", file_name) # Using buffering greatly reduces the write time for many lines of gcode - self._stream = open(file_name, "wt", buffering = 1) - job = WriteMeshJob(writer, self._stream, node, MeshWriter.OutputMode.TextMode) + self._stream = open(file_name, "wt", buffering = 1, encoding = "utf-8") + job = WriteMeshJob(writer, self._stream, nodes, MeshWriter.OutputMode.TextMode) job.setFileName(file_name) job.progress.connect(self._onProgress) job.finished.connect(self._onFinished) @@ -88,6 +92,22 @@ class RemovableDriveOutputDevice(OutputDevice): Logger.log("e", "Operating system would not let us write to %s: %s", file_name, str(e)) raise OutputDeviceError.WriteRequestFailedError(catalog.i18nc("@info:status", "Could not save to {0}: {1}").format(file_name, str(e))) from e + ## Generate a file name automatically for the specified nodes to be saved + # in. + # + # The name generated will be the name of one of the nodes. Which node that + # is can not be guaranteed. + # + # \param nodes A collection of nodes for which to generate a file name. + def _automaticFileName(self, nodes): + for root in nodes: + for child in BreadthFirstIterator(root): + if child.getMeshData(): + name = child.getName() + if name: + return name + raise OutputDeviceError.WriteRequestFailedError("Could not find a file name when trying to write to {device}.".format(device = self.getName())) + def _onProgress(self, job, progress): if hasattr(job, "_message"): job._message.setProgress(progress) diff --git a/plugins/USBPrinting/USBPrinterOutputDevice.py b/plugins/USBPrinting/USBPrinterOutputDevice.py index 4838fe9b96..6147bfb53f 100644 --- a/plugins/USBPrinting/USBPrinterOutputDevice.py +++ b/plugins/USBPrinting/USBPrinterOutputDevice.py @@ -1,4 +1,4 @@ -# Copyright (c) 2015 Ultimaker B.V. +# Copyright (c) 2016 Ultimaker B.V. # Cura is released under the terms of the AGPLv3 or higher. from .avr_isp import stk500v2, ispBase, intelHex @@ -25,7 +25,7 @@ class USBPrinterOutputDevice(PrinterOutputDevice): def __init__(self, serial_port): super().__init__(serial_port) self.setName(catalog.i18nc("@item:inmenu", "USB printing")) - self.setShortDescription(catalog.i18nc("@action:button", "Print via USB")) + self.setShortDescription(catalog.i18nc("@action:button Preceded by 'Ready to'.", "Print via USB")) self.setDescription(catalog.i18nc("@info:tooltip", "Print via USB")) self.setIconName("print") self.setConnectionText(catalog.i18nc("@info:status", "Connected via USB")) @@ -426,7 +426,14 @@ class USBPrinterOutputDevice(PrinterOutputDevice): self._error_state = error self.onError.emit() - def requestWrite(self, node, file_name = None, filter_by_machine = False): + ## Request the current scene to be sent to a USB-connected printer. + # + # \param nodes A collection of scene nodes to send. This is ignored. + # \param file_name \type{string} A suggestion for a file name to write. + # This is ignored. + # \param filter_by_machine Whether to filter MIME types by machine. This + # is ignored. + def requestWrite(self, nodes, file_name = None, filter_by_machine = False): Application.getInstance().showPrintMonitor.emit(True) self.startPrint() diff --git a/plugins/VersionUpgrade/VersionUpgrade21to22/MachineInstance.py b/plugins/VersionUpgrade/VersionUpgrade21to22/MachineInstance.py index 2053b8acf9..4491a00d3d 100644 --- a/plugins/VersionUpgrade/VersionUpgrade21to22/MachineInstance.py +++ b/plugins/VersionUpgrade/VersionUpgrade21to22/MachineInstance.py @@ -111,7 +111,7 @@ class MachineInstance: user_profile_file = os.path.join(user_storage, urllib.parse.quote_plus(self._name) + "_current_settings.inst.cfg") if not os.path.exists(user_storage): os.makedirs(user_storage) - with open(user_profile_file, "w") as file_handle: + with open(user_profile_file, "w", encoding = "utf-8") as file_handle: user_profile.write(file_handle) version_upgrade_manager.upgradeExtraFile(user_storage, urllib.parse.quote_plus(self._name), "user") diff --git a/plugins/XRayView/xray_composite.shader b/plugins/XRayView/xray_composite.shader index cdd3509e32..f6e67c1d0f 100644 --- a/plugins/XRayView/xray_composite.shader +++ b/plugins/XRayView/xray_composite.shader @@ -23,6 +23,10 @@ fragment = uniform vec4 u_outline_color; uniform vec4 u_error_color; + const vec3 x_axis = vec3(1.0, 0.0, 0.0); + const vec3 y_axis = vec3(0.0, 1.0, 0.0); + const vec3 z_axis = vec3(0.0, 0.0, 1.0); + varying vec2 v_uvs; float kernel[9]; @@ -51,7 +55,15 @@ fragment = sum += color * (kernel[i] / u_outline_strength); } - gl_FragColor = mix(result, vec4(abs(sum.a)) * u_outline_color, abs(sum.a)); + vec4 layer1 = texture2D(u_layer1, v_uvs); + if((layer1.rgb == x_axis || layer1.rgb == y_axis || layer1.rgb == z_axis)) + { + gl_FragColor = result; + } + else + { + gl_FragColor = mix(result, vec4(abs(sum.a)) * u_outline_color, abs(sum.a)); + } } [defaults] diff --git a/plugins/XmlMaterialProfile/XmlMaterialProfile.py b/plugins/XmlMaterialProfile/XmlMaterialProfile.py index baf986067a..07acc5c37c 100644 --- a/plugins/XmlMaterialProfile/XmlMaterialProfile.py +++ b/plugins/XmlMaterialProfile/XmlMaterialProfile.py @@ -411,6 +411,8 @@ class XmlMaterialProfile(UM.Settings.InstanceContainer): else: Logger.log("d", "Unsupported material setting %s", key) + self.addMetaDataEntry("compatible", global_compatibility) + self._dirty = False machines = data.iterfind("./um:settings/um:machine", self.__namespaces) @@ -447,6 +449,8 @@ class XmlMaterialProfile(UM.Settings.InstanceContainer): new_material.setName(self.getName()) new_material.setMetaData(copy.deepcopy(self.getMetaData())) new_material.setDefinition(definition) + # Don't use setMetadata, as that overrides it for all materials with same base file + new_material.getMetaData()["compatible"] = machine_compatibility for key, value in global_setting_values.items(): new_material.setProperty(key, "value", value, definition) @@ -492,7 +496,8 @@ class XmlMaterialProfile(UM.Settings.InstanceContainer): new_hotend_material.setMetaData(copy.deepcopy(self.getMetaData())) new_hotend_material.setDefinition(definition) new_hotend_material.addMetaDataEntry("variant", variant_containers[0].id) - new_hotend_material.addMetaDataEntry("compatible", hotend_compatibility) + # Don't use setMetadata, as that overrides it for all materials with same base file + new_hotend_material.getMetaData()["compatible"] = hotend_compatibility for key, value in global_setting_values.items(): new_hotend_material.setProperty(key, "value", value, definition) @@ -506,14 +511,6 @@ class XmlMaterialProfile(UM.Settings.InstanceContainer): new_hotend_material._dirty = False UM.Settings.ContainerRegistry.getInstance().addContainer(new_hotend_material) - if not global_compatibility: - # Change the type of this container so it is not shown as an option in menus. - # This uses InstanceContainer.setMetaDataEntry because otherwise all containers that - # share this basefile are also updated. - dirty = self.isDirty() - super().setMetaDataEntry("type", "incompatible_material") - super().setDirty(dirty) # reset dirty flag after setMetaDataEntry - def _addSettingElement(self, builder, instance): try: key = UM.Dictionary.findKey(self.__material_property_setting_map, instance.definition.key) diff --git a/resources/definitions/fdmprinter.def.json b/resources/definitions/fdmprinter.def.json index 19b6a5d630..a065e426bb 100644 --- a/resources/definitions/fdmprinter.def.json +++ b/resources/definitions/fdmprinter.def.json @@ -276,7 +276,9 @@ "label": "Disallowed areas", "description": "A list of polygons with areas the print head is not allowed to enter.", "type": "polygons", - "default_value": [], + "default_value": + [ + ], "settable_per_mesh": false, "settable_per_extruder": false, "settable_per_meshgroup": false @@ -390,7 +392,8 @@ "settable_per_mesh": false, "settable_per_extruder": true }, - "machine_max_feedrate_x": { + "machine_max_feedrate_x": + { "label": "Maximum Speed X", "description": "The maximum speed for the motor of the X-direction.", "unit": "mm/s", @@ -400,7 +403,8 @@ "settable_per_extruder": false, "settable_per_meshgroup": false }, - "machine_max_feedrate_y": { + "machine_max_feedrate_y": + { "label": "Maximum Speed Y", "description": "The maximum speed for the motor of the Y-direction.", "unit": "mm/s", @@ -410,7 +414,8 @@ "settable_per_extruder": false, "settable_per_meshgroup": false }, - "machine_max_feedrate_z": { + "machine_max_feedrate_z": + { "label": "Maximum Speed Z", "description": "The maximum speed for the motor of the Z-direction.", "unit": "mm/s", @@ -420,7 +425,8 @@ "settable_per_extruder": false, "settable_per_meshgroup": false }, - "machine_max_feedrate_e": { + "machine_max_feedrate_e": + { "label": "Maximum Feedrate", "description": "The maximum speed of the filament.", "unit": "mm/s", @@ -430,7 +436,8 @@ "settable_per_extruder": false, "settable_per_meshgroup": false }, - "machine_max_acceleration_x": { + "machine_max_acceleration_x": + { "label": "Maximum Acceleration X", "description": "Maximum acceleration for the motor of the X-direction", "unit": "mm/s²", @@ -440,7 +447,8 @@ "settable_per_extruder": false, "settable_per_meshgroup": false }, - "machine_max_acceleration_y": { + "machine_max_acceleration_y": + { "label": "Maximum Acceleration Y", "description": "Maximum acceleration for the motor of the Y-direction.", "unit": "mm/s²", @@ -450,7 +458,8 @@ "settable_per_extruder": false, "settable_per_meshgroup": false }, - "machine_max_acceleration_z": { + "machine_max_acceleration_z": + { "label": "Maximum Acceleration Z", "description": "Maximum acceleration for the motor of the Z-direction.", "unit": "mm/s²", @@ -460,7 +469,8 @@ "settable_per_extruder": false, "settable_per_meshgroup": false }, - "machine_max_acceleration_e": { + "machine_max_acceleration_e": + { "label": "Maximum Filament Acceleration", "description": "Maximum acceleration for the motor of the filament.", "unit": "mm/s²", @@ -470,7 +480,8 @@ "settable_per_extruder": false, "settable_per_meshgroup": false }, - "machine_acceleration": { + "machine_acceleration": + { "label": "Default Acceleration", "description": "The default acceleration of print head movement.", "unit": "mm/s²", @@ -480,7 +491,8 @@ "settable_per_extruder": false, "settable_per_meshgroup": false }, - "machine_max_jerk_xy": { + "machine_max_jerk_xy": + { "label": "Default X-Y Jerk", "description": "Default jerk for movement in the horizontal plane.", "unit": "mm/s", @@ -490,7 +502,8 @@ "settable_per_extruder": false, "settable_per_meshgroup": false }, - "machine_max_jerk_z": { + "machine_max_jerk_z": + { "label": "Default Z Jerk", "description": "Default jerk for the motor of the Z-direction.", "unit": "mm/s", @@ -500,7 +513,8 @@ "settable_per_extruder": false, "settable_per_meshgroup": false }, - "machine_max_jerk_e": { + "machine_max_jerk_e": + { "label": "Default Filament Jerk", "description": "Default jerk for the motor of the filament.", "unit": "mm/s", @@ -510,7 +524,8 @@ "settable_per_extruder": false, "settable_per_meshgroup": false }, - "machine_minimum_feedrate": { + "machine_minimum_feedrate": + { "label": "Minimum Feedrate", "description": "The minimal movement speed of the print head.", "unit": "mm/s", @@ -579,7 +594,7 @@ "minimum_value": "0.0001", "minimum_value_warning": "0.75 * machine_nozzle_size", "maximum_value_warning": "2 * machine_nozzle_size", - "value":"line_width", + "value": "line_width", "default_value": 0.4, "type": "float", "settable_per_mesh": true, @@ -594,7 +609,7 @@ "minimum_value_warning": "0.75 * machine_nozzle_size if outer_inset_first else 0.1 * machine_nozzle_size", "maximum_value_warning": "2 * machine_nozzle_size", "default_value": 0.4, - "value":"wall_line_width", + "value": "wall_line_width", "type": "float", "settable_per_mesh": true }, @@ -607,7 +622,7 @@ "minimum_value_warning": "0.5 * machine_nozzle_size", "maximum_value_warning": "2 * machine_nozzle_size", "default_value": 0.4, - "value":"wall_line_width", + "value": "wall_line_width", "type": "float", "settable_per_mesh": true } @@ -849,7 +864,7 @@ "maximum_value_warning": "machine_nozzle_size", "settable_per_mesh": true }, - "outer_inset_first": + "outer_inset_first": { "label": "Outer Before Inner Walls", "description": "Prints walls in order of outside to inside when enabled. This can help improve dimensional accuracy in X and Y when using a high viscosity plastic like ABS; however it can decrease outer surface print quality, especially on overhangs.", @@ -874,7 +889,8 @@ "settable_per_mesh": true, "children": { - "travel_compensate_overlapping_walls_0_enabled": { + "travel_compensate_overlapping_walls_0_enabled": + { "label": "Compensate Outer Wall Overlaps", "description": "Compensate the flow for parts of an outer wall being printed where there is already a wall in place.", "type": "bool", @@ -882,7 +898,8 @@ "value": "travel_compensate_overlapping_walls_enabled", "settable_per_mesh": true }, - "travel_compensate_overlapping_walls_x_enabled": { + "travel_compensate_overlapping_walls_x_enabled": + { "label": "Compensate Inner Wall Overlaps", "description": "Compensate the flow for parts of an inner wall being printed where there is already a wall in place.", "type": "bool", @@ -1010,7 +1027,8 @@ } } }, - "skin_overlap": { + "skin_overlap": + { "label": "Skin Overlap Percentage", "description": "The amount of overlap between the skin and the walls. A slight overlap allows the walls to connect firmly to the skin.", "unit": "%", @@ -1021,8 +1039,10 @@ "value": "5 if top_bottom_pattern != 'concentric' else 0", "enabled": "top_bottom_pattern != 'concentric'", "settable_per_mesh": true, - "children": { - "skin_overlap_mm": { + "children": + { + "skin_overlap_mm": + { "label": "Skin Overlap", "description": "The amount of overlap between the skin and the walls. A slight overlap allows the walls to connect firmly to the skin.", "unit": "mm", @@ -1033,9 +1053,9 @@ "value": "skin_line_width * skin_overlap / 100 if top_bottom_pattern != 'concentric' else 0", "enabled": "top_bottom_pattern != 'concentric'", "settable_per_mesh": true - } - } - }, + } + } + }, "infill_wipe_dist": { "label": "Infill Wipe Distance", @@ -1143,7 +1163,8 @@ "settable_per_mesh": false, "settable_per_extruder": true }, - "material_extrusion_cool_down_speed": { + "material_extrusion_cool_down_speed": + { "label": "Extrusion Cool Down Speed Modifier", "description": "The extra speed by which the nozzle cools while extruding. The same value is used to signify the heat up speed lost when heating up while extruding.", "unit": "°C/s", @@ -1156,7 +1177,8 @@ "settable_per_mesh": false, "settable_per_extruder": true }, - "material_bed_temperature": { + "material_bed_temperature": + { "label": "Build Plate Temperature", "description": "The temperature used for the heated build plate. Set at 0 to pre-heat the printer manually.", "unit": "°C", @@ -1171,7 +1193,8 @@ "settable_per_extruder": false, "settable_per_meshgroup": false }, - "material_diameter": { + "material_diameter": + { "label": "Diameter", "description": "Adjusts the diameter of the filament used. Match this value with the diameter of the used filament.", "unit": "mm", @@ -1183,7 +1206,8 @@ "settable_per_mesh": false, "settable_per_extruder": true }, - "material_flow": { + "material_flow": + { "label": "Flow", "description": "Flow compensation: the amount of material extruded is multiplied by this value.", "unit": "%", @@ -1194,7 +1218,8 @@ "maximum_value_warning": "150", "settable_per_mesh": true }, - "retraction_enable": { + "retraction_enable": + { "label": "Enable Retraction", "description": "Retract the filament when the nozzle is moving over a non-printed area. ", "type": "bool", @@ -1202,7 +1227,8 @@ "settable_per_mesh": false, "settable_per_extruder": true }, - "retraction_amount": { + "retraction_amount": + { "label": "Retraction Distance", "description": "The length of material retracted during a retraction move.", "unit": "mm", @@ -1214,7 +1240,8 @@ "settable_per_mesh": false, "settable_per_extruder": true }, - "retraction_speed": { + "retraction_speed": + { "label": "Retraction Speed", "description": "The speed at which the filament is retracted and primed during a retraction move.", "unit": "mm/s", @@ -1227,8 +1254,10 @@ "enabled": "retraction_enable", "settable_per_mesh": false, "settable_per_extruder": true, - "children": { - "retraction_retract_speed": { + "children": + { + "retraction_retract_speed": + { "label": "Retraction Retract Speed", "description": "The speed at which the filament is retracted during a retraction move.", "unit": "mm/s", @@ -1243,7 +1272,8 @@ "settable_per_mesh": false, "settable_per_extruder": true }, - "retraction_prime_speed": { + "retraction_prime_speed": + { "label": "Retraction Prime Speed", "description": "The speed at which the filament is primed during a retraction move.", "unit": "mm/s", @@ -1260,7 +1290,8 @@ } } }, - "retraction_extra_prime_amount": { + "retraction_extra_prime_amount": + { "label": "Retraction Extra Prime Amount", "description": "Some material can ooze away during a travel move, which can be compensated for here.", "unit": "mm³", @@ -1272,7 +1303,8 @@ "settable_per_mesh": false, "settable_per_extruder": true }, - "retraction_min_travel": { + "retraction_min_travel": + { "label": "Retraction Minimum Travel", "description": "The minimum distance of travel needed for a retraction to happen at all. This helps to get fewer retractions in a small area.", "unit": "mm", @@ -1285,7 +1317,8 @@ "settable_per_mesh": false, "settable_per_extruder": true }, - "retraction_count_max": { + "retraction_count_max": + { "label": "Maximum Retraction Count", "description": "This setting limits the number of retractions occurring within the minimum extrusion distance window. Further retractions within this window will be ignored. This avoids retracting repeatedly on the same piece of filament, as that can flatten the filament and cause grinding issues.", "default_value": 90, @@ -1296,7 +1329,8 @@ "settable_per_mesh": false, "settable_per_extruder": true }, - "retraction_extrusion_window": { + "retraction_extrusion_window": + { "label": "Minimum Extrusion Distance Window", "description": "The window in which the maximum retraction count is enforced. This value should be approximately the same as the retraction distance, so that effectively the number of times a retraction passes the same patch of material is limited.", "unit": "mm", @@ -1560,7 +1594,8 @@ "settable_per_mesh": false, "settable_per_extruder": true }, - "speed_layer_0": { + "speed_layer_0": + { "label": "Initial Layer Speed", "description": "The speed for the initial layer. A lower value is advised to improve adhesion to the build plate.", "unit": "mm/s", @@ -1601,7 +1636,8 @@ } } }, - "skirt_brim_speed": { + "skirt_brim_speed": + { "label": "Skirt/Brim Speed", "description": "The speed at which the skirt and brim are printed. Normally this is done at the initial layer speed, but sometimes you might want to print the skirt or brim at a different speed.", "unit": "mm/s", @@ -1664,9 +1700,8 @@ "settable_per_mesh": false, "settable_per_extruder": true }, - - - "acceleration_enabled": { + "acceleration_enabled": + { "label": "Enable Acceleration Control", "description": "Enables adjusting the print head acceleration. Increasing the accelerations can reduce printing time at the cost of print quality.", "type": "bool", @@ -1675,7 +1710,8 @@ "settable_per_mesh": false, "settable_per_extruder": false }, - "acceleration_print": { + "acceleration_print": + { "label": "Print Acceleration", "description": "The acceleration with which printing happens.", "unit": "mm/s²", @@ -1686,8 +1722,10 @@ "default_value": 3000, "enabled": "resolveOrValue('acceleration_enabled')", "settable_per_mesh": true, - "children": { - "acceleration_infill": { + "children": + { + "acceleration_infill": + { "label": "Infill Acceleration", "description": "The acceleration with which infill is printed.", "unit": "mm/s²", @@ -1700,7 +1738,8 @@ "enabled": "resolveOrValue('acceleration_enabled') and infill_sparse_density > 0", "settable_per_mesh": true }, - "acceleration_wall": { + "acceleration_wall": + { "label": "Wall Acceleration", "description": "The acceleration with which the walls are printed.", "unit": "mm/s²", @@ -1712,8 +1751,10 @@ "value": "acceleration_print", "enabled": "resolveOrValue('acceleration_enabled')", "settable_per_mesh": true, - "children": { - "acceleration_wall_0": { + "children": + { + "acceleration_wall_0": + { "label": "Outer Wall Acceleration", "description": "The acceleration with which the outermost walls are printed.", "unit": "mm/s²", @@ -1726,7 +1767,8 @@ "enabled": "resolveOrValue('acceleration_enabled')", "settable_per_mesh": true }, - "acceleration_wall_x": { + "acceleration_wall_x": + { "label": "Inner Wall Acceleration", "description": "The acceleration with which all inner walls are printed.", "unit": "mm/s²", @@ -1741,7 +1783,8 @@ } } }, - "acceleration_topbottom": { + "acceleration_topbottom": + { "label": "Top/Bottom Acceleration", "description": "The acceleration with which top/bottom layers are printed.", "unit": "mm/s²", @@ -1754,7 +1797,8 @@ "enabled": "resolveOrValue('acceleration_enabled')", "settable_per_mesh": true }, - "acceleration_support": { + "acceleration_support": + { "label": "Support Acceleration", "description": "The acceleration with which the support structure is printed.", "unit": "mm/s²", @@ -1768,8 +1812,10 @@ "settable_per_mesh": false, "limit_to_extruder": "support_extruder_nr", "settable_per_extruder": true, - "children": { - "acceleration_support_infill": { + "children": + { + "acceleration_support_infill": + { "label": "Support Infill Acceleration", "description": "The acceleration with which the infill of support is printed.", "unit": "mm/s²", @@ -1784,7 +1830,8 @@ "settable_per_mesh": false, "settable_per_extruder": true }, - "acceleration_support_interface": { + "acceleration_support_interface": + { "label": "Support Interface Acceleration", "description": "The acceleration with which the roofs and bottoms of support are printed. Printing them at lower accelerations can improve overhang quality.", "unit": "mm/s²", @@ -1801,7 +1848,8 @@ } } }, - "acceleration_prime_tower": { + "acceleration_prime_tower": + { "label": "Prime Tower Acceleration", "description": "The acceleration with which the prime tower is printed.", "unit": "mm/s²", @@ -1816,7 +1864,8 @@ } } }, - "acceleration_travel": { + "acceleration_travel": + { "label": "Travel Acceleration", "description": "The acceleration with which travel moves are made.", "unit": "mm/s²", @@ -1829,7 +1878,8 @@ "enabled": "resolveOrValue('acceleration_enabled')", "settable_per_mesh": false }, - "acceleration_layer_0": { + "acceleration_layer_0": + { "label": "Initial Layer Acceleration", "description": "The acceleration for the initial layer.", "unit": "mm/s²", @@ -1841,7 +1891,8 @@ "maximum_value_warning": "10000", "enabled": "resolveOrValue('acceleration_enabled')", "settable_per_mesh": true, - "children": { + "children": + { "acceleration_print_layer_0": { "label": "Initial Layer Print Acceleration", @@ -1873,7 +1924,8 @@ } } }, - "acceleration_skirt_brim": { + "acceleration_skirt_brim": + { "label": "Skirt/Brim Acceleration", "description": "The acceleration with which the skirt and brim are printed. Normally this is done with the initial layer acceleration, but sometimes you might want to print the skirt or brim at a different acceleration.", "unit": "mm/s²", @@ -1887,8 +1939,8 @@ "settable_per_mesh": false, "limit_to_extruder": "adhesion_extruder_nr" }, - - "jerk_enabled": { + "jerk_enabled": + { "label": "Enable Jerk Control", "description": "Enables adjusting the jerk of print head when the velocity in the X or Y axis changes. Increasing the jerk can reduce printing time at the cost of print quality.", "type": "bool", @@ -1897,7 +1949,8 @@ "settable_per_mesh": false, "settable_per_extruder": false }, - "jerk_print": { + "jerk_print": + { "label": "Print Jerk", "description": "The maximum instantaneous velocity change of the print head.", "unit": "mm/s", @@ -1908,8 +1961,10 @@ "default_value": 20, "enabled": "resolveOrValue('jerk_enabled')", "settable_per_mesh": true, - "children": { - "jerk_infill": { + "children": + { + "jerk_infill": + { "label": "Infill Jerk", "description": "The maximum instantaneous velocity change with which infill is printed.", "unit": "mm/s", @@ -1922,7 +1977,8 @@ "enabled": "resolveOrValue('jerk_enabled') and infill_sparse_density > 0", "settable_per_mesh": true }, - "jerk_wall": { + "jerk_wall": + { "label": "Wall Jerk", "description": "The maximum instantaneous velocity change with which the walls are printed.", "unit": "mm/s", @@ -1934,8 +1990,10 @@ "value": "jerk_print", "enabled": "resolveOrValue('jerk_enabled')", "settable_per_mesh": true, - "children": { - "jerk_wall_0": { + "children": + { + "jerk_wall_0": + { "label": "Outer Wall Jerk", "description": "The maximum instantaneous velocity change with which the outermost walls are printed.", "unit": "mm/s", @@ -1948,7 +2006,8 @@ "enabled": "resolveOrValue('jerk_enabled')", "settable_per_mesh": true }, - "jerk_wall_x": { + "jerk_wall_x": + { "label": "Inner Wall Jerk", "description": "The maximum instantaneous velocity change with which all inner walls are printed.", "unit": "mm/s", @@ -1963,7 +2022,8 @@ } } }, - "jerk_topbottom": { + "jerk_topbottom": + { "label": "Top/Bottom Jerk", "description": "The maximum instantaneous velocity change with which top/bottom layers are printed.", "unit": "mm/s", @@ -1976,7 +2036,8 @@ "enabled": "resolveOrValue('jerk_enabled')", "settable_per_mesh": true }, - "jerk_support": { + "jerk_support": + { "label": "Support Jerk", "description": "The maximum instantaneous velocity change with which the support structure is printed.", "unit": "mm/s", @@ -1990,8 +2051,10 @@ "settable_per_mesh": false, "settable_per_extruder": true, "limit_to_extruder": "support_extruder_nr", - "children": { - "jerk_support_infill": { + "children": + { + "jerk_support_infill": + { "label": "Support Infill Jerk", "description": "The maximum instantaneous velocity change with which the infill of support is printed.", "unit": "mm/s", @@ -2006,7 +2069,8 @@ "settable_per_mesh": false, "settable_per_extruder": true }, - "jerk_support_interface": { + "jerk_support_interface": + { "label": "Support Interface Jerk", "description": "The maximum instantaneous velocity change with which the roofs and bottoms of support are printed.", "unit": "mm/s", @@ -2023,7 +2087,8 @@ } } }, - "jerk_prime_tower": { + "jerk_prime_tower": + { "label": "Prime Tower Jerk", "description": "The maximum instantaneous velocity change with which the prime tower is printed.", "unit": "mm/s", @@ -2038,7 +2103,8 @@ } } }, - "jerk_travel": { + "jerk_travel": + { "label": "Travel Jerk", "description": "The maximum instantaneous velocity change with which travel moves are made.", "unit": "mm/s", @@ -2051,7 +2117,8 @@ "enabled": "resolveOrValue('jerk_enabled')", "settable_per_mesh": false }, - "jerk_layer_0": { + "jerk_layer_0": + { "label": "Initial Layer Jerk", "description": "The print maximum instantaneous velocity change for the initial layer.", "unit": "mm/s", @@ -2063,7 +2130,8 @@ "maximum_value_warning": "50", "enabled": "resolveOrValue('jerk_enabled')", "settable_per_mesh": true, - "children": { + "children": + { "jerk_print_layer_0": { "label": "Initial Layer Print Jerk", @@ -2095,7 +2163,8 @@ } } }, - "jerk_skirt_brim": { + "jerk_skirt_brim": + { "label": "Skirt/Brim Jerk", "description": "The maximum instantaneous velocity change with which the skirt and brim are printed.", "unit": "mm/s", @@ -2306,7 +2375,7 @@ "cool_min_layer_time": { "label": "Minimum Layer Time", - "description": "The minimum time spent in a layer. This forces the printer to slow down, to at least spend the time set here in one layer. This allows the printed material to cool down properly before printing the next layer.", + "description": "The minimum time spent in a layer. This forces the printer to slow down, to at least spend the time set here in one layer. This allows the printed material to cool down properly before printing the next layer. Layers may still take shorter than the minimal layer time if Lift Head is disabled and if the Minimum Speed would otherwise be violated.", "unit": "s", "type": "float", "default_value": 5, @@ -2473,7 +2542,8 @@ "limit_to_extruder": "support_infill_extruder_nr", "settable_per_mesh": false, "settable_per_extruder": true, - "children": { + "children": + { "support_line_distance": { "label": "Support Line Distance", @@ -2548,11 +2618,13 @@ "enabled": "support_enable", "settable_per_mesh": true }, - "support_xy_overrides_z": { + "support_xy_overrides_z": + { "label": "Support Distance Priority", "description": "Whether the Support X/Y Distance overrides the Support Z Distance or vice versa. When X/Y overrides Z the X/Y distance can push away the support from the model, influencing the actual Z distance to the overhang. We can disable this by not applying the X/Y distance around overhangs.", "type": "enum", - "options": { + "options": + { "xy_overrides_z": "X/Y overrides Z", "z_overrides_xy": "Z overrides X/Y" }, @@ -2561,7 +2633,8 @@ "enabled": "support_enable", "settable_per_mesh": true }, - "support_xy_distance_overhang": { + "support_xy_distance_overhang": + { "label": "Minimum Support X/Y Distance", "description": "Distance of the support structure from the overhang in the X/Y directions. ", "unit": "mm", @@ -2959,7 +3032,8 @@ "settable_per_extruder": true, "limit_to_extruder": "adhesion_extruder_nr" }, - "layer_0_z_overlap": { + "layer_0_z_overlap": + { "label": "Initial Layer Z Overlap", "description": "Make the first and second layer of the model overlap in the Z direction to compensate for the filament lost in the airgap. All models above the first model layer will be shifted down by this amount.", "unit": "mm", @@ -3197,7 +3271,8 @@ } } }, - "raft_acceleration": { + "raft_acceleration": + { "label": "Raft Print Acceleration", "description": "The acceleration with which the raft is printed.", "unit": "mm/s²", @@ -3210,8 +3285,10 @@ "enabled": "resolveOrValue('adhesion_type') == 'raft' and resolveOrValue('acceleration_enabled')", "settable_per_mesh": false, "limit_to_extruder": "adhesion_extruder_nr", - "children": { - "raft_surface_acceleration": { + "children": + { + "raft_surface_acceleration": + { "label": "Raft Top Print Acceleration", "description": "The acceleration with which the top raft layers are printed.", "unit": "mm/s²", @@ -3225,7 +3302,8 @@ "settable_per_mesh": false, "limit_to_extruder": "adhesion_extruder_nr" }, - "raft_interface_acceleration": { + "raft_interface_acceleration": + { "label": "Raft Middle Print Acceleration", "description": "The acceleration with which the middle raft layer is printed.", "unit": "mm/s²", @@ -3239,7 +3317,8 @@ "settable_per_mesh": false, "limit_to_extruder": "adhesion_extruder_nr" }, - "raft_base_acceleration": { + "raft_base_acceleration": + { "label": "Raft Base Print Acceleration", "description": "The acceleration with which the base raft layer is printed.", "unit": "mm/s²", @@ -3255,7 +3334,8 @@ } } }, - "raft_jerk": { + "raft_jerk": + { "label": "Raft Print Jerk", "description": "The jerk with which the raft is printed.", "unit": "mm/s", @@ -3268,8 +3348,10 @@ "enabled": "resolveOrValue('adhesion_type') == 'raft' and resolveOrValue('jerk_enabled')", "settable_per_mesh": false, "limit_to_extruder": "adhesion_extruder_nr", - "children": { - "raft_surface_jerk": { + "children": + { + "raft_surface_jerk": + { "label": "Raft Top Print Jerk", "description": "The jerk with which the top raft layers are printed.", "unit": "mm/s", @@ -3283,7 +3365,8 @@ "settable_per_mesh": false, "limit_to_extruder": "adhesion_extruder_nr" }, - "raft_interface_jerk": { + "raft_interface_jerk": + { "label": "Raft Middle Print Jerk", "description": "The jerk with which the middle raft layer is printed.", "unit": "mm/s", @@ -3297,7 +3380,8 @@ "settable_per_mesh": false, "limit_to_extruder": "adhesion_extruder_nr" }, - "raft_base_jerk": { + "raft_base_jerk": + { "label": "Raft Base Print Jerk", "description": "The jerk with which the base raft layer is printed.", "unit": "mm/s", @@ -3313,7 +3397,8 @@ } } }, - "raft_fan_speed": { + "raft_fan_speed": + { "label": "Raft Fan Speed", "description": "The fan speed for the raft.", "unit": "%", @@ -3558,6 +3643,17 @@ "type": "bool", "default_value": false, "settable_per_mesh": true + }, + "carve_multiple_volumes": + { + "label": "Remove Mesh Intersection", + "description": "Remove areas where multiple objects are overlapping with each other. This may be used if merged dual material objects overlap with each other.", + "type": "bool", + "default_value": true, + "value": "machine_extruder_count > 1", + "settable_per_mesh": false, + "settable_per_extruder": false, + "settable_per_meshgroup": true } } }, @@ -3694,13 +3790,15 @@ "settable_per_mesh": false, "settable_per_extruder": false }, - "conical_overhang_enabled": { + "conical_overhang_enabled": + { "label": "Make Overhang Printable", "description": "Change the geometry of the printed model such that minimal support is required. Steep overhangs will become shallow overhangs. Overhanging areas will drop down to become more vertical.", "type": "bool", "default_value": false }, - "conical_overhang_angle": { + "conical_overhang_angle": + { "label": "Maximum Model Angle", "description": "The maximum angle of overhangs after the they have been made printable. At a value of 0° all overhangs are replaced by a piece of model connected to the build plate, 90° will not change the model in any way.", "unit": "°", diff --git a/resources/definitions/printrbot_play.def.json b/resources/definitions/printrbot_play.def.json new file mode 100644 index 0000000000..bce67364f8 --- /dev/null +++ b/resources/definitions/printrbot_play.def.json @@ -0,0 +1,51 @@ +{ + "id": "printrbot_play", + "version": 2, + "name": "Printrbot Play", + "inherits": "fdmprinter", + "metadata": { + "visible": true, + "author": "Chris Pearson", + "manufacturer": "Printrbot", + "category": "Other", + "file_formats": "text/x-gcode", + "platform": "printrbot_play.stl" + }, + + "overrides": { + "machine_name": { "default_value": "Printrbot Play" }, + "machine_heated_bed": { "default_value": false }, + "machine_width": { "default_value": 100 }, + "machine_depth": { "default_value": 100 }, + "machine_height": { "default_value": 130 }, + "machine_center_is_zero": { "default_value": false }, + "material_diameter": { "default_value": 1.75 }, + "machine_nozzle_size": { "default_value": 0.4 }, + "layer_height": { "default_value": 0.2 }, + "layer_height_0": { "default_value": 0.3 }, + "retraction_amount": { "default_value": 0.7 }, + "retraction_speed": { "default_value": 45}, + "adhesion_type": { "default_value": "skirt" }, + "machine_head_with_fans_polygon": { "default_value": [[-32,999],[37,999],[37,-32],[-32,-32]] }, + "gantry_height": { "default_value": 55 }, + "speed_print": { "default_value": 50 }, + "speed_travel": { "default_value": 55 }, + "machine_max_feedrate_x": {"default_value": 125}, + "machine_max_feedrate_y": {"default_value": 125}, + "machine_max_feedrate_z": { "default_value": 5 }, + "machine_max_acceleration_x": { "default_value": 2000 }, + "machine_max_acceleration_y": { "default_value": 2000 }, + "machine_max_acceleration_z": { "default_value": 30 }, + "machine_max_acceleration_e": { "default_value": 10000 }, + "machine_max_jerk_xy": { "default_value": 20 }, + "machine_max_jerk_z": { "default_value": 0.4 }, + "machine_max_jerk_e": { "default_value": 5.0 }, + "machine_gcode_flavor": { "default_value": "RepRap (Marlin/Sprinter)" }, + "machine_start_gcode": { + "default_value": "G21 ;metric values\nG90 ;absolute positioning\nM82 ;set extruder to absolute mode\nM106 ;start with the fan on for filament cooling\nG28 X0 Y0 ;move X/Y to min endstops\nG28 Z0 ;move Z to min endstops\nG29 ;run auto bed leveling\nG1 Z15.0 F9000 ;move the platform down 15mm\nG92 E0 ;zero the extruded length\nG1 F200 E10 ;extrude 10mm of feed stock\nG92 E0 ;zero the extruded length again\nG1 F9000\n;Put printing message on LCD screen\nM117 Printing..." + }, + "machine_end_gcode": { + "default_value": "M104 S0 ;extruder heater off\nM140 S0 ;heated bed heater off (if you have it)\nG91 ;relative positioning\nG1 E-1 F300 ;retract the filament a bit before lifting the nozzle, to release some of the pressure\nG1 Z+0.5 E-5 X-20 Y-20 F9000 ;move Z up a bit and retract filament even more\nG28 X0 Y0 ;move X/Y to min endstops, so the head is out of the way\nM84 ;steppers off\nG90 ;absolute positioning" + } + } +} diff --git a/resources/definitions/printrbot_play_heated.def.json b/resources/definitions/printrbot_play_heated.def.json new file mode 100644 index 0000000000..878a4f358f --- /dev/null +++ b/resources/definitions/printrbot_play_heated.def.json @@ -0,0 +1,20 @@ +{ + "id": "printrbot_play_heated", + "version": 2, + "name": "Printrbot Play (Heated Bed)", + "inherits": "printrbot_play", + "metadata": { + "visible": true, + "author": "Chris Pearson", + "manufacturer": "Printrbot", + "category": "Other", + "file_formats": "text/x-gcode", + "platform": "" + }, + + "overrides": { + "machine_name": { "default_value": "Printrbot Play (Heated Bed)" }, + "machine_heated_bed": { "default_value": true }, + "machine_depth": { "default_value": 203 } + } +} diff --git a/resources/definitions/printrbot_simple.def.json b/resources/definitions/printrbot_simple.def.json index 3d082af89d..80801363c4 100644 --- a/resources/definitions/printrbot_simple.def.json +++ b/resources/definitions/printrbot_simple.def.json @@ -9,6 +9,7 @@ "manufacturer": "PrintrBot", "category": "Other", "platform": "printrbot_simple_metal_platform.stl", + "platform_offset": [0, -3.45, 0], "file_formats": "text/x-gcode" }, diff --git a/resources/definitions/ultimaker2.def.json b/resources/definitions/ultimaker2.def.json index 79c89ab068..c26a3a8856 100644 --- a/resources/definitions/ultimaker2.def.json +++ b/resources/definitions/ultimaker2.def.json @@ -21,7 +21,7 @@ "machine_name": { "default_value": "Ultimaker 2" }, "machine_start_gcode" : { "default_value": "", - "value": "\"\" if machine_gcode_flavor == \"UltiGCode\" else \"G21 ;metric values\\nG90 ;absolute positioning\\nM82 ;set extruder to absolute mode\\nM107 ;start with the fan off\\nG1 X10 Y0 F4000;move X/Y to min endstops\\nG28 Z0 ;move Z to bottom endstops\\nG1 Z15.0 F9000 ;move the platform to 15mm\\nG92 E0 ;zero the extruded length\\nG1 F200 E10 ;extrude 10 mm of feed stock\\nG92 E0 ;zero the extruded length again\\nG1 F9000\\n;Put printing message on LCD screen\\nM117 Printing...\"" + "value": "\"\" if machine_gcode_flavor == \"UltiGCode\" else \"G21 ;metric values\\nG90 ;absolute positioning\\nM82 ;set extruder to absolute mode\\nM107 ;start with the fan off\\nG28 Z0 ;move Z to bottom endstops\\nG28 X0 Y0 ;move X/Y to endstops\\nG1 X15 Y0 F4000 ;move X/Y to front of printer\\nG1 Z15.0 F9000 ;move the platform to 15mm\\nG92 E0 ;zero the extruded length\\nG1 F200 E10 ;extrude 10 mm of feed stock\\nG92 E0 ;zero the extruded length again\\nG1 F9000\\n;Put printing message on LCD screen\\nM117 Printing...\"" }, "machine_end_gcode" : { "default_value": "", diff --git a/resources/definitions/ultimaker2_plus.def.json b/resources/definitions/ultimaker2_plus.def.json index 87c158782c..5b1c7909ba 100644 --- a/resources/definitions/ultimaker2_plus.def.json +++ b/resources/definitions/ultimaker2_plus.def.json @@ -40,7 +40,7 @@ "value": "speed_wall_0" }, "machine_height": { - "default_value": 203 + "default_value": 205 }, "machine_show_variants": { "default_value": true diff --git a/resources/definitions/ultimaker3.def.json b/resources/definitions/ultimaker3.def.json index 390d9e51a9..8be8751d68 100644 --- a/resources/definitions/ultimaker3.def.json +++ b/resources/definitions/ultimaker3.def.json @@ -38,8 +38,8 @@ "machine_depth": { "default_value": 215 }, "machine_height": { "default_value": 200 }, "machine_heated_bed": { "default_value": true }, - "machine_nozzle_heat_up_speed": { "default_value": 0.8 }, - "machine_nozzle_cool_down_speed": { "default_value": 1 }, + "machine_nozzle_heat_up_speed": { "default_value": 1.4 }, + "machine_nozzle_cool_down_speed": { "default_value": 0.8 }, "machine_head_with_fans_polygon": { "default_value": @@ -50,14 +50,12 @@ [ 60, -30 ] ] }, - "machine_center_is_zero": { "default_value": false }, "machine_gcode_flavor": { "default_value": "Griffin" }, "machine_max_feedrate_x": { "default_value": 300 }, "machine_max_feedrate_y": { "default_value": 300 }, "machine_max_feedrate_z": { "default_value": 40 }, "machine_acceleration": { "default_value": 3000 }, "gantry_height": { "default_value": 60 }, - "machine_use_extruder_offset_to_offset_coords": { "default_value": true }, "machine_disallowed_areas": { "default_value": [ [[-91.5, -115], [-115, -115], [-115, -104.6], [-91.5, -104.6]], [[-99.5, -104.6], [-115, -104.6], [-115, 104.6], [-99.5, 104.6]], @@ -69,16 +67,93 @@ [[100.5, -54.5], [100.5, 99.3], [115, 99.3], [115, -54.5]], [[77, 99.3], [77, 115], [115, 115], [115, 99.3]] ]}, - "machine_show_variants": { "default_value": true }, "machine_extruder_count": { "default_value": 2 }, - "print_sequence": {"enabled": false}, "extruder_prime_pos_abs": { "default_value": true }, - "extruder_prime_pos_x": { "enabled": false }, - "extruder_prime_pos_y": { "enabled": false }, "machine_start_gcode": { "default_value": "" }, "machine_end_gcode": { "default_value": "" }, "prime_tower_position_x": { "default_value": 175 }, "prime_tower_position_y": { "default_value": 179 }, - "speed_prime_tower": { "default_value": 30 } + + "extruder_prime_pos_x": { "enabled": false }, + "extruder_prime_pos_y": { "enabled": false }, + "print_sequence": {"enabled": false}, + + "acceleration_enabled": { "value": "True" }, + "acceleration_layer_0": { "value": "acceleration_topbottom" }, + "acceleration_prime_tower": { "value": "math.ceil(acceleration_print * 2000 / 4000)" }, + "acceleration_print": { "value": "4000" }, + "acceleration_support": { "value": "math.ceil(acceleration_print * 2000 / 4000)" }, + "acceleration_support_interface": { "value": "acceleration_topbottom" }, + "acceleration_topbottom": { "value": "math.ceil(acceleration_print * 500 / 4000)" }, + "acceleration_wall": { "value": "math.ceil(acceleration_print * 1000 / 4000)" }, + "acceleration_wall_0": { "value": "math.ceil(acceleration_wall * 500 / 1000)" }, + "brim_width": { "value": "3" }, + "cool_fan_full_at_height": { "value": "layer_height_0 + 4 * layer_height" }, + "cool_fan_speed": { "value": "50" }, + "cool_fan_speed_max": { "value": "100" }, + "cool_min_speed": { "value": "5" }, + "infill_line_width": { "value": "round(line_width * 0.5 / 0.35, 2)" }, + "infill_overlap": { "value": "0" }, + "infill_pattern": { "value": "'triangles'" }, + "infill_wipe_dist": { "value": "0" }, + "jerk_enabled": { "value": "True" }, + "jerk_layer_0": { "value": "jerk_topbottom" }, + "jerk_prime_tower": { "value": "math.ceil(jerk_print * 15 / 25)" }, + "jerk_print": { "value": "25" }, + "jerk_support": { "value": "math.ceil(jerk_print * 15 / 25)" }, + "jerk_support_interface": { "value": "jerk_topbottom" }, + "jerk_topbottom": { "value": "math.ceil(jerk_print * 5 / 25)" }, + "jerk_wall": { "value": "math.ceil(jerk_print * 10 / 25)" }, + "jerk_wall_0": { "value": "math.ceil(jerk_wall * 5 / 10)" }, + "layer_height_0": { "value": "round(machine_nozzle_size / 1.5, 2)" }, + "line_width": { "value": "machine_nozzle_size * 0.875" }, + "machine_min_cool_heat_time_window": { "value": "15" }, + "material_print_temperature": { "value": "200" }, + "material_standby_temperature": { "value": "100" }, + "multiple_mesh_overlap": { "value": "0" }, + "prime_tower_enable": { "value": "True" }, + "raft_airgap": { "value": "0" }, + "raft_base_speed": { "value": "20" }, + "raft_base_thickness": { "value": "0.3" }, + "raft_interface_line_spacing": { "value": "0.5" }, + "raft_interface_line_width": { "value": "0.5" }, + "raft_interface_speed": { "value": "20" }, + "raft_interface_thickness": { "value": "0.2" }, + "raft_jerk": { "value": "jerk_layer_0" }, + "raft_margin": { "value": "10" }, + "raft_speed": { "value": "25" }, + "raft_surface_layers": { "value": "1" }, + "retraction_amount": { "value": "2" }, + "retraction_count_max": { "value": "10" }, + "retraction_extrusion_window": { "value": "1" }, + "retraction_hop": { "value": "2" }, + "retraction_hop_enabled": { "value": "True" }, + "retraction_hop_only_when_collides": { "value": "True" }, + "retraction_min_travel": { "value": "5" }, + "retraction_prime_speed": { "value": "15" }, + "skin_overlap": { "value": "10" }, + "speed_layer_0": { "value": "20" }, + "speed_prime_tower": { "value": "speed_topbottom" }, + "speed_print": { "value": "35" }, + "speed_support": { "value": "speed_wall_0" }, + "speed_support_interface": { "value": "speed_topbottom" }, + "speed_topbottom": { "value": "math.ceil(speed_print * 20 / 35)" }, + "speed_travel": { "value": "250" }, + "speed_wall": { "value": "math.ceil(speed_print * 30 / 35)" }, + "speed_wall_0": { "value": "math.ceil(speed_wall * 20 / 30)" }, + "speed_wall_x": { "value": "speed_wall" }, + "support_angle": { "value": "45" }, + "support_pattern": { "value": "'triangles'" }, + "support_use_towers": { "value": "False" }, + "support_xy_distance": { "value": "wall_line_width_0 * 2.5" }, + "support_xy_distance_overhang": { "value": "wall_line_width_0" }, + "support_z_distance": { "value": "0" }, + "switch_extruder_prime_speed": { "value": "15" }, + "switch_extruder_retraction_amount": { "value": "8" }, + "top_bottom_thickness": { "value": "1" }, + "travel_avoid_distance": { "value": "3" }, + "wall_0_inset": { "value": "0" }, + "wall_line_width_x": { "value": "round(line_width * 0.3 / 0.35, 2)" }, + "wall_thickness": { "value": "1" } } } diff --git a/resources/definitions/ultimaker3_extended.def.json b/resources/definitions/ultimaker3_extended.def.json index 13ce93b05a..31bf2417e4 100644 --- a/resources/definitions/ultimaker3_extended.def.json +++ b/resources/definitions/ultimaker3_extended.def.json @@ -14,7 +14,7 @@ "platform_texture": "Ultimaker3Extendedbackplate.png", "platform_offset": [0, 0, 0], "has_machine_quality": true, - "has_machine_materials": true, + "has_machine_materials": true, "has_variant_materials": true, "has_materials": true, "has_variants": true, diff --git a/resources/i18n/cura.pot b/resources/i18n/cura.pot index 1a3082dff3..a1fca49999 100644 --- a/resources/i18n/cura.pot +++ b/resources/i18n/cura.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-09-13 17:49+0200\n" +"POT-Creation-Date: 2016-10-27 11:28+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -49,6 +49,21 @@ msgctxt "@item:inlistbox" msgid "X-Ray" msgstr "" +#: /home/ruben/Projects/Cura/plugins/X3DReader/__init__.py:11 +msgctxt "@label" +msgid "X3D Reader" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/X3DReader/__init__.py:14 +msgctxt "@info:whatsthis" +msgid "Provides support for reading X3D files." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/X3DReader/__init__.py:20 +msgctxt "@item:inlistbox" +msgid "X3D File" +msgstr "" + #: /home/ruben/Projects/Cura/plugins/GCodeWriter/__init__.py:12 msgctxt "@label" msgid "GCode Writer" @@ -64,6 +79,41 @@ msgctxt "@item:inlistbox" msgid "GCode File" msgstr "" +#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/__init__.py:13 +msgctxt "@label" +msgid "Doodle3D" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/__init__.py:17 +msgctxt "@info:whatsthis" +msgid "Accepts G-Code and sends them over WiFi to a Doodle3D WiFi-Box." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/PrinterConnection.py:36 +msgctxt "@item:inmenu" +msgid "Doodle3D printing" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/PrinterConnection.py:37 +msgctxt "@action:button" +msgid "Print with Doodle3D" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/PrinterConnection.py:38 +msgctxt "@info:tooltip" +msgid "Print with " +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D.py:49 +msgctxt "@title:menu" +msgid "Doodle3D" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D.py:50 +msgctxt "@item:inlistbox" +msgid "Enable Scan devices..." +msgstr "" + #: /home/ruben/Projects/Cura/plugins/ChangeLogPlugin/__init__.py:12 #: /home/ruben/Projects/Cura/plugins/ChangeLogPlugin/ChangeLog.qml:18 msgctxt "@label" @@ -127,53 +177,75 @@ msgctxt "@info" msgid "Could not find firmware required for the printer at %s." msgstr "" -#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:20 +#: /home/ruben/Projects/Cura/plugins/X3GWriter/__init__.py:15 +msgctxt "X3G Writer Plugin Description" +msgid "Writes X3G to a file" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/X3GWriter/__init__.py:22 +msgctxt "X3G Writer File Description" +msgid "X3G File" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:23 msgctxt "@action:button" msgid "Save to Removable Drive" msgstr "" -#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:21 +#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:24 #, python-brace-format msgctxt "@item:inlistbox" msgid "Save to Removable Drive {0}" msgstr "" -#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:74 +#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:80 #, python-brace-format msgctxt "@info:progress" msgid "Saving to Removable Drive {0}" msgstr "" -#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:84 -#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:87 +#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:90 +#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:93 #, python-brace-format msgctxt "@info:status" msgid "Could not save to {0}: {1}" msgstr "" -#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:102 +#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:129 #, python-brace-format msgctxt "@info:status" msgid "Saved to Removable Drive {0} as {1}" msgstr "" -#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:103 +#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:130 msgctxt "@action:button" msgid "Eject" msgstr "" -#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:103 +#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:130 #, python-brace-format msgctxt "@action" msgid "Eject removable device {0}" msgstr "" -#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:108 +#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:135 #, python-brace-format msgctxt "@info:status" msgid "Could not save to removable drive {0}: {1}" msgstr "" +#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:145 +#, python-brace-format +msgctxt "@info:status" +msgid "Ejected {0}. You can now safely remove the drive." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:147 +#, python-brace-format +msgctxt "@info:status" +msgid "Failed to eject {0}. Another program may be using the drive." +msgstr "" + #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/__init__.py:12 msgctxt "@label" msgid "Removable Drive Output Device Plugin" @@ -184,23 +256,247 @@ msgctxt "@info:whatsthis" msgid "Provides removable drive hotplugging and writing support." msgstr "" -#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDrivePlugin.py:49 -#, python-brace-format -msgctxt "@info:status" -msgid "Ejected {0}. You can now safely remove the drive." -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDrivePlugin.py:52 -#, python-brace-format -msgctxt "@info:status" -msgid "Failed to eject {0}. Another program may be using the drive." -msgstr "" - #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/WindowsRemovableDrivePlugin.py:69 msgctxt "@item:intext" msgid "Removable Drive" msgstr "" +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/__init__.py:13 +msgctxt "@info:whatsthis" +msgid "Manages network connections to Ultimaker 3 printers" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:103 +msgctxt "@action:button" +msgid "Print over network" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:104 +msgctxt "@properties:tooltip" +msgid "Print over network" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:146 +msgctxt "@info:status" +msgid "" +"Access to the printer requested. Please approve the request on the printer" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:147 +msgctxt "@info:status" +msgid "" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:148 +msgctxt "@action:button" +msgid "Retry" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:148 +msgctxt "@info:tooltip" +msgid "Re-send the access request" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:150 +msgctxt "@info:status" +msgid "Access to the printer accepted" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:151 +msgctxt "@info:status" +msgid "No access to print with this printer. Unable to send print job." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:152 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/UM3InfoComponents.qml:28 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/UM3InfoComponents.qml:72 +msgctxt "@action:button" +msgid "Request Access" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:152 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/UM3InfoComponents.qml:27 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/UM3InfoComponents.qml:71 +msgctxt "@info:tooltip" +msgid "Send access request to the printer" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:244 +#, python-brace-format +msgctxt "@info:status" +msgid "" +"Connected over the network to {0}. Please approve the access request on the " +"printer." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:251 +#, python-brace-format +msgctxt "@info:status" +msgid "Connected over the network to {0}." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:264 +#, python-brace-format +msgctxt "@info:status" +msgid "Connected over the network to {0}. No access to control the printer." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:269 +msgctxt "@info:status" +msgid "Access request was denied on the printer." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:272 +msgctxt "@info:status" +msgid "Access request failed due to a timeout." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:337 +msgctxt "@info:status" +msgid "The connection with the network was lost." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:368 +msgctxt "@info:status" +msgid "" +"The connection with the printer was lost. Check your printer to see if it is " +"connected." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:489 +msgctxt "@info:status" +msgid "" +"Unable to start a new print job because the printer is busy. Please check " +"the printer." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:494 +#, python-format +msgctxt "@info:status" +msgid "" +"Unable to start a new print job, printer is busy. Current printer status is " +"%s." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:514 +#, python-brace-format +msgctxt "@info:status" +msgid "Unable to start a new print job. No PrinterCore loaded in slot {0}" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:521 +#, python-brace-format +msgctxt "@info:status" +msgid "Unable to start a new print job. No material loaded in slot {0}" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:532 +#, python-brace-format +msgctxt "@label" +msgid "Not enough material for spool {0}." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:542 +#, python-brace-format +msgctxt "@label" +msgid "Different PrintCore (Cura: {0}, Printer: {1}) selected for extruder {2}" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:556 +#, python-brace-format +msgctxt "@label" +msgid "Different material (Cura: {0}, Printer: {1}) selected for extruder {2}" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:564 +#, python-brace-format +msgctxt "@label" +msgid "" +"PrintCore {0} is not properly calibrated. XY calibration needs to be " +"performed on the printer." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:567 +msgctxt "@label" +msgid "Are you sure you wish to print with the selected configuration?" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:568 +msgctxt "@label" +msgid "" +"There is a mismatch between the configuration or calibration of the printer " +"and Cura. For the best result, always slice for the PrintCores and materials " +"that are inserted in your printer." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:574 +msgctxt "@window:title" +msgid "Mismatched configuration" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:669 +msgctxt "@info:status" +msgid "Sending data to printer" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:670 +#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/SettingsWindow.qml:46 +#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/ControlWindow.qml:73 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:350 +#: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:191 +msgctxt "@action:button" +msgid "Cancel" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:716 +msgctxt "@info:status" +msgid "Unable to send data to printer. Is another job still active?" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:835 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:191 +msgctxt "@label:MonitorStatus" +msgid "Aborting print..." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:841 +msgctxt "@label:MonitorStatus" +msgid "Print aborted. Please check the printer" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:847 +msgctxt "@label:MonitorStatus" +msgid "Pausing print..." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:849 +msgctxt "@label:MonitorStatus" +msgid "Resuming print..." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:960 +msgctxt "@window:title" +msgid "Changes on the Printer" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:962 +msgctxt "@label" +msgid "Would you like to update your current printer configuration into Cura?" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:964 +msgctxt "@label" +msgid "" +"The PrintCores and/or materials on your printer were changed. For the best " +"result, always slice for the PrintCores and materials that are inserted in " +"your printer." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.py:19 +msgctxt "@action" +msgid "Connect via Network" +msgstr "" + #: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.py:24 msgid "Modify G-Code" msgstr "" @@ -235,14 +531,14 @@ msgctxt "@info:whatsthis" msgid "Submits anonymous slice info. Can be disabled through preferences." msgstr "" -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:73 +#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:74 msgctxt "@info" msgid "" "Cura collects anonymised slicing statistics. You can disable this in " "preferences" msgstr "" -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:74 +#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:75 msgctxt "@action:button" msgid "Dismiss" msgstr "" @@ -302,7 +598,7 @@ msgctxt "@item:inlistbox" msgid "Layers" msgstr "" -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.py:58 +#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.py:70 msgctxt "@info:status" msgid "Cura does not accurately display layers when Wire Printing is enabled" msgstr "" @@ -352,14 +648,22 @@ msgctxt "@item:inlistbox" msgid "GIF Image" msgstr "" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:232 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:233 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:77 +msgctxt "@info:status" +msgid "" +"The selected material is incompatible with the selected machine or " +"configuration." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:242 msgctxt "@info:status" msgid "" "Unable to slice with the current settings. Please check your settings for " "errors." msgstr "" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:241 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:251 msgctxt "@info:status" msgid "" "Nothing to slice because none of the models fit the build volume. Please " @@ -376,8 +680,8 @@ msgctxt "@info:whatsthis" msgid "Provides the link to the CuraEngine slicing backend." msgstr "" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:45 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:180 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:47 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:188 msgctxt "@info:status" msgid "Processing Layers" msgstr "" @@ -490,24 +794,24 @@ msgctxt "@info:whatsthis" msgid "Provides support for importing Cura profiles." msgstr "" -#: /home/ruben/Projects/Cura/cura/PrinterOutputDevice.py:286 +#: /home/ruben/Projects/Cura/cura/PrinterOutputDevice.py:298 msgctxt "@item:material" msgid "No material loaded" msgstr "" -#: /home/ruben/Projects/Cura/cura/PrinterOutputDevice.py:293 +#: /home/ruben/Projects/Cura/cura/PrinterOutputDevice.py:305 msgctxt "@item:material" msgid "Unknown material" msgstr "" -#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:342 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:79 +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:343 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:82 msgctxt "@title:window" msgid "File Already Exists" msgstr "" -#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:343 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:80 +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:344 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:83 #, python-brace-format msgctxt "@label" msgid "" @@ -515,54 +819,47 @@ msgid "" "overwrite it?" msgstr "" -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:548 -msgctxt "@info:status" -msgid "" -"The selected material is imcompatible with the selected machine or " -"configuration." -msgstr "" - -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:666 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:868 msgctxt "@label" msgid "You made changes to the following setting(s):" msgstr "" -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:671 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:883 msgctxt "@window:title" msgid "Switched profiles" msgstr "" -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:671 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:885 msgctxt "@label" msgid "Do you want to transfer your changed settings to this profile?" msgstr "" -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:672 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:887 msgctxt "@label" msgid "" "If you transfer your settings they will override settings in the profile." msgstr "" -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:765 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:977 msgctxt "@label" msgid "Nozzle" msgstr "" -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:966 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:1177 msgctxt "@info:status" msgid "" "Unable to find a quality profile for this combination. Default settings will " "be used instead." msgstr "" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:95 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:113 #, python-brace-format msgctxt "@info:status" msgid "" "Failed to export profile to {0}: {1}" msgstr "" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:100 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:118 #, python-brace-format msgctxt "@info:status" msgid "" @@ -570,14 +867,14 @@ msgid "" "failure." msgstr "" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:103 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:121 #, python-brace-format msgctxt "@info:status" msgid "Exported profile to {0}" msgstr "" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:128 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:139 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:147 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:169 #, python-brace-format msgctxt "@info:status" msgid "" @@ -585,31 +882,25 @@ msgid "" "message>" msgstr "" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:145 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:155 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:176 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:210 #, python-brace-format msgctxt "@info:status" msgid "Successfully imported profile {0}" msgstr "" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:158 -#, python-brace-format -msgctxt "@info:status" -msgid "Successfully imported profiles {0}" -msgstr "" - -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:161 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:213 #, python-brace-format msgctxt "@info:status" msgid "Profile {0} has an unknown file type." msgstr "" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:166 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:219 msgctxt "@label" msgid "Custom profile" msgstr "" -#: /home/ruben/Projects/Cura/cura/BuildVolume.py:240 +#: /home/ruben/Projects/Cura/cura/BuildVolume.py:87 msgctxt "@info:status" msgid "" "The build volume height has been reduced due to the value of the \"Print " @@ -635,22 +926,22 @@ msgctxt "@action:button" msgid "Open Web Page" msgstr "" -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:167 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:212 msgctxt "@info:progress" msgid "Loading machines..." msgstr "" -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:390 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:449 msgctxt "@info:progress" msgid "Setting up scene..." msgstr "" -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:424 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:483 msgctxt "@info:progress" msgid "Loading interface..." msgstr "" -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:536 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:603 #, python-format msgctxt "@info" msgid "%(width).1f x %(depth).1f x %(height).1f mm" @@ -679,12 +970,12 @@ msgstr "" #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:85 #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:101 #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:117 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:190 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:206 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:222 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:238 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:258 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:278 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:198 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:214 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:230 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:246 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:266 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:286 msgctxt "@label" msgid "mm" msgstr "" @@ -714,54 +1005,96 @@ msgctxt "@label" msgid "GCode Flavor" msgstr "" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:168 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:176 msgctxt "@label" msgid "Printhead Settings" msgstr "" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:179 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:187 msgctxt "@label" msgid "X min" msgstr "" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:195 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:203 msgctxt "@label" msgid "Y min" msgstr "" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:211 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:219 msgctxt "@label" msgid "X max" msgstr "" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:227 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:235 msgctxt "@label" msgid "Y max" msgstr "" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:247 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:255 msgctxt "@label" msgid "Gantry height" msgstr "" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:267 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:275 msgctxt "@label" msgid "Nozzle size" msgstr "" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:296 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:304 msgctxt "@label" msgid "Start Gcode" msgstr "" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:318 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:326 msgctxt "@label" msgid "End Gcode" msgstr "" -#: /home/ruben/Projects/Cura/plugins/ChangeLogPlugin/ChangeLog.qml:39 +#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/SettingsWindow.qml:20 +msgctxt "@title:window" +msgid "Doodle3D Settings" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/SettingsWindow.qml:53 +msgctxt "@action:button" +msgid "Save" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/ControlWindow.qml:23 +msgctxt "@title:window" +msgid "Print to: %1" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/ControlWindow.qml:40 +msgctxt "@label" +msgid "Extruder Temperature: %1/%2°C" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/ControlWindow.qml:45 +msgctxt "@label" +msgid "" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/ControlWindow.qml:46 +msgctxt "@label" +msgid "Bed Temperature: %1/%2°C" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/ControlWindow.qml:64 +msgctxt "@label" +msgid "%1" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/ControlWindow.qml:82 +msgctxt "@action:button" +msgid "Print" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/ChangeLogPlugin/ChangeLog.qml:37 #: /home/ruben/Projects/Cura/plugins/USBPrinting/FirmwareUpdateWindow.qml:105 -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:423 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/UM3InfoComponents.qml:55 +#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:446 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:433 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:120 #: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:77 #: /home/ruben/Projects/Cura/resources/qml/EngineLog.qml:38 @@ -814,24 +1147,149 @@ msgctxt "@label" msgid "Unknown error code: %1" msgstr "" -#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:17 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:57 +msgctxt "@title:window" +msgid "Connect to Networked Printer" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:67 +msgctxt "@label" +msgid "" +"To print directly to your printer over the network, please make sure your " +"printer is connected to the network using a network cable or by connecting " +"your printer to your WIFI network. If you don't connect Cura with your " +"printer, you can still use a USB drive to transfer g-code files to your " +"printer.\n" +"\n" +"Select your printer from the list below:" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:77 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:44 +msgctxt "@action:button" +msgid "Add" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:87 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:189 +msgctxt "@action:button" +msgid "Edit" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:98 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:50 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:95 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:152 +msgctxt "@action:button" +msgid "Remove" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:106 +msgctxt "@action:button" +msgid "Refresh" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:198 +msgctxt "@label" +msgid "" +"If your printer is not listed, read the network-printing " +"troubleshooting guide" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:225 +msgctxt "@label" +msgid "Type" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:237 +msgctxt "@label" +msgid "Ultimaker 3" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:240 +msgctxt "@label" +msgid "Ultimaker 3 Extended" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:243 +msgctxt "@label" +msgid "Unknown" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:256 +msgctxt "@label" +msgid "Firmware version" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:268 +msgctxt "@label" +msgid "Address" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:282 +msgctxt "@label" +msgid "The printer at this address has not yet responded." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:287 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/UM3InfoComponents.qml:38 +msgctxt "@action:button" +msgid "Connect" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:301 +msgctxt "@title:window" +msgid "Printer Address" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:331 +msgctxt "@alabel" +msgid "Enter the IP address or hostname of your printer on the network." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:358 +msgctxt "@action:button" +msgid "Ok" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/UM3InfoComponents.qml:37 +msgctxt "@info:tooltip" +msgid "Connect to a printer" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/UM3InfoComponents.qml:116 +msgctxt "@info:tooltip" +msgid "Load the configuration of the printer into Cura" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/UM3InfoComponents.qml:117 +msgctxt "@action:button" +msgid "Activate Configuration" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:18 msgctxt "@title:window" msgid "Post Processing Plugin" msgstr "" -#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:48 +#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:49 msgctxt "@label" -msgid "Scripts" +msgid "Post Processing Scripts" msgstr "" -#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:146 -msgctxt "@label" -msgid "Active Scripts" +#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:218 +msgctxt "@action" +msgid "Add a script" msgstr "" -#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:434 +#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:264 msgctxt "@label" -msgid "Done" +msgid "Settings" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:456 +msgctxt "@info:tooltip" +msgid "Change active post-processing scripts" msgstr "" #: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:21 @@ -913,33 +1371,28 @@ msgctxt "@action:button" msgid "OK" msgstr "" -#: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:191 -msgctxt "@action:button" -msgid "Cancel" -msgstr "" - #: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:34 -msgctxt "@label" +msgctxt "@label Followed by extruder selection drop-down." msgid "Print model with" msgstr "" -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:274 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:284 msgctxt "@action:button" msgid "Select settings" msgstr "" -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:314 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:324 msgctxt "@title:window" msgid "Select Settings to Customize for this model" msgstr "" -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:338 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:348 #: /home/ruben/Projects/Cura/resources/qml/Preferences/SettingVisibilityPage.qml:91 msgctxt "@label:textbox" msgid "Filter..." msgstr "" -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:362 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:372 msgctxt "@label:checkbox" msgid "Show all" msgstr "" @@ -1120,71 +1573,71 @@ msgctxt "@label" msgid "Everything is in order! You're done with your CheckUp." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:84 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:90 msgctxt "@label:MonitorStatus" msgid "Not connected to a printer" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:86 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:92 msgctxt "@label:MonitorStatus" msgid "Printer does not accept commands" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:92 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:98 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:189 msgctxt "@label:MonitorStatus" msgid "In maintenance. Please check the printer" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:97 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:103 msgctxt "@label:MonitorStatus" msgid "Lost connection with the printer" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:99 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:105 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:179 msgctxt "@label:MonitorStatus" msgid "Printing..." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:101 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:108 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:181 msgctxt "@label:MonitorStatus" msgid "Paused" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:103 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:111 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:183 msgctxt "@label:MonitorStatus" msgid "Preparing..." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:105 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:113 msgctxt "@label:MonitorStatus" msgid "Please remove the print" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:209 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:239 msgctxt "@label:" msgid "Resume" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:213 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:243 msgctxt "@label:" msgid "Pause" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:242 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:272 msgctxt "@label:" msgid "Abort Print" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:252 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:282 msgctxt "@window:title" msgid "Abort print" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:254 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:284 msgctxt "@label" msgid "Are you sure you want to abort the print?" msgstr "" @@ -1274,28 +1727,28 @@ msgctxt "@label:textbox" msgid "Check all" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:26 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:53 msgctxt "@title:column" msgid "Setting" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:32 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:60 msgctxt "@title:column" msgid "Profile" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:38 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:67 msgctxt "@title:column" msgid "Current" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:45 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:75 msgctxt "@title:column" msgid "Unit" msgstr "" #: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:14 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:430 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:440 msgctxt "@title:tab" msgid "General" msgstr "" @@ -1310,174 +1763,139 @@ msgctxt "@label" msgid "Language:" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:93 -msgctxt "@item:inlistbox" -msgid "English" -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:94 -msgctxt "@item:inlistbox" -msgid "Finnish" -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:95 -msgctxt "@item:inlistbox" -msgid "French" -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:96 -msgctxt "@item:inlistbox" -msgid "German" -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:97 -msgctxt "@item:inlistbox" -msgid "Italian" -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:98 -msgctxt "@item:inlistbox" -msgid "Dutch" -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:99 -msgctxt "@item:inlistbox" -msgid "Spanish" -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:137 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:138 msgctxt "@label" msgid "" "You will need to restart the application for language changes to have effect." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:152 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:153 msgctxt "@label" msgid "Viewport behavior" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:160 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:161 msgctxt "@info:tooltip" msgid "" "Highlight unsupported areas of the model in red. Without support these areas " "will not print properly." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:169 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:170 msgctxt "@option:check" msgid "Display overhang" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:176 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:177 msgctxt "@info:tooltip" msgid "" "Moves the camera so the model is in the center of the view when an model is " "selected" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:181 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:182 msgctxt "@action:button" msgid "Center camera when item is selected" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:190 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:191 msgctxt "@info:tooltip" msgid "" "Should models on the platform be moved so that they no longer intersect?" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:195 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:196 msgctxt "@option:check" msgid "Ensure models are kept apart" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:203 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:204 msgctxt "@info:tooltip" msgid "Should models on the platform be moved down to touch the build plate?" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:208 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:209 msgctxt "@option:check" msgid "Automatically drop models to the build plate" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:217 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:218 msgctxt "@info:tooltip" msgid "" "Display 5 top layers in layer view or only the top-most layer. Rendering 5 " "layers takes longer, but may show more information." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:222 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:223 msgctxt "@action:button" msgid "Display five top layers in layer view" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:240 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:241 msgctxt "@info:tooltip" msgid "Should only the top layers be displayed in layerview?" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:245 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:246 msgctxt "@option:check" msgid "Only display top layer(s) in layer view" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:261 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:262 msgctxt "@label" msgid "Opening files" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:267 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:268 msgctxt "@info:tooltip" msgid "Should models be scaled to the build volume if they are too large?" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:272 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:273 msgctxt "@option:check" msgid "Scale large models" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:281 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:282 msgctxt "@info:tooltip" msgid "" "An model may appear extremely small if its unit is for example in meters " "rather than millimeters. Should these models be scaled up?" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:286 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:287 msgctxt "@option:check" msgid "Scale extremely small models" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:295 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:296 msgctxt "@info:tooltip" msgid "" "Should a prefix based on the printer name be added to the print job name " "automatically?" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:300 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:301 msgctxt "@option:check" msgid "Add machine prefix to job name" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:317 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:318 msgctxt "@label" msgid "Privacy" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:324 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:325 msgctxt "@info:tooltip" msgid "Should Cura check for updates when the program is started?" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:329 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:330 msgctxt "@option:check" msgid "Check for updates on start" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:339 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:340 msgctxt "@info:tooltip" msgid "" "Should anonymous data about your print be sent to Ultimaker? Note, no " @@ -1485,38 +1903,26 @@ msgid "" "stored." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:344 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:345 msgctxt "@option:check" msgid "Send (anonymous) print information" msgstr "" #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:15 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:435 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:445 msgctxt "@title:tab" msgid "Printers" msgstr "" #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:37 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:71 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:51 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:127 msgctxt "@action:button" msgid "Activate" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:44 -msgctxt "@action:button" -msgid "Add" -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:50 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:111 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:152 -msgctxt "@action:button" -msgid "Remove" -msgstr "" - #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:57 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:118 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:102 msgctxt "@action:button" msgid "Rename" msgstr "" @@ -1532,7 +1938,7 @@ msgid "Connection:" msgstr "" #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:159 -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:21 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:32 msgctxt "@info:status" msgid "The printer is not connected." msgstr "" @@ -1547,118 +1953,113 @@ msgctxt "@label:MonitorStatus" msgid "Waiting for someone to clear the build plate" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:191 -msgctxt "@label:MonitorStatus" -msgid "Aborting print..." -msgstr "" - #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:194 msgctxt "@label:MonitorStatus" msgid "Waiting for a printjob" msgstr "" #: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:15 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:439 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:449 msgctxt "@title:tab" msgid "Profiles" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:49 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:29 msgctxt "@label" msgid "Protected profiles" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:49 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:29 msgctxt "@label" msgid "Custom profiles" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:80 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:64 msgctxt "@label" msgid "Create" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:96 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:80 msgctxt "@label" msgid "Duplicate" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:129 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:113 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:159 msgctxt "@action:button" msgid "Import" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:135 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:119 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:166 msgctxt "@action:button" msgid "Export" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:142 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:126 msgctxt "@label %1 is printer name" msgid "Printer: %1" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:181 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:165 msgctxt "@action:button" msgid "Update profile with current settings" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:189 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:173 msgctxt "@action:button" msgid "Discard current settings" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:206 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:190 msgctxt "@action:label" msgid "" "This profile uses the defaults specified by the printer, so it has no " "settings in the list below." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:213 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:197 msgctxt "@action:label" msgid "Your current settings match the selected profile." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:229 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:215 msgctxt "@title:tab" msgid "Global Settings" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:271 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:258 msgctxt "@title:window" msgid "Rename Profile" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:284 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:271 msgctxt "@title:window" msgid "Create Profile" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:298 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:285 msgctxt "@title:window" msgid "Duplicate Profile" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:312 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:299 msgctxt "@window:title" msgid "Import Profile" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:320 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:307 msgctxt "@title:window" msgid "Import Profile" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:348 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:335 msgctxt "@title:window" msgid "Export Profile" msgstr "" #: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:15 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:437 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:447 msgctxt "@title:tab" msgid "Materials" msgstr "" @@ -1680,47 +2081,42 @@ msgctxt "@action:button" msgid "Duplicate" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:189 -msgctxt "@action:button" -msgid "Edit" -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:256 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:264 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:272 msgctxt "@title:window" msgid "Import Material" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:265 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:273 msgctxt "@info:status" msgid "" "Could not import material %1: %2" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:269 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:277 msgctxt "@info:status" msgid "Successfully imported material %1" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:287 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:302 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:295 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:310 msgctxt "@title:window" msgid "Export Material" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:306 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:314 msgctxt "@info:status" msgid "" "Failed to export material to %1: %2" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:312 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:320 msgctxt "@info:status" msgid "Successfully exported material to %1" msgstr "" #: /home/ruben/Projects/Cura/resources/qml/AddMachineDialog.qml:18 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:701 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:718 msgctxt "@title:window" msgid "Add Printer" msgstr "" @@ -1756,22 +2152,22 @@ msgid "" "Cura has been developed by Ultimaker B.V. in cooperation with the community." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:189 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:201 msgctxt "@action:menu" msgid "Copy value to all extruders" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:203 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:215 msgctxt "@action:menu" msgid "Hide this setting" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:209 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:221 msgctxt "@action:menu" msgid "Configure setting visiblity..." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingCategory.qml:75 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingCategory.qml:93 msgctxt "@label" msgid "" "Some hidden settings use values different from their normal calculated " @@ -1781,12 +2177,12 @@ msgid "" msgstr "" #: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:59 -msgctxt "@label" +msgctxt "@label Header for list of settings." msgid "Affects" msgstr "" #: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:64 -msgctxt "@label" +msgctxt "@label Header for list of settings." msgid "Affected By" msgstr "" @@ -1810,7 +2206,7 @@ msgid "" "Click to restore the value of the profile." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:262 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:268 msgctxt "@label" msgid "" "This setting is normally calculated, but it currently has an absolute value " @@ -1819,7 +2215,7 @@ msgid "" "Click to restore the calculated value." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:190 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:189 msgctxt "@label:listbox" msgid "Print Setup" msgstr "" @@ -1836,11 +2232,11 @@ msgstr "" #: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:383 msgctxt "@title:tab" -msgid "Advanced" +msgid "Custom" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:18 -#: /home/ruben/Projects/Cura/resources/qml/Menus/NozzleMenu.qml:18 +#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:26 +#: /home/ruben/Projects/Cura/resources/qml/Menus/NozzleMenu.qml:26 msgctxt "@title:menuitem %1 is the value from the printer" msgid "Automatic: %1" msgstr "" @@ -1855,37 +2251,37 @@ msgctxt "@title:menu menubar:file" msgid "Open &Recent" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:31 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:43 msgctxt "@label" msgid "Temperatures" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:39 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:51 msgctxt "@label" msgid "Hotend" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:49 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:61 msgctxt "@label" msgid "Build plate" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:57 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:69 msgctxt "@label" msgid "Active print" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:62 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:74 msgctxt "@label" msgid "Job Name" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:68 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:80 msgctxt "@label" msgid "Printing Time" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:74 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:86 msgctxt "@label" msgid "Estimated time left" msgstr "" @@ -2080,89 +2476,89 @@ msgctxt "@title:window" msgid "Cura" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:69 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:68 msgctxt "@title:menu menubar:toplevel" msgid "&File" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:81 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:80 msgctxt "@action:inmenu menubar:file" msgid "&Save Selection to File" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:89 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:88 msgctxt "@title:menu menubar:file" msgid "Save &All" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:116 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:115 msgctxt "@title:menu menubar:toplevel" msgid "&Edit" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:132 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:131 msgctxt "@title:menu" msgid "&View" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:137 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:136 msgctxt "@title:menu" msgid "&Settings" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:139 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:138 msgctxt "@title:menu menubar:toplevel" msgid "&Printer" msgstr "" +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:148 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:160 +msgctxt "@title:menu" +msgid "&Material" +msgstr "" + #: /home/ruben/Projects/Cura/resources/qml/Cura.qml:149 #: /home/ruben/Projects/Cura/resources/qml/Cura.qml:161 msgctxt "@title:menu" -msgid "&Material" -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:150 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:162 -msgctxt "@title:menu" msgid "&Profile" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:154 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:153 msgctxt "@action:inmenu" msgid "Set as Active Extruder" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:172 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:171 msgctxt "@title:menu menubar:toplevel" msgid "E&xtensions" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:205 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:204 msgctxt "@title:menu menubar:toplevel" msgid "P&references" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:213 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:212 msgctxt "@title:menu menubar:toplevel" msgid "&Help" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:291 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:290 msgctxt "@action:button" msgid "Open File" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:364 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:363 msgctxt "@action:button" msgid "View Mode" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:433 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:443 msgctxt "@title:tab" msgid "Settings" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:642 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:652 msgctxt "@title:window" msgid "Open file" msgstr "" @@ -2271,23 +2667,23 @@ msgctxt "@title:window" msgid "Engine Log" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:41 +#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:40 msgctxt "@label:listbox" msgid "Printer:" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:189 -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:197 +#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:188 +#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:196 msgctxt "@label" msgid "Material" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:276 +#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:279 msgctxt "@label" msgid "Profile:" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:313 +#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:325 msgctxt "@tooltip" msgid "" "Some setting values are different from the values stored in the profile.\n" diff --git a/resources/i18n/de/cura.po b/resources/i18n/de/cura.po index 18b92a5e64..b015b2e43b 100644 --- a/resources/i18n/de/cura.po +++ b/resources/i18n/de/cura.po @@ -1836,8 +1836,8 @@ msgstr "Empfohlen" #: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:383 msgctxt "@title:tab" -msgid "Advanced" -msgstr "Erweitert" +msgid "Custom" +msgstr "Benutzerdefiniert" #: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:18 #: /home/ruben/Projects/Cura/resources/qml/Menus/NozzleMenu.qml:18 diff --git a/resources/i18n/en/cura.po b/resources/i18n/en/cura.po index 521e622588..2e74ea3219 100644 --- a/resources/i18n/en/cura.po +++ b/resources/i18n/en/cura.po @@ -1916,8 +1916,8 @@ msgstr "Recommended" #: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:383 msgctxt "@title:tab" -msgid "Advanced" -msgstr "Advanced" +msgid "Custom" +msgstr "Custom" #: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:18 #: /home/ruben/Projects/Cura/resources/qml/Menus/NozzleMenu.qml:18 diff --git a/resources/i18n/es/cura.po b/resources/i18n/es/cura.po index 926d190830..a6dae41496 100644 --- a/resources/i18n/es/cura.po +++ b/resources/i18n/es/cura.po @@ -1836,8 +1836,8 @@ msgstr "Recomendado" #: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:383 msgctxt "@title:tab" -msgid "Advanced" -msgstr "Avanzado" +msgid "Custom" +msgstr "Personalizado" #: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:18 #: /home/ruben/Projects/Cura/resources/qml/Menus/NozzleMenu.qml:18 diff --git a/resources/i18n/fdmextruder.def.json.pot b/resources/i18n/fdmextruder.def.json.pot index 1513667105..6384b433d1 100644 --- a/resources/i18n/fdmextruder.def.json.pot +++ b/resources/i18n/fdmextruder.def.json.pot @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: Uranium json setting files\n" "Report-Msgid-Bugs-To: http://github.com/ultimaker/uranium\n" -"POT-Creation-Date: 2016-09-20 14:48+0000\n" +"POT-Creation-Date: 2016-10-27 11:28+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE\n" diff --git a/resources/i18n/fdmprinter.def.json.pot b/resources/i18n/fdmprinter.def.json.pot index e338ae2882..d65b1a10de 100644 --- a/resources/i18n/fdmprinter.def.json.pot +++ b/resources/i18n/fdmprinter.def.json.pot @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: Uranium json setting files\n" "Report-Msgid-Bugs-To: http://github.com/ultimaker/uranium\n" -"POT-Creation-Date: 2016-09-20 14:48+0000\n" +"POT-Creation-Date: 2016-10-27 11:28+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE\n" @@ -815,6 +815,20 @@ msgid "" "outside of the model." msgstr "" +#: fdmprinter.def.json +msgctxt "outer_inset_first label" +msgid "Outer Before Inner Walls" +msgstr "" + +#: fdmprinter.def.json +msgctxt "outer_inset_first description" +msgid "" +"Prints walls in order of outside to inside when enabled. This can help " +"improve dimensional accuracy in X and Y when using a high viscosity plastic " +"like ABS; however it can decrease outer surface print quality, especially on " +"overhangs." +msgstr "" + #: fdmprinter.def.json msgctxt "alternate_extra_perimeter label" msgid "Alternate Extra Wall" @@ -1310,42 +1324,6 @@ msgid "" "material is limited." msgstr "" -#: fdmprinter.def.json -msgctxt "retraction_hop_enabled label" -msgid "Z Hop when Retracted" -msgstr "" - -#: fdmprinter.def.json -msgctxt "retraction_hop_enabled description" -msgid "" -"Whenever a retraction is done, the build plate is lowered to create " -"clearance between the nozzle and the print. It prevents the nozzle from " -"hitting the print during travel moves, reducing the chance to knock the " -"print from the build plate." -msgstr "" - -#: fdmprinter.def.json -msgctxt "retraction_hop_only_when_collides label" -msgid "Z Hop Only Over Printed Parts" -msgstr "" - -#: fdmprinter.def.json -msgctxt "retraction_hop_only_when_collides description" -msgid "" -"Only perform a Z Hop when moving over printed parts which cannot be avoided " -"by horizontal motion by Avoid Printed Parts when Traveling." -msgstr "" - -#: fdmprinter.def.json -msgctxt "retraction_hop label" -msgid "Z Hop Height" -msgstr "" - -#: fdmprinter.def.json -msgctxt "retraction_hop description" -msgid "The height difference when performing a Z Hop." -msgstr "" - #: fdmprinter.def.json msgctxt "material_standby_temperature label" msgid "Standby Temperature" @@ -1405,19 +1383,6 @@ msgid "" "retraction." msgstr "" -#: fdmprinter.def.json -msgctxt "retraction_hop_after_extruder_switch label" -msgid "Z Hop After Extruder Switch" -msgstr "" - -#: fdmprinter.def.json -msgctxt "retraction_hop_after_extruder_switch description" -msgid "" -"After the machine switched from one extruder to the other, the build plate " -"is lowered to create clearance between the nozzle and the print. This " -"prevents the nozzle from leaving oozed material on the outside of a print." -msgstr "" - #: fdmprinter.def.json msgctxt "speed label" msgid "Speed" @@ -2070,6 +2035,55 @@ msgid "" "during travel moves." msgstr "" +#: fdmprinter.def.json +msgctxt "retraction_hop_enabled label" +msgid "Z Hop when Retracted" +msgstr "" + +#: fdmprinter.def.json +msgctxt "retraction_hop_enabled description" +msgid "" +"Whenever a retraction is done, the build plate is lowered to create " +"clearance between the nozzle and the print. It prevents the nozzle from " +"hitting the print during travel moves, reducing the chance to knock the " +"print from the build plate." +msgstr "" + +#: fdmprinter.def.json +msgctxt "retraction_hop_only_when_collides label" +msgid "Z Hop Only Over Printed Parts" +msgstr "" + +#: fdmprinter.def.json +msgctxt "retraction_hop_only_when_collides description" +msgid "" +"Only perform a Z Hop when moving over printed parts which cannot be avoided " +"by horizontal motion by Avoid Printed Parts when Traveling." +msgstr "" + +#: fdmprinter.def.json +msgctxt "retraction_hop label" +msgid "Z Hop Height" +msgstr "" + +#: fdmprinter.def.json +msgctxt "retraction_hop description" +msgid "The height difference when performing a Z Hop." +msgstr "" + +#: fdmprinter.def.json +msgctxt "retraction_hop_after_extruder_switch label" +msgid "Z Hop After Extruder Switch" +msgstr "" + +#: fdmprinter.def.json +msgctxt "retraction_hop_after_extruder_switch description" +msgid "" +"After the machine switched from one extruder to the other, the build plate " +"is lowered to create clearance between the nozzle and the print. This " +"prevents the nozzle from leaving oozed material on the outside of a print." +msgstr "" + #: fdmprinter.def.json msgctxt "cooling label" msgid "Cooling" @@ -2176,7 +2190,9 @@ msgctxt "cool_min_layer_time description" msgid "" "The minimum time spent in a layer. This forces the printer to slow down, to " "at least spend the time set here in one layer. This allows the printed " -"material to cool down properly before printing the next layer." +"material to cool down properly before printing the next layer. Layers may " +"still take shorter than the minimal layer time if Lift Head is disabled and " +"if the Minimum Speed would otherwise be violated." msgstr "" #: fdmprinter.def.json @@ -2227,6 +2243,54 @@ msgid "" "severe overhangs." msgstr "" +#: fdmprinter.def.json +msgctxt "support_extruder_nr label" +msgid "Support Extruder" +msgstr "" + +#: fdmprinter.def.json +msgctxt "support_extruder_nr description" +msgid "" +"The extruder train to use for printing the support. This is used in multi-" +"extrusion." +msgstr "" + +#: fdmprinter.def.json +msgctxt "support_infill_extruder_nr label" +msgid "Support Infill Extruder" +msgstr "" + +#: fdmprinter.def.json +msgctxt "support_infill_extruder_nr description" +msgid "" +"The extruder train to use for printing the infill of the support. This is " +"used in multi-extrusion." +msgstr "" + +#: fdmprinter.def.json +msgctxt "support_extruder_nr_layer_0 label" +msgid "First Layer Support Extruder" +msgstr "" + +#: fdmprinter.def.json +msgctxt "support_extruder_nr_layer_0 description" +msgid "" +"The extruder train to use for printing the first layer of support infill. " +"This is used in multi-extrusion." +msgstr "" + +#: fdmprinter.def.json +msgctxt "support_interface_extruder_nr label" +msgid "Support Interface Extruder" +msgstr "" + +#: fdmprinter.def.json +msgctxt "support_interface_extruder_nr description" +msgid "" +"The extruder train to use for printing the roofs and bottoms of the support. " +"This is used in multi-extrusion." +msgstr "" + #: fdmprinter.def.json msgctxt "support_type label" msgid "Support Placement" @@ -2687,6 +2751,18 @@ msgctxt "adhesion_type option raft" msgid "Raft" msgstr "" +#: fdmprinter.def.json +msgctxt "adhesion_extruder_nr label" +msgid "Build Plate Adhesion Extruder" +msgstr "" + +#: fdmprinter.def.json +msgctxt "adhesion_extruder_nr description" +msgid "" +"The extruder train to use for printing the skirt/brim/raft. This is used in " +"multi-extrusion." +msgstr "" + #: fdmprinter.def.json msgctxt "skirt_line_count label" msgid "Skirt Line Count" @@ -3100,66 +3176,6 @@ msgctxt "dual description" msgid "Settings used for printing with multiple extruders." msgstr "" -#: fdmprinter.def.json -msgctxt "adhesion_extruder_nr label" -msgid "Build Plate Adhesion Extruder" -msgstr "" - -#: fdmprinter.def.json -msgctxt "adhesion_extruder_nr description" -msgid "" -"The extruder train to use for printing the skirt/brim/raft. This is used in " -"multi-extrusion." -msgstr "" - -#: fdmprinter.def.json -msgctxt "support_extruder_nr label" -msgid "Support Extruder" -msgstr "" - -#: fdmprinter.def.json -msgctxt "support_extruder_nr description" -msgid "" -"The extruder train to use for printing the support. This is used in multi-" -"extrusion." -msgstr "" - -#: fdmprinter.def.json -msgctxt "support_infill_extruder_nr label" -msgid "Support Infill Extruder" -msgstr "" - -#: fdmprinter.def.json -msgctxt "support_infill_extruder_nr description" -msgid "" -"The extruder train to use for printing the infill of the support. This is " -"used in multi-extrusion." -msgstr "" - -#: fdmprinter.def.json -msgctxt "support_extruder_nr_layer_0 label" -msgid "First Layer Support Extruder" -msgstr "" - -#: fdmprinter.def.json -msgctxt "support_extruder_nr_layer_0 description" -msgid "" -"The extruder train to use for printing the first layer of support infill. " -"This is used in multi-extrusion." -msgstr "" - -#: fdmprinter.def.json -msgctxt "support_interface_extruder_nr label" -msgid "Support Interface Extruder" -msgstr "" - -#: fdmprinter.def.json -msgctxt "support_interface_extruder_nr description" -msgid "" -"The extruder train to use for printing the roofs and bottoms of the support. " -"This is used in multi-extrusion." -msgstr "" - #: fdmprinter.def.json msgctxt "prime_tower_enable label" msgid "Enable Prime Tower" @@ -3336,6 +3352,18 @@ msgid "" "everything else fails to produce proper GCode." msgstr "" +#: fdmprinter.def.json +msgctxt "carve_multiple_volumes label" +msgid "Remove Mesh Intersection" +msgstr "" + +#: fdmprinter.def.json +msgctxt "carve_multiple_volumes description" +msgid "" +"Remove areas where multiple objecs are overlapping with each other. This is " +"may be used if merged dual material objects overlap with each other." +msgstr "" + #: fdmprinter.def.json msgctxt "blackmagic label" msgid "Special Modes" diff --git a/resources/i18n/fi/cura.po b/resources/i18n/fi/cura.po index b481d39b39..174d261b9e 100644 --- a/resources/i18n/fi/cura.po +++ b/resources/i18n/fi/cura.po @@ -1836,8 +1836,8 @@ msgstr "Suositeltu" #: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:383 msgctxt "@title:tab" -msgid "Advanced" -msgstr "Laajennettu" +msgid "Custom" +msgstr "Mukautettu" #: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:18 #: /home/ruben/Projects/Cura/resources/qml/Menus/NozzleMenu.qml:18 diff --git a/resources/i18n/fr/cura.po b/resources/i18n/fr/cura.po index 16cfcd8cc4..17f0fd2a0b 100644 --- a/resources/i18n/fr/cura.po +++ b/resources/i18n/fr/cura.po @@ -1836,8 +1836,8 @@ msgstr "Recommandé" #: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:383 msgctxt "@title:tab" -msgid "Advanced" -msgstr "Avancée" +msgid "Custom" +msgstr "Personnalisé" #: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:18 #: /home/ruben/Projects/Cura/resources/qml/Menus/NozzleMenu.qml:18 diff --git a/resources/i18n/it/cura.po b/resources/i18n/it/cura.po index 7d212ed598..e69f09a9c9 100644 --- a/resources/i18n/it/cura.po +++ b/resources/i18n/it/cura.po @@ -160,13 +160,13 @@ msgstr "Salvato su unità rimovibile {0} come {1}" #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:103 msgctxt "@action:button" msgid "Eject" -msgstr "Espelli" +msgstr "Rimuovi" #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:103 #, python-brace-format msgctxt "@action" msgid "Eject removable device {0}" -msgstr "Espelli il dispositivo rimovibile {0}" +msgstr "Rimuovi il dispositivo rimovibile {0}" #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:108 #, python-brace-format @@ -1836,8 +1836,8 @@ msgstr "Consigliata" #: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:383 msgctxt "@title:tab" -msgid "Advanced" -msgstr "Avanzata" +msgid "Custom" +msgstr "Personalizzata" #: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:18 #: /home/ruben/Projects/Cura/resources/qml/Menus/NozzleMenu.qml:18 @@ -2008,7 +2008,7 @@ msgstr "Sel&eziona tutti i modelli" #: /home/ruben/Projects/Cura/resources/qml/Actions.qml:248 msgctxt "@action:inmenu menubar:edit" msgid "&Clear Build Plate" -msgstr "&Cancella piano di stampa" +msgstr "&Cancellare piano di stampa" #: /home/ruben/Projects/Cura/resources/qml/Actions.qml:258 msgctxt "@action:inmenu menubar:file" diff --git a/resources/i18n/it/fdmprinter.def.json.po b/resources/i18n/it/fdmprinter.def.json.po index 311d2292de..dc83a99030 100644 --- a/resources/i18n/it/fdmprinter.def.json.po +++ b/resources/i18n/it/fdmprinter.def.json.po @@ -2257,12 +2257,12 @@ msgstr "Regola il posizionamento delle strutture di supporto. Il posizionamento #: fdmprinter.def.json msgctxt "support_type option buildplate" msgid "Touching Buildplate" -msgstr "Sostegno solo delle pareti esterne" +msgstr "Contatto con il Piano di Stampa" #: fdmprinter.def.json msgctxt "support_type option everywhere" msgid "Everywhere" -msgstr "In tutti i possibili punti" +msgstr "In Tutti i Possibili Punti" #: fdmprinter.def.json msgctxt "support_angle label" diff --git a/resources/i18n/nl/cura.po b/resources/i18n/nl/cura.po index c0fb2b7b9b..2c8c83df7a 100644 --- a/resources/i18n/nl/cura.po +++ b/resources/i18n/nl/cura.po @@ -1836,8 +1836,8 @@ msgstr "Aanbevolen" #: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:383 msgctxt "@title:tab" -msgid "Advanced" -msgstr "Geavanceerd" +msgid "Custom" +msgstr "Aangepast" #: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:18 #: /home/ruben/Projects/Cura/resources/qml/Menus/NozzleMenu.qml:18 diff --git a/resources/i18n/tr/cura.po b/resources/i18n/tr/cura.po index a05507c30a..1a05f2b98a 100644 --- a/resources/i18n/tr/cura.po +++ b/resources/i18n/tr/cura.po @@ -1836,8 +1836,8 @@ msgstr "Önerilen Ayarlar" #: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:383 msgctxt "@title:tab" -msgid "Advanced" -msgstr "Gelişmiş" +msgid "Custom" +msgstr "Özel" #: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:18 #: /home/ruben/Projects/Cura/resources/qml/Menus/NozzleMenu.qml:18 diff --git a/resources/meshes/printrbot_play.stl b/resources/meshes/printrbot_play.stl new file mode 100644 index 0000000000..fad1bbfc4a Binary files /dev/null and b/resources/meshes/printrbot_play.stl differ diff --git a/resources/qml/Actions.qml b/resources/qml/Actions.qml index 3ee8630183..eebf8677b0 100644 --- a/resources/qml/Actions.qml +++ b/resources/qml/Actions.qml @@ -121,7 +121,7 @@ Item Action { id: updateProfileAction; - enabled: Cura.MachineManager.isActiveStackValid && Cura.MachineManager.hasUserSettings && !Cura.MachineManager.isReadOnly(Cura.MachineManager.activeQualityId) + enabled: !Cura.MachineManager.stacksHaveErrors && Cura.MachineManager.hasUserSettings && !Cura.MachineManager.isReadOnly(Cura.MachineManager.activeQualityId) text: catalog.i18nc("@action:inmenu menubar:profile","&Update profile with current settings"); onTriggered: Cura.ContainerManager.updateQualityChanges(); } @@ -131,13 +131,17 @@ Item id: resetProfileAction; enabled: Cura.MachineManager.hasUserSettings text: catalog.i18nc("@action:inmenu menubar:profile","&Discard current settings"); - onTriggered: Cura.ContainerManager.clearUserContainers(); + onTriggered: + { + forceActiveFocus(); + Cura.ContainerManager.clearUserContainers(); + } } Action { id: addProfileAction; - enabled: Cura.MachineManager.isActiveStackValid && Cura.MachineManager.hasUserSettings + enabled: !Cura.MachineManager.stacksHaveErrors && Cura.MachineManager.hasUserSettings text: catalog.i18nc("@action:inmenu menubar:profile","&Create profile from current settings..."); } diff --git a/resources/qml/AddMachineDialog.qml b/resources/qml/AddMachineDialog.qml index e37629306b..80ac1213a8 100644 --- a/resources/qml/AddMachineDialog.qml +++ b/resources/qml/AddMachineDialog.qml @@ -175,6 +175,14 @@ UM.Dialog text: getMachineName() implicitWidth: UM.Theme.getSize("standard_list_input").width maximumLength: 40 + //validator: Cura.MachineNameValidator { } //TODO: Gives a segfault in PyQt5.6. For now, we must use a signal on text changed. + validator: RegExpValidator + { + regExp: { + machineName.machine_name_validator.machineNameRegex + } + } + property var machine_name_validator: Cura.MachineNameValidator { } anchors.bottom:parent.bottom } diff --git a/resources/qml/Cura.qml b/resources/qml/Cura.qml index 59e4848851..5c56abcc12 100644 --- a/resources/qml/Cura.qml +++ b/resources/qml/Cura.qml @@ -539,7 +539,7 @@ UM.MainWindow target: Cura.MachineManager onBlurSettings: { - contentItem.focus = true + forceActiveFocus() } } diff --git a/resources/qml/Menus/MaterialMenu.qml b/resources/qml/Menus/MaterialMenu.qml index 534be456ed..573dff89dd 100644 --- a/resources/qml/Menus/MaterialMenu.qml +++ b/resources/qml/Menus/MaterialMenu.qml @@ -153,6 +153,7 @@ Menu else { result.definition = "fdmprinter"; + result.compatible = true; //NB: Only checks for compatibility in global version of material, but we don't have machine-specific materials anyway. } return result; } diff --git a/resources/qml/Menus/ProfileMenu.qml b/resources/qml/Menus/ProfileMenu.qml index 4fa7a0d3c5..9dea8420bb 100644 --- a/resources/qml/Menus/ProfileMenu.qml +++ b/resources/qml/Menus/ProfileMenu.qml @@ -13,7 +13,7 @@ Menu Instantiator { - model: Cura.ProfilesModel { } + model: Cura.ProfilesModel MenuItem { diff --git a/resources/qml/Preferences/MachinesPage.qml b/resources/qml/Preferences/MachinesPage.qml index 78553bb37f..e6ddef7979 100644 --- a/resources/qml/Preferences/MachinesPage.qml +++ b/resources/qml/Preferences/MachinesPage.qml @@ -251,6 +251,8 @@ UM.ManagementPage { id: renameDialog; object: base.currentItem && base.currentItem.name ? base.currentItem.name : ""; + property var machine_name_validator: Cura.MachineNameValidator { } + validName: renameDialog.newName.match(renameDialog.machine_name_validator.machineNameRegex) != null; onAccepted: { Cura.MachineManager.renameMachine(base.currentItem.id, newName.trim()); diff --git a/resources/qml/Preferences/MaterialsPage.qml b/resources/qml/Preferences/MaterialsPage.qml index 8ba26b6ac3..83f980bf86 100644 --- a/resources/qml/Preferences/MaterialsPage.qml +++ b/resources/qml/Preferences/MaterialsPage.qml @@ -29,7 +29,8 @@ UM.ManagementPage } else { - result.definition = "fdmprinter" + result.definition = "fdmprinter"; + result.compatible = true; //NB: Only checks for compatibility in global version of material, but we don't have machine-specific materials anyway. } return result } diff --git a/resources/qml/Preferences/ProfilesPage.qml b/resources/qml/Preferences/ProfilesPage.qml index 621ecb3184..47d49849b4 100644 --- a/resources/qml/Preferences/ProfilesPage.qml +++ b/resources/qml/Preferences/ProfilesPage.qml @@ -62,7 +62,7 @@ UM.ManagementPage Button { text: catalog.i18nc("@label", "Create") - enabled: base.canCreateProfile() + enabled: base.canCreateProfile() && !Cura.MachineManager.stacksHaveErrors visible: base.canCreateProfile() iconName: "list-add"; diff --git a/resources/qml/Preferences/ReadOnlySpinBox.qml b/resources/qml/Preferences/ReadOnlySpinBox.qml index 8692f55708..90314ac323 100644 --- a/resources/qml/Preferences/ReadOnlySpinBox.qml +++ b/resources/qml/Preferences/ReadOnlySpinBox.qml @@ -1,5 +1,5 @@ // Copyright (c) 2016 Ultimaker B.V. -// Uranium is released under the terms of the AGPLv3 or higher. +// Cura is released under the terms of the AGPLv3 or higher. import QtQuick 2.1 import QtQuick.Controls 1.1 diff --git a/resources/qml/Preferences/ReadOnlyTextArea.qml b/resources/qml/Preferences/ReadOnlyTextArea.qml index 080aec5f53..1c457eb5d2 100644 --- a/resources/qml/Preferences/ReadOnlyTextArea.qml +++ b/resources/qml/Preferences/ReadOnlyTextArea.qml @@ -1,5 +1,5 @@ // Copyright (c) 2016 Ultimaker B.V. -// Uranium is released under the terms of the AGPLv3 or higher. +// Cura is released under the terms of the AGPLv3 or higher. import QtQuick 2.1 import QtQuick.Controls 1.1 diff --git a/resources/qml/Preferences/ReadOnlyTextField.qml b/resources/qml/Preferences/ReadOnlyTextField.qml index 2ff0357020..a34c39cde3 100644 --- a/resources/qml/Preferences/ReadOnlyTextField.qml +++ b/resources/qml/Preferences/ReadOnlyTextField.qml @@ -1,5 +1,5 @@ // Copyright (c) 2016 Ultimaker B.V. -// Uranium is released under the terms of the AGPLv3 or higher. +// Cura is released under the terms of the AGPLv3 or higher. // Different than the name suggests, it is not always read-only. import QtQuick 2.1 diff --git a/resources/qml/Preferences/SettingVisibilityPage.qml b/resources/qml/Preferences/SettingVisibilityPage.qml index e68df94122..cada8adfda 100644 --- a/resources/qml/Preferences/SettingVisibilityPage.qml +++ b/resources/qml/Preferences/SettingVisibilityPage.qml @@ -1,5 +1,5 @@ // Copyright (c) 2016 Ultimaker B.V. -// Uranium is released under the terms of the AGPLv3 or higher. +// Cura is released under the terms of the AGPLv3 or higher. import QtQuick 2.1 import QtQuick.Controls 1.1 diff --git a/resources/qml/Settings/SettingItem.qml b/resources/qml/Settings/SettingItem.qml index f399e7fe04..7fa2856e27 100644 --- a/resources/qml/Settings/SettingItem.qml +++ b/resources/qml/Settings/SettingItem.qml @@ -197,7 +197,26 @@ Item { // - The type of the value of any deeper container is an "object" (eg; is a function) visible: { - return showInheritButton && Cura.SettingInheritanceManager.settingsWithInheritanceWarning.indexOf(definition.key) >= 0; + if(!base.showInheritButton) + { + return false; + } + + if(!propertyProvider.properties.enabled) + { + // Note: This is not strictly necessary since a disabled setting is hidden anyway. + // But this will cause the binding to be re-evaluated when the enabled property changes. + return false; + } + if(Cura.SettingInheritanceManager.settingsWithInheritanceWarning.length == 0) + { + return false; + } + if(globalPropertyProvider.properties.limit_to_extruder == null || globalPropertyProvider.properties.limit_to_extruder == -1) + { + return Cura.SettingInheritanceManager.settingsWithInheritanceWarning.indexOf(definition.key) >= 0; + } + return Cura.SettingInheritanceManager.getOverridesForExtruder(definition.key, globalPropertyProvider.properties.limit_to_extruder).indexOf(definition.key) >= 0; } height: parent.height; diff --git a/resources/qml/Settings/SettingView.qml b/resources/qml/Settings/SettingView.qml index 76b136db57..16b5dada72 100644 --- a/resources/qml/Settings/SettingView.qml +++ b/resources/qml/Settings/SettingView.qml @@ -99,9 +99,9 @@ ScrollView when: model.settable_per_extruder || (inheritStackProvider.properties.limit_to_extruder != null && inheritStackProvider.properties.limit_to_extruder >= 0); value: { - if(!model.settable_per_extruder) + if(!model.settable_per_extruder || machineExtruderCount.properties.value == 1) { - //Not settable per extruder, so we must pick global. + //Not settable per extruder or there only is global, so we must pick global. return Cura.MachineManager.activeMachineId; } if(inheritStackProvider.properties.limit_to_extruder != null && inheritStackProvider.properties.limit_to_extruder >= 0) diff --git a/resources/qml/Sidebar.qml b/resources/qml/Sidebar.qml index 2d17d5210c..1c1eb5e5a0 100644 --- a/resources/qml/Sidebar.qml +++ b/resources/qml/Sidebar.qml @@ -380,7 +380,7 @@ Rectangle Component.onCompleted: { modesListModel.append({ text: catalog.i18nc("@title:tab", "Recommended"), item: sidebarSimple }) - modesListModel.append({ text: catalog.i18nc("@title:tab", "Advanced"), item: sidebarAdvanced }) + modesListModel.append({ text: catalog.i18nc("@title:tab", "Custom"), item: sidebarAdvanced }) sidebarContents.push({ "item": modesListModel.get(base.currentModeIndex).item, "immediate": true }); } diff --git a/resources/quality/high.inst.cfg b/resources/quality/high.inst.cfg index 9e3e9f1f67..921dae9ae0 100644 --- a/resources/quality/high.inst.cfg +++ b/resources/quality/high.inst.cfg @@ -6,6 +6,7 @@ definition = fdmprinter [metadata] type = quality quality_type = high +global_quality = True weight = 1 [values] diff --git a/resources/quality/low.inst.cfg b/resources/quality/low.inst.cfg index 787325c27c..82d4e0d327 100644 --- a/resources/quality/low.inst.cfg +++ b/resources/quality/low.inst.cfg @@ -6,6 +6,7 @@ definition = fdmprinter [metadata] type = quality quality_type = low +global_quality = True weight = -1 [values] diff --git a/resources/quality/normal.inst.cfg b/resources/quality/normal.inst.cfg index e940bbda35..26da3b48da 100644 --- a/resources/quality/normal.inst.cfg +++ b/resources/quality/normal.inst.cfg @@ -6,6 +6,7 @@ definition = fdmprinter [metadata] type = quality quality_type = normal +global_quality = True weight = 0 [values] diff --git a/resources/quality/ultimaker3/um3_aa0.4_ABS_Draft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_ABS_Draft_Print.inst.cfg index 4fcedc258a..6a1b477165 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_ABS_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_ABS_Draft_Print.inst.cfg @@ -1,125 +1,23 @@ -[general] -version = 2 -name = Draft Print -definition = ultimaker3 - -[metadata] -type = quality -quality_type = draft -material = generic_abs_ultimaker3_AA_0.4 -weight = -2 - -[values] -acceleration_enabled = True -acceleration_infill = =acceleration_print -acceleration_layer_0 = =acceleration_topbottom -acceleration_prime_tower = =math.ceil(acceleration_print * 2000 / 4000) -acceleration_print = 4000 -acceleration_support = =math.ceil(acceleration_print * 2000 / 4000) -acceleration_support_infill = =acceleration_support -acceleration_support_interface = =acceleration_topbottom -acceleration_topbottom = =math.ceil(acceleration_print * 500 / 4000) -acceleration_wall = =math.ceil(acceleration_print * 1000 / 4000) -acceleration_wall_0 = =math.ceil(acceleration_wall * 500 / 1000) -acceleration_wall_x = =acceleration_wall -adhesion_type = brim -brim_width = 7 -cool_fan_full_at_height = =layer_height_0 + 4 * layer_height -cool_fan_speed = 5 -cool_fan_speed_max = 100 -cool_min_layer_time = 5 -cool_min_speed = 5 -infill_line_width = =round(line_width * 0.5 / 0.35, 2) -infill_pattern = triangles -infill_sparse_density = 20 -infill_wipe_dist = 0 -jerk_enabled = True -jerk_infill = =jerk_print -jerk_layer_0 = =jerk_topbottom -jerk_prime_tower = =math.ceil(jerk_print * 15 / 25) -jerk_print = 25 -jerk_support = =math.ceil(jerk_print * 15 / 25) -jerk_support_infill = =jerk_support -jerk_support_interface = =jerk_topbottom -jerk_topbottom = =math.ceil(jerk_print * 5 / 25) -jerk_wall = =math.ceil(jerk_print * 10 / 25) -jerk_wall_0 = =math.ceil(jerk_wall * 5 / 10) -jerk_wall_x = =jerk_wall -layer_height = 0.2 -layer_height_0 = =round(machine_nozzle_size / 1.5, 2) -line_width = =machine_nozzle_size * 0.875 -machine_min_cool_heat_time_window = 15 -machine_nozzle_cool_down_speed = 0.85 -machine_nozzle_heat_up_speed = 1.5 -material_bed_temperature = 80 -material_print_temperature = 240 -material_standby_temperature = 100 -multiple_mesh_overlap = 0 -ooze_shield_angle = 60 -ooze_shield_enabled = False -prime_tower_enable = True -prime_tower_size = 16 -prime_tower_wipe_enabled = True -raft_acceleration = =acceleration_print -raft_jerk = =jerk_print -raft_base_speed = =0.75 * raft_speed -raft_base_thickness = =resolveOrValue('layer_height_0') * 1.2 -raft_speed = =speed_print / 60 * 30 -raft_interface_speed = =raft_speed * 0.75 -retraction_count_max = 25 -retraction_extrusion_window = 1 -retraction_hop = 2 -retraction_hop_enabled = True -retraction_hop_only_when_collides = True -skin_overlap = 20 -speed_infill = =speed_print -speed_layer_0 = 20 -speed_prime_tower = =speed_topbottom -speed_print = 60 -speed_support = =speed_wall_0 -speed_support_interface = =speed_topbottom -speed_topbottom = =math.ceil(speed_print * 35 / 60) -speed_travel = 250 -speed_wall = =math.ceil(speed_print * 45 / 60) -speed_wall_0 = =math.ceil(speed_wall * 35 / 45) -speed_wall_x = =speed_wall -support_angle = 60 -support_bottom_distance = =support_z_distance / 2 -support_top_distance = =support_z_distance -support_xy_distance = =wall_line_width_0 * 2.5 -support_xy_distance_overhang = =wall_line_width_0 -support_z_distance = =layer_height * 2 -top_bottom_thickness = 1.2 -travel_avoid_distance = 3 -travel_compensate_overlapping_walls_enabled = True -wall_0_inset = 0 -wall_line_width_x = =round(line_width * 0.3 / 0.35, 2) -wall_thickness = 1 -support_line_width = =line_width -support_pattern = zigzag -support_infill_rate = 15 -support_join_distance = 2 -support_offset = 0.2 -support_interface_enable = False -support_use_towers = True -raft_margin = 15 -raft_airgap = 0.3 -raft_surface_layers = 2 -raft_surface_thickness = =resolveOrValue('layer_height') -raft_interface_thickness = =resolveOrValue('layer_height') * 1.5 -raft_interface_line_width = =line_width * 2 -raft_interface_line_spacing = =raft_interface_line_width + 0.2 -support_bottom_height = =extruderValue(support_interface_extruder_nr, 'support_interface_height') -retraction_amount = 6.5 - -cool_min_layer_time_fan_speed_max = 10 -infill_overlap_mm = =infill_line_width * infill_overlap / 100 if infill_sparse_density < 95 and infill_pattern != 'concentric' else 0 -ooze_shield_dist = 2 -retraction_extra_prime_amount = 0 -retraction_min_travel = =line_width * 2 -retraction_prime_speed = =retraction_speed -retraction_speed = 25 -support_bottom_stair_step_height = 0.3 -switch_extruder_prime_speed = =switch_extruder_retraction_speeds -switch_extruder_retraction_amount = =machine_heat_zone_length -switch_extruder_retraction_speeds = 20 +[general] +version = 2 +name = Draft Print +definition = ultimaker3 + +[metadata] +type = quality +quality_type = draft +material = generic_abs_ultimaker3_AA_0.4 +weight = -2 + +[values] +machine_nozzle_cool_down_speed = 0.85 +machine_nozzle_heat_up_speed = 1.5 +material_print_temperature = 240 +prime_tower_size = 16 +skin_overlap = 20 +speed_print = 60 +speed_topbottom = =math.ceil(speed_print * 35 / 60) +speed_wall = =math.ceil(speed_print * 45 / 60) +speed_wall_0 = =math.ceil(speed_wall * 35 / 45) +wall_thickness = 1 + diff --git a/resources/quality/ultimaker3/um3_aa0.4_ABS_Fast_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_ABS_Fast_Print.inst.cfg index ef4122439d..3b5d37024d 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_ABS_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_ABS_Fast_Print.inst.cfg @@ -1,125 +1,23 @@ -[general] -version = 2 -name = Fast Print -definition = ultimaker3 - -[metadata] -type = quality -quality_type = fast -material = generic_abs_ultimaker3_AA_0.4 -weight = -1 - -[values] -acceleration_enabled = True -acceleration_infill = =acceleration_print -acceleration_layer_0 = =acceleration_topbottom -acceleration_prime_tower = =math.ceil(acceleration_print * 2000 / 4000) -acceleration_print = 4000 -acceleration_support = =math.ceil(acceleration_print * 2000 / 4000) -acceleration_support_infill = =acceleration_support -acceleration_support_interface = =acceleration_topbottom -acceleration_topbottom = =math.ceil(acceleration_print * 500 / 4000) -acceleration_wall = =math.ceil(acceleration_print * 1000 / 4000) -acceleration_wall_0 = =math.ceil(acceleration_wall * 500 / 1000) -acceleration_wall_x = =acceleration_wall -adhesion_type = brim -brim_width = 7 -cool_fan_full_at_height = =layer_height_0 + 4 * layer_height -cool_fan_speed = 5 -cool_fan_speed_max = 100 -cool_min_layer_time = 5 -cool_min_speed = 7 -infill_line_width = =round(line_width * 0.5 / 0.35, 2) -infill_pattern = triangles -infill_sparse_density = 20 -infill_wipe_dist = 0 -jerk_enabled = True -jerk_infill = =jerk_print -jerk_layer_0 = =jerk_topbottom -jerk_prime_tower = =math.ceil(jerk_print * 15 / 25) -jerk_print = 25 -jerk_support = =math.ceil(jerk_print * 15 / 25) -jerk_support_infill = =jerk_support -jerk_support_interface = =jerk_topbottom -jerk_topbottom = =math.ceil(jerk_print * 5 / 25) -jerk_wall = =math.ceil(jerk_print * 10 / 25) -jerk_wall_0 = =math.ceil(jerk_wall * 5 / 10) -jerk_wall_x = =jerk_wall -layer_height = 0.15 -layer_height_0 = =round(machine_nozzle_size / 1.5, 2) -line_width = =machine_nozzle_size * 0.875 -machine_min_cool_heat_time_window = 15 -machine_nozzle_cool_down_speed = 0.85 -machine_nozzle_heat_up_speed = 1.5 -material_bed_temperature = 80 -material_print_temperature = 235 -material_standby_temperature = 100 -multiple_mesh_overlap = 0 -ooze_shield_angle = 60 -ooze_shield_enabled = False -prime_tower_enable = True -prime_tower_size = 16 -prime_tower_wipe_enabled = True -raft_base_thickness = =resolveOrValue('layer_height_0') * 1.2 -raft_speed = =speed_print / 60 * 30 -raft_interface_speed = =raft_speed * 0.75 -raft_base_speed = =0.75 * raft_speed -raft_acceleration = =acceleration_print -raft_jerk = =jerk_print -retraction_count_max = 25 -retraction_extrusion_window = 1 -retraction_hop = 2 -retraction_hop_enabled = True -retraction_hop_only_when_collides = True -skin_overlap = 15 -speed_infill = =speed_print -speed_layer_0 = 20 -speed_prime_tower = =speed_topbottom -speed_print = 60 -speed_support = =speed_wall_0 -speed_support_interface = =speed_topbottom -speed_topbottom = =math.ceil(speed_print * 30 / 60) -speed_travel = 250 -speed_wall = =math.ceil(speed_print * 40 / 60) -speed_wall_0 = =math.ceil(speed_wall * 30 / 40) -speed_wall_x = =speed_wall -support_angle = 60 -support_bottom_distance = =support_z_distance / 2 -support_top_distance = =support_z_distance -support_xy_distance = =wall_line_width_0 * 2.5 -support_xy_distance_overhang = =wall_line_width_0 -support_z_distance = =layer_height * 2 -top_bottom_thickness = 1.2 -travel_avoid_distance = 3 -travel_compensate_overlapping_walls_enabled = True -wall_0_inset = 0 -wall_line_width_x = =round(line_width * 0.3 / 0.35, 2) -wall_thickness = 1.3 -support_line_width = =line_width -support_pattern = zigzag -support_infill_rate = 15 -support_join_distance = 2 -support_offset = 0.2 -support_interface_enable = False -support_use_towers = True -raft_margin = 15 -raft_airgap = 0.3 -raft_surface_layers = 2 -raft_surface_thickness = =resolveOrValue('layer_height') -raft_interface_thickness = =resolveOrValue('layer_height') * 1.5 -raft_interface_line_width = =line_width * 2 -raft_interface_line_spacing = =raft_interface_line_width + 0.2 -support_bottom_height = =extruderValue(support_interface_extruder_nr, 'support_interface_height') -retraction_amount = 6.5 - -cool_min_layer_time_fan_speed_max = 10 -infill_overlap_mm = =infill_line_width * infill_overlap / 100 if infill_sparse_density < 95 and infill_pattern != 'concentric' else 0 -ooze_shield_dist = 2 -retraction_extra_prime_amount = 0 -retraction_min_travel = =line_width * 2 -retraction_prime_speed = =retraction_speed -retraction_speed = 25 -support_bottom_stair_step_height = 0.3 -switch_extruder_prime_speed = =switch_extruder_retraction_speeds -switch_extruder_retraction_amount = =machine_heat_zone_length -switch_extruder_retraction_speeds = 20 +[general] +version = 2 +name = Fast Print +definition = ultimaker3 + +[metadata] +type = quality +quality_type = fast +material = generic_abs_ultimaker3_AA_0.4 +weight = -1 + +[values] +cool_min_speed = 7 +machine_nozzle_cool_down_speed = 0.85 +machine_nozzle_heat_up_speed = 1.5 +material_print_temperature = 235 +material_standby_temperature = 100 +prime_tower_size = 16 +speed_print = 60 +speed_topbottom = =math.ceil(speed_print * 30 / 60) +speed_wall = =math.ceil(speed_print * 40 / 60) +speed_wall_0 = =math.ceil(speed_wall * 30 / 40) + diff --git a/resources/quality/ultimaker3/um3_aa0.4_ABS_High_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_ABS_High_Quality.inst.cfg index 8e4b7ea767..dcb8e85563 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_ABS_High_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_ABS_High_Quality.inst.cfg @@ -1,125 +1,21 @@ -[general] -version = 2 -name = High Quality -definition = ultimaker3 - -[metadata] -type = quality -quality_type = high -material = generic_abs_ultimaker3_AA_0.4 -weight = 1 - -[values] -acceleration_enabled = True -acceleration_infill = =acceleration_print -acceleration_layer_0 = =acceleration_topbottom -acceleration_prime_tower = =math.ceil(acceleration_print * 2000 / 4000) -acceleration_print = 4000 -acceleration_support = =math.ceil(acceleration_print * 2000 / 4000) -acceleration_support_infill = =acceleration_support -acceleration_support_interface = =acceleration_topbottom -acceleration_topbottom = =math.ceil(acceleration_print * 500 / 4000) -acceleration_wall = =math.ceil(acceleration_print * 1000 / 4000) -acceleration_wall_0 = =math.ceil(acceleration_wall * 500 / 1000) -acceleration_wall_x = =acceleration_wall -adhesion_type = brim -brim_width = 7 -cool_fan_full_at_height = =layer_height_0 + 4 * layer_height -cool_fan_speed = 5 -cool_fan_speed_max = 100 -cool_min_layer_time = 5 -cool_min_speed = 12 -infill_line_width = =round(line_width * 0.5 / 0.35, 2) -infill_pattern = triangles -infill_sparse_density = 20 -infill_wipe_dist = 0 -jerk_enabled = True -jerk_infill = =jerk_print -jerk_layer_0 = =jerk_topbottom -jerk_prime_tower = =math.ceil(jerk_print * 15 / 25) -jerk_print = 25 -jerk_support = =math.ceil(jerk_print * 15 / 25) -jerk_support_infill = =jerk_support -jerk_support_interface = =jerk_topbottom -jerk_topbottom = =math.ceil(jerk_print * 5 / 25) -jerk_wall = =math.ceil(jerk_print * 10 / 25) -jerk_wall_0 = =math.ceil(jerk_wall * 5 / 10) -jerk_wall_x = =jerk_wall -layer_height = 0.06 -layer_height_0 = =round(machine_nozzle_size / 1.5, 2) -line_width = =machine_nozzle_size * 0.875 -machine_min_cool_heat_time_window = 15 -machine_nozzle_cool_down_speed = 0.8 -machine_nozzle_heat_up_speed = 1.5 -material_bed_temperature = 80 -material_print_temperature = 225 -material_standby_temperature = 100 -multiple_mesh_overlap = 0 -ooze_shield_angle = 60 -ooze_shield_enabled = False -prime_tower_enable = True -prime_tower_size = 16 -prime_tower_wipe_enabled = True -raft_base_thickness = =resolveOrValue('layer_height_0') * 1.2 -raft_speed = =speed_print / 60 * 30 -raft_interface_speed = =raft_speed * 0.75 -raft_base_speed = =0.75 * raft_speed -raft_acceleration = =acceleration_print -raft_jerk = =jerk_print -retraction_count_max = 25 -retraction_extrusion_window = 1 -retraction_hop = 2 -retraction_hop_enabled = True -retraction_hop_only_when_collides = True -skin_overlap = 15 -speed_infill = =speed_print -speed_layer_0 = 20 -speed_prime_tower = =speed_topbottom -speed_print = 50 -speed_support = =speed_wall_0 -speed_support_interface = =speed_topbottom -speed_topbottom = =math.ceil(speed_print * 30 / 50) -speed_travel = 250 -speed_wall = =math.ceil(speed_print * 30 / 50) -speed_wall_0 = =math.ceil(speed_wall * 20 / 30) -speed_wall_x = =speed_wall -support_angle = 60 -support_bottom_distance = =support_z_distance / 2 -support_top_distance = =support_z_distance -support_xy_distance = =wall_line_width_0 * 2.5 -support_xy_distance_overhang = =wall_line_width_0 -support_z_distance = =layer_height * 2 -top_bottom_thickness = 1.2 -travel_avoid_distance = 3 -travel_compensate_overlapping_walls_enabled = True -wall_0_inset = 0 -wall_line_width_x = =round(line_width * 0.3 / 0.35, 2) -wall_thickness = 1.3 -support_line_width = =line_width -support_pattern = zigzag -support_infill_rate = 15 -support_join_distance = 2 -support_offset = 0.2 -support_interface_enable = False -support_use_towers = True -raft_margin = 15 -raft_airgap = 0.3 -raft_surface_layers = 2 -raft_surface_thickness = =resolveOrValue('layer_height') -raft_interface_thickness = =resolveOrValue('layer_height') * 1.5 -raft_interface_line_width = =line_width * 2 -raft_interface_line_spacing = =raft_interface_line_width + 0.2 -support_bottom_height = =extruderValue(support_interface_extruder_nr, 'support_interface_height') -retraction_amount = 6.5 - -cool_min_layer_time_fan_speed_max = 10 -infill_overlap_mm = =infill_line_width * infill_overlap / 100 if infill_sparse_density < 95 and infill_pattern != 'concentric' else 0 -ooze_shield_dist = 2 -retraction_extra_prime_amount = 0 -retraction_min_travel = =line_width * 2 -retraction_prime_speed = =retraction_speed -retraction_speed = 25 -support_bottom_stair_step_height = 0.3 -switch_extruder_prime_speed = =switch_extruder_retraction_speeds -switch_extruder_retraction_amount = =machine_heat_zone_length -switch_extruder_retraction_speeds = 20 +[general] +version = 2 +name = High Quality +definition = ultimaker3 + +[metadata] +type = quality +quality_type = high +material = generic_abs_ultimaker3_AA_0.4 +weight = 1 + +[values] +cool_min_speed = 12 +machine_nozzle_cool_down_speed = 0.8 +machine_nozzle_heat_up_speed = 1.5 +material_standby_temperature = 100 +prime_tower_size = 16 +speed_print = 50 +speed_topbottom = =math.ceil(speed_print * 30 / 50) +speed_wall = =math.ceil(speed_print * 30 / 50) + diff --git a/resources/quality/ultimaker3/um3_aa0.4_ABS_Normal_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_ABS_Normal_Quality.inst.cfg index 7e17443c2b..4e99ac446e 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_ABS_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_ABS_Normal_Quality.inst.cfg @@ -1,125 +1,21 @@ -[general] -version = 2 -name = Normal Quality -definition = ultimaker3 - -[metadata] -type = quality -quality_type = normal -material = generic_abs_ultimaker3_AA_0.4 -weight = 0 - -[values] -acceleration_enabled = True -acceleration_infill = =acceleration_print -acceleration_layer_0 = =acceleration_topbottom -acceleration_prime_tower = =math.ceil(acceleration_print * 2000 / 4000) -acceleration_print = 4000 -acceleration_support = =math.ceil(acceleration_print * 2000 / 4000) -acceleration_support_infill = =acceleration_support -acceleration_support_interface = =acceleration_topbottom -acceleration_topbottom = =math.ceil(acceleration_print * 500 / 4000) -acceleration_wall = =math.ceil(acceleration_print * 1000 / 4000) -acceleration_wall_0 = =math.ceil(acceleration_wall * 500 / 1000) -acceleration_wall_x = =acceleration_wall -adhesion_type = brim -brim_width = 7 -cool_fan_full_at_height = =layer_height_0 + 4 * layer_height -cool_fan_speed = 5 -cool_fan_speed_max = 100 -cool_min_layer_time = 5 -cool_min_speed = 5 -infill_line_width = =round(line_width * 0.5 / 0.35, 2) -infill_pattern = triangles -infill_sparse_density = 20 -infill_wipe_dist = 0 -jerk_enabled = True -jerk_infill = =jerk_print -jerk_layer_0 = =jerk_topbottom -jerk_prime_tower = =math.ceil(jerk_print * 15 / 25) -jerk_print = 25 -jerk_support = =math.ceil(jerk_print * 15 / 25) -jerk_support_infill = =jerk_support -jerk_support_interface = =jerk_topbottom -jerk_topbottom = =math.ceil(jerk_print * 5 / 25) -jerk_wall = =math.ceil(jerk_print * 10 / 25) -jerk_wall_0 = =math.ceil(jerk_wall * 5 / 10) -jerk_wall_x = =jerk_wall -layer_height = 0.1 -layer_height_0 = =round(machine_nozzle_size / 1.5, 2) -line_width = =machine_nozzle_size * 0.875 -machine_min_cool_heat_time_window = 15 -machine_nozzle_cool_down_speed = 0.85 -machine_nozzle_heat_up_speed = 1.5 -material_bed_temperature = 80 -material_print_temperature = 230 -material_standby_temperature = 100 -multiple_mesh_overlap = 0 -ooze_shield_angle = 60 -ooze_shield_enabled = False -prime_tower_enable = True -prime_tower_size = 16 -prime_tower_wipe_enabled = True -raft_base_thickness = =resolveOrValue('layer_height_0') * 1.2 -raft_speed = =speed_print / 60 * 30 -raft_interface_speed = =raft_speed * 0.75 -raft_base_speed = =0.75 * raft_speed -raft_acceleration = =acceleration_print -raft_jerk = =jerk_print -retraction_count_max = 25 -retraction_extrusion_window = 1 -retraction_hop = 2 -retraction_hop_enabled = True -retraction_hop_only_when_collides = True -skin_overlap = 15 -speed_infill = =speed_print -speed_layer_0 = 20 -speed_prime_tower = =speed_topbottom -speed_print = 55 -speed_support = =speed_wall_0 -speed_support_interface = =speed_topbottom -speed_topbottom = =math.ceil(speed_print * 30 / 55) -speed_travel = 250 -speed_wall = =math.ceil(speed_print * 30 / 55) -speed_wall_0 = =math.ceil(speed_wall * 20 / 30) -speed_wall_x = =speed_wall -support_angle = 60 -support_bottom_distance = =support_z_distance / 2 -support_top_distance = =support_z_distance -support_xy_distance = =wall_line_width_0 * 2.5 -support_xy_distance_overhang = =wall_line_width_0 -support_z_distance = =layer_height * 2 -top_bottom_thickness = 1.2 -travel_avoid_distance = 3 -travel_compensate_overlapping_walls_enabled = True -wall_0_inset = 0 -wall_line_width_x = =round(line_width * 0.3 / 0.35, 2) -wall_thickness = 1.3 -support_line_width = =line_width -support_pattern = zigzag -support_infill_rate = 15 -support_join_distance = 2 -support_offset = 0.2 -support_interface_enable = False -support_use_towers = True -raft_margin = 15 -raft_airgap = 0.3 -raft_surface_layers = 2 -raft_surface_thickness = =resolveOrValue('layer_height') -raft_interface_thickness = =resolveOrValue('layer_height') * 1.5 -raft_interface_line_width = =line_width * 2 -raft_interface_line_spacing = =raft_interface_line_width + 0.2 -support_bottom_height = =extruderValue(support_interface_extruder_nr, 'support_interface_height') -retraction_amount = 6.5 - -cool_min_layer_time_fan_speed_max = 10 -infill_overlap_mm = =infill_line_width * infill_overlap / 100 if infill_sparse_density < 95 and infill_pattern != 'concentric' else 0 -ooze_shield_dist = 2 -retraction_extra_prime_amount = 0 -retraction_min_travel = =line_width * 2 -retraction_prime_speed = =retraction_speed -retraction_speed = 25 -support_bottom_stair_step_height = 0.3 -switch_extruder_prime_speed = =switch_extruder_retraction_speeds -switch_extruder_retraction_amount = =machine_heat_zone_length -switch_extruder_retraction_speeds = 20 +[general] +version = 2 +name = Normal Quality +definition = ultimaker3 + +[metadata] +type = quality +quality_type = normal +material = generic_abs_ultimaker3_AA_0.4 +weight = 0 + +[values] +machine_nozzle_cool_down_speed = 0.85 +machine_nozzle_heat_up_speed = 1.5 +material_print_temperature = 230 +material_standby_temperature = 100 +prime_tower_size = 16 +speed_print = 55 +speed_topbottom = =math.ceil(speed_print * 30 / 55) +speed_wall = =math.ceil(speed_print * 30 / 55) + diff --git a/resources/quality/ultimaker3/um3_aa0.4_CPE_Draft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_CPE_Draft_Print.inst.cfg index f08ff93edc..d7e0ed62b6 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_CPE_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_CPE_Draft_Print.inst.cfg @@ -1,125 +1,22 @@ -[general] -version = 2 -name = Draft Print -definition = ultimaker3 - -[metadata] -type = quality -quality_type = draft -material = generic_cpe_ultimaker3_AA_0.4 -weight = -2 - -[values] -acceleration_enabled = True -acceleration_infill = =acceleration_print -acceleration_layer_0 = =acceleration_topbottom -acceleration_prime_tower = =math.ceil(acceleration_print * 2000 / 4000) -acceleration_print = 4000 -acceleration_support = =math.ceil(acceleration_print * 2000 / 4000) -acceleration_support_infill = =acceleration_support -acceleration_support_interface = =acceleration_topbottom -acceleration_topbottom = =math.ceil(acceleration_print * 500 / 4000) -acceleration_wall = =math.ceil(acceleration_print * 1000 / 4000) -acceleration_wall_0 = =math.ceil(acceleration_wall * 500 / 1000) -acceleration_wall_x = =acceleration_wall -adhesion_type = brim -brim_width = 7 -cool_fan_full_at_height = =layer_height_0 + 4 * layer_height -cool_fan_speed = 50 -cool_fan_speed_max = 100 -cool_min_layer_time = 5 -cool_min_speed = 5 -infill_line_width = =round(line_width * 0.5 / 0.35, 2) -infill_pattern = triangles -infill_sparse_density = 20 -infill_wipe_dist = 0 -jerk_enabled = True -jerk_infill = =jerk_print -jerk_layer_0 = =jerk_topbottom -jerk_prime_tower = =math.ceil(jerk_print * 15 / 25) -jerk_print = 25 -jerk_support = =math.ceil(jerk_print * 15 / 25) -jerk_support_infill = =jerk_support -jerk_support_interface = =jerk_topbottom -jerk_topbottom = =math.ceil(jerk_print * 5 / 25) -jerk_wall = =math.ceil(jerk_print * 10 / 25) -jerk_wall_0 = =math.ceil(jerk_wall * 5 / 10) -jerk_wall_x = =jerk_wall -layer_height = 0.2 -layer_height_0 = =round(machine_nozzle_size / 1.5, 2) -line_width = =machine_nozzle_size * 0.875 -machine_min_cool_heat_time_window = 15 -machine_nozzle_cool_down_speed = 0.9 -machine_nozzle_heat_up_speed = 1.4 -material_bed_temperature = 70 -material_print_temperature = 250 -material_standby_temperature = 100 -multiple_mesh_overlap = 0 -ooze_shield_angle = 60 -ooze_shield_enabled = False -prime_tower_enable = True -prime_tower_size = 17 -prime_tower_wipe_enabled = True -raft_base_thickness = =resolveOrValue('layer_height_0') * 1.2 -raft_speed = =speed_print / 60 * 30 -raft_interface_speed = =raft_speed * 0.75 -raft_base_speed = =0.75 * raft_speed -raft_acceleration = =acceleration_print -raft_jerk = =jerk_print -retraction_count_max = 25 -retraction_extrusion_window = 1 -retraction_hop = 2 -retraction_hop_enabled = True -retraction_hop_only_when_collides = True -skin_overlap = 20 -speed_infill = =speed_print -speed_layer_0 = 20 -speed_prime_tower = =speed_topbottom -speed_print = 60 -speed_support = =speed_wall_0 -speed_support_interface = =speed_topbottom -speed_topbottom = =math.ceil(speed_print * 35 / 60) -speed_travel = 250 -speed_wall = =math.ceil(speed_print * 45 / 60) -speed_wall_0 = =math.ceil(speed_wall * 35 / 45) -speed_wall_x = =speed_wall -support_angle = 60 -support_bottom_distance = =support_z_distance / 2 -support_top_distance = =support_z_distance -support_xy_distance = =wall_line_width_0 * 2.5 -support_xy_distance_overhang = =wall_line_width_0 -support_z_distance = =layer_height * 2 -top_bottom_thickness = 1.2 -travel_avoid_distance = 3 -travel_compensate_overlapping_walls_enabled = True -wall_0_inset = 0 -wall_line_width_x = =round(line_width * 0.3 / 0.35, 2) -wall_thickness = 1 -support_line_width = =line_width -support_pattern = zigzag -support_infill_rate = 15 -support_join_distance = 2 -support_offset = 0.2 -support_interface_enable = False -support_use_towers = True -raft_margin = 15 -raft_airgap = 0.3 -raft_surface_layers = 2 -raft_surface_thickness = =resolveOrValue('layer_height') -raft_interface_thickness = =resolveOrValue('layer_height') * 1.5 -raft_interface_line_width = =line_width * 2 -raft_interface_line_spacing = =raft_interface_line_width + 0.2 -support_bottom_height = =extruderValue(support_interface_extruder_nr, 'support_interface_height') -retraction_amount = 6.5 - -cool_min_layer_time_fan_speed_max = 10 -infill_overlap_mm = =infill_line_width * infill_overlap / 100 if infill_sparse_density < 95 and infill_pattern != 'concentric' else 0 -ooze_shield_dist = 2 -retraction_extra_prime_amount = 0 -retraction_min_travel = =line_width * 2 -retraction_prime_speed = =retraction_speed -retraction_speed = 25 -support_bottom_stair_step_height = 0.3 -switch_extruder_prime_speed = =switch_extruder_retraction_speeds -switch_extruder_retraction_amount = =machine_heat_zone_length -switch_extruder_retraction_speeds = 20 +[general] +version = 2 +name = Draft Print +definition = ultimaker3 + +[metadata] +type = quality +quality_type = draft +material = generic_cpe_ultimaker3_AA_0.4 +weight = -2 + +[values] +material_print_temperature = 250 +material_standby_temperature = 100 +prime_tower_size = 17 +skin_overlap = 20 +speed_print = 60 +speed_topbottom = =math.ceil(speed_print * 35 / 60) +speed_wall = =math.ceil(speed_print * 45 / 60) +speed_wall_0 = =math.ceil(speed_wall * 35 / 45) +wall_thickness = 1 + diff --git a/resources/quality/ultimaker3/um3_aa0.4_CPE_Fast_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_CPE_Fast_Print.inst.cfg index 32db69c965..5717bf50fe 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_CPE_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_CPE_Fast_Print.inst.cfg @@ -1,125 +1,21 @@ -[general] -version = 2 -name = Fast Print -definition = ultimaker3 - -[metadata] -type = quality -quality_type = fast -material = generic_cpe_ultimaker3_AA_0.4 -weight = -1 - -[values] -acceleration_enabled = True -acceleration_infill = =acceleration_print -acceleration_layer_0 = =acceleration_topbottom -acceleration_prime_tower = =math.ceil(acceleration_print * 2000 / 4000) -acceleration_print = 4000 -acceleration_support = =math.ceil(acceleration_print * 2000 / 4000) -acceleration_support_infill = =acceleration_support -acceleration_support_interface = =acceleration_topbottom -acceleration_topbottom = =math.ceil(acceleration_print * 500 / 4000) -acceleration_wall = =math.ceil(acceleration_print * 1000 / 4000) -acceleration_wall_0 = =math.ceil(acceleration_wall * 500 / 1000) -acceleration_wall_x = =acceleration_wall -adhesion_type = brim -brim_width = 7 -cool_fan_full_at_height = =layer_height_0 + 4 * layer_height -cool_fan_speed = 50 -cool_fan_speed_max = 100 -cool_min_layer_time = 5 -cool_min_speed = 7 -infill_line_width = =round(line_width * 0.5 / 0.35, 2) -infill_pattern = triangles -infill_sparse_density = 20 -infill_wipe_dist = 0 -jerk_enabled = True -jerk_infill = =jerk_print -jerk_layer_0 = =jerk_topbottom -jerk_prime_tower = =math.ceil(jerk_print * 15 / 25) -jerk_print = 25 -jerk_support = =math.ceil(jerk_print * 15 / 25) -jerk_support_infill = =jerk_support -jerk_support_interface = =jerk_topbottom -jerk_topbottom = =math.ceil(jerk_print * 5 / 25) -jerk_wall = =math.ceil(jerk_print * 10 / 25) -jerk_wall_0 = =math.ceil(jerk_wall * 5 / 10) -jerk_wall_x = =jerk_wall -layer_height = 0.15 -layer_height_0 = =round(machine_nozzle_size / 1.5, 2) -line_width = =machine_nozzle_size * 0.875 -machine_min_cool_heat_time_window = 15 -machine_nozzle_cool_down_speed = 0.9 -machine_nozzle_heat_up_speed = 1.4 -material_bed_temperature = 70 -material_print_temperature = 245 -material_standby_temperature = 100 -multiple_mesh_overlap = 0 -ooze_shield_angle = 60 -ooze_shield_enabled = False -prime_tower_enable = True -prime_tower_size = 17 -prime_tower_wipe_enabled = True -raft_base_thickness = =resolveOrValue('layer_height_0') * 1.2 -raft_speed = =speed_print / 60 * 30 -raft_interface_speed = =raft_speed * 0.75 -raft_base_speed = =0.75 * raft_speed -raft_acceleration = =acceleration_print -raft_jerk = =jerk_print -retraction_count_max = 25 -retraction_extrusion_window = 1 -retraction_hop = 2 -retraction_hop_enabled = True -retraction_hop_only_when_collides = True -skin_overlap = 15 -speed_infill = =speed_print -speed_layer_0 = 20 -speed_prime_tower = =speed_topbottom -speed_print = 60 -speed_support = =speed_wall_0 -speed_support_interface = =speed_topbottom -speed_topbottom = =math.ceil(speed_print * 30 / 60) -speed_travel = 250 -speed_wall = =math.ceil(speed_print * 40 / 60) -speed_wall_0 = =math.ceil(speed_wall * 30 / 40) -speed_wall_x = =speed_wall -support_angle = 60 -support_bottom_distance = =support_z_distance / 2 -support_top_distance = =support_z_distance -support_xy_distance = =wall_line_width_0 * 2.5 -support_xy_distance_overhang = =wall_line_width_0 -support_z_distance = =layer_height * 2 -top_bottom_thickness = 1.2 -travel_avoid_distance = 3 -travel_compensate_overlapping_walls_enabled = True -wall_0_inset = 0 -wall_line_width_x = =round(line_width * 0.3 / 0.35, 2) -wall_thickness = 1.3 -support_line_width = =line_width -support_pattern = zigzag -support_infill_rate = 15 -support_join_distance = 2 -support_offset = 0.2 -support_interface_enable = False -support_use_towers = True -raft_margin = 15 -raft_airgap = 0.3 -raft_surface_layers = 2 -raft_surface_thickness = =resolveOrValue('layer_height') -raft_interface_thickness = =resolveOrValue('layer_height') * 1.5 -raft_interface_line_width = =line_width * 2 -raft_interface_line_spacing = =raft_interface_line_width + 0.2 -support_bottom_height = =extruderValue(support_interface_extruder_nr, 'support_interface_height') -retraction_amount = 6.5 - -cool_min_layer_time_fan_speed_max = 10 -infill_overlap_mm = =infill_line_width * infill_overlap / 100 if infill_sparse_density < 95 and infill_pattern != 'concentric' else 0 -ooze_shield_dist = 2 -retraction_extra_prime_amount = 0 -retraction_min_travel = =line_width * 2 -retraction_prime_speed = =retraction_speed -retraction_speed = 25 -support_bottom_stair_step_height = 0.3 -switch_extruder_prime_speed = =switch_extruder_retraction_speeds -switch_extruder_retraction_amount = =machine_heat_zone_length -switch_extruder_retraction_speeds = 20 +[general] +version = 2 +name = Fast Print +definition = ultimaker3 + +[metadata] +type = quality +quality_type = fast +material = generic_cpe_ultimaker3_AA_0.4 +weight = -1 + +[values] +cool_min_speed = 7 +material_print_temperature = 245 +material_standby_temperature = 100 +prime_tower_size = 17 +speed_print = 60 +speed_topbottom = =math.ceil(speed_print * 30 / 60) +speed_wall = =math.ceil(speed_print * 40 / 60) +speed_wall_0 = =math.ceil(speed_wall * 30 / 40) + diff --git a/resources/quality/ultimaker3/um3_aa0.4_CPE_High_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_CPE_High_Quality.inst.cfg index 205aa3da84..e058ef8cac 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_CPE_High_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_CPE_High_Quality.inst.cfg @@ -1,125 +1,21 @@ -[general] -version = 2 -name = High Quality -definition = ultimaker3 - -[metadata] -type = quality -quality_type = high -material = generic_cpe_ultimaker3_AA_0.4 -weight = 1 - -[values] -acceleration_enabled = True -acceleration_infill = =acceleration_print -acceleration_layer_0 = =acceleration_topbottom -acceleration_prime_tower = =math.ceil(acceleration_print * 2000 / 4000) -acceleration_print = 4000 -acceleration_support = =math.ceil(acceleration_print * 2000 / 4000) -acceleration_support_infill = =acceleration_support -acceleration_support_interface = =acceleration_topbottom -acceleration_topbottom = =math.ceil(acceleration_print * 500 / 4000) -acceleration_wall = =math.ceil(acceleration_print * 1000 / 4000) -acceleration_wall_0 = =math.ceil(acceleration_wall * 500 / 1000) -acceleration_wall_x = =acceleration_wall -adhesion_type = brim -brim_width = 7 -cool_fan_full_at_height = =layer_height_0 + 4 * layer_height -cool_fan_speed = 50 -cool_fan_speed_max = 100 -cool_min_layer_time = 5 -cool_min_speed = 12 -infill_line_width = =round(line_width * 0.5 / 0.35, 2) -infill_pattern = triangles -infill_sparse_density = 20 -infill_wipe_dist = 0 -jerk_enabled = True -jerk_infill = =jerk_print -jerk_layer_0 = =jerk_topbottom -jerk_prime_tower = =math.ceil(jerk_print * 15 / 25) -jerk_print = 25 -jerk_support = =math.ceil(jerk_print * 15 / 25) -jerk_support_infill = =jerk_support -jerk_support_interface = =jerk_topbottom -jerk_topbottom = =math.ceil(jerk_print * 5 / 25) -jerk_wall = =math.ceil(jerk_print * 10 / 25) -jerk_wall_0 = =math.ceil(jerk_wall * 5 / 10) -jerk_wall_x = =jerk_wall -layer_height = 0.06 -layer_height_0 = =round(machine_nozzle_size / 1.5, 2) -line_width = =machine_nozzle_size * 0.875 -machine_min_cool_heat_time_window = 15 -machine_nozzle_cool_down_speed = 0.85 -machine_nozzle_heat_up_speed = 1.5 -material_bed_temperature = 70 -material_print_temperature = 235 -material_standby_temperature = 100 -multiple_mesh_overlap = 0 -ooze_shield_angle = 60 -ooze_shield_enabled = False -prime_tower_enable = True -prime_tower_size = 17 -prime_tower_wipe_enabled = True -raft_base_thickness = =resolveOrValue('layer_height_0') * 1.2 -raft_speed = =speed_print / 60 * 30 -raft_interface_speed = =raft_speed * 0.75 -raft_base_speed = =0.75 * raft_speed -raft_acceleration = =acceleration_print -raft_jerk = =jerk_print -retraction_count_max = 25 -retraction_extrusion_window = 1 -retraction_hop = 2 -retraction_hop_enabled = True -retraction_hop_only_when_collides = True -skin_overlap = 15 -speed_infill = =speed_print -speed_layer_0 = 20 -speed_prime_tower = =speed_topbottom -speed_print = 50 -speed_support = =speed_wall_0 -speed_support_interface = =speed_topbottom -speed_topbottom = =math.ceil(speed_print * 30 / 50) -speed_travel = 250 -speed_wall = =math.ceil(speed_print * 30 / 50) -speed_wall_0 = =math.ceil(speed_wall * 20 / 30) -speed_wall_x = =speed_wall -support_angle = 60 -support_bottom_distance = =support_z_distance / 2 -support_top_distance = =support_z_distance -support_xy_distance = =wall_line_width_0 * 2.5 -support_xy_distance_overhang = =wall_line_width_0 -support_z_distance = =layer_height * 2 -top_bottom_thickness = 1.2 -travel_avoid_distance = 3 -travel_compensate_overlapping_walls_enabled = True -wall_0_inset = 0 -wall_line_width_x = =round(line_width * 0.3 / 0.35, 2) -wall_thickness = 1.3 -support_line_width = =line_width -support_pattern = zigzag -support_infill_rate = 15 -support_join_distance = 2 -support_offset = 0.2 -support_interface_enable = False -support_use_towers = True -raft_margin = 15 -raft_airgap = 0.3 -raft_surface_layers = 2 -raft_surface_thickness = =resolveOrValue('layer_height') -raft_interface_thickness = =resolveOrValue('layer_height') * 1.5 -raft_interface_line_width = =line_width * 2 -raft_interface_line_spacing = =raft_interface_line_width + 0.2 -support_bottom_height = =extruderValue(support_interface_extruder_nr, 'support_interface_height') -retraction_amount = 6.5 - -cool_min_layer_time_fan_speed_max = 10 -infill_overlap_mm = =infill_line_width * infill_overlap / 100 if infill_sparse_density < 95 and infill_pattern != 'concentric' else 0 -ooze_shield_dist = 2 -retraction_extra_prime_amount = 0 -retraction_min_travel = =line_width * 2 -retraction_prime_speed = =retraction_speed -retraction_speed = 25 -support_bottom_stair_step_height = 0.3 -switch_extruder_prime_speed = =switch_extruder_retraction_speeds -switch_extruder_retraction_amount = =machine_heat_zone_length -switch_extruder_retraction_speeds = 20 +[general] +version = 2 +name = High Quality +definition = ultimaker3 + +[metadata] +type = quality +quality_type = high +material = generic_cpe_ultimaker3_AA_0.4 +weight = 1 + +[values] +cool_min_speed = 12 +machine_nozzle_cool_down_speed = 0.85 +machine_nozzle_heat_up_speed = 1.5 +material_standby_temperature = 100 +prime_tower_size = 17 +speed_print = 50 +speed_topbottom = =math.ceil(speed_print * 30 / 50) +speed_wall = =math.ceil(speed_print * 30 / 50) + diff --git a/resources/quality/ultimaker3/um3_aa0.4_CPE_Normal_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_CPE_Normal_Quality.inst.cfg index 15bd999cf4..1ccd1c54d3 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_CPE_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_CPE_Normal_Quality.inst.cfg @@ -1,125 +1,21 @@ -[general] -version = 2 -name = Normal Quality -definition = ultimaker3 - -[metadata] -type = quality -quality_type = normal -material = generic_cpe_ultimaker3_AA_0.4 -weight = 0 - -[values] -acceleration_enabled = True -acceleration_infill = =acceleration_print -acceleration_layer_0 = =acceleration_topbottom -acceleration_prime_tower = =math.ceil(acceleration_print * 2000 / 4000) -acceleration_print = 4000 -acceleration_support = =math.ceil(acceleration_print * 2000 / 4000) -acceleration_support_infill = =acceleration_support -acceleration_support_interface = =acceleration_topbottom -acceleration_topbottom = =math.ceil(acceleration_print * 500 / 4000) -acceleration_wall = =math.ceil(acceleration_print * 1000 / 4000) -acceleration_wall_0 = =math.ceil(acceleration_wall * 500 / 1000) -acceleration_wall_x = =acceleration_wall -adhesion_type = brim -brim_width = 7 -cool_fan_full_at_height = =layer_height_0 + 4 * layer_height -cool_fan_speed = 50 -cool_fan_speed_max = 100 -cool_min_layer_time = 5 -cool_min_speed = 5 -infill_line_width = =round(line_width * 0.5 / 0.35, 2) -infill_pattern = triangles -infill_sparse_density = 20 -infill_wipe_dist = 0 -jerk_enabled = True -jerk_infill = =jerk_print -jerk_layer_0 = =jerk_topbottom -jerk_prime_tower = =math.ceil(jerk_print * 15 / 25) -jerk_print = 25 -jerk_support = =math.ceil(jerk_print * 15 / 25) -jerk_support_infill = =jerk_support -jerk_support_interface = =jerk_topbottom -jerk_topbottom = =math.ceil(jerk_print * 5 / 25) -jerk_wall = =math.ceil(jerk_print * 10 / 25) -jerk_wall_0 = =math.ceil(jerk_wall * 5 / 10) -jerk_wall_x = =jerk_wall -layer_height = 0.1 -layer_height_0 = =round(machine_nozzle_size / 1.5, 2) -line_width = =machine_nozzle_size * 0.875 -machine_min_cool_heat_time_window = 15 -machine_nozzle_cool_down_speed = 0.85 -machine_nozzle_heat_up_speed = 1.5 -material_bed_temperature = 70 -material_print_temperature = 240 -material_standby_temperature = 100 -multiple_mesh_overlap = 0 -ooze_shield_angle = 60 -ooze_shield_enabled = False -raft_base_thickness = =resolveOrValue('layer_height_0') * 1.2 -raft_speed = =speed_print / 60 * 30 -raft_interface_speed = =raft_speed * 0.75 -raft_base_speed = =0.75 * raft_speed -raft_acceleration = =acceleration_print -raft_jerk = =jerk_print -prime_tower_enable = True -prime_tower_size = 17 -prime_tower_wipe_enabled = True -retraction_count_max = 25 -retraction_extrusion_window = 1 -retraction_hop = 2 -retraction_hop_enabled = True -retraction_hop_only_when_collides = True -skin_overlap = 15 -speed_infill = =speed_print -speed_layer_0 = 20 -speed_prime_tower = =speed_topbottom -speed_print = 55 -speed_support = =speed_wall_0 -speed_support_interface = =speed_topbottom -speed_topbottom = =math.ceil(speed_print * 30 / 55) -speed_travel = 250 -speed_wall = =math.ceil(speed_print * 30 / 55) -speed_wall_0 = =math.ceil(speed_wall * 20 / 30) -speed_wall_x = =speed_wall -support_angle = 60 -support_bottom_distance = =support_z_distance / 2 -support_top_distance = =support_z_distance -support_xy_distance = =wall_line_width_0 * 2.5 -support_xy_distance_overhang = =wall_line_width_0 -support_z_distance = =layer_height * 2 -top_bottom_thickness = 1.2 -travel_avoid_distance = 3 -travel_compensate_overlapping_walls_enabled = True -wall_0_inset = 0 -wall_line_width_x = =round(line_width * 0.3 / 0.35, 2) -wall_thickness = 1.3 -support_line_width = =line_width -support_pattern = zigzag -support_infill_rate = 15 -support_join_distance = 2 -support_offset = 0.2 -support_interface_enable = False -support_use_towers = True -raft_margin = 15 -raft_airgap = 0.3 -raft_surface_layers = 2 -raft_surface_thickness = =resolveOrValue('layer_height') -raft_interface_thickness = =resolveOrValue('layer_height') * 1.5 -raft_interface_line_width = =line_width * 2 -raft_interface_line_spacing = =raft_interface_line_width + 0.2 -support_bottom_height = =extruderValue(support_interface_extruder_nr, 'support_interface_height') -retraction_amount = 6.5 - -cool_min_layer_time_fan_speed_max = 10 -infill_overlap_mm = =infill_line_width * infill_overlap / 100 if infill_sparse_density < 95 and infill_pattern != 'concentric' else 0 -ooze_shield_dist = 2 -retraction_extra_prime_amount = 0 -retraction_min_travel = =line_width * 2 -retraction_prime_speed = =retraction_speed -retraction_speed = 25 -support_bottom_stair_step_height = 0.3 -switch_extruder_prime_speed = =switch_extruder_retraction_speeds -switch_extruder_retraction_amount = =machine_heat_zone_length -switch_extruder_retraction_speeds = 20 +[general] +version = 2 +name = Normal Quality +definition = ultimaker3 + +[metadata] +type = quality +quality_type = normal +material = generic_cpe_ultimaker3_AA_0.4 +weight = 0 + +[values] +machine_nozzle_cool_down_speed = 0.85 +machine_nozzle_heat_up_speed = 1.5 +material_print_temperature = 240 +material_standby_temperature = 100 +prime_tower_size = 17 +speed_print = 55 +speed_topbottom = =math.ceil(speed_print * 30 / 55) +speed_wall = =math.ceil(speed_print * 30 / 55) + diff --git a/resources/quality/ultimaker3/um3_aa0.4_Nylon_Draft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_Nylon_Draft_Print.inst.cfg index 31287dd903..9774c9b621 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_Nylon_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_Nylon_Draft_Print.inst.cfg @@ -1,127 +1,33 @@ -[general] -version = 2 -name = Draft Print -definition = ultimaker3 - -[metadata] -type = quality -quality_type = draft -material = generic_nylon_ultimaker3_AA_0.4 -weight = -2 - -[values] -acceleration_enabled = True -acceleration_infill = =acceleration_print -acceleration_layer_0 = =acceleration_topbottom -acceleration_prime_tower = =math.ceil(acceleration_print * 2000 / 4000) -acceleration_print = 4000 -acceleration_support = =math.ceil(acceleration_print * 2000 / 4000) -acceleration_support_infill = =acceleration_support -acceleration_support_interface = =acceleration_topbottom -acceleration_topbottom = =math.ceil(acceleration_print * 500 / 4000) -acceleration_wall = =math.ceil(acceleration_print * 1000 / 4000) -acceleration_wall_0 = =math.ceil(acceleration_wall * 500 / 1000) -acceleration_wall_x = =acceleration_wall -adhesion_type = raft -cool_fan_full_at_height = =layer_height_0 + 4 * layer_height -cool_fan_speed = 40 -cool_fan_speed_max = 100 -cool_min_layer_time = 5 -cool_min_layer_time_fan_speed_max = 20 -cool_min_speed = 10 -infill_line_width = =round(line_width * 0.5 / 0.35, 2) -infill_overlap_mm = 0.05 -infill_pattern = triangles -infill_sparse_density = 20 -infill_wipe_dist = 0 -jerk_enabled = True -jerk_infill = =jerk_print -jerk_layer_0 = =jerk_topbottom -jerk_prime_tower = =math.ceil(jerk_print * 15 / 25) -jerk_print = 25 -jerk_support = =math.ceil(jerk_print * 15 / 25) -jerk_support_infill = =jerk_support -jerk_support_interface = =jerk_topbottom -jerk_topbottom = =math.ceil(jerk_print * 5 / 25) -jerk_wall = =math.ceil(jerk_print * 10 / 25) -jerk_wall_0 = =math.ceil(jerk_wall * 5 / 10) -jerk_wall_x = =jerk_wall -layer_height = 0.2 -layer_height_0 = =round(machine_nozzle_size / 1.5, 2) -line_width = =machine_nozzle_size -machine_min_cool_heat_time_window = 15 -machine_nozzle_cool_down_speed = 0.9 -machine_nozzle_heat_up_speed = 1.4 -material_bed_temperature = 60 -material_print_temperature = 255 -material_standby_temperature = 100 -multiple_mesh_overlap = 0 -ooze_shield_angle = 40 -ooze_shield_dist = 2 -ooze_shield_enabled = False -raft_base_thickness = =resolveOrValue('layer_height_0') * 1.2 -raft_speed = =speed_print / 60 * 30 -raft_interface_speed = =raft_speed * 0.75 -raft_base_speed = =0.75 * raft_speed -prime_tower_enable = True -prime_tower_size = 15 -prime_tower_wipe_enabled = True -raft_acceleration = =acceleration_layer_0 -raft_airgap = =round(layer_height_0 * 0.85, 2) -raft_interface_thickness = =round(machine_nozzle_size * 0.3 / 0.4, 2) -raft_jerk = =jerk_layer_0 -raft_margin = 10 -raft_surface_thickness = =round(machine_nozzle_size * 0.2 / 0.4, 2) -retraction_amount = 8 -retraction_count_max = 25 -retraction_extra_prime_amount = 0 -retraction_extrusion_window = 1 -retraction_hop = 2 -retraction_hop_enabled = True -retraction_hop_only_when_collides = True -retraction_speed = 25 -skin_overlap = 50 -speed_infill = =speed_print -speed_layer_0 = 10 -speed_prime_tower = =speed_topbottom -speed_print = 70 -speed_support = =speed_wall_0 -speed_support_interface = =speed_topbottom -speed_topbottom = =math.ceil(speed_print * 30 / 70) -speed_travel = 250 -speed_wall = =math.ceil(speed_print * 30 / 70) -speed_wall_0 = =math.ceil(speed_wall * 20 / 30) -speed_wall_x = =speed_wall -support_angle = 60 -support_bottom_distance = =support_z_distance / 2 -support_top_distance = =support_z_distance -support_xy_distance = =wall_line_width_0 * 2.5 -support_xy_distance_overhang = =wall_line_width_0 -support_z_distance = =layer_height * 2 -switch_extruder_prime_speed = 30 -switch_extruder_retraction_amount = 30 -switch_extruder_retraction_speeds = 40 -top_bottom_thickness = 1.2 -travel_avoid_distance = 3 -travel_compensate_overlapping_walls_enabled = True -wall_0_inset = 0 -wall_thickness = 1.3 - -support_line_width = =line_width -support_pattern = zigzag -support_infill_rate = 15 -support_join_distance = 2 -support_offset = 0.2 -support_interface_enable = False -support_use_towers = True -raft_surface_layers = 2 -raft_interface_line_width = =line_width * 2 -raft_interface_line_spacing = =raft_interface_line_width + 0.2 -support_bottom_height = =extruderValue(support_interface_extruder_nr, 'support_interface_height') - -brim_width = 7 -retraction_min_travel = =line_width * 2 -retraction_prime_speed = =retraction_speed -support_bottom_stair_step_height = 0.3 -wall_line_width_x = =wall_line_width - +[general] +version = 2 +name = Draft Print +definition = ultimaker3 + +[metadata] +type = quality +quality_type = draft +material = generic_nylon_ultimaker3_AA_0.4 +weight = -2 + +[values] +adhesion_type = raft +cool_min_layer_time_fan_speed_max = 20 +cool_min_speed = 10 +infill_line_width = =round(line_width * 0.5 / 0.4, 2) +line_width = =machine_nozzle_size +material_print_temperature = 255 +material_standby_temperature = 100 +ooze_shield_angle = 40 +raft_acceleration = =acceleration_layer_0 +raft_airgap = =round(layer_height_0 * 0.85, 2) +raft_interface_thickness = =round(machine_nozzle_size * 0.3 / 0.4, 2) +raft_jerk = =jerk_layer_0 +raft_margin = 10 +raft_surface_thickness = =round(machine_nozzle_size * 0.2 / 0.4, 2) +skin_overlap = 50 +speed_layer_0 = 10 +switch_extruder_prime_speed = 30 +switch_extruder_retraction_amount = 30 +switch_extruder_retraction_speeds = 40 +wall_line_width_x = =wall_line_width + diff --git a/resources/quality/ultimaker3/um3_aa0.4_Nylon_Fast_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_Nylon_Fast_Print.inst.cfg index 23c71c6160..be788b4dd0 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_Nylon_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_Nylon_Fast_Print.inst.cfg @@ -1,125 +1,33 @@ -[general] -version = 2 -name = Fast Print -definition = ultimaker3 - -[metadata] -type = quality -quality_type = fast -material = generic_nylon_ultimaker3_AA_0.4 -weight = -1 - -[values] -acceleration_enabled = True -acceleration_infill = =acceleration_print -acceleration_layer_0 = =acceleration_topbottom -acceleration_prime_tower = =math.ceil(acceleration_print * 2000 / 4000) -acceleration_print = 4000 -acceleration_support = =math.ceil(acceleration_print * 2000 / 4000) -acceleration_support_infill = =acceleration_support -acceleration_support_interface = =acceleration_topbottom -acceleration_topbottom = =math.ceil(acceleration_print * 500 / 4000) -acceleration_wall = =math.ceil(acceleration_print * 1000 / 4000) -acceleration_wall_0 = =math.ceil(acceleration_wall * 500 / 1000) -acceleration_wall_x = =acceleration_wall -adhesion_type = raft -cool_fan_full_at_height = =layer_height_0 + 4 * layer_height -cool_fan_speed = 40 -cool_fan_speed_max = 100 -cool_min_layer_time = 5 -cool_min_layer_time_fan_speed_max = 20 -cool_min_speed = 10 -infill_line_width = =round(line_width * 0.5 / 0.35, 2) -infill_overlap_mm = 0.05 -infill_pattern = triangles -infill_sparse_density = 20 -infill_wipe_dist = 0 -jerk_enabled = True -jerk_infill = =jerk_print -jerk_layer_0 = =jerk_topbottom -jerk_prime_tower = =math.ceil(jerk_print * 15 / 25) -jerk_print = 25 -jerk_support = =math.ceil(jerk_print * 15 / 25) -jerk_support_infill = =jerk_support -jerk_support_interface = =jerk_topbottom -jerk_topbottom = =math.ceil(jerk_print * 5 / 25) -jerk_wall = =math.ceil(jerk_print * 10 / 25) -jerk_wall_0 = =math.ceil(jerk_wall * 5 / 10) -jerk_wall_x = =jerk_wall -layer_height = 0.15 -layer_height_0 = =round(machine_nozzle_size / 1.5, 2) -line_width = =machine_nozzle_size -machine_min_cool_heat_time_window = 15 -machine_nozzle_cool_down_speed = 0.9 -machine_nozzle_heat_up_speed = 1.4 -material_bed_temperature = 60 -material_print_temperature = 250 -material_standby_temperature = 100 -multiple_mesh_overlap = 0 -ooze_shield_angle = 40 -ooze_shield_dist = 2 -ooze_shield_enabled = False -raft_base_thickness = =resolveOrValue('layer_height_0') * 1.2 -raft_speed = =speed_print / 60 * 30 -raft_interface_speed = =raft_speed * 0.75 -raft_base_speed = =0.75 * raft_speed -prime_tower_enable = True -prime_tower_size = 15 -prime_tower_wipe_enabled = True -raft_acceleration = =acceleration_layer_0 -raft_airgap = =round(layer_height_0 * 0.85, 2) -raft_interface_thickness = =round(machine_nozzle_size * 0.3 / 0.4, 2) -raft_jerk = =jerk_layer_0 -raft_margin = 10 -raft_surface_thickness = =round(machine_nozzle_size * 0.2 / 0.4, 2) -retraction_amount = 8 -retraction_count_max = 25 -retraction_extra_prime_amount = 0 -retraction_extrusion_window = 1 -retraction_hop = 2 -retraction_hop_enabled = True -retraction_hop_only_when_collides = True -retraction_speed = 25 -skin_overlap = 50 -speed_infill = =speed_print -speed_layer_0 = 10 -speed_prime_tower = =speed_topbottom -speed_print = 70 -speed_support = =speed_wall_0 -speed_support_interface = =speed_topbottom -speed_topbottom = =math.ceil(speed_print * 30 / 70) -speed_travel = 250 -speed_wall = =math.ceil(speed_print * 30 / 70) -speed_wall_0 = =math.ceil(speed_wall * 20 / 30) -speed_wall_x = =speed_wall -support_angle = 60 -support_bottom_distance = =support_z_distance / 2 -support_top_distance = =support_z_distance -support_xy_distance = =wall_line_width_0 * 2.5 -support_xy_distance_overhang = =wall_line_width_0 -support_z_distance = =layer_height * 2 -switch_extruder_prime_speed = 30 -switch_extruder_retraction_amount = 30 -switch_extruder_retraction_speeds = 40 -top_bottom_thickness = 1.2 -travel_avoid_distance = 3 -travel_compensate_overlapping_walls_enabled = True -wall_0_inset = 0 -wall_thickness = 1.3 -support_line_width = =line_width -support_pattern = zigzag -support_infill_rate = 15 -support_join_distance = 2 -support_offset = 0.2 -support_interface_enable = False -support_use_towers = True -raft_surface_layers = 2 -raft_interface_line_width = =line_width * 2 -raft_interface_line_spacing = =raft_interface_line_width + 0.2 -support_bottom_height = =extruderValue(support_interface_extruder_nr, 'support_interface_height') - -brim_width = 7 -retraction_min_travel = =line_width * 2 -retraction_prime_speed = =retraction_speed -support_bottom_stair_step_height = 0.3 -wall_line_width_x = =wall_line_width +[general] +version = 2 +name = Fast Print +definition = ultimaker3 + +[metadata] +type = quality +quality_type = fast +material = generic_nylon_ultimaker3_AA_0.4 +weight = -1 + +[values] +adhesion_type = raft +cool_min_layer_time_fan_speed_max = 20 +cool_min_speed = 10 +infill_line_width = =round(line_width * 0.5 / 0.4, 2) +line_width = =machine_nozzle_size +material_print_temperature = 250 +material_standby_temperature = 100 +ooze_shield_angle = 40 +raft_acceleration = =acceleration_layer_0 +raft_airgap = =round(layer_height_0 * 0.85, 2) +raft_interface_thickness = =round(machine_nozzle_size * 0.3 / 0.4, 2) +raft_jerk = =jerk_layer_0 +raft_margin = 10 +raft_surface_thickness = =round(machine_nozzle_size * 0.2 / 0.4, 2) +skin_overlap = 50 +speed_layer_0 = 10 +switch_extruder_prime_speed = 30 +switch_extruder_retraction_amount = 30 +switch_extruder_retraction_speeds = 40 +wall_line_width_x = =wall_line_width + diff --git a/resources/quality/ultimaker3/um3_aa0.4_Nylon_High_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_Nylon_High_Quality.inst.cfg index fd3ce07d37..95e3368f3f 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_Nylon_High_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_Nylon_High_Quality.inst.cfg @@ -1,125 +1,32 @@ -[general] -version = 2 -name = High Quality -definition = ultimaker3 - -[metadata] -type = quality -quality_type = high -material = generic_nylon_ultimaker3_AA_0.4 -weight = 1 - -[values] -acceleration_enabled = True -acceleration_infill = =acceleration_print -acceleration_layer_0 = =acceleration_topbottom -acceleration_prime_tower = =math.ceil(acceleration_print * 2000 / 4000) -acceleration_print = 4000 -acceleration_support = =math.ceil(acceleration_print * 2000 / 4000) -acceleration_support_infill = =acceleration_support -acceleration_support_interface = =acceleration_topbottom -acceleration_topbottom = =math.ceil(acceleration_print * 500 / 4000) -acceleration_wall = =math.ceil(acceleration_print * 1000 / 4000) -acceleration_wall_0 = =math.ceil(acceleration_wall * 500 / 1000) -acceleration_wall_x = =acceleration_wall -adhesion_type = raft -cool_fan_full_at_height = =layer_height_0 + 4 * layer_height -cool_fan_speed = 40 -cool_fan_speed_max = 100 -cool_min_layer_time = 5 -cool_min_layer_time_fan_speed_max = 20 -cool_min_speed = 15 -infill_line_width = =round(line_width * 0.5 / 0.35, 2) -infill_overlap_mm = 0.05 -infill_pattern = triangles -infill_sparse_density = 20 -infill_wipe_dist = 0 -jerk_enabled = True -jerk_infill = =jerk_print -jerk_layer_0 = =jerk_topbottom -jerk_prime_tower = =math.ceil(jerk_print * 15 / 25) -jerk_print = 25 -jerk_support = =math.ceil(jerk_print * 15 / 25) -jerk_support_infill = =jerk_support -jerk_support_interface = =jerk_topbottom -jerk_topbottom = =math.ceil(jerk_print * 5 / 25) -jerk_wall = =math.ceil(jerk_print * 10 / 25) -jerk_wall_0 = =math.ceil(jerk_wall * 5 / 10) -jerk_wall_x = =jerk_wall -layer_height = 0.06 -layer_height_0 = =round(machine_nozzle_size / 1.5, 2) -line_width = =machine_nozzle_size -machine_min_cool_heat_time_window = 15 -machine_nozzle_cool_down_speed = 0.9 -machine_nozzle_heat_up_speed = 1.4 -material_bed_temperature = 60 -material_print_temperature = 245 -material_standby_temperature = 100 -multiple_mesh_overlap = 0 -ooze_shield_angle = 40 -ooze_shield_dist = 2 -ooze_shield_enabled = False -raft_base_thickness = =resolveOrValue('layer_height_0') * 1.2 -raft_speed = =speed_print / 60 * 30 -raft_interface_speed = =raft_speed * 0.75 -raft_base_speed = =0.75 * raft_speed -prime_tower_enable = True -prime_tower_size = 15 -prime_tower_wipe_enabled = True -raft_acceleration = =acceleration_layer_0 -raft_airgap = =round(layer_height_0 * 0.85, 2) -raft_interface_thickness = =round(machine_nozzle_size * 0.3 / 0.4, 2) -raft_jerk = =jerk_layer_0 -raft_margin = 10 -raft_surface_thickness = =round(machine_nozzle_size * 0.2 / 0.4, 2) -retraction_amount = 8 -retraction_count_max = 25 -retraction_extra_prime_amount = 0 -retraction_extrusion_window = 1 -retraction_hop = 2 -retraction_hop_enabled = True -retraction_hop_only_when_collides = True -retraction_speed = 25 -skin_overlap = 50 -speed_infill = =speed_print -speed_layer_0 = 10 -speed_prime_tower = =speed_topbottom -speed_print = 70 -speed_support = =speed_wall_0 -speed_support_interface = =speed_topbottom -speed_topbottom = =math.ceil(speed_print * 30 / 70) -speed_travel = 250 -speed_wall = =math.ceil(speed_print * 30 / 70) -speed_wall_0 = =math.ceil(speed_wall * 20 / 30) -speed_wall_x = =speed_wall -support_angle = 60 -support_bottom_distance = =support_z_distance / 2 -support_top_distance = =support_z_distance -support_xy_distance = =wall_line_width_0 * 2.5 -support_xy_distance_overhang = =wall_line_width_0 -support_z_distance = =layer_height * 2 -switch_extruder_prime_speed = 30 -switch_extruder_retraction_amount = 30 -switch_extruder_retraction_speeds = 40 -top_bottom_thickness = 1.2 -travel_avoid_distance = 3 -travel_compensate_overlapping_walls_enabled = True -wall_0_inset = 0 -wall_thickness = 1.3 -support_line_width = =line_width -support_pattern = zigzag -support_infill_rate = 15 -support_join_distance = 2 -support_offset = 0.2 -support_interface_enable = False -support_use_towers = True -raft_surface_layers = 2 -raft_interface_line_width = =line_width * 2 -raft_interface_line_spacing = =raft_interface_line_width + 0.2 -support_bottom_height = =extruderValue(support_interface_extruder_nr, 'support_interface_height') - -brim_width = 7 -retraction_min_travel = =line_width * 2 -retraction_prime_speed = =retraction_speed -support_bottom_stair_step_height = 0.3 -wall_line_width_x = =wall_line_width +[general] +version = 2 +name = High Quality +definition = ultimaker3 + +[metadata] +type = quality +quality_type = high +material = generic_nylon_ultimaker3_AA_0.4 +weight = 1 + +[values] +adhesion_type = raft +cool_min_layer_time_fan_speed_max = 20 +cool_min_speed = 15 +infill_line_width = =round(line_width * 0.5 / 0.4, 2) +line_width = =machine_nozzle_size +material_standby_temperature = 100 +ooze_shield_angle = 40 +raft_acceleration = =acceleration_layer_0 +raft_airgap = =round(layer_height_0 * 0.85, 2) +raft_interface_thickness = =round(machine_nozzle_size * 0.3 / 0.4, 2) +raft_jerk = =jerk_layer_0 +raft_margin = 10 +raft_surface_thickness = =round(machine_nozzle_size * 0.2 / 0.4, 2) +skin_overlap = 50 +speed_layer_0 = 10 +switch_extruder_prime_speed = 30 +switch_extruder_retraction_amount = 30 +switch_extruder_retraction_speeds = 40 +wall_line_width_x = =wall_line_width + diff --git a/resources/quality/ultimaker3/um3_aa0.4_Nylon_Normal_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_Nylon_Normal_Quality.inst.cfg index 0146702c2e..09013f3fd9 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_Nylon_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_Nylon_Normal_Quality.inst.cfg @@ -1,125 +1,32 @@ -[general] -version = 2 -name = Normal Quality -definition = ultimaker3 - -[metadata] -type = quality -quality_type = normal -material = generic_nylon_ultimaker3_AA_0.4 -weight = 0 - -[values] -acceleration_enabled = True -acceleration_infill = =acceleration_print -acceleration_layer_0 = =acceleration_topbottom -acceleration_prime_tower = =math.ceil(acceleration_print * 2000 / 4000) -acceleration_print = 4000 -acceleration_support = =math.ceil(acceleration_print * 2000 / 4000) -acceleration_support_infill = =acceleration_support -acceleration_support_interface = =acceleration_topbottom -acceleration_topbottom = =math.ceil(acceleration_print * 500 / 4000) -acceleration_wall = =math.ceil(acceleration_print * 1000 / 4000) -acceleration_wall_0 = =math.ceil(acceleration_wall * 500 / 1000) -acceleration_wall_x = =acceleration_wall -adhesion_type = raft -cool_fan_full_at_height = =layer_height_0 + 4 * layer_height -cool_fan_speed = 40 -cool_fan_speed_max = 100 -cool_min_layer_time = 5 -cool_min_layer_time_fan_speed_max = 20 -cool_min_speed = 12 -infill_line_width = =round(line_width * 0.5 / 0.35, 2) -infill_overlap_mm = 0.05 -infill_pattern = triangles -infill_sparse_density = 20 -infill_wipe_dist = 0 -jerk_enabled = True -jerk_infill = =jerk_print -jerk_layer_0 = =jerk_topbottom -jerk_prime_tower = =math.ceil(jerk_print * 15 / 25) -jerk_print = 25 -jerk_support = =math.ceil(jerk_print * 15 / 25) -jerk_support_infill = =jerk_support -jerk_support_interface = =jerk_topbottom -jerk_topbottom = =math.ceil(jerk_print * 5 / 25) -jerk_wall = =math.ceil(jerk_print * 10 / 25) -jerk_wall_0 = =math.ceil(jerk_wall * 5 / 10) -jerk_wall_x = =jerk_wall -layer_height = 0.1 -layer_height_0 = =round(machine_nozzle_size / 1.5, 2) -line_width = =machine_nozzle_size -machine_min_cool_heat_time_window = 15 -machine_nozzle_cool_down_speed = 0.9 -machine_nozzle_heat_up_speed = 1.4 -material_bed_temperature = 60 -material_print_temperature = 245 -material_standby_temperature = 100 -multiple_mesh_overlap = 0 -ooze_shield_angle = 40 -ooze_shield_dist = 2 -ooze_shield_enabled = False -raft_base_thickness = =resolveOrValue('layer_height_0') * 1.2 -raft_speed = =speed_print / 60 * 30 -raft_interface_speed = =raft_speed * 0.75 -raft_base_speed = =0.75 * raft_speed -prime_tower_enable = True -prime_tower_size = 15 -prime_tower_wipe_enabled = True -raft_acceleration = =acceleration_layer_0 -raft_airgap = =round(layer_height_0 * 0.85, 2) -raft_interface_thickness = =round(machine_nozzle_size * 0.3 / 0.4, 2) -raft_jerk = =jerk_layer_0 -raft_margin = 10 -raft_surface_thickness = =round(machine_nozzle_size * 0.2 / 0.4, 2) -retraction_amount = 8 -retraction_count_max = 25 -retraction_extra_prime_amount = 0 -retraction_extrusion_window = 1 -retraction_hop = 2 -retraction_hop_enabled = True -retraction_hop_only_when_collides = True -retraction_speed = 25 -skin_overlap = 50 -speed_infill = =speed_print -speed_layer_0 = 10 -speed_prime_tower = =speed_topbottom -speed_print = 70 -speed_support = =speed_wall_0 -speed_support_interface = =speed_topbottom -speed_topbottom = =math.ceil(speed_print * 30 / 70) -speed_travel = 250 -speed_wall = =math.ceil(speed_print * 30 / 70) -speed_wall_0 = =math.ceil(speed_wall * 20 / 30) -speed_wall_x = =speed_wall -support_angle = 60 -support_bottom_distance = =support_z_distance / 2 -support_top_distance = =support_z_distance -support_xy_distance = =wall_line_width_0 * 2.5 -support_xy_distance_overhang = =wall_line_width_0 -support_z_distance = =layer_height * 2 -switch_extruder_prime_speed = 30 -switch_extruder_retraction_amount = 30 -switch_extruder_retraction_speeds = 40 -top_bottom_thickness = 1.2 -travel_avoid_distance = 3 -travel_compensate_overlapping_walls_enabled = True -wall_0_inset = 0 -wall_thickness = 1.3 -support_line_width = =line_width -support_pattern = zigzag -support_infill_rate = 15 -support_join_distance = 2 -support_offset = 0.2 -support_interface_enable = False -support_use_towers = True -raft_surface_layers = 2 -raft_interface_line_width = =line_width * 2 -raft_interface_line_spacing = =raft_interface_line_width + 0.2 -support_bottom_height = =extruderValue(support_interface_extruder_nr, 'support_interface_height') - -brim_width = 7 -retraction_min_travel = =line_width * 2 -retraction_prime_speed = =retraction_speed -support_bottom_stair_step_height = 0.3 -wall_line_width_x = =wall_line_width +[general] +version = 2 +name = Normal Quality +definition = ultimaker3 + +[metadata] +type = quality +quality_type = normal +material = generic_nylon_ultimaker3_AA_0.4 +weight = 0 + +[values] +adhesion_type = raft +cool_min_layer_time_fan_speed_max = 20 +cool_min_speed = 12 +infill_line_width = =round(line_width * 0.5 / 0.4, 2) +line_width = =machine_nozzle_size +material_standby_temperature = 100 +ooze_shield_angle = 40 +raft_acceleration = =acceleration_layer_0 +raft_airgap = =round(layer_height_0 * 0.85, 2) +raft_interface_thickness = =round(machine_nozzle_size * 0.3 / 0.4, 2) +raft_jerk = =jerk_layer_0 +raft_margin = 10 +raft_surface_thickness = =round(machine_nozzle_size * 0.2 / 0.4, 2) +skin_overlap = 50 +speed_layer_0 = 10 +switch_extruder_prime_speed = 30 +switch_extruder_retraction_amount = 30 +switch_extruder_retraction_speeds = 40 +wall_line_width_x = =wall_line_width + diff --git a/resources/quality/ultimaker3/um3_aa0.4_PLA_Draft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_PLA_Draft_Print.inst.cfg index 369997b009..6bc898446b 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_PLA_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_PLA_Draft_Print.inst.cfg @@ -1,125 +1,26 @@ -[general] -version = 2 -name = Draft Print -definition = ultimaker3 - -[metadata] -type = quality -quality_type = draft -material = generic_pla_ultimaker3_AA_0.4 -weight = -2 - -[values] -acceleration_enabled = True -acceleration_infill = =acceleration_print -acceleration_layer_0 = =acceleration_topbottom -acceleration_prime_tower = =math.ceil(acceleration_print * 2000 / 4000) -acceleration_print = 4000 -acceleration_support = =math.ceil(acceleration_print * 2000 / 4000) -acceleration_support_infill = =acceleration_support -acceleration_support_interface = =acceleration_topbottom -acceleration_topbottom = =math.ceil(acceleration_print * 500 / 4000) -acceleration_wall = =math.ceil(acceleration_print * 1000 / 4000) -acceleration_wall_0 = =math.ceil(acceleration_wall * 500 / 1000) -acceleration_wall_x = =acceleration_wall -adhesion_type = brim -brim_width = 7 -cool_fan_full_at_height = =layer_height_0 + 2 * layer_height -cool_min_layer_time = 5 -cool_min_speed = 5 -infill_line_width = =round(line_width * 0.5 / 0.35, 2) -infill_pattern = triangles -infill_sparse_density = 20 -infill_wipe_dist = 0 -jerk_enabled = True -jerk_infill = =jerk_print -jerk_layer_0 = =jerk_topbottom -jerk_prime_tower = =math.ceil(jerk_print * 15 / 25) -jerk_print = 25 -jerk_support = =math.ceil(jerk_print * 15 / 25) -jerk_support_infill = =jerk_support -jerk_support_interface = =jerk_topbottom -jerk_topbottom = =math.ceil(jerk_print * 5 / 25) -jerk_wall = =math.ceil(jerk_print * 10 / 25) -jerk_wall_0 = =math.ceil(jerk_wall * 5 / 10) -jerk_wall_x = =jerk_wall -layer_height = 0.2 -layer_height_0 = =round(machine_nozzle_size / 1.5, 2) -line_width = =machine_nozzle_size * 0.875 -machine_min_cool_heat_time_window = 15 -machine_nozzle_cool_down_speed = 0.75 -machine_nozzle_heat_up_speed = 1.6 -material_bed_temperature = 60 -material_print_temperature = 205 -material_standby_temperature = 100 -multiple_mesh_overlap = 0 -prime_tower_enable = False -prime_tower_size = 15 -ooze_shield_angle = 60 -ooze_shield_enabled = False -prime_tower_wipe_enabled = True -raft_base_thickness = =resolveOrValue('layer_height_0') * 1.2 -raft_speed = =speed_print / 60 * 30 -raft_interface_speed = =raft_speed * 0.75 -raft_base_speed = =0.75 * raft_speed -raft_acceleration = =acceleration_print -raft_jerk = =jerk_print -retraction_count_max = 25 -retraction_extrusion_window = 1 -retraction_hop = 2 -retraction_hop_enabled = True -retraction_hop_only_when_collides = True -skin_overlap = 20 -speed_infill = =speed_print -speed_layer_0 = 20 -speed_prime_tower = =speed_topbottom -speed_print = 70 -speed_support = =speed_wall_0 -speed_support_interface = =speed_topbottom -speed_topbottom = =math.ceil(speed_print * 35 / 70) -speed_travel = 250 -speed_wall = =math.ceil(speed_print * 50 / 70) -speed_wall_0 = =math.ceil(speed_wall * 35 / 50) -speed_wall_x = =speed_wall -support_angle = 60 -support_bottom_distance = =support_z_distance / 2 -support_top_distance = =support_z_distance -support_xy_distance = =wall_line_width_0 * 2.5 -support_xy_distance_overhang = =wall_line_width_0 -support_z_distance = =layer_height * 2 -top_bottom_thickness = 1 -travel_avoid_distance = 3 -travel_compensate_overlapping_walls_enabled = True -wall_0_inset = 0 -wall_line_width_x = =round(line_width * 0.3 / 0.35, 2) -wall_thickness = 1 -support_line_width = =line_width -support_pattern = zigzag -support_infill_rate = 15 -support_join_distance = 2 -support_offset = 0.2 -support_interface_enable = False -support_use_towers = True -raft_margin = 15 -raft_airgap = 0.3 -raft_surface_layers = 2 -raft_surface_thickness = =resolveOrValue('layer_height') -raft_interface_thickness = =resolveOrValue('layer_height') * 1.5 -raft_interface_line_width = =line_width * 2 -raft_interface_line_spacing = =raft_interface_line_width + 0.2 +[general] +version = 2 +name = Draft Print +definition = ultimaker3 + +[metadata] +type = quality +quality_type = draft +material = generic_pla_ultimaker3_AA_0.4 +weight = -2 + +[values] +cool_fan_full_at_height = =layer_height_0 + 2 * layer_height cool_fan_speed_max = =cool_fan_speed -support_bottom_height = =extruderValue(support_interface_extruder_nr, 'support_interface_height') -retraction_amount = 6.5 - -cool_fan_speed = 100 -cool_min_layer_time_fan_speed_max = 10 -infill_overlap_mm = =infill_line_width * infill_overlap / 100 if infill_sparse_density < 95 and infill_pattern != 'concentric' else 0 -ooze_shield_dist = 2 -retraction_extra_prime_amount = 0 -retraction_min_travel = =line_width * 2 -retraction_prime_speed = =retraction_speed -retraction_speed = 25 -support_bottom_stair_step_height = 0.3 -switch_extruder_prime_speed = =switch_extruder_retraction_speeds -switch_extruder_retraction_amount = =machine_heat_zone_length -switch_extruder_retraction_speeds = 20 +machine_nozzle_cool_down_speed = 0.75 +machine_nozzle_heat_up_speed = 1.6 +material_print_temperature = 205 +material_standby_temperature = 100 +prime_tower_enable = False +skin_overlap = 20 +speed_topbottom = =math.ceil(speed_print * 35 / 70) +speed_wall = =math.ceil(speed_print * 50 / 70) +speed_wall_0 = =math.ceil(speed_wall * 35 / 50) +top_bottom_thickness = 1 +wall_thickness = 1 + diff --git a/resources/quality/ultimaker3/um3_aa0.4_PLA_Fast_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_PLA_Fast_Print.inst.cfg index e9710301a8..3f2aa1e652 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_PLA_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_PLA_Fast_Print.inst.cfg @@ -1,125 +1,25 @@ -[general] -version = 2 -name = Fast Print -definition = ultimaker3 - -[metadata] -type = quality -quality_type = fast -material = generic_pla_ultimaker3_AA_0.4 -weight = -1 - -[values] -acceleration_enabled = True -acceleration_infill = =acceleration_print -acceleration_layer_0 = =acceleration_topbottom -acceleration_prime_tower = =math.ceil(acceleration_print * 2000 / 4000) -acceleration_print = 4000 -acceleration_support = =math.ceil(acceleration_print * 2000 / 4000) -acceleration_support_infill = =acceleration_support -acceleration_support_interface = =acceleration_topbottom -acceleration_topbottom = =math.ceil(acceleration_print * 500 / 4000) -acceleration_wall = =math.ceil(acceleration_print * 1000 / 4000) -acceleration_wall_0 = =math.ceil(acceleration_wall * 500 / 1000) -acceleration_wall_x = =acceleration_wall -adhesion_type = brim -brim_width = 7 -cool_fan_full_at_height = =layer_height_0 + 2 * layer_height -cool_min_layer_time = 5 -cool_min_speed = 5 -infill_line_width = =round(line_width * 0.5 / 0.35, 2) -infill_pattern = triangles -infill_sparse_density = 20 -infill_wipe_dist = 0 -jerk_enabled = True -jerk_infill = =jerk_print -jerk_layer_0 = =jerk_topbottom -jerk_prime_tower = =math.ceil(jerk_print * 15 / 25) -jerk_print = 25 -jerk_support = =math.ceil(jerk_print * 15 / 25) -jerk_support_infill = =jerk_support -jerk_support_interface = =jerk_topbottom -jerk_topbottom = =math.ceil(jerk_print * 5 / 25) -jerk_wall = =math.ceil(jerk_print * 10 / 25) -jerk_wall_0 = =math.ceil(jerk_wall * 5 / 10) -jerk_wall_x = =jerk_wall -layer_height = 0.15 -layer_height_0 = =round(machine_nozzle_size / 1.5, 2) -line_width = =machine_nozzle_size * 0.875 -machine_min_cool_heat_time_window = 15 -machine_nozzle_cool_down_speed = 0.75 -machine_nozzle_heat_up_speed = 1.6 -material_bed_temperature = 60 -material_print_temperature = 200 -material_standby_temperature = 100 -multiple_mesh_overlap = 0 -prime_tower_enable = False -prime_tower_size = 15 -ooze_shield_angle = 60 -ooze_shield_enabled = False -prime_tower_wipe_enabled = True -raft_base_thickness = =resolveOrValue('layer_height_0') * 1.2 -raft_speed = =speed_print / 60 * 30 -raft_interface_speed = =raft_speed * 0.75 -raft_base_speed = =0.75 * raft_speed -raft_acceleration = =acceleration_print -raft_jerk = =jerk_print -retraction_count_max = 25 -retraction_extrusion_window = 1 -retraction_hop = 2 -retraction_hop_enabled = True -retraction_hop_only_when_collides = True -skin_overlap = 15 -speed_infill = =speed_print -speed_layer_0 = 20 -speed_prime_tower = =speed_topbottom -speed_print = 80 -speed_support = =speed_wall_0 -speed_support_interface = =speed_topbottom -speed_topbottom = =math.ceil(speed_print * 30 / 80) -speed_travel = 250 -speed_wall = =math.ceil(speed_print * 40 / 80) -speed_wall_0 = =math.ceil(speed_wall * 30 / 40) -speed_wall_x = =speed_wall -support_angle = 60 -support_bottom_distance = =support_z_distance / 2 -support_top_distance = =support_z_distance -support_xy_distance = =wall_line_width_0 * 2.5 -support_xy_distance_overhang = =wall_line_width_0 -support_z_distance = =layer_height * 2 -top_bottom_thickness = 1 -travel_avoid_distance = 3 -travel_compensate_overlapping_walls_enabled = True -wall_0_inset = 0 -wall_line_width_x = =round(line_width * 0.3 / 0.35, 2) -wall_thickness = 1 -support_line_width = =line_width -support_pattern = zigzag -support_infill_rate = 15 -support_join_distance = 2 -support_offset = 0.2 -support_interface_enable = False -support_use_towers = True -raft_margin = 15 -raft_airgap = 0.3 -raft_surface_layers = 2 -raft_surface_thickness = =resolveOrValue('layer_height') -raft_interface_thickness = =resolveOrValue('layer_height') * 1.5 -raft_interface_line_width = =line_width * 2 -raft_interface_line_spacing = =raft_interface_line_width + 0.2 +[general] +version = 2 +name = Fast Print +definition = ultimaker3 + +[metadata] +type = quality +quality_type = fast +material = generic_pla_ultimaker3_AA_0.4 +weight = -1 + +[values] +cool_fan_full_at_height = =layer_height_0 + 2 * layer_height cool_fan_speed_max = =cool_fan_speed -support_bottom_height = =extruderValue(support_interface_extruder_nr, 'support_interface_height') -retraction_amount = 6.5 - -cool_fan_speed = 100 -cool_min_layer_time_fan_speed_max = 10 -infill_overlap_mm = =infill_line_width * infill_overlap / 100 if infill_sparse_density < 95 and infill_pattern != 'concentric' else 0 -ooze_shield_dist = 2 -retraction_extra_prime_amount = 0 -retraction_min_travel = =line_width * 2 -retraction_prime_speed = =retraction_speed -retraction_speed = 25 -support_bottom_stair_step_height = 0.3 -switch_extruder_prime_speed = =switch_extruder_retraction_speeds -switch_extruder_retraction_amount = =machine_heat_zone_length -switch_extruder_retraction_speeds = 20 +machine_nozzle_cool_down_speed = 0.75 +machine_nozzle_heat_up_speed = 1.6 +material_standby_temperature = 100 +prime_tower_enable = False +speed_print = 80 +speed_topbottom = =math.ceil(speed_print * 30 / 80) +speed_wall = =math.ceil(speed_print * 40 / 80) +speed_wall_0 = =math.ceil(speed_wall * 30 / 40) +top_bottom_thickness = 1 +wall_thickness = 1 + diff --git a/resources/quality/ultimaker3/um3_aa0.4_PLA_High_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_PLA_High_Quality.inst.cfg index 55b4986541..f71c51e7ff 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_PLA_High_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_PLA_High_Quality.inst.cfg @@ -1,125 +1,26 @@ -[general] -version = 2 -name = High Quality -definition = ultimaker3 - -[metadata] -type = quality -quality_type = high -material = generic_pla_ultimaker3_AA_0.4 -weight = 1 - -[values] -acceleration_enabled = True -acceleration_infill = =acceleration_print -acceleration_layer_0 = =acceleration_topbottom -acceleration_prime_tower = =math.ceil(acceleration_print * 2000 / 4000) -acceleration_print = 4000 -acceleration_support = =math.ceil(acceleration_print * 2000 / 4000) -acceleration_support_infill = =acceleration_support -acceleration_support_interface = =acceleration_topbottom -acceleration_topbottom = =math.ceil(acceleration_print * 500 / 4000) -acceleration_wall = =math.ceil(acceleration_print * 1000 / 4000) -acceleration_wall_0 = =math.ceil(acceleration_wall * 500 / 1000) -acceleration_wall_x = =acceleration_wall -adhesion_type = brim -brim_width = 7 -cool_fan_full_at_height = =layer_height_0 + 2 * layer_height -cool_min_layer_time = 5 -cool_min_speed = 10 -infill_line_width = =round(line_width * 0.5 / 0.35, 2) -infill_pattern = triangles -infill_sparse_density = 20 -infill_wipe_dist = 0 -jerk_enabled = True -jerk_infill = =jerk_print -jerk_layer_0 = =jerk_topbottom -jerk_prime_tower = =math.ceil(jerk_print * 15 / 25) -jerk_print = 25 -jerk_support = =math.ceil(jerk_print * 15 / 25) -jerk_support_infill = =jerk_support -jerk_support_interface = =jerk_topbottom -jerk_topbottom = =math.ceil(jerk_print * 5 / 25) -jerk_wall = =math.ceil(jerk_print * 10 / 25) -jerk_wall_0 = =math.ceil(jerk_wall * 5 / 10) -jerk_wall_x = =jerk_wall -layer_height = 0.06 -layer_height_0 = =round(machine_nozzle_size / 1.5, 2) -line_width = =machine_nozzle_size * 0.875 -machine_min_cool_heat_time_window = 15 -machine_nozzle_cool_down_speed = 0.75 -machine_nozzle_heat_up_speed = 1.6 -material_bed_temperature = 60 -material_print_temperature = 195 -material_standby_temperature = 100 -multiple_mesh_overlap = 0 -ooze_shield_angle = 60 -ooze_shield_enabled = False -prime_tower_enable = True -prime_tower_size = 15 -prime_tower_wipe_enabled = True -raft_base_thickness = =resolveOrValue('layer_height_0') * 1.2 -raft_speed = =speed_print / 60 * 30 -raft_interface_speed = =raft_speed * 0.75 -raft_base_speed = =0.75 * raft_speed -raft_acceleration = =acceleration_print -raft_jerk = =jerk_print -retraction_count_max = 25 -retraction_extrusion_window = 1 -retraction_hop = 2 -retraction_hop_enabled = True -retraction_hop_only_when_collides = True -skin_overlap = 10 -speed_infill = =speed_print -speed_layer_0 = 20 -speed_prime_tower = =speed_topbottom -speed_print = 60 -speed_support = =speed_wall_0 -speed_support_interface = =speed_topbottom -speed_topbottom = =math.ceil(speed_print * 30 / 60) -speed_travel = 250 -speed_wall = =math.ceil(speed_print * 30 / 60) -speed_wall_0 = =math.ceil(speed_wall * 20 / 30) -speed_wall_x = =speed_wall -support_angle = 60 -support_bottom_distance = =support_z_distance / 2 -support_top_distance = =support_z_distance -support_xy_distance = =wall_line_width_0 * 2.5 -support_xy_distance_overhang = =wall_line_width_0 -support_z_distance = =layer_height * 2 -top_bottom_thickness = 1 -travel_avoid_distance = 3 -travel_compensate_overlapping_walls_enabled = True -wall_0_inset = 0 -wall_line_width_x = =round(line_width * 0.3 / 0.35, 2) -wall_thickness = 1 -support_line_width = =line_width -support_pattern = zigzag -support_infill_rate = 15 -support_join_distance = 2 -support_offset = 0.2 -support_interface_enable = False -support_use_towers = True -raft_margin = 15 -raft_airgap = 0.3 -raft_surface_layers = 2 -raft_surface_thickness = =resolveOrValue('layer_height') -raft_interface_thickness = =resolveOrValue('layer_height') * 1.5 -raft_interface_line_width = =line_width * 2 -raft_interface_line_spacing = =raft_interface_line_width + 0.2 +[general] +version = 2 +name = High Quality +definition = ultimaker3 + +[metadata] +type = quality +quality_type = high +material = generic_pla_ultimaker3_AA_0.4 +weight = 1 + +[values] +cool_fan_full_at_height = =layer_height_0 + 2 * layer_height cool_fan_speed_max = =cool_fan_speed -support_bottom_height = =extruderValue(support_interface_extruder_nr, 'support_interface_height') -retraction_amount = 6.5 - -cool_fan_speed = 100 -cool_min_layer_time_fan_speed_max = 10 -infill_overlap_mm = =infill_line_width * infill_overlap / 100 if infill_sparse_density < 95 and infill_pattern != 'concentric' else 0 -ooze_shield_dist = 2 -retraction_extra_prime_amount = 0 -retraction_min_travel = =line_width * 2 -retraction_prime_speed = =retraction_speed -retraction_speed = 25 -support_bottom_stair_step_height = 0.3 -switch_extruder_prime_speed = =switch_extruder_retraction_speeds -switch_extruder_retraction_amount = =machine_heat_zone_length -switch_extruder_retraction_speeds = 20 +cool_min_speed = 10 +machine_nozzle_cool_down_speed = 0.75 +machine_nozzle_heat_up_speed = 1.6 +material_print_temperature = 195 +material_standby_temperature = 100 +skin_overlap = 10 +speed_print = 60 +speed_topbottom = =math.ceil(speed_print * 30 / 60) +speed_wall = =math.ceil(speed_print * 30 / 60) +top_bottom_thickness = 1 +wall_thickness = 1 + diff --git a/resources/quality/ultimaker3/um3_aa0.4_PLA_Normal_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_PLA_Normal_Quality.inst.cfg index 6800bcfb4e..84d9a5a001 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_PLA_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_PLA_Normal_Quality.inst.cfg @@ -1,126 +1,23 @@ -[general] -version = 2 -name = Normal Quality -definition = ultimaker3 - -[metadata] -type = quality -quality_type = normal -material = generic_pla_ultimaker3_AA_0.4 -weight = 0 - -[values] -acceleration_enabled = True -acceleration_infill = =acceleration_print -acceleration_layer_0 = =acceleration_topbottom -acceleration_prime_tower = =math.ceil(acceleration_print * 2000 / 4000) -acceleration_print = 4000 -acceleration_support = =math.ceil(acceleration_print * 2000 / 4000) -acceleration_support_infill = =acceleration_support -acceleration_support_interface = =acceleration_topbottom -acceleration_topbottom = =math.ceil(acceleration_print * 500 / 4000) -acceleration_wall = =math.ceil(acceleration_print * 1000 / 4000) -acceleration_wall_0 = =math.ceil(acceleration_wall * 500 / 1000) -acceleration_wall_x = =acceleration_wall -adhesion_type = brim -brim_width = 7 -cool_fan_full_at_height = =layer_height_0 + 2 * layer_height -cool_min_layer_time = 5 -cool_min_speed = 7 -infill_line_width = =round(line_width * 0.5 / 0.35, 2) -infill_pattern = triangles -infill_sparse_density = 20 -infill_wipe_dist = 0 -jerk_enabled = True -jerk_infill = =jerk_print -jerk_layer_0 = =jerk_topbottom -jerk_prime_tower = =math.ceil(jerk_print * 15 / 25) -jerk_print = 25 -jerk_support = =math.ceil(jerk_print * 15 / 25) -jerk_support_infill = =jerk_support -jerk_support_interface = =jerk_topbottom -jerk_topbottom = =math.ceil(jerk_print * 5 / 25) -jerk_wall = =math.ceil(jerk_print * 10 / 25) -jerk_wall_0 = =math.ceil(jerk_wall * 5 / 10) -jerk_wall_x = =jerk_wall -layer_height = 0.1 -layer_height_0 = =round(machine_nozzle_size / 1.5, 2) -line_width = =machine_nozzle_size * 0.875 -machine_min_cool_heat_time_window = 15 -machine_nozzle_cool_down_speed = 0.75 -machine_nozzle_heat_up_speed = 1.6 -material_bed_temperature = 60 -material_print_temperature = 200 -material_standby_temperature = 100 -multiple_mesh_overlap = 0 -prime_tower_enable = False -prime_tower_size = 15 -ooze_shield_angle = 60 -ooze_shield_enabled = False -prime_tower_wipe_enabled = True -raft_base_thickness = =resolveOrValue('layer_height_0') * 1.2 -raft_speed = =speed_print / 60 * 30 -raft_interface_speed = =raft_speed * 0.75 -raft_base_speed = =0.75 * raft_speed -raft_acceleration = =acceleration_print -raft_jerk = =jerk_print -retraction_count_max = 25 -retraction_extrusion_window = 1 -retraction_hop = 2 -retraction_hop_enabled = True -retraction_hop_only_when_collides = True -skin_overlap = 10 -speed_infill = =speed_print -speed_layer_0 = 20 -speed_prime_tower = =speed_topbottom -speed_print = 70 -speed_support = =speed_wall_0 -speed_support_interface = =speed_topbottom -speed_topbottom = =math.ceil(speed_print * 30 / 70) -speed_travel = 250 -speed_wall = =math.ceil(speed_print * 30 / 70) -speed_wall_0 = =math.ceil(speed_wall * 20 / 30) -speed_wall_x = =speed_wall -support_angle = 60 -support_bottom_distance = =support_z_distance / 2 -support_top_distance = =support_z_distance -support_xy_distance = =wall_line_width_0 * 2.5 -support_xy_distance_overhang = =wall_line_width_0 -support_z_distance = =layer_height * 2 -top_bottom_thickness = 1 -travel_avoid_distance = 3 -travel_compensate_overlapping_walls_enabled = True -wall_0_inset = 0 -wall_line_width_x = =round(line_width * 0.3 / 0.35, 2) -wall_thickness = 1 - -support_line_width = =line_width -support_pattern = zigzag -support_infill_rate = 15 -support_join_distance = 2 -support_offset = 0.2 -support_interface_enable = False -support_use_towers = True -raft_margin = 15 -raft_airgap = 0.3 -raft_surface_layers = 2 -raft_surface_thickness = =resolveOrValue('layer_height') -raft_interface_thickness = =resolveOrValue('layer_height') * 1.5 -raft_interface_line_width = =line_width * 2 -raft_interface_line_spacing = =raft_interface_line_width + 0.2 +[general] +version = 2 +name = Normal Quality +definition = ultimaker3 + +[metadata] +type = quality +quality_type = normal +material = generic_pla_ultimaker3_AA_0.4 +weight = 0 + +[values] +cool_fan_full_at_height = =layer_height_0 + 2 * layer_height cool_fan_speed_max = =cool_fan_speed -support_bottom_height = =extruderValue(support_interface_extruder_nr, 'support_interface_height') -retraction_amount = 6.5 - -cool_fan_speed = 100 -cool_min_layer_time_fan_speed_max = 10 -infill_overlap_mm = =infill_line_width * infill_overlap / 100 if infill_sparse_density < 95 and infill_pattern != 'concentric' else 0 -ooze_shield_dist = 2 -retraction_extra_prime_amount = 0 -retraction_min_travel = =line_width * 2 -retraction_prime_speed = =retraction_speed -retraction_speed = 25 -support_bottom_stair_step_height = 0.3 -switch_extruder_prime_speed = =switch_extruder_retraction_speeds -switch_extruder_retraction_amount = =machine_heat_zone_length -switch_extruder_retraction_speeds = 20 +cool_min_speed = 7 +machine_nozzle_cool_down_speed = 0.75 +machine_nozzle_heat_up_speed = 1.6 +material_standby_temperature = 100 +prime_tower_enable = False +skin_overlap = 10 +top_bottom_thickness = 1 +wall_thickness = 1 + diff --git a/resources/quality/ultimaker3/um3_aa0.4_PVA_Not_Supported_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_PVA_Not_Supported_Quality.inst.cfg index 97c0c35f0f..5076c4164a 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_PVA_Not_Supported_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_PVA_Not_Supported_Quality.inst.cfg @@ -11,116 +11,3 @@ material = generic_pva_ultimaker3_AA_0.4 supported = false [values] -acceleration_enabled = True -acceleration_infill = =acceleration_print -acceleration_layer_0 = =acceleration_topbottom -acceleration_prime_tower = =math.ceil(acceleration_print * 2000 / 4000) -acceleration_print = 4000 -acceleration_support = =math.ceil(acceleration_print * 2000 / 4000) -acceleration_support_infill = =acceleration_support -acceleration_support_interface = =acceleration_topbottom -acceleration_topbottom = =math.ceil(acceleration_print * 500 / 4000) -acceleration_wall = =math.ceil(acceleration_print * 1000 / 4000) -acceleration_wall_0 = =math.ceil(acceleration_wall * 500 / 1000) -acceleration_wall_x = =acceleration_wall -adhesion_type = brim -brim_width = 3 -cool_fan_full_at_height = =layer_height_0 + 4 * layer_height -cool_fan_speed = 50 -cool_min_layer_time = 5 -cool_min_speed = 5 -infill_line_width = =round(line_width * 0.5 / 0.35, 2) -infill_pattern = triangles -infill_sparse_density = 20 -infill_wipe_dist = 0 -jerk_enabled = True -jerk_infill = =jerk_print -jerk_layer_0 = =jerk_topbottom -jerk_prime_tower = =math.ceil(jerk_print * 15 / 25) -jerk_print = 25 -jerk_support = =math.ceil(jerk_print * 15 / 25) -jerk_support_infill = =jerk_support -jerk_support_interface = =jerk_topbottom -jerk_topbottom = =math.ceil(jerk_print * 5 / 25) -jerk_wall = =math.ceil(jerk_print * 10 / 25) -jerk_wall_0 = =math.ceil(jerk_wall * 5 / 10) -jerk_wall_x = =jerk_wall -layer_height = 0.1 -layer_height_0 = =round(machine_nozzle_size / 1.5, 2) -line_width = =machine_nozzle_size * 0.875 -machine_min_cool_heat_time_window = 15 -machine_nozzle_cool_down_speed = 0.8 -machine_nozzle_heat_up_speed = 1.5 -material_print_temperature = 215 -material_standby_temperature = 100 -multiple_mesh_overlap = 0 -ooze_shield_angle = 60 -ooze_shield_enabled = False -prime_tower_enable = True -prime_tower_size = 15 -prime_tower_wipe_enabled = True -raft_acceleration = =acceleration_layer_0 -raft_airgap = 0 -raft_base_speed = 20 -raft_base_thickness = 0.3 -raft_interface_line_spacing = 0.5 -raft_interface_line_width = 0.5 -raft_interface_speed = 20 -raft_interface_thickness = 0.2 -raft_jerk = =jerk_layer_0 -raft_margin = 10 -raft_speed = 25 -raft_surface_layers = 1 -retraction_amount = 2 -retraction_count_max = 10 -retraction_extrusion_window = =retraction_amount -retraction_hop = 2 -retraction_hop_enabled = True -retraction_hop_only_when_collides = True -retraction_min_travel = 5 -retraction_prime_speed = 15 -skin_overlap = 10 -speed_infill = =speed_print -speed_layer_0 = 20 -speed_prime_tower = =speed_topbottom -speed_print = 35 -speed_support = =speed_wall_0 -speed_support_interface = =speed_topbottom -speed_topbottom = =math.ceil(speed_print * 20 / 35) -speed_travel = 250 -speed_wall = =math.ceil(speed_print * 30 / 35) -speed_wall_0 = =math.ceil(speed_wall * 25 / 30) -speed_wall_x = =speed_wall -support_angle = 45 -support_bottom_height = =layer_height * 2 -support_bottom_stair_step_height = =layer_height -support_infill_rate = 30 -support_interface_enable = True -support_join_distance = 3 -support_line_width = =round(line_width * 0.4 / 0.35, 2) -support_offset = 3 -support_pattern = triangles -support_use_towers = False -support_xy_distance = =wall_line_width_0 * 3 -support_xy_distance_overhang = =wall_line_width_0 / 2 -support_z_distance = 0 -switch_extruder_prime_speed = 15 -switch_extruder_retraction_amount = 8 -top_bottom_thickness = 1 -travel_avoid_distance = 3 -travel_compensate_overlapping_walls_enabled = True -wall_0_inset = 0 -wall_line_width_x = =round(line_width * 0.3 / 0.35, 2) -wall_thickness = 1 - -support_top_distance = =support_z_distance -support_bottom_distance = =support_z_distance / 2 -raft_surface_thickness = =resolveOrValue('layer_height') -cool_fan_speed_max = =cool_fan_speed - -cool_min_layer_time_fan_speed_max = 10 -infill_overlap_mm = =infill_line_width * infill_overlap / 100 if infill_sparse_density < 95 and infill_pattern != 'concentric' else 0 -material_bed_temperature = 60 -ooze_shield_dist = 2 -retraction_speed = 25 -switch_extruder_retraction_speeds = 20 diff --git a/resources/quality/ultimaker3/um3_bb0.4_ABS_Not_Supported_Quality.inst.cfg b/resources/quality/ultimaker3/um3_bb0.4_ABS_Not_Supported_Quality.inst.cfg index 9a8e3b4d9a..0a00e9e09b 100644 --- a/resources/quality/ultimaker3/um3_bb0.4_ABS_Not_Supported_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_bb0.4_ABS_Not_Supported_Quality.inst.cfg @@ -11,116 +11,3 @@ weight = 0 supported = false [values] -acceleration_enabled = True -acceleration_infill = =acceleration_print -acceleration_layer_0 = =acceleration_topbottom -acceleration_prime_tower = =math.ceil(acceleration_print * 2000 / 4000) -acceleration_print = 4000 -acceleration_support = =math.ceil(acceleration_print * 2000 / 4000) -acceleration_support_infill = =acceleration_support -acceleration_support_interface = =acceleration_topbottom -acceleration_topbottom = =math.ceil(acceleration_print * 500 / 4000) -acceleration_wall = =math.ceil(acceleration_print * 1000 / 4000) -acceleration_wall_0 = =math.ceil(acceleration_wall * 500 / 1000) -acceleration_wall_x = =acceleration_wall -adhesion_type = brim -brim_width = 7 -cool_fan_full_at_height = =layer_height_0 + 4 * layer_height -cool_fan_speed = 50 -cool_fan_speed_max = 100 -cool_min_layer_time = 5 -cool_min_speed = 5 -infill_line_width = =round(line_width * 0.5 / 0.35, 2) -infill_pattern = triangles -infill_sparse_density = 20 -infill_wipe_dist = 0 -jerk_enabled = True -jerk_infill = =jerk_print -jerk_layer_0 = =jerk_topbottom -jerk_prime_tower = =math.ceil(jerk_print * 15 / 25) -jerk_print = 25 -jerk_support = =math.ceil(jerk_print * 15 / 25) -jerk_support_infill = =jerk_support -jerk_support_interface = =jerk_topbottom -jerk_topbottom = =math.ceil(jerk_print * 5 / 25) -jerk_wall = =math.ceil(jerk_print * 10 / 25) -jerk_wall_0 = =math.ceil(jerk_wall * 5 / 10) -jerk_wall_x = =jerk_wall -layer_height = 0.1 -layer_height_0 = =round(machine_nozzle_size / 1.5, 2) -line_width = =machine_nozzle_size * 0.875 -machine_min_cool_heat_time_window = 15 -machine_nozzle_cool_down_speed = 0.85 -machine_nozzle_heat_up_speed = 1.5 -material_bed_temperature = 80 -material_print_temperature = 230 -material_standby_temperature = 100 -multiple_mesh_overlap = 0 -ooze_shield_angle = 60 -ooze_shield_enabled = False -prime_tower_enable = True -prime_tower_size = 16 -prime_tower_wipe_enabled = True -raft_base_thickness = =resolveOrValue('layer_height_0') * 1.2 -raft_speed = =speed_print / 60 * 30 -raft_interface_speed = =raft_speed * 0.75 -raft_base_speed = =0.75 * raft_speed -raft_acceleration = =acceleration_print -raft_jerk = =jerk_print -retraction_count_max = 25 -retraction_extrusion_window = 1 -retraction_hop = 2 -retraction_hop_enabled = True -retraction_hop_only_when_collides = True -skin_overlap = 15 -speed_infill = =speed_print -speed_layer_0 = 20 -speed_prime_tower = =speed_topbottom -speed_print = 55 -speed_support = =speed_wall_0 -speed_support_interface = =speed_topbottom -speed_topbottom = =math.ceil(speed_print * 30 / 55) -speed_travel = 250 -speed_wall = =math.ceil(speed_print * 30 / 55) -speed_wall_0 = =math.ceil(speed_wall * 20 / 30) -speed_wall_x = =speed_wall -support_angle = 60 -support_bottom_distance = =support_z_distance / 2 -support_top_distance = =support_z_distance -support_xy_distance = =wall_line_width_0 * 2.5 -support_xy_distance_overhang = =wall_line_width_0 -support_z_distance = =layer_height * 2 -top_bottom_thickness = 1.2 -travel_avoid_distance = 3 -travel_compensate_overlapping_walls_enabled = True -wall_0_inset = 0 -wall_line_width_x = =round(line_width * 0.3 / 0.35, 2) -wall_thickness = 1.3 -support_line_width = =line_width -support_pattern = zigzag -support_infill_rate = 15 -support_join_distance = 2 -support_offset = 0.2 -support_interface_enable = False -support_use_towers = True -raft_margin = 15 -raft_airgap = 0.3 -raft_surface_layers = 2 -raft_surface_thickness = =resolveOrValue('layer_height') -raft_interface_thickness = =resolveOrValue('layer_height') * 1.5 -raft_interface_line_width = =line_width * 2 -raft_interface_line_spacing = =raft_interface_line_width + 0.2 -support_bottom_height = =extruderValue(support_interface_extruder_nr, 'support_interface_height') -retraction_amount = 6.5 - -cool_min_layer_time_fan_speed_max = 10 -infill_overlap_mm = =infill_line_width * infill_overlap / 100 if infill_sparse_density < 95 and infill_pattern != 'concentric' else 0 -ooze_shield_dist = 2 -retraction_extra_prime_amount = 0 -retraction_min_travel = =line_width * 2 -retraction_prime_speed = =retraction_speed -retraction_speed = 25 -support_bottom_stair_step_height = 0.3 -switch_extruder_prime_speed = =switch_extruder_retraction_speeds -switch_extruder_retraction_amount = =machine_heat_zone_length -switch_extruder_retraction_speeds = 20 diff --git a/resources/quality/ultimaker3/um3_bb0.4_CPE_Not_Supported_Quality.inst.cfg b/resources/quality/ultimaker3/um3_bb0.4_CPE_Not_Supported_Quality.inst.cfg index 5ea6e1edeb..17c10b7a72 100644 --- a/resources/quality/ultimaker3/um3_bb0.4_CPE_Not_Supported_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_bb0.4_CPE_Not_Supported_Quality.inst.cfg @@ -11,116 +11,3 @@ weight = 0 supported = false [values] -acceleration_enabled = True -acceleration_infill = =acceleration_print -acceleration_layer_0 = =acceleration_topbottom -acceleration_prime_tower = =math.ceil(acceleration_print * 2000 / 4000) -acceleration_print = 4000 -acceleration_support = =math.ceil(acceleration_print * 2000 / 4000) -acceleration_support_infill = =acceleration_support -acceleration_support_interface = =acceleration_topbottom -acceleration_topbottom = =math.ceil(acceleration_print * 500 / 4000) -acceleration_wall = =math.ceil(acceleration_print * 1000 / 4000) -acceleration_wall_0 = =math.ceil(acceleration_wall * 500 / 1000) -acceleration_wall_x = =acceleration_wall -adhesion_type = brim -brim_width = 7 -cool_fan_full_at_height = =layer_height_0 + 4 * layer_height -cool_fan_speed = 50 -cool_fan_speed_max = 100 -cool_min_layer_time = 5 -cool_min_speed = 5 -infill_line_width = =round(line_width * 0.5 / 0.35, 2) -infill_pattern = triangles -infill_sparse_density = 20 -infill_wipe_dist = 0 -jerk_enabled = True -jerk_infill = =jerk_print -jerk_layer_0 = =jerk_topbottom -jerk_prime_tower = =math.ceil(jerk_print * 15 / 25) -jerk_print = 25 -jerk_support = =math.ceil(jerk_print * 15 / 25) -jerk_support_infill = =jerk_support -jerk_support_interface = =jerk_topbottom -jerk_topbottom = =math.ceil(jerk_print * 5 / 25) -jerk_wall = =math.ceil(jerk_print * 10 / 25) -jerk_wall_0 = =math.ceil(jerk_wall * 5 / 10) -jerk_wall_x = =jerk_wall -layer_height = 0.1 -layer_height_0 = =round(machine_nozzle_size / 1.5, 2) -line_width = =machine_nozzle_size * 0.875 -machine_min_cool_heat_time_window = 15 -machine_nozzle_cool_down_speed = 0.85 -machine_nozzle_heat_up_speed = 1.5 -material_bed_temperature = 70 -material_print_temperature = 240 -material_standby_temperature = 100 -multiple_mesh_overlap = 0 -ooze_shield_angle = 60 -ooze_shield_enabled = False -prime_tower_enable = True -prime_tower_size = 17 -prime_tower_wipe_enabled = True -raft_base_thickness = =resolveOrValue('layer_height_0') * 1.2 -raft_speed = =speed_print / 60 * 30 -raft_interface_speed = =raft_speed * 0.75 -raft_base_speed = =0.75 * raft_speed -raft_acceleration = =acceleration_print -raft_jerk = =jerk_print -retraction_count_max = 25 -retraction_extrusion_window = 1 -retraction_hop = 2 -retraction_hop_enabled = True -retraction_hop_only_when_collides = True -skin_overlap = 15 -speed_infill = =speed_print -speed_layer_0 = 20 -speed_prime_tower = =speed_topbottom -speed_print = 55 -speed_support = =speed_wall_0 -speed_support_interface = =speed_topbottom -speed_topbottom = =math.ceil(speed_print * 30 / 55) -speed_travel = 250 -speed_wall = =math.ceil(speed_print * 30 / 55) -speed_wall_0 = =math.ceil(speed_wall * 20 / 30) -speed_wall_x = =speed_wall -support_angle = 60 -support_bottom_distance = =support_z_distance / 2 -support_top_distance = =support_z_distance -support_xy_distance = =wall_line_width_0 * 2.5 -support_xy_distance_overhang = =wall_line_width_0 -support_z_distance = =layer_height * 2 -top_bottom_thickness = 1.2 -travel_avoid_distance = 3 -travel_compensate_overlapping_walls_enabled = True -wall_0_inset = 0 -wall_line_width_x = =round(line_width * 0.3 / 0.35, 2) -wall_thickness = 1.3 -support_line_width = =line_width -support_pattern = zigzag -support_infill_rate = 15 -support_join_distance = 2 -support_offset = 0.2 -support_interface_enable = False -support_use_towers = True -raft_margin = 15 -raft_airgap = 0.3 -raft_surface_layers = 2 -raft_surface_thickness = =resolveOrValue('layer_height') -raft_interface_thickness = =resolveOrValue('layer_height') * 1.5 -raft_interface_line_width = =line_width * 2 -raft_interface_line_spacing = =raft_interface_line_width + 0.2 -support_bottom_height = =extruderValue(support_interface_extruder_nr, 'support_interface_height') -retraction_amount = 6.5 - -cool_min_layer_time_fan_speed_max = 10 -infill_overlap_mm = =infill_line_width * infill_overlap / 100 if infill_sparse_density < 95 and infill_pattern != 'concentric' else 0 -ooze_shield_dist = 2 -retraction_extra_prime_amount = 0 -retraction_min_travel = =line_width * 2 -retraction_prime_speed = =retraction_speed -retraction_speed = 25 -support_bottom_stair_step_height = 0.3 -switch_extruder_prime_speed = =switch_extruder_retraction_speeds -switch_extruder_retraction_amount = =machine_heat_zone_length -switch_extruder_retraction_speeds = 20 diff --git a/resources/quality/ultimaker3/um3_bb0.4_Nylon_Not_Supported_Quality.inst.cfg b/resources/quality/ultimaker3/um3_bb0.4_Nylon_Not_Supported_Quality.inst.cfg index 1d7f49caf2..c562e16a8e 100644 --- a/resources/quality/ultimaker3/um3_bb0.4_Nylon_Not_Supported_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_bb0.4_Nylon_Not_Supported_Quality.inst.cfg @@ -11,116 +11,3 @@ weight = 0 supported = false [values] -acceleration_enabled = True -acceleration_infill = =acceleration_print -acceleration_layer_0 = =acceleration_topbottom -acceleration_prime_tower = =math.ceil(acceleration_print * 2000 / 4000) -acceleration_print = 4000 -acceleration_support = =math.ceil(acceleration_print * 2000 / 4000) -acceleration_support_infill = =acceleration_support -acceleration_support_interface = =acceleration_topbottom -acceleration_topbottom = =math.ceil(acceleration_print * 500 / 4000) -acceleration_wall = =math.ceil(acceleration_print * 1000 / 4000) -acceleration_wall_0 = =math.ceil(acceleration_wall * 500 / 1000) -acceleration_wall_x = =acceleration_wall -adhesion_type = raft -cool_fan_full_at_height = =layer_height_0 + 4 * layer_height -cool_fan_speed = 40 -cool_fan_speed_max = 100 -cool_min_layer_time = 5 -cool_min_layer_time_fan_speed_max = 20 -cool_min_speed = 12 -infill_line_width = =round(line_width * 0.5 / 0.35, 2) -infill_overlap_mm = 0.05 -infill_pattern = triangles -infill_sparse_density = 20 -infill_wipe_dist = 0 -jerk_enabled = True -jerk_infill = =jerk_print -jerk_layer_0 = =jerk_topbottom -jerk_prime_tower = =math.ceil(jerk_print * 15 / 25) -jerk_print = 25 -jerk_support = =math.ceil(jerk_print * 15 / 25) -jerk_support_infill = =jerk_support -jerk_support_interface = =jerk_topbottom -jerk_topbottom = =math.ceil(jerk_print * 5 / 25) -jerk_wall = =math.ceil(jerk_print * 10 / 25) -jerk_wall_0 = =math.ceil(jerk_wall * 5 / 10) -jerk_wall_x = =jerk_wall -layer_height = 0.1 -layer_height_0 = =round(machine_nozzle_size / 1.5, 2) -line_width = =machine_nozzle_size -machine_min_cool_heat_time_window = 15 -machine_nozzle_cool_down_speed = 0.9 -machine_nozzle_heat_up_speed = 1.4 -material_bed_temperature = 60 -material_print_temperature = 245 -material_standby_temperature = 100 -multiple_mesh_overlap = 0 -ooze_shield_angle = 40 -ooze_shield_dist = 2 -ooze_shield_enabled = False -prime_tower_enable = True -prime_tower_size = 15 -prime_tower_wipe_enabled = True -raft_speed = =speed_print / 60 * 30 -raft_interface_speed = =raft_speed * 0.75 -raft_base_thickness = =resolveOrValue('layer_height_0') * 1.2 -raft_base_speed = =0.75 * raft_speed -raft_acceleration = =acceleration_layer_0 -raft_airgap = =round(layer_height_0 * 0.85, 2) -raft_interface_thickness = =round(machine_nozzle_size * 0.3 / 0.4, 2) -raft_jerk = =jerk_layer_0 -raft_margin = 10 -raft_surface_thickness = =round(machine_nozzle_size * 0.2 / 0.4, 2) -retraction_amount = 8 -retraction_count_max = 25 -retraction_extra_prime_amount = 0 -retraction_extrusion_window = 1 -retraction_hop = 2 -retraction_hop_enabled = True -retraction_hop_only_when_collides = True -retraction_speed = 25 -skin_overlap = 50 -speed_infill = =speed_print -speed_layer_0 = 10 -speed_prime_tower = =speed_topbottom -speed_print = 70 -speed_support = =speed_wall_0 -speed_support_interface = =speed_topbottom -speed_topbottom = =math.ceil(speed_print * 30 / 70) -speed_travel = 250 -speed_wall = =math.ceil(speed_print * 30 / 70) -speed_wall_0 = =math.ceil(speed_wall * 20 / 30) -speed_wall_x = =speed_wall -support_angle = 60 -support_bottom_distance = =support_z_distance / 2 -support_top_distance = =support_z_distance -support_xy_distance = =wall_line_width_0 * 2.5 -support_xy_distance_overhang = =wall_line_width_0 -support_z_distance = =layer_height * 2 -switch_extruder_prime_speed = 30 -switch_extruder_retraction_amount = 30 -switch_extruder_retraction_speeds = 40 -top_bottom_thickness = 1.2 -travel_avoid_distance = 3 -travel_compensate_overlapping_walls_enabled = True -wall_0_inset = 0 -wall_thickness = 1.3 -support_line_width = =line_width -support_pattern = zigzag -support_infill_rate = 15 -support_join_distance = 2 -support_offset = 0.2 -support_interface_enable = False -support_use_towers = True -raft_surface_layers = 2 -raft_interface_line_width = =line_width * 2 -raft_interface_line_spacing = =raft_interface_line_width + 0.2 -support_bottom_height = =extruderValue(support_interface_extruder_nr, 'support_interface_height') - -brim_width = 7 -retraction_min_travel = =line_width * 2 -retraction_prime_speed = =retraction_speed -support_bottom_stair_step_height = 0.3 -wall_line_width_x = =wall_line_width diff --git a/resources/quality/ultimaker3/um3_bb0.4_PLA_Not_Supported_Quality.inst.cfg b/resources/quality/ultimaker3/um3_bb0.4_PLA_Not_Supported_Quality.inst.cfg index af8135af19..b9a64bca38 100644 --- a/resources/quality/ultimaker3/um3_bb0.4_PLA_Not_Supported_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_bb0.4_PLA_Not_Supported_Quality.inst.cfg @@ -11,117 +11,3 @@ weight = 0 supported = false [values] -acceleration_enabled = True -acceleration_infill = =acceleration_print -acceleration_layer_0 = =acceleration_topbottom -acceleration_prime_tower = =math.ceil(acceleration_print * 2000 / 4000) -acceleration_print = 4000 -acceleration_support = =math.ceil(acceleration_print * 2000 / 4000) -acceleration_support_infill = =acceleration_support -acceleration_support_interface = =acceleration_topbottom -acceleration_topbottom = =math.ceil(acceleration_print * 500 / 4000) -acceleration_wall = =math.ceil(acceleration_print * 1000 / 4000) -acceleration_wall_0 = =math.ceil(acceleration_wall * 500 / 1000) -acceleration_wall_x = =acceleration_wall -adhesion_type = brim -brim_width = 7 -cool_fan_full_at_height = =layer_height_0 + 2 * layer_height -cool_min_layer_time = 5 -cool_min_speed = 7 -infill_line_width = =round(line_width * 0.5 / 0.35, 2) -infill_pattern = triangles -infill_sparse_density = 20 -infill_wipe_dist = 0 -jerk_enabled = True -jerk_infill = =jerk_print -jerk_layer_0 = =jerk_topbottom -jerk_prime_tower = =math.ceil(jerk_print * 15 / 25) -jerk_print = 25 -jerk_support = =math.ceil(jerk_print * 15 / 25) -jerk_support_infill = =jerk_support -jerk_support_interface = =jerk_topbottom -jerk_topbottom = =math.ceil(jerk_print * 5 / 25) -jerk_wall = =math.ceil(jerk_print * 10 / 25) -jerk_wall_0 = =math.ceil(jerk_wall * 5 / 10) -jerk_wall_x = =jerk_wall -layer_height = 0.1 -layer_height_0 = =round(machine_nozzle_size / 1.5, 2) -line_width = =machine_nozzle_size * 0.875 -machine_min_cool_heat_time_window = 15 -machine_nozzle_cool_down_speed = 0.75 -machine_nozzle_heat_up_speed = 1.6 -material_bed_temperature = 60 -material_print_temperature = 200 -material_standby_temperature = 100 -multiple_mesh_overlap = 0 -prime_tower_enable = False -prime_tower_size = 15 -ooze_shield_angle = 60 -ooze_shield_enabled = False -prime_tower_wipe_enabled = True -raft_base_thickness = =resolveOrValue('layer_height_0') * 1.2 -raft_speed = =speed_print / 60 * 30 -raft_interface_speed = =raft_speed * 0.75 -raft_base_speed = =0.75 * raft_speed -raft_acceleration = =acceleration_print -raft_jerk = =jerk_print -retraction_count_max = 25 -retraction_extrusion_window = 1 -retraction_hop = 2 -retraction_hop_enabled = True -retraction_hop_only_when_collides = True -skin_overlap = 10 -speed_infill = =speed_print -speed_layer_0 = 20 -speed_prime_tower = =speed_topbottom -speed_print = 70 -speed_support = =speed_wall_0 -speed_support_interface = =speed_topbottom -speed_topbottom = =math.ceil(speed_print * 30 / 70) -speed_travel = 250 -speed_wall = =math.ceil(speed_print * 30 / 70) -speed_wall_0 = =math.ceil(speed_wall * 20 / 30) -speed_wall_x = =speed_wall -support_angle = 60 -support_bottom_distance = =support_z_distance / 2 -support_top_distance = =support_z_distance -support_xy_distance = =wall_line_width_0 * 2.5 -support_xy_distance_overhang = =wall_line_width_0 -support_z_distance = =layer_height * 2 -top_bottom_thickness = 1 -travel_avoid_distance = 3 -travel_compensate_overlapping_walls_enabled = True -wall_0_inset = 0 -wall_line_width_x = =round(line_width * 0.3 / 0.35, 2) -wall_thickness = 1 - -support_line_width = =line_width -support_pattern = zigzag -support_infill_rate = 15 -support_join_distance = 2 -support_offset = 0.2 -support_interface_enable = False -support_use_towers = True -raft_margin = 15 -raft_airgap = 0.3 -raft_surface_layers = 2 -raft_surface_thickness = =resolveOrValue('layer_height') -raft_interface_thickness = =resolveOrValue('layer_height') * 1.5 -raft_interface_line_width = =line_width * 2 -raft_interface_line_spacing = =raft_interface_line_width + 0.2 -cool_fan_speed_max = =cool_fan_speed -support_bottom_height = =extruderValue(support_interface_extruder_nr, 'support_interface_height') -retraction_amount = 6.5 - -cool_fan_speed = 100 -cool_min_layer_time_fan_speed_max = 10 -infill_overlap_mm = =infill_line_width * infill_overlap / 100 if infill_sparse_density < 95 and infill_pattern != 'concentric' else 0 -ooze_shield_dist = 2 -retraction_extra_prime_amount = 0 -retraction_min_travel = =line_width * 2 -retraction_prime_speed = =retraction_speed -retraction_speed = 25 -support_bottom_stair_step_height = 0.3 -switch_extruder_prime_speed = =switch_extruder_retraction_speeds -switch_extruder_retraction_amount = =machine_heat_zone_length -switch_extruder_retraction_speeds = 20 diff --git a/resources/quality/ultimaker3/um3_bb0.4_PVA_Draft_Print.inst.cfg b/resources/quality/ultimaker3/um3_bb0.4_PVA_Draft_Print.inst.cfg index 86c97c9df3..7b6997c18b 100644 --- a/resources/quality/ultimaker3/um3_bb0.4_PVA_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_bb0.4_PVA_Draft_Print.inst.cfg @@ -1,126 +1,16 @@ -[general] -version = 2 -name = Draft Print -definition = ultimaker3 - -[metadata] -type = quality -quality_type = draft -weight = -2 -material = generic_pva_ultimaker3_BB_0.4 - -[values] -acceleration_enabled = True -acceleration_infill = =acceleration_print -acceleration_layer_0 = =acceleration_topbottom -acceleration_prime_tower = =math.ceil(acceleration_print * 2000 / 4000) -acceleration_print = 4000 -acceleration_support = =math.ceil(acceleration_print * 2000 / 4000) -acceleration_support_infill = =acceleration_support -acceleration_support_interface = =acceleration_topbottom -acceleration_topbottom = =math.ceil(acceleration_print * 500 / 4000) -acceleration_wall = =math.ceil(acceleration_print * 1000 / 4000) -acceleration_wall_0 = =math.ceil(acceleration_wall * 500 / 1000) -acceleration_wall_x = =acceleration_wall -adhesion_type = brim -brim_width = 3 -cool_fan_full_at_height = =layer_height_0 + 4 * layer_height -cool_fan_speed = 50 -cool_min_layer_time = 5 -cool_min_speed = 5 -infill_line_width = =round(line_width * 0.5 / 0.35, 2) -infill_pattern = triangles -infill_sparse_density = 20 -infill_wipe_dist = 0 -jerk_enabled = True -jerk_infill = =jerk_print -jerk_layer_0 = =jerk_topbottom -jerk_prime_tower = =math.ceil(jerk_print * 15 / 25) -jerk_print = 25 -jerk_support = =math.ceil(jerk_print * 15 / 25) -jerk_support_infill = =jerk_support -jerk_support_interface = =jerk_topbottom -jerk_topbottom = =math.ceil(jerk_print * 5 / 25) -jerk_wall = =math.ceil(jerk_print * 10 / 25) -jerk_wall_0 = =math.ceil(jerk_wall * 5 / 10) -jerk_wall_x = =jerk_wall -layer_height = 0.2 -layer_height_0 = =round(machine_nozzle_size / 1.5, 2) -line_width = =machine_nozzle_size * 0.875 -machine_min_cool_heat_time_window = 15 -machine_nozzle_cool_down_speed = 0.8 -machine_nozzle_heat_up_speed = 1.5 -material_print_temperature = 225 -material_standby_temperature = 100 -multiple_mesh_overlap = 0 -ooze_shield_angle = 60 -ooze_shield_enabled = False -prime_tower_enable = True -prime_tower_size = 15 -prime_tower_wipe_enabled = True -raft_acceleration = =acceleration_layer_0 -raft_airgap = 0 -raft_base_speed = 20 -raft_base_thickness = 0.3 -raft_interface_line_spacing = 0.5 -raft_interface_line_width = 0.5 -raft_interface_speed = 20 -raft_interface_thickness = 0.2 -raft_jerk = =jerk_layer_0 -raft_margin = 10 -raft_speed = 25 -raft_surface_layers = 1 -retraction_amount = 2 -retraction_count_max = 10 -retraction_extrusion_window = =retraction_amount -retraction_hop = 2 -retraction_hop_enabled = True -retraction_hop_only_when_collides = True -retraction_min_travel = 5 -retraction_prime_speed = 15 -skin_overlap = 20 -speed_infill = =speed_print -speed_layer_0 = 20 -speed_prime_tower = =speed_topbottom -speed_print = 35 -speed_support = =speed_wall_0 -speed_support_interface = =speed_topbottom -speed_topbottom = =math.ceil(speed_print * 20 / 35) -speed_travel = 250 -speed_wall = =math.ceil(speed_print * 30 / 35) -speed_wall_0 = =math.ceil(speed_wall * 25 / 30) -speed_wall_x = =speed_wall -support_angle = 45 -support_bottom_height = =layer_height * 2 -support_bottom_stair_step_height = =layer_height -support_infill_rate = 25 -support_interface_enable = True -support_join_distance = 3 -support_line_width = =round(line_width * 0.4 / 0.35, 2) -support_offset = 3 -support_pattern = triangles -support_use_towers = False -support_xy_distance = =wall_line_width_0 * 3 -support_xy_distance_overhang = =wall_line_width_0 / 2 -support_z_distance = 0 -switch_extruder_prime_speed = 15 -switch_extruder_retraction_amount = 8 -top_bottom_thickness = 1 -travel_avoid_distance = 3 -travel_compensate_overlapping_walls_enabled = True -wall_0_inset = 0 -wall_line_width_x = =round(line_width * 0.3 / 0.35, 2) -wall_thickness = 1 - -support_top_distance = =support_z_distance -support_bottom_distance = =support_z_distance / 2 -raft_surface_thickness = =resolveOrValue('layer_height') -cool_fan_speed_max = =cool_fan_speed - -cool_min_layer_time_fan_speed_max = 10 -infill_overlap_mm = =infill_line_width * infill_overlap / 100 if infill_sparse_density < 95 and infill_pattern != 'concentric' else 0 -material_bed_temperature = 60 -ooze_shield_dist = 2 -retraction_extra_prime_amount = 0 -retraction_speed = 25 -switch_extruder_retraction_speeds = 20 +[general] +version = 2 +name = Draft Print +definition = ultimaker3 + +[metadata] +type = quality +quality_type = draft +weight = -2 +material = generic_pva_ultimaker3_BB_0.4 + +[values] +material_print_temperature = 225 +material_standby_temperature = 100 +skin_overlap = 20 + diff --git a/resources/quality/ultimaker3/um3_bb0.4_PVA_Fast_Print.inst.cfg b/resources/quality/ultimaker3/um3_bb0.4_PVA_Fast_Print.inst.cfg index 72d008e834..10b06cc61b 100644 --- a/resources/quality/ultimaker3/um3_bb0.4_PVA_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_bb0.4_PVA_Fast_Print.inst.cfg @@ -1,125 +1,16 @@ -[general] -version = 2 -name = Fast Print -definition = ultimaker3 - -[metadata] -weight = -1 -type = quality -quality_type = fast -material = generic_pva_ultimaker3_BB_0.4 - -[values] -acceleration_enabled = True -acceleration_infill = =acceleration_print -acceleration_layer_0 = =acceleration_topbottom -acceleration_prime_tower = =math.ceil(acceleration_print * 2000 / 4000) -acceleration_print = 4000 -acceleration_support = =math.ceil(acceleration_print * 2000 / 4000) -acceleration_support_infill = =acceleration_support -acceleration_support_interface = =acceleration_topbottom -acceleration_topbottom = =math.ceil(acceleration_print * 500 / 4000) -acceleration_wall = =math.ceil(acceleration_print * 1000 / 4000) -acceleration_wall_0 = =math.ceil(acceleration_wall * 500 / 1000) -acceleration_wall_x = =acceleration_wall -adhesion_type = brim -brim_width = 3 -cool_fan_full_at_height = =layer_height_0 + 4 * layer_height -cool_fan_speed = 50 -cool_min_layer_time = 5 -cool_min_speed = 5 -infill_line_width = =round(line_width * 0.5 / 0.35, 2) -infill_pattern = triangles -infill_sparse_density = 20 -infill_wipe_dist = 0 -jerk_enabled = True -jerk_infill = =jerk_print -jerk_layer_0 = =jerk_topbottom -jerk_prime_tower = =math.ceil(jerk_print * 15 / 25) -jerk_print = 25 -jerk_support = =math.ceil(jerk_print * 15 / 25) -jerk_support_infill = =jerk_support -jerk_support_interface = =jerk_topbottom -jerk_topbottom = =math.ceil(jerk_print * 5 / 25) -jerk_wall = =math.ceil(jerk_print * 10 / 25) -jerk_wall_0 = =math.ceil(jerk_wall * 5 / 10) -jerk_wall_x = =jerk_wall -layer_height = 0.15 -layer_height_0 = =round(machine_nozzle_size / 1.5, 2) -line_width = =machine_nozzle_size * 0.875 -machine_min_cool_heat_time_window = 15 -machine_nozzle_cool_down_speed = 0.8 -machine_nozzle_heat_up_speed = 1.5 -material_print_temperature = 220 -material_standby_temperature = 100 -multiple_mesh_overlap = 0 -ooze_shield_angle = 60 -ooze_shield_enabled = False -prime_tower_enable = True -prime_tower_size = 15 -prime_tower_wipe_enabled = True -raft_acceleration = =acceleration_layer_0 -raft_airgap = 0 -raft_base_speed = 20 -raft_base_thickness = 0.3 -raft_interface_line_spacing = 0.5 -raft_interface_line_width = 0.5 -raft_interface_speed = 20 -raft_interface_thickness = 0.2 -raft_jerk = =jerk_layer_0 -raft_margin = 10 -raft_speed = 25 -raft_surface_layers = 1 -retraction_amount = 2 -retraction_count_max = 10 -retraction_extrusion_window = =retraction_amount -retraction_hop = 2 -retraction_hop_enabled = True -retraction_hop_only_when_collides = True -retraction_min_travel = 5 -retraction_prime_speed = 15 -skin_overlap = 15 -speed_infill = =speed_print -speed_layer_0 = 20 -speed_prime_tower = =speed_topbottom -speed_print = 35 -speed_support = =speed_wall_0 -speed_support_interface = =speed_topbottom -speed_topbottom = =math.ceil(speed_print * 20 / 35) -speed_travel = 250 -speed_wall = =math.ceil(speed_print * 30 / 35) -speed_wall_0 = =math.ceil(speed_wall * 25 / 30) -speed_wall_x = =speed_wall -support_angle = 45 -support_bottom_height = =layer_height * 2 -support_bottom_stair_step_height = =layer_height -support_infill_rate = 25 -support_interface_enable = True -support_join_distance = 3 -support_line_width = =round(line_width * 0.4 / 0.35, 2) -support_offset = 3 -support_pattern = triangles -support_use_towers = False -support_xy_distance = =wall_line_width_0 * 3 -support_xy_distance_overhang = =wall_line_width_0 / 2 -support_z_distance = 0 -switch_extruder_prime_speed = 15 -switch_extruder_retraction_amount = 8 -top_bottom_thickness = 1 -travel_avoid_distance = 3 -travel_compensate_overlapping_walls_enabled = True -wall_0_inset = 0 -wall_line_width_x = =round(line_width * 0.3 / 0.35, 2) -wall_thickness = 1 -support_top_distance = =support_z_distance -support_bottom_distance = =support_z_distance / 2 -raft_surface_thickness = =resolveOrValue('layer_height') -cool_fan_speed_max = =cool_fan_speed - -cool_min_layer_time_fan_speed_max = 10 -infill_overlap_mm = =infill_line_width * infill_overlap / 100 if infill_sparse_density < 95 and infill_pattern != 'concentric' else 0 -material_bed_temperature = 60 -ooze_shield_dist = 2 -retraction_extra_prime_amount = 0 -retraction_speed = 25 -switch_extruder_retraction_speeds = 20 +[general] +version = 2 +name = Fast Print +definition = ultimaker3 + +[metadata] +weight = -1 +type = quality +quality_type = fast +material = generic_pva_ultimaker3_BB_0.4 + +[values] +material_print_temperature = 220 +material_standby_temperature = 100 +skin_overlap = 15 + diff --git a/resources/quality/ultimaker3/um3_bb0.4_PVA_High_Quality.inst.cfg b/resources/quality/ultimaker3/um3_bb0.4_PVA_High_Quality.inst.cfg index 0762badf14..a6fb178a22 100644 --- a/resources/quality/ultimaker3/um3_bb0.4_PVA_High_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_bb0.4_PVA_High_Quality.inst.cfg @@ -1,126 +1,15 @@ -[general] -version = 2 -name = High Quality -definition = ultimaker3 - -[metadata] -weight = 0 -type = quality -quality_type = high -material = generic_pva_ultimaker3_BB_0.4 - -[values] -acceleration_enabled = True -acceleration_infill = =acceleration_print -acceleration_layer_0 = =acceleration_topbottom -acceleration_prime_tower = =math.ceil(acceleration_print * 2000 / 4000) -acceleration_print = 4000 -acceleration_support = =math.ceil(acceleration_print * 2000 / 4000) -acceleration_support_infill = =acceleration_support -acceleration_support_interface = =acceleration_topbottom -acceleration_topbottom = =math.ceil(acceleration_print * 500 / 4000) -acceleration_wall = =math.ceil(acceleration_print * 1000 / 4000) -acceleration_wall_0 = =math.ceil(acceleration_wall * 500 / 1000) -acceleration_wall_x = =acceleration_wall -adhesion_type = brim -brim_width = 3 -cool_fan_full_at_height = =layer_height_0 + 4 * layer_height -cool_fan_speed = 50 -cool_min_layer_time = 5 -cool_min_speed = 5 -infill_line_width = =round(line_width * 0.5 / 0.35, 2) -infill_pattern = triangles -infill_sparse_density = 20 -infill_wipe_dist = 0 -jerk_enabled = True -jerk_infill = =jerk_print -jerk_layer_0 = =jerk_topbottom -jerk_prime_tower = =math.ceil(jerk_print * 15 / 25) -jerk_print = 25 -jerk_support = =math.ceil(jerk_print * 15 / 25) -jerk_support_infill = =jerk_support -jerk_support_interface = =jerk_topbottom -jerk_topbottom = =math.ceil(jerk_print * 5 / 25) -jerk_wall = =math.ceil(jerk_print * 10 / 25) -jerk_wall_0 = =math.ceil(jerk_wall * 5 / 10) -jerk_wall_x = =jerk_wall -layer_height = 0.06 -layer_height_0 = =round(machine_nozzle_size / 1.5, 2) -line_width = =machine_nozzle_size * 0.875 -machine_min_cool_heat_time_window = 15 -machine_nozzle_cool_down_speed = 0.8 -machine_nozzle_heat_up_speed = 1.5 -material_print_temperature = 215 -material_standby_temperature = 100 -multiple_mesh_overlap = 0 -ooze_shield_angle = 60 -ooze_shield_enabled = False -prime_tower_enable = True -prime_tower_size = 15 -prime_tower_wipe_enabled = True -raft_acceleration = =acceleration_layer_0 -raft_airgap = 0 -raft_base_speed = 20 -raft_base_thickness = 0.3 -raft_interface_line_spacing = 0.5 -raft_interface_line_width = 0.5 -raft_interface_speed = 20 -raft_interface_thickness = 0.2 -raft_jerk = =jerk_layer_0 -raft_margin = 10 -raft_speed = 25 -raft_surface_layers = 1 -retraction_amount = 2 -retraction_count_max = 10 -retraction_extrusion_window = =retraction_amount -retraction_hop = 2 -retraction_hop_enabled = True -retraction_hop_only_when_collides = True -retraction_min_travel = 5 -retraction_prime_speed = 15 -skin_overlap = 10 -speed_infill = =speed_print -speed_layer_0 = 20 -speed_prime_tower = =speed_topbottom -speed_print = 35 -speed_support = =speed_wall_0 -speed_support_interface = =speed_topbottom -speed_topbottom = =math.ceil(speed_print * 20 / 35) -speed_travel = 250 -speed_wall = =math.ceil(speed_print * 30 / 35) -speed_wall_0 = =math.ceil(speed_wall * 25 / 30) -speed_wall_x = =speed_wall -support_angle = 45 -support_bottom_height = =layer_height * 2 -support_bottom_stair_step_height = =layer_height -support_infill_rate = 35 -support_interface_enable = True -support_join_distance = 3 -support_line_width = =round(line_width * 0.4 / 0.35, 2) -support_offset = 3 -support_pattern = triangles -support_use_towers = False -support_xy_distance = =wall_line_width_0 * 3 -support_xy_distance_overhang = =wall_line_width_0 / 2 -support_z_distance = 0 -switch_extruder_prime_speed = 15 -switch_extruder_retraction_amount = 8 -top_bottom_thickness = 1 -travel_avoid_distance = 3 -travel_compensate_overlapping_walls_enabled = True -wall_0_inset = 0 -wall_line_width_x = =round(line_width * 0.3 / 0.35, 2) -wall_thickness = 1 - -support_top_distance = =support_z_distance -support_bottom_distance = =support_z_distance / 2 -raft_surface_thickness = =resolveOrValue('layer_height') -cool_fan_speed_max = =cool_fan_speed - -cool_min_layer_time_fan_speed_max = 10 -infill_overlap_mm = =infill_line_width * infill_overlap / 100 if infill_sparse_density < 95 and infill_pattern != 'concentric' else 0 -material_bed_temperature = 60 -ooze_shield_dist = 2 -retraction_extra_prime_amount = 0 -retraction_speed = 25 -switch_extruder_retraction_speeds = 20 +[general] +version = 2 +name = High Quality +definition = ultimaker3 + +[metadata] +weight = 0 +type = quality +quality_type = high +material = generic_pva_ultimaker3_BB_0.4 + +[values] +support_infill_rate = 35 +material_standby_temperature = 100 + diff --git a/resources/quality/ultimaker3/um3_bb0.4_PVA_Normal_Quality.inst.cfg b/resources/quality/ultimaker3/um3_bb0.4_PVA_Normal_Quality.inst.cfg index 92f829080c..dd4157c695 100644 --- a/resources/quality/ultimaker3/um3_bb0.4_PVA_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_bb0.4_PVA_Normal_Quality.inst.cfg @@ -1,126 +1,15 @@ -[general] -version = 2 -name = Normal Quality -definition = ultimaker3 - -[metadata] -weight = 0 -type = quality -quality_type = normal -material = generic_pva_ultimaker3_BB_0.4 - -[values] -acceleration_enabled = True -acceleration_infill = =acceleration_print -acceleration_layer_0 = =acceleration_topbottom -acceleration_prime_tower = =math.ceil(acceleration_print * 2000 / 4000) -acceleration_print = 4000 -acceleration_support = =math.ceil(acceleration_print * 2000 / 4000) -acceleration_support_infill = =acceleration_support -acceleration_support_interface = =acceleration_topbottom -acceleration_topbottom = =math.ceil(acceleration_print * 500 / 4000) -acceleration_wall = =math.ceil(acceleration_print * 1000 / 4000) -acceleration_wall_0 = =math.ceil(acceleration_wall * 500 / 1000) -acceleration_wall_x = =acceleration_wall -adhesion_type = brim -brim_width = 3 -cool_fan_full_at_height = =layer_height_0 + 4 * layer_height -cool_fan_speed = 50 -cool_min_layer_time = 5 -cool_min_speed = 5 -infill_line_width = =round(line_width * 0.5 / 0.35, 2) -infill_pattern = triangles -infill_sparse_density = 20 -infill_wipe_dist = 0 -jerk_enabled = True -jerk_infill = =jerk_print -jerk_layer_0 = =jerk_topbottom -jerk_prime_tower = =math.ceil(jerk_print * 15 / 25) -jerk_print = 25 -jerk_support = =math.ceil(jerk_print * 15 / 25) -jerk_support_infill = =jerk_support -jerk_support_interface = =jerk_topbottom -jerk_topbottom = =math.ceil(jerk_print * 5 / 25) -jerk_wall = =math.ceil(jerk_print * 10 / 25) -jerk_wall_0 = =math.ceil(jerk_wall * 5 / 10) -jerk_wall_x = =jerk_wall -layer_height = 0.1 -layer_height_0 = =round(machine_nozzle_size / 1.5, 2) -line_width = =machine_nozzle_size * 0.875 -machine_min_cool_heat_time_window = 15 -machine_nozzle_cool_down_speed = 0.8 -machine_nozzle_heat_up_speed = 1.5 -material_print_temperature = 215 -material_standby_temperature = 100 -multiple_mesh_overlap = 0 -ooze_shield_angle = 60 -ooze_shield_enabled = False -prime_tower_enable = True -prime_tower_size = 15 -prime_tower_wipe_enabled = True -raft_acceleration = =acceleration_layer_0 -raft_airgap = 0 -raft_base_speed = 20 -raft_base_thickness = 0.3 -raft_interface_line_spacing = 0.5 -raft_interface_line_width = 0.5 -raft_interface_speed = 20 -raft_interface_thickness = 0.2 -raft_jerk = =jerk_layer_0 -raft_margin = 10 -raft_speed = 25 -raft_surface_layers = 1 -retraction_amount = 2 -retraction_count_max = 10 -retraction_extrusion_window = =retraction_amount -retraction_hop = 2 -retraction_hop_enabled = True -retraction_hop_only_when_collides = True -retraction_min_travel = 5 -retraction_prime_speed = 15 -skin_overlap = 10 -speed_infill = =speed_print -speed_layer_0 = 20 -speed_prime_tower = =speed_topbottom -speed_print = 35 -speed_support = =speed_wall_0 -speed_support_interface = =speed_topbottom -speed_topbottom = =math.ceil(speed_print * 20 / 35) -speed_travel = 250 -speed_wall = =math.ceil(speed_print * 30 / 35) -speed_wall_0 = =math.ceil(speed_wall * 25 / 30) -speed_wall_x = =speed_wall -support_angle = 45 -support_bottom_height = =layer_height * 2 -support_bottom_stair_step_height = =layer_height -support_infill_rate = 30 -support_interface_enable = True -support_join_distance = 3 -support_line_width = =round(line_width * 0.4 / 0.35, 2) -support_offset = 3 -support_pattern = triangles -support_use_towers = False -support_xy_distance = =wall_line_width_0 * 3 -support_xy_distance_overhang = =wall_line_width_0 / 2 -support_z_distance = 0 -switch_extruder_prime_speed = 15 -switch_extruder_retraction_amount = 8 -top_bottom_thickness = 1 -travel_avoid_distance = 3 -travel_compensate_overlapping_walls_enabled = True -wall_0_inset = 0 -wall_line_width_x = =round(line_width * 0.3 / 0.35, 2) -wall_thickness = 1 - -support_top_distance = =support_z_distance -support_bottom_distance = =support_z_distance / 2 -raft_surface_thickness = =resolveOrValue('layer_height') -cool_fan_speed_max = =cool_fan_speed - -cool_min_layer_time_fan_speed_max = 10 -infill_overlap_mm = =infill_line_width * infill_overlap / 100 if infill_sparse_density < 95 and infill_pattern != 'concentric' else 0 -material_bed_temperature = 60 -ooze_shield_dist = 2 -retraction_extra_prime_amount = 0 -retraction_speed = 25 -switch_extruder_retraction_speeds = 20 +[general] +version = 2 +name = Normal Quality +definition = ultimaker3 + +[metadata] +weight = 0 +type = quality +quality_type = normal +material = generic_pva_ultimaker3_BB_0.4 + +[values] +support_infill_rate = 30 +material_standby_temperature = 100 + diff --git a/resources/quality/ultimaker3/um3_global_Draft_Quality.inst.cfg b/resources/quality/ultimaker3/um3_global_Draft_Quality.inst.cfg new file mode 100644 index 0000000000..96e25c6ad8 --- /dev/null +++ b/resources/quality/ultimaker3/um3_global_Draft_Quality.inst.cfg @@ -0,0 +1,13 @@ +[general] +version = 2 +name = Draft Quality +definition = ultimaker3 + +[metadata] +type = quality +quality_type = draft +global_quality = True +weight = -2 + +[values] +layer_height = 0.2 diff --git a/resources/quality/ultimaker3/um3_global_Fast_Quality.inst.cfg b/resources/quality/ultimaker3/um3_global_Fast_Quality.inst.cfg new file mode 100644 index 0000000000..6b1c3c4208 --- /dev/null +++ b/resources/quality/ultimaker3/um3_global_Fast_Quality.inst.cfg @@ -0,0 +1,13 @@ +[general] +version = 2 +name = Fast Quality +definition = ultimaker3 + +[metadata] +type = quality +quality_type = fast +global_quality = True +weight = -1 + +[values] +layer_height = 0.15 diff --git a/resources/quality/ultimaker3/um3_global_High_Quality.inst.cfg b/resources/quality/ultimaker3/um3_global_High_Quality.inst.cfg new file mode 100644 index 0000000000..af0741ff88 --- /dev/null +++ b/resources/quality/ultimaker3/um3_global_High_Quality.inst.cfg @@ -0,0 +1,13 @@ +[general] +version = 2 +name = High Quality +definition = ultimaker3 + +[metadata] +type = quality +quality_type = high +global_quality = True +weight = 0 + +[values] +layer_height = 0.06 diff --git a/resources/quality/ultimaker3/um3_global_Normal_Quality.inst.cfg b/resources/quality/ultimaker3/um3_global_Normal_Quality.inst.cfg new file mode 100644 index 0000000000..a875b0f1ce --- /dev/null +++ b/resources/quality/ultimaker3/um3_global_Normal_Quality.inst.cfg @@ -0,0 +1,13 @@ +[general] +version = 2 +name = Normal Quality +definition = ultimaker3 + +[metadata] +type = quality +quality_type = normal +global_quality = True +weight = 0 + +[values] +layer_height = 0.1 diff --git a/resources/variants/ultimaker3_aa04.inst.cfg b/resources/variants/ultimaker3_aa04.inst.cfg index ece408e998..c8d5b8aceb 100644 --- a/resources/variants/ultimaker3_aa04.inst.cfg +++ b/resources/variants/ultimaker3_aa04.inst.cfg @@ -8,4 +8,36 @@ author = ultimaker type = variant [values] -machine_nozzle_size = 0.4 +brim_width = 7 +machine_nozzle_cool_down_speed = 0.9 +raft_acceleration = =acceleration_print +raft_airgap = 0.3 +raft_base_speed = =0.75 * raft_speed +raft_base_thickness = =resolveOrValue('layer_height_0') * 1.2 +raft_interface_line_spacing = =raft_interface_line_width + 0.2 +raft_interface_line_width = =line_width * 2 +raft_interface_speed = =raft_speed * 0.75 +raft_interface_thickness = =layer_height * 1.5 +raft_jerk = =jerk_print +raft_margin = 15 +raft_speed = =speed_print / 60 * 30 +raft_surface_layers = 2 +retraction_amount = 6.5 +retraction_count_max = 25 +retraction_min_travel = =line_width * 2 +retraction_prime_speed = =retraction_speed +skin_overlap = 15 +speed_print = 70 +speed_topbottom = =math.ceil(speed_print * 30 / 70) +speed_wall = =math.ceil(speed_print * 30 / 70) +support_angle = 60 +support_bottom_distance = =support_z_distance / 2 +support_pattern = zigzag +support_top_distance = =support_z_distance +support_use_towers = True +support_z_distance = =layer_height * 2 +switch_extruder_prime_speed = =switch_extruder_retraction_speeds +switch_extruder_retraction_amount = =machine_heat_zone_length +top_bottom_thickness = 1.2 +wall_thickness = 1.3 + diff --git a/resources/variants/ultimaker3_bb04.inst.cfg b/resources/variants/ultimaker3_bb04.inst.cfg index ebfce22ba4..80e6b309a4 100644 --- a/resources/variants/ultimaker3_bb04.inst.cfg +++ b/resources/variants/ultimaker3_bb04.inst.cfg @@ -8,4 +8,18 @@ author = ultimaker type = variant [values] -machine_nozzle_size = 0.4 +cool_fan_speed_max = =cool_fan_speed +machine_nozzle_heat_up_speed = 1.5 +material_print_temperature = 215 +retraction_extrusion_window = =retraction_amount +speed_wall_0 = =math.ceil(speed_wall * 25 / 30) +support_bottom_height = =layer_height * 2 +support_bottom_stair_step_height = =layer_height +support_infill_rate = 25 +support_interface_enable = True +support_join_distance = 3 +support_line_width = =round(line_width * 0.4 / 0.35, 2) +support_offset = 3 +support_xy_distance = =wall_line_width_0 * 3 +support_xy_distance_overhang = =wall_line_width_0 / 2 + diff --git a/resources/variants/ultimaker3_extended_aa04.inst.cfg b/resources/variants/ultimaker3_extended_aa04.inst.cfg index ddf34fd6e0..24cbf04a26 100644 --- a/resources/variants/ultimaker3_extended_aa04.inst.cfg +++ b/resources/variants/ultimaker3_extended_aa04.inst.cfg @@ -8,4 +8,35 @@ author = ultimaker type = variant [values] +brim_width = 7 +machine_nozzle_cool_down_speed = 0.9 machine_nozzle_size = 0.4 +raft_airgap = 0.3 +raft_base_speed = 15 +raft_base_thickness = 0.3 +raft_interface_line_spacing = 0.9 +raft_interface_line_width = 0.7 +raft_interface_speed = 15 +raft_interface_thickness = 0.15 +raft_margin = 15 +raft_speed = 20 +raft_surface_layers = 2 +retraction_amount = 6.5 +retraction_count_max = 25 +retraction_min_travel = 1.5 +retraction_prime_speed = 25 +skin_overlap = 15 +speed_print = 70 +speed_topbottom = =math.ceil(speed_print * 30 / 70) +speed_wall = =math.ceil(speed_print * 30 / 70) +support_angle = 60 +support_bottom_distance = =support_z_distance / 2 +support_infill_rate = 15 +support_join_distance = 2.0 +support_offset = 0.2 +support_top_distance = =support_z_distance +support_z_distance = =layer_height * 2 +switch_extruder_prime_speed = 20 +switch_extruder_retraction_amount = 20 +top_bottom_thickness = 1.2 +wall_thickness = 1.3 diff --git a/resources/variants/ultimaker3_extended_bb04.inst.cfg b/resources/variants/ultimaker3_extended_bb04.inst.cfg index a6e0dfe5d2..a7c43ea376 100644 --- a/resources/variants/ultimaker3_extended_bb04.inst.cfg +++ b/resources/variants/ultimaker3_extended_bb04.inst.cfg @@ -8,4 +8,20 @@ author = ultimaker type = variant [values] +cool_fan_speed_max = 100 +machine_nozzle_heat_up_speed = 1.5 machine_nozzle_size = 0.4 +material_bed_temperature = 60 +material_print_temperature = 215 +raft_acceleration = =acceleration_layer_0 +raft_jerk = =jerk_layer_0 +retraction_extrusion_window = =retraction_amount +speed_wall_0 = =math.ceil(speed_wall * 25 / 30) +support_bottom_height = =layer_height * 2 +support_bottom_stair_step_height = =layer_height +support_interface_enable = True +support_line_width = =round(line_width * 0.4 / 0.35, 2) +support_pattern = triangles +support_use_towers = False +support_xy_distance = =wall_line_width_0 * 3 +support_xy_distance_overhang = =wall_line_width_0 / 2