From 384618b5c4db9192e1f0d8e3fae1f220d63c15c3 Mon Sep 17 00:00:00 2001 From: Lipu Fei Date: Thu, 7 Jun 2018 15:49:00 +0200 Subject: [PATCH 01/34] Fix branded materials model binding CURA-5336 When the global stack gets changed, the model should update itself so it refers to the correct extruder stack. --- cura/Machines/Models/BrandMaterialsModel.py | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/cura/Machines/Models/BrandMaterialsModel.py b/cura/Machines/Models/BrandMaterialsModel.py index f6c9a14632..236f105d12 100644 --- a/cura/Machines/Models/BrandMaterialsModel.py +++ b/cura/Machines/Models/BrandMaterialsModel.py @@ -47,22 +47,38 @@ class BrandMaterialsModel(ListModel): self.addRoleName(self.MaterialsRole, "materials") self._extruder_position = 0 + self._extruder_stack = None from cura.CuraApplication import CuraApplication self._machine_manager = CuraApplication.getInstance().getMachineManager() self._extruder_manager = CuraApplication.getInstance().getExtruderManager() self._material_manager = CuraApplication.getInstance().getMaterialManager() + self._machine_manager.globalContainerChanged.connect(self._updateExtruderStack) self._machine_manager.activeStackChanged.connect(self._update) #Update when switching machines. self._material_manager.materialsUpdated.connect(self._update) #Update when the list of materials changes. self._update() + def _updateExtruderStack(self): + global_stack = self._machine_manager.activeMachine + if global_stack is None: + return + + if self._extruder_stack is not None: + self._extruder_stack.pyqtContainersChanged.disconnect(self._update) + self._extruder_stack = global_stack.extruders.get(str(self._extruder_position)) + if self._extruder_stack is not None: + self._extruder_stack.pyqtContainersChanged.connect(self._update) + # Force update the model when the extruder stack changes + self._update() + def setExtruderPosition(self, position: int): - if self._extruder_position != position: + if self._extruder_stack is None or self._extruder_position != position: self._extruder_position = position + self._updateExtruderStack() self.extruderPositionChanged.emit() - @pyqtProperty(int, fset = setExtruderPosition, notify = extruderPositionChanged) + @pyqtProperty(int, fset=setExtruderPosition, notify=extruderPositionChanged) def extruderPosition(self) -> int: return self._extruder_position From 83fcc60bee9a3894a11f2e4ca840968352fd2e95 Mon Sep 17 00:00:00 2001 From: Lipu Fei Date: Mon, 11 Jun 2018 07:52:32 +0200 Subject: [PATCH 02/34] Show message for unknown machines in project files CURA-5337 Do not crash on loading project files with unkown machine types. Show a message instead. --- plugins/3MFReader/ThreeMFWorkspaceReader.py | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/plugins/3MFReader/ThreeMFWorkspaceReader.py b/plugins/3MFReader/ThreeMFWorkspaceReader.py index 90241c6e72..ecccfc77ac 100755 --- a/plugins/3MFReader/ThreeMFWorkspaceReader.py +++ b/plugins/3MFReader/ThreeMFWorkspaceReader.py @@ -13,6 +13,7 @@ from UM.Workspace.WorkspaceReader import WorkspaceReader from UM.Application import Application from UM.Logger import Logger +from UM.Message import Message from UM.i18n import i18nCatalog from UM.Signal import postponeSignals, CompressTechnique from UM.Settings.ContainerFormatError import ContainerFormatError @@ -470,6 +471,20 @@ class ThreeMFWorkspaceReader(WorkspaceReader): Logger.log("w", "File %s is not a valid workspace.", file_name) return WorkspaceReader.PreReadResult.failed + # Check if the machine definition exists. If not, indicate failure because we do not import definition files. + def_results = self._container_registry.findDefinitionContainersMetadata(id = machine_definition_id) + if not def_results: + message = Message(i18n_catalog.i18nc("@info:status Don't translate the XML tags or !", + "Project file {0} contains an unknown machine type" + " {1}. Cannot import the machine." + " Models will be imported instead.", file_name, machine_definition_id), + title = i18n_catalog.i18nc("@info:title", "Open Project File")) + message.show() + + Logger.log("i", "Could unknown machine definition %s in project file %s, cannot import it.", + self._machine_info.definition_id, file_name) + return WorkspaceReader.PreReadResult.failed + # In case we use preRead() to check if a file is a valid project file, we don't want to show a dialog. if not show_dialog: return WorkspaceReader.PreReadResult.accepted From 19b02cd6e841b122e18c557bb12b47bda6303d7c Mon Sep 17 00:00:00 2001 From: Lipu Fei Date: Mon, 11 Jun 2018 08:13:14 +0200 Subject: [PATCH 03/34] Use MachineManager to update material container CURA-5327 The old update function in ExtruderManager is not functioning correctly. --- cura/Settings/ExtruderManager.py | 87 +------------------------------- 1 file changed, 1 insertion(+), 86 deletions(-) diff --git a/cura/Settings/ExtruderManager.py b/cura/Settings/ExtruderManager.py index 0f8cb9ae23..8c436ed24f 100755 --- a/cura/Settings/ExtruderManager.py +++ b/cura/Settings/ExtruderManager.py @@ -461,10 +461,6 @@ class ExtruderManager(QObject): if global_stack.definitionChanges.hasProperty(key, "value"): global_stack.definitionChanges.removeInstance(key, postpone_emit = True) - # Update material diameter for extruders - for position in extruder_positions_to_update: - self.updateMaterialForDiameter(position, global_stack = global_stack) - ## Get all extruder values for a certain setting. # # This is exposed to SettingFunction so it can be used in value functions. @@ -563,88 +559,7 @@ class ExtruderManager(QObject): if not global_stack: return - if not global_stack.getMetaDataEntry("has_materials", False): - return - - extruder_stack = global_stack.extruders[str(extruder_position)] - - material_diameter = extruder_stack.material.getProperty("material_diameter", "value") - if not material_diameter: - # in case of "empty" material - material_diameter = 0 - - material_approximate_diameter = str(round(material_diameter)) - material_diameter = extruder_stack.definitionChanges.getProperty("material_diameter", "value") - setting_provider = extruder_stack - if not material_diameter: - if extruder_stack.definition.hasProperty("material_diameter", "value"): - material_diameter = extruder_stack.definition.getProperty("material_diameter", "value") - else: - material_diameter = global_stack.definition.getProperty("material_diameter", "value") - setting_provider = global_stack - - if isinstance(material_diameter, SettingFunction): - material_diameter = material_diameter(setting_provider) - - machine_approximate_diameter = str(round(material_diameter)) - - if material_approximate_diameter != machine_approximate_diameter: - Logger.log("i", "The the currently active material(s) do not match the diameter set for the printer. Finding alternatives.") - - if global_stack.getMetaDataEntry("has_machine_materials", False): - materials_definition = global_stack.definition.getId() - has_material_variants = global_stack.getMetaDataEntry("has_variants", False) - else: - materials_definition = "fdmprinter" - has_material_variants = False - - old_material = extruder_stack.material - search_criteria = { - "type": "material", - "approximate_diameter": machine_approximate_diameter, - "material": old_material.getMetaDataEntry("material", "value"), - "brand": old_material.getMetaDataEntry("brand", "value"), - "supplier": old_material.getMetaDataEntry("supplier", "value"), - "color_name": old_material.getMetaDataEntry("color_name", "value"), - "definition": materials_definition - } - if has_material_variants: - search_criteria["variant"] = extruder_stack.variant.getId() - - container_registry = Application.getInstance().getContainerRegistry() - empty_material = container_registry.findInstanceContainers(id = "empty_material")[0] - - if old_material == empty_material: - search_criteria.pop("material", None) - search_criteria.pop("supplier", None) - search_criteria.pop("brand", None) - search_criteria.pop("definition", None) - search_criteria["id"] = extruder_stack.getMetaDataEntry("preferred_material") - - materials = container_registry.findInstanceContainers(**search_criteria) - if not materials: - # Same material with new diameter is not found, search for generic version of the same material type - search_criteria.pop("supplier", None) - search_criteria.pop("brand", None) - search_criteria["color_name"] = "Generic" - materials = container_registry.findInstanceContainers(**search_criteria) - if not materials: - # Generic material with new diameter is not found, search for preferred material - search_criteria.pop("color_name", None) - search_criteria.pop("material", None) - search_criteria["id"] = extruder_stack.getMetaDataEntry("preferred_material") - materials = container_registry.findInstanceContainers(**search_criteria) - if not materials: - # Preferred material with new diameter is not found, search for any material - search_criteria.pop("id", None) - materials = container_registry.findInstanceContainers(**search_criteria) - if not materials: - # Just use empty material as a final fallback - materials = [empty_material] - - Logger.log("i", "Selecting new material: %s", materials[0].getId()) - - extruder_stack.material = materials[0] + Application.getInstance().getMachineManager()._updateMaterialWithVariant(extruder_position) ## Get the value for a setting from a specific extruder. # From b55d2eda4f684f5707b6693d189d282956d77340 Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Mon, 11 Jun 2018 09:14:48 +0200 Subject: [PATCH 04/34] Remove Polish translation option The translator said he won't be maintaining this language any more. Someone else can pick it up now if he wants to, but we'll disable the language until it is complete again. Contributes to issue CURA-5451. --- resources/qml/Preferences/GeneralPage.qml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/qml/Preferences/GeneralPage.qml b/resources/qml/Preferences/GeneralPage.qml index 7841c7d506..5de74ac3a8 100644 --- a/resources/qml/Preferences/GeneralPage.qml +++ b/resources/qml/Preferences/GeneralPage.qml @@ -170,7 +170,7 @@ UM.PreferencesPage append({ text: "日本語", code: "ja_JP" }) append({ text: "한국어", code: "ko_KR" }) append({ text: "Nederlands", code: "nl_NL" }) - append({ text: "Polski", code: "pl_PL" }) + //Polish is disabled for being incomplete: append({ text: "Polski", code: "pl_PL" }) append({ text: "Português do Brasil", code: "pt_BR" }) append({ text: "Português", code: "pt_PT" }) append({ text: "Русский", code: "ru_RU" }) From ef4218830b92d13c77c16fb20a602f19d99deca4 Mon Sep 17 00:00:00 2001 From: Lipu Fei Date: Mon, 11 Jun 2018 09:37:45 +0200 Subject: [PATCH 05/34] Fix package manager initialization --- cura/CuraApplication.py | 2 ++ cura/CuraPackageManager.py | 7 +++++-- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/cura/CuraApplication.py b/cura/CuraApplication.py index e34d0a07ab..af65d63e70 100755 --- a/cura/CuraApplication.py +++ b/cura/CuraApplication.py @@ -225,6 +225,8 @@ class CuraApplication(QtApplication): from cura.Settings.CuraContainerRegistry import CuraContainerRegistry self._container_registry_class = CuraContainerRegistry + from cura.CuraPackageManager import CuraPackageManager + self._package_manager_class = CuraPackageManager # Adds command line options to the command line parser. This should be called after the application is created and # before the pre-start. diff --git a/cura/CuraPackageManager.py b/cura/CuraPackageManager.py index 49f095941a..f65633ed66 100644 --- a/cura/CuraPackageManager.py +++ b/cura/CuraPackageManager.py @@ -7,8 +7,11 @@ from UM.Resources import Resources #To find storage paths for some resource type class CuraPackageManager(PackageManager): - def __init__(self, parent = None): - super().__init__(parent) + def __init__(self, application, parent = None): + super().__init__(application, parent) + def initialize(self): self._installation_dirs_dict["materials"] = Resources.getStoragePath(CuraApplication.ResourceTypes.MaterialInstanceContainer) self._installation_dirs_dict["qualities"] = Resources.getStoragePath(CuraApplication.ResourceTypes.QualityInstanceContainer) + + super().initialize() From 8ea3c879f4e72964deea5e0f714daf2e922f872c Mon Sep 17 00:00:00 2001 From: Lipu Fei Date: Mon, 11 Jun 2018 10:48:20 +0200 Subject: [PATCH 06/34] Fix quality profile update CURA-5453 Should take into account that the custom profile being updated may not have a quality_changes container for each stack, and Cura should create one if this is the case, so the user changes results can be stored. --- cura/Settings/ContainerManager.py | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/cura/Settings/ContainerManager.py b/cura/Settings/ContainerManager.py index ea2821ce25..b1800facb5 100644 --- a/cura/Settings/ContainerManager.py +++ b/cura/Settings/ContainerManager.py @@ -42,6 +42,7 @@ class ContainerManager(QObject): self._container_registry = self._application.getContainerRegistry() self._machine_manager = self._application.getMachineManager() self._material_manager = self._application.getMaterialManager() + self._quality_manager = self._application.getQualityManager() self._container_name_filters = {} @pyqtSlot(str, str, result=str) @@ -313,10 +314,18 @@ class ContainerManager(QObject): self._machine_manager.blurSettings.emit() global_stack = self._machine_manager.activeMachine + current_quality_changes_name = global_stack.qualityChanges.getName() + current_quality_type = global_stack.quality.getMetaDataEntry("quality_type") extruder_stacks = list(global_stack.extruders.values()) for stack in [global_stack] + extruder_stacks: # Find the quality_changes container for this stack and merge the contents of the top container into it. quality_changes = stack.qualityChanges + + if quality_changes.getId() == "empty_quality_changes": + quality_changes = self._quality_manager._createQualityChanges(current_quality_type, current_quality_changes_name, + global_stack, stack) + stack.qualityChanges = quality_changes + if not quality_changes or self._container_registry.isReadOnly(quality_changes.getId()): Logger.log("e", "Could not update quality of a nonexistant or read only quality profile in stack %s", stack.getId()) continue From c779795618e72b2373faf5bc70d2921aba67a49a Mon Sep 17 00:00:00 2001 From: Lipu Fei Date: Mon, 11 Jun 2018 10:55:07 +0200 Subject: [PATCH 07/34] Remove unnecessary updateMaterialForDiameter() CURA-5327 --- cura/Settings/ExtruderManager.py | 9 --------- plugins/MachineSettingsAction/MachineSettingsAction.py | 2 +- 2 files changed, 1 insertion(+), 10 deletions(-) diff --git a/cura/Settings/ExtruderManager.py b/cura/Settings/ExtruderManager.py index 8c436ed24f..25690fcbde 100755 --- a/cura/Settings/ExtruderManager.py +++ b/cura/Settings/ExtruderManager.py @@ -552,15 +552,6 @@ class ExtruderManager(QObject): def getInstanceExtruderValues(self, key): return ExtruderManager.getExtruderValues(key) - ## Updates the material container to a material that matches the material diameter set for the printer - def updateMaterialForDiameter(self, extruder_position: int, global_stack = None): - if not global_stack: - global_stack = Application.getInstance().getGlobalContainerStack() - if not global_stack: - return - - Application.getInstance().getMachineManager()._updateMaterialWithVariant(extruder_position) - ## Get the value for a setting from a specific extruder. # # This is exposed to SettingFunction to use in value functions. diff --git a/plugins/MachineSettingsAction/MachineSettingsAction.py b/plugins/MachineSettingsAction/MachineSettingsAction.py index 7d5b317475..974ecf4b02 100755 --- a/plugins/MachineSettingsAction/MachineSettingsAction.py +++ b/plugins/MachineSettingsAction/MachineSettingsAction.py @@ -158,4 +158,4 @@ class MachineSettingsAction(MachineAction): @pyqtSlot(int) def updateMaterialForDiameter(self, extruder_position: int): # Updates the material container to a material that matches the material diameter set for the printer - self._application.getExtruderManager().updateMaterialForDiameter(extruder_position) + self._application.getMachineManager()._updateMaterialWithVariant(extruder_position) From 54a03723ab4dbb5d29ce8b3f9ea98758ea404352 Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Mon, 11 Jun 2018 11:08:47 +0200 Subject: [PATCH 08/34] Set encoding correctly when opening files everywhere Otherwise the encoding is interpreted differently on Windows and Mac. --- plugins/ChangeLogPlugin/ChangeLog.py | 2 +- plugins/GCodeProfileReader/GCodeProfileReader.py | 2 +- plugins/LegacyProfileReader/LegacyProfileReader.py | 2 +- plugins/USBPrinting/avr_isp/intelHex.py | 2 +- .../VersionUpgrade/VersionUpgrade22to24/VersionUpgrade.py | 6 +++--- .../VersionUpgrade25to26/VersionUpgrade25to26.py | 6 +++--- plugins/XmlMaterialProfile/XmlMaterialProfile.py | 2 +- tests/TestProfileRequirements.py | 4 ++-- 8 files changed, 13 insertions(+), 13 deletions(-) diff --git a/plugins/ChangeLogPlugin/ChangeLog.py b/plugins/ChangeLogPlugin/ChangeLog.py index e93d5c4395..723c83a021 100644 --- a/plugins/ChangeLogPlugin/ChangeLog.py +++ b/plugins/ChangeLogPlugin/ChangeLog.py @@ -55,7 +55,7 @@ class ChangeLog(Extension, QObject,): def loadChangeLogs(self): self._change_logs = collections.OrderedDict() - with open(os.path.join(PluginRegistry.getInstance().getPluginPath(self.getPluginId()), "ChangeLog.txt"), "r",-1, "utf-8") as f: + with open(os.path.join(PluginRegistry.getInstance().getPluginPath(self.getPluginId()), "ChangeLog.txt"), "r", encoding = "utf-8") as f: open_version = None open_header = "" # Initialise to an empty header in case there is no "*" in the first line of the changelog for line in f: diff --git a/plugins/GCodeProfileReader/GCodeProfileReader.py b/plugins/GCodeProfileReader/GCodeProfileReader.py index 4b50a600ba..9fbae7b473 100644 --- a/plugins/GCodeProfileReader/GCodeProfileReader.py +++ b/plugins/GCodeProfileReader/GCodeProfileReader.py @@ -57,7 +57,7 @@ class GCodeProfileReader(ProfileReader): # TODO: Consider moving settings to the start? serialized = "" # Will be filled with the serialized profile. try: - with open(file_name, "r") as f: + with open(file_name, "r", encoding = "utf-8") as f: for line in f: if line.startswith(prefix): # Remove the prefix and the newline from the line and add it to the rest. diff --git a/plugins/LegacyProfileReader/LegacyProfileReader.py b/plugins/LegacyProfileReader/LegacyProfileReader.py index 3c2b9bfa76..40a843e6c4 100644 --- a/plugins/LegacyProfileReader/LegacyProfileReader.py +++ b/plugins/LegacyProfileReader/LegacyProfileReader.py @@ -100,7 +100,7 @@ class LegacyProfileReader(ProfileReader): return None try: - with open(os.path.join(PluginRegistry.getInstance().getPluginPath("LegacyProfileReader"), "DictionaryOfDoom.json"), "r", -1, "utf-8") as f: + with open(os.path.join(PluginRegistry.getInstance().getPluginPath("LegacyProfileReader"), "DictionaryOfDoom.json"), "r", encoding = "utf-8") as f: dict_of_doom = json.load(f) # Parse the Dictionary of Doom. except IOError as e: Logger.log("e", "Could not open DictionaryOfDoom.json for reading: %s", str(e)) diff --git a/plugins/USBPrinting/avr_isp/intelHex.py b/plugins/USBPrinting/avr_isp/intelHex.py index a51c798d8e..671f1788f7 100644 --- a/plugins/USBPrinting/avr_isp/intelHex.py +++ b/plugins/USBPrinting/avr_isp/intelHex.py @@ -13,7 +13,7 @@ def readHex(filename): """ data = [] extra_addr = 0 - f = io.open(filename, "r") + f = io.open(filename, "r", encoding = "utf-8") for line in f: line = line.strip() if len(line) < 1: diff --git a/plugins/VersionUpgrade/VersionUpgrade22to24/VersionUpgrade.py b/plugins/VersionUpgrade/VersionUpgrade22to24/VersionUpgrade.py index 7505911049..730a62e591 100644 --- a/plugins/VersionUpgrade/VersionUpgrade22to24/VersionUpgrade.py +++ b/plugins/VersionUpgrade/VersionUpgrade22to24/VersionUpgrade.py @@ -94,7 +94,7 @@ class VersionUpgrade22to24(VersionUpgrade): if variant_path.endswith("_variant.inst.cfg"): variant_path = variant_path[:-len("_variant.inst.cfg")] + "_settings.inst.cfg" - with open(os.path.join(machine_instances_dir, os.path.basename(variant_path)), "w") as fp: + with open(os.path.join(machine_instances_dir, os.path.basename(variant_path)), "w", encoding = "utf-8") as fp: variant_config.write(fp) return config_name @@ -105,9 +105,9 @@ class VersionUpgrade22to24(VersionUpgrade): result = [] for entry in os.scandir(variants_dir): - if entry.name.endswith('.inst.cfg') and entry.is_file(): + if entry.name.endswith(".inst.cfg") and entry.is_file(): config = configparser.ConfigParser(interpolation = None) - with open(entry.path, "r") as fhandle: + with open(entry.path, "r", encoding = "utf-8") as fhandle: config.read_file(fhandle) if config.has_section("general") and config.has_option("general", "name"): result.append( { "path": entry.path, "name": config.get("general", "name") } ) diff --git a/plugins/VersionUpgrade/VersionUpgrade25to26/VersionUpgrade25to26.py b/plugins/VersionUpgrade/VersionUpgrade25to26/VersionUpgrade25to26.py index e1c14be2e1..54b561c847 100644 --- a/plugins/VersionUpgrade/VersionUpgrade25to26/VersionUpgrade25to26.py +++ b/plugins/VersionUpgrade/VersionUpgrade25to26/VersionUpgrade25to26.py @@ -249,11 +249,11 @@ class VersionUpgrade25to26(VersionUpgrade): definition_changes_dir = Resources.getPath(CuraApplication.ResourceTypes.DefinitionChangesContainer) user_settings_dir = Resources.getPath(CuraApplication.ResourceTypes.UserInstanceContainer) - with open(os.path.join(definition_changes_dir, definition_changes_filename), "w") as f: + with open(os.path.join(definition_changes_dir, definition_changes_filename), "w", encoding = "utf-8") as f: f.write(definition_changes_output.getvalue()) - with open(os.path.join(user_settings_dir, user_settings_filename), "w") as f: + with open(os.path.join(user_settings_dir, user_settings_filename), "w", encoding = "utf-8") as f: f.write(user_settings_output.getvalue()) - with open(os.path.join(extruder_stack_dir, extruder_filename), "w") as f: + with open(os.path.join(extruder_stack_dir, extruder_filename), "w", encoding = "utf-8") as f: f.write(extruder_output.getvalue()) ## Creates a definition changes container which doesn't contain anything for the Custom FDM Printers. diff --git a/plugins/XmlMaterialProfile/XmlMaterialProfile.py b/plugins/XmlMaterialProfile/XmlMaterialProfile.py index 4985c2fd87..9d456c833d 100644 --- a/plugins/XmlMaterialProfile/XmlMaterialProfile.py +++ b/plugins/XmlMaterialProfile/XmlMaterialProfile.py @@ -1018,7 +1018,7 @@ class XmlMaterialProfile(InstanceContainer): @classmethod def getProductIdMap(cls) -> Dict[str, List[str]]: product_to_id_file = os.path.join(os.path.dirname(sys.modules[cls.__module__].__file__), "product_to_id.json") - with open(product_to_id_file) as f: + with open(product_to_id_file, encoding = "utf-8") as f: product_to_id_map = json.load(f) product_to_id_map = {key: [value] for key, value in product_to_id_map.items()} return product_to_id_map diff --git a/tests/TestProfileRequirements.py b/tests/TestProfileRequirements.py index edeec909f2..f75ca9da8d 100644 --- a/tests/TestProfileRequirements.py +++ b/tests/TestProfileRequirements.py @@ -19,7 +19,7 @@ import pytest def test_ultimaker3extended_variants(um3_file, um3e_file): directory = os.path.join(os.path.dirname(__file__), "..", "resources", "variants") #TODO: Hardcoded path relative to this test file. um3 = configparser.ConfigParser() - um3.read_file(open(os.path.join(directory, um3_file))) + um3.read_file(open(os.path.join(directory, um3_file), encoding = "utf-8")) um3e = configparser.ConfigParser() - um3e.read_file(open(os.path.join(directory, um3e_file))) + um3e.read_file(open(os.path.join(directory, um3e_file), encoding = "utf-8")) assert um3["values"] == um3e["values"] From dc1e36d726a4ea5a3f865ffc93170ff453687fa1 Mon Sep 17 00:00:00 2001 From: Diego Prado Gesto Date: Fri, 8 Jun 2018 11:21:17 +0200 Subject: [PATCH 09/34] CURA-5444 Always create the instance of the material even if it is not compatible, otherwise it will never show as incompatible if the material profile doesn't define hotends in the machine. --- .../XmlMaterialProfile/XmlMaterialProfile.py | 49 ++++++++++--------- plugins/XmlMaterialProfile/product_to_id.json | 1 + 2 files changed, 26 insertions(+), 24 deletions(-) diff --git a/plugins/XmlMaterialProfile/XmlMaterialProfile.py b/plugins/XmlMaterialProfile/XmlMaterialProfile.py index 148471fb6d..241ec2a711 100644 --- a/plugins/XmlMaterialProfile/XmlMaterialProfile.py +++ b/plugins/XmlMaterialProfile/XmlMaterialProfile.py @@ -632,35 +632,36 @@ class XmlMaterialProfile(InstanceContainer): machine_manufacturer = identifier.get("manufacturer", definition.get("manufacturer", "Unknown")) #If the XML material doesn't specify a manufacturer, use the one in the actual printer definition. - if machine_compatibility: - new_material_id = self.getId() + "_" + machine_id + # Always create the instance of the material even if it is not compatible, otherwise it will never + # show as incompatible if the material profile doesn't define hotends in the machine - CURA-5444 + new_material_id = self.getId() + "_" + machine_id - # The child or derived material container may already exist. This can happen when a material in a - # project file and the a material in Cura have the same ID. - # In the case if a derived material already exists, override that material container because if - # the data in the parent material has been changed, the derived ones should be updated too. - if ContainerRegistry.getInstance().isLoaded(new_material_id): - new_material = ContainerRegistry.getInstance().findContainers(id = new_material_id)[0] - is_new_material = False - else: - new_material = XmlMaterialProfile(new_material_id) - is_new_material = True + # The child or derived material container may already exist. This can happen when a material in a + # project file and the a material in Cura have the same ID. + # In the case if a derived material already exists, override that material container because if + # the data in the parent material has been changed, the derived ones should be updated too. + if ContainerRegistry.getInstance().isLoaded(new_material_id): + new_material = ContainerRegistry.getInstance().findContainers(id = new_material_id)[0] + is_new_material = False + else: + new_material = XmlMaterialProfile(new_material_id) + is_new_material = True - new_material.setMetaData(copy.deepcopy(self.getMetaData())) - new_material.getMetaData()["id"] = new_material_id - new_material.getMetaData()["name"] = self.getName() - new_material.setDefinition(machine_id) - # Don't use setMetadata, as that overrides it for all materials with same base file - new_material.getMetaData()["compatible"] = machine_compatibility - new_material.getMetaData()["machine_manufacturer"] = machine_manufacturer - new_material.getMetaData()["definition"] = machine_id + new_material.setMetaData(copy.deepcopy(self.getMetaData())) + new_material.getMetaData()["id"] = new_material_id + new_material.getMetaData()["name"] = self.getName() + new_material.setDefinition(machine_id) + # Don't use setMetadata, as that overrides it for all materials with same base file + new_material.getMetaData()["compatible"] = machine_compatibility + new_material.getMetaData()["machine_manufacturer"] = machine_manufacturer + new_material.getMetaData()["definition"] = machine_id - new_material.setCachedValues(cached_machine_setting_properties) + new_material.setCachedValues(cached_machine_setting_properties) - new_material._dirty = False + new_material._dirty = False - if is_new_material: - containers_to_add.append(new_material) + if is_new_material: + containers_to_add.append(new_material) # Find the buildplates compatibility buildplates = machine.iterfind("./um:buildplate", self.__namespaces) diff --git a/plugins/XmlMaterialProfile/product_to_id.json b/plugins/XmlMaterialProfile/product_to_id.json index d6b8f3bade..3e7ce9311f 100644 --- a/plugins/XmlMaterialProfile/product_to_id.json +++ b/plugins/XmlMaterialProfile/product_to_id.json @@ -8,5 +8,6 @@ "Ultimaker 3 Extended": "ultimaker3_extended", "Ultimaker Original": "ultimaker_original", "Ultimaker Original+": "ultimaker_original_plus", + "Ultimaker Original Dual Extrusion": "ultimaker_original_dual", "IMADE3D JellyBOX": "imade3d_jellybox" } \ No newline at end of file From 8c9939e797886e214dc17db793e111ab66ecb17c Mon Sep 17 00:00:00 2001 From: Diego Prado Gesto Date: Fri, 8 Jun 2018 12:03:46 +0200 Subject: [PATCH 10/34] CURA-5444 Also get the metadata even if the material was marked as not compatible. --- .../XmlMaterialProfile/XmlMaterialProfile.py | 27 ++++++++++--------- 1 file changed, 14 insertions(+), 13 deletions(-) diff --git a/plugins/XmlMaterialProfile/XmlMaterialProfile.py b/plugins/XmlMaterialProfile/XmlMaterialProfile.py index 241ec2a711..4985c2fd87 100644 --- a/plugins/XmlMaterialProfile/XmlMaterialProfile.py +++ b/plugins/XmlMaterialProfile/XmlMaterialProfile.py @@ -872,22 +872,23 @@ class XmlMaterialProfile(InstanceContainer): machine_manufacturer = identifier.get("manufacturer", definition_metadata.get("manufacturer", "Unknown")) #If the XML material doesn't specify a manufacturer, use the one in the actual printer definition. - if machine_compatibility: - new_material_id = container_id + "_" + machine_id + # Always create the instance of the material even if it is not compatible, otherwise it will never + # show as incompatible if the material profile doesn't define hotends in the machine - CURA-5444 + new_material_id = container_id + "_" + machine_id - # Do not look for existing container/container metadata with the same ID although they may exist. - # In project loading and perhaps some other places, we only want to get information (metadata) - # from a file without changing the current state of the system. If we overwrite the existing - # metadata here, deserializeMetadata() will not be safe for retrieving information. - new_material_metadata = {} + # Do not look for existing container/container metadata with the same ID although they may exist. + # In project loading and perhaps some other places, we only want to get information (metadata) + # from a file without changing the current state of the system. If we overwrite the existing + # metadata here, deserializeMetadata() will not be safe for retrieving information. + new_material_metadata = {} - new_material_metadata.update(base_metadata) - new_material_metadata["id"] = new_material_id - new_material_metadata["compatible"] = machine_compatibility - new_material_metadata["machine_manufacturer"] = machine_manufacturer - new_material_metadata["definition"] = machine_id + new_material_metadata.update(base_metadata) + new_material_metadata["id"] = new_material_id + new_material_metadata["compatible"] = machine_compatibility + new_material_metadata["machine_manufacturer"] = machine_manufacturer + new_material_metadata["definition"] = machine_id - result_metadata.append(new_material_metadata) + result_metadata.append(new_material_metadata) buildplates = machine.iterfind("./um:buildplate", cls.__namespaces) buildplate_map = {} From 310a99fba70b67253af482fa09ad7fe1e59679d3 Mon Sep 17 00:00:00 2001 From: Lipu Fei Date: Mon, 11 Jun 2018 11:31:28 +0200 Subject: [PATCH 11/34] Fix deepcopy in SettingOverrideDecorator Obvious mistake... --- cura/Settings/SettingOverrideDecorator.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cura/Settings/SettingOverrideDecorator.py b/cura/Settings/SettingOverrideDecorator.py index a662027d8f..27ae1d69f0 100644 --- a/cura/Settings/SettingOverrideDecorator.py +++ b/cura/Settings/SettingOverrideDecorator.py @@ -63,7 +63,7 @@ class SettingOverrideDecorator(SceneNodeDecorator): instance_container = copy.deepcopy(self._stack.getContainer(0), memo) # A unique name must be added, or replaceContainer will not replace it - instance_container.setMetaDataEntry("id", self._generateUniqueName) + instance_container.setMetaDataEntry("id", self._generateUniqueName()) ## Set the copied instance as the first (and only) instance container of the stack. deep_copy._stack.replaceContainer(0, instance_container) From 7a6e7112765c386c7d1ac1ac52fce132b67240ba Mon Sep 17 00:00:00 2001 From: Lipu Fei Date: Mon, 11 Jun 2018 13:29:34 +0200 Subject: [PATCH 12/34] Update SettingOverrideDecorator upon extruder enabled/disabled CURA-5456 When an extruder gets disabled, the SettingOverrideDecorator should update its associated extruder to an enabled one so the whole setup can be sliced. --- cura/Settings/SettingOverrideDecorator.py | 52 +++++++++++++++-------- 1 file changed, 34 insertions(+), 18 deletions(-) diff --git a/cura/Settings/SettingOverrideDecorator.py b/cura/Settings/SettingOverrideDecorator.py index 27ae1d69f0..f14977866e 100644 --- a/cura/Settings/SettingOverrideDecorator.py +++ b/cura/Settings/SettingOverrideDecorator.py @@ -9,6 +9,7 @@ from UM.Signal import Signal, signalemitter from UM.Settings.InstanceContainer import InstanceContainer from UM.Settings.ContainerRegistry import ContainerRegistry from UM.Logger import Logger +from UM.Util import parseBool from UM.Application import Application @@ -39,7 +40,7 @@ class SettingOverrideDecorator(SceneNodeDecorator): user_container = InstanceContainer(container_id = self._generateUniqueName()) user_container.addMetaDataEntry("type", "user") self._stack.userChanges = user_container - self._extruder_stack = ExtruderManager.getInstance().getExtruderStack(0).getId() + self._extruder_stack = ExtruderManager.getInstance().getExtruderStack(0) self._is_non_printing_mesh = False self._is_non_thumbnail_visible_mesh = False @@ -48,13 +49,25 @@ class SettingOverrideDecorator(SceneNodeDecorator): Application.getInstance().getContainerRegistry().addContainer(self._stack) - Application.getInstance().globalContainerStackChanged.connect(self._updateNextStack) + Application.getInstance().globalContainerStackChanged.connect(self._onNumberOfExtrudersEnabledChanged) + Application.getInstance().getMachineManager().numberExtrudersEnabledChanged.connect(self._onNumberOfExtrudersEnabledChanged) + self.activeExtruderChanged.connect(self._updateNextStack) self._updateNextStack() def _generateUniqueName(self): return "SettingOverrideInstanceContainer-%s" % uuid.uuid1() + def _onNumberOfExtrudersEnabledChanged(self, *args, **kwargs): + if not parseBool(self._extruder_stack.getMetaDataEntry("enabled", "True")): + # switch to the first extruder that's available + global_stack = Application.getInstance().getMachineManager().activeMachine + for _, extruder in sorted(list(global_stack.extruders.items())): + if parseBool(extruder.getMetaDataEntry("enabled", "True")): + self._extruder_stack = extruder + self._updateNextStack() + break + def __deepcopy__(self, memo): ## Create a fresh decorator object deep_copy = SettingOverrideDecorator() @@ -69,7 +82,7 @@ class SettingOverrideDecorator(SceneNodeDecorator): deep_copy._stack.replaceContainer(0, instance_container) # Properly set the right extruder on the copy - deep_copy.setActiveExtruder(self._extruder_stack) + deep_copy.setActiveExtruder(self._extruder_stack.getId()) # use value from the stack because there can be a delay in signal triggering and "_is_non_printing_mesh" # has not been updated yet. @@ -82,7 +95,7 @@ class SettingOverrideDecorator(SceneNodeDecorator): # # \return An extruder's container stack. def getActiveExtruder(self): - return self._extruder_stack + return self._extruder_stack.getId() ## Gets the signal that emits if the active extruder changed. # @@ -124,20 +137,16 @@ class SettingOverrideDecorator(SceneNodeDecorator): # kept up to date. def _updateNextStack(self): if self._extruder_stack: - extruder_stack = ContainerRegistry.getInstance().findContainerStacks(id = self._extruder_stack) - if extruder_stack: - if self._stack.getNextStack(): - old_extruder_stack_id = self._stack.getNextStack().getId() - else: - old_extruder_stack_id = "" - - self._stack.setNextStack(extruder_stack[0]) - # Trigger slice/need slicing if the extruder changed. - if self._stack.getNextStack().getId() != old_extruder_stack_id: - Application.getInstance().getBackend().needsSlicing() - Application.getInstance().getBackend().tickle() + if self._stack.getNextStack(): + old_extruder_stack_id = self._stack.getNextStack().getId() else: - Logger.log("e", "Extruder stack %s below per-object settings does not exist.", self._extruder_stack) + old_extruder_stack_id = "" + + self._stack.setNextStack(self._extruder_stack) + # Trigger slice/need slicing if the extruder changed. + if self._stack.getNextStack().getId() != old_extruder_stack_id: + Application.getInstance().getBackend().needsSlicing() + Application.getInstance().getBackend().tickle() else: self._stack.setNextStack(Application.getInstance().getGlobalContainerStack()) @@ -145,7 +154,14 @@ class SettingOverrideDecorator(SceneNodeDecorator): # # \param extruder_stack_id The new extruder stack to print with. def setActiveExtruder(self, extruder_stack_id): - self._extruder_stack = extruder_stack_id + if self._extruder_stack.getId() == extruder_stack_id: + return + + global_stack = Application.getInstance().getMachineManager().activeMachine + for extruder in global_stack.extruders.values(): + if extruder.getId() == extruder_stack_id: + self._extruder_stack = extruder + break self._updateNextStack() ExtruderManager.getInstance().resetSelectedObjectExtruders() self.activeExtruderChanged.emit() From 74e3785a03b6575e0331d786f0c0ea66f7f93446 Mon Sep 17 00:00:00 2001 From: Lipu Fei Date: Mon, 11 Jun 2018 13:42:36 +0200 Subject: [PATCH 13/34] Fix material update upon loading a machine CURA-5327 --- cura/Settings/MachineManager.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/cura/Settings/MachineManager.py b/cura/Settings/MachineManager.py index 39bda6a4a4..9abdd2cb96 100755 --- a/cura/Settings/MachineManager.py +++ b/cura/Settings/MachineManager.py @@ -306,6 +306,11 @@ class MachineManager(QObject): for position, extruder in global_stack.extruders.items(): material_dict[position] = extruder.material.getMetaDataEntry("base_file") self._current_root_material_id = material_dict + + # Update materials to make sure that the diameters match with the machine's + for position in global_stack.extruders: + self._updateMaterialWithVariant(position) + global_quality = global_stack.quality quality_type = global_quality.getMetaDataEntry("quality_type") global_quality_changes = global_stack.qualityChanges From 359506874a213693789e0790619cb4cb6860ea50 Mon Sep 17 00:00:00 2001 From: Jack Ha Date: Mon, 11 Jun 2018 13:45:52 +0200 Subject: [PATCH 14/34] CURA-5342 replace speed setting constants in profiles to formulas; also adds necessary settings for um2p if the setting is also defined in ultimaker2 --- resources/quality/abax_pri3/apri3_pla_fast.inst.cfg | 2 +- resources/quality/abax_pri3/apri3_pla_high.inst.cfg | 2 +- resources/quality/abax_pri3/apri3_pla_normal.inst.cfg | 2 +- resources/quality/abax_pri5/apri5_pla_fast.inst.cfg | 2 +- resources/quality/abax_pri5/apri5_pla_high.inst.cfg | 2 +- resources/quality/abax_pri5/apri5_pla_normal.inst.cfg | 2 +- resources/quality/abax_titan/atitan_pla_fast.inst.cfg | 2 +- resources/quality/abax_titan/atitan_pla_high.inst.cfg | 2 +- .../quality/abax_titan/atitan_pla_normal.inst.cfg | 2 +- .../anycubic_i3_mega/anycubic_i3_mega_draft.inst.cfg | 8 ++++---- .../anycubic_i3_mega/anycubic_i3_mega_high.inst.cfg | 8 ++++---- .../anycubic_i3_mega/anycubic_i3_mega_normal.inst.cfg | 8 ++++---- .../quality/deltacomb/deltacomb_nylon_fast.inst.cfg | 6 +++--- .../quality/deltacomb/deltacomb_nylon_high.inst.cfg | 6 +++--- .../quality/deltacomb/deltacomb_nylon_normal.inst.cfg | 6 +++--- .../quality/fabtotum/fabtotum_nylon_fast.inst.cfg | 6 +++--- .../quality/fabtotum/fabtotum_nylon_high.inst.cfg | 6 +++--- .../quality/fabtotum/fabtotum_nylon_normal.inst.cfg | 6 +++--- resources/quality/fast.inst.cfg | 8 ++++---- resources/quality/high.inst.cfg | 4 ++-- .../imade3d_jellybox/generic_petg_0.4_coarse.inst.cfg | 8 ++++---- .../generic_petg_0.4_coarse_2-fans.inst.cfg | 8 ++++---- .../imade3d_jellybox/generic_petg_0.4_medium.inst.cfg | 8 ++++---- .../generic_petg_0.4_medium_2-fans.inst.cfg | 8 ++++---- .../imade3d_jellybox/generic_pla_0.4_coarse.inst.cfg | 8 ++++---- .../generic_pla_0.4_coarse_2-fans.inst.cfg | 8 ++++---- .../imade3d_jellybox/generic_pla_0.4_fine.inst.cfg | 8 ++++---- .../generic_pla_0.4_fine_2-fans.inst.cfg | 8 ++++---- .../imade3d_jellybox/generic_pla_0.4_medium.inst.cfg | 8 ++++---- .../generic_pla_0.4_medium_2-fans.inst.cfg | 8 ++++---- .../generic_pla_0.4_ultrafine.inst.cfg | 8 ++++---- .../generic_pla_0.4_ultrafine_2-fans.inst.cfg | 8 ++++---- .../quality/kemiq_q2/kemiq_q2_beta_abs_draft.inst.cfg | 10 +++++----- .../kemiq_q2/kemiq_q2_beta_abs_extra_fine.inst.cfg | 10 +++++----- .../quality/kemiq_q2/kemiq_q2_beta_abs_fine.inst.cfg | 10 +++++----- .../quality/kemiq_q2/kemiq_q2_beta_abs_low.inst.cfg | 10 +++++----- .../quality/kemiq_q2/kemiq_q2_beta_abs_normal.inst.cfg | 10 +++++----- .../kemiq_q2/kemiq_q2_gama_pla_extra_fine.inst.cfg | 10 +++++----- .../quality/kemiq_q2/kemiq_q2_gama_pla_fine.inst.cfg | 10 +++++----- .../quality/kemiq_q2/kemiq_q2_gama_pla_normal.inst.cfg | 10 +++++----- .../malyan_m200_global_Draft_Quality.inst.cfg | 2 +- .../malyan_m200_global_Fast_Quality.inst.cfg | 2 +- .../malyan_m200_global_High_Quality.inst.cfg | 2 +- .../malyan_m200_global_Normal_Quality.inst.cfg | 2 +- .../malyan_m200_global_SuperDraft_Quality.inst.cfg | 2 +- .../malyan_m200_global_ThickerDraft_Quality.inst.cfg | 2 +- .../malyan_m200_global_Ultra_Quality.inst.cfg | 2 +- .../malyan_m200_global_VeryDraft_Quality.inst.cfg | 2 +- ...oprice_select_mini_v2_global_Draft_Quality.inst.cfg | 2 +- ...noprice_select_mini_v2_global_Fast_Quality.inst.cfg | 2 +- ...noprice_select_mini_v2_global_High_Quality.inst.cfg | 2 +- ...price_select_mini_v2_global_Normal_Quality.inst.cfg | 2 +- ...e_select_mini_v2_global_SuperDraft_Quality.inst.cfg | 2 +- ...select_mini_v2_global_ThickerDraft_Quality.inst.cfg | 2 +- ...oprice_select_mini_v2_global_Ultra_Quality.inst.cfg | 2 +- ...ce_select_mini_v2_global_VeryDraft_Quality.inst.cfg | 2 +- .../tevo_blackwidow/tevo_blackwidow_draft.inst.cfg | 8 ++++---- .../tevo_blackwidow/tevo_blackwidow_high.inst.cfg | 8 ++++---- .../tevo_blackwidow/tevo_blackwidow_normal.inst.cfg | 8 ++++---- resources/quality/ultimaker2/um2_fast.inst.cfg | 8 ++++---- resources/quality/ultimaker2/um2_high.inst.cfg | 4 ++-- .../quality/ultimaker2_plus/pla_0.4_fast.inst.cfg | 4 ++-- .../quality/ultimaker2_plus/pla_0.4_high.inst.cfg | 2 +- .../quality/ultimaker2_plus/pla_0.4_normal.inst.cfg | 2 +- .../quality/ultimaker2_plus/pla_0.6_normal.inst.cfg | 6 +++--- .../quality/ultimaker2_plus/pla_0.8_normal.inst.cfg | 2 +- .../quality/ultimaker2_plus/um2p_abs_0.4_fast.inst.cfg | 7 +++++-- .../quality/ultimaker2_plus/um2p_abs_0.4_high.inst.cfg | 4 +++- .../ultimaker2_plus/um2p_abs_0.4_normal.inst.cfg | 2 +- .../ultimaker2_plus/um2p_abs_0.6_normal.inst.cfg | 2 +- .../quality/ultimaker2_plus/um2p_cpe_0.4_fast.inst.cfg | 6 +++++- .../quality/ultimaker2_plus/um2p_cpe_0.4_high.inst.cfg | 4 +++- .../ultimaker2_plus/um2p_cpe_0.4_normal.inst.cfg | 2 +- .../ultimaker2_plus/um2p_cpep_0.4_draft.inst.cfg | 8 ++++---- .../ultimaker2_plus/um2p_cpep_0.4_normal.inst.cfg | 8 ++++---- .../ultimaker2_plus/um2p_cpep_0.6_draft.inst.cfg | 6 +++--- .../ultimaker2_plus/um2p_cpep_0.6_normal.inst.cfg | 8 ++++---- .../ultimaker2_plus/um2p_cpep_0.8_draft.inst.cfg | 6 +++--- .../ultimaker2_plus/um2p_cpep_0.8_normal.inst.cfg | 6 +++--- .../ultimaker2_plus/um2p_nylon_0.25_high.inst.cfg | 9 +++++---- .../ultimaker2_plus/um2p_nylon_0.25_normal.inst.cfg | 8 ++++---- .../ultimaker2_plus/um2p_nylon_0.4_fast.inst.cfg | 9 ++++++--- .../ultimaker2_plus/um2p_nylon_0.4_normal.inst.cfg | 4 ++-- .../ultimaker2_plus/um2p_nylon_0.6_fast.inst.cfg | 9 +++++---- .../ultimaker2_plus/um2p_nylon_0.6_normal.inst.cfg | 8 ++++---- .../ultimaker2_plus/um2p_nylon_0.8_draft.inst.cfg | 8 ++++---- .../ultimaker2_plus/um2p_nylon_0.8_normal.inst.cfg | 6 +++--- .../quality/ultimaker2_plus/um2p_pc_0.25_high.inst.cfg | 2 ++ .../quality/ultimaker2_plus/um2p_pc_0.4_fast.inst.cfg | 6 ++++-- .../ultimaker2_plus/um2p_pc_0.4_normal.inst.cfg | 4 ++-- .../quality/ultimaker2_plus/um2p_pc_0.6_fast.inst.cfg | 9 +++++---- .../ultimaker2_plus/um2p_pc_0.6_normal.inst.cfg | 8 ++++---- .../quality/ultimaker2_plus/um2p_pp_0.4_fast.inst.cfg | 4 +++- .../ultimaker2_plus/um2p_pp_0.4_normal.inst.cfg | 2 +- .../quality/ultimaker2_plus/um2p_pp_0.6_draft.inst.cfg | 2 +- .../quality/ultimaker2_plus/um2p_pp_0.6_fast.inst.cfg | 4 +++- .../quality/ultimaker2_plus/um2p_pp_0.8_draft.inst.cfg | 2 +- .../ultimaker2_plus/um2p_pp_0.8_verydraft.inst.cfg | 2 +- .../ultimaker2_plus/um2p_tpu_0.25_high.inst.cfg | 9 +++++---- .../ultimaker2_plus/um2p_tpu_0.4_normal.inst.cfg | 8 ++++---- .../quality/ultimaker2_plus/um2p_tpu_0.6_fast.inst.cfg | 9 +++++---- .../ultimaker3/um3_aa0.25_CPE_Normal_Quality.inst.cfg | 2 +- .../ultimaker3/um3_aa0.25_PC_Normal_Quality.inst.cfg | 4 ++-- .../ultimaker3/um3_aa0.25_PLA_Normal_Quality.inst.cfg | 6 +++--- .../ultimaker3/um3_aa0.25_PP_Normal_Quality.inst.cfg | 2 +- .../ultimaker3/um3_aa0.4_ABS_Draft_Print.inst.cfg | 2 +- .../ultimaker3/um3_aa0.4_ABS_Fast_Print.inst.cfg | 2 +- .../ultimaker3/um3_aa0.4_ABS_High_Quality.inst.cfg | 2 +- .../ultimaker3/um3_aa0.4_ABS_Normal_Quality.inst.cfg | 2 +- .../ultimaker3/um3_aa0.4_BAM_Draft_Print.inst.cfg | 2 +- .../ultimaker3/um3_aa0.4_BAM_Fast_Print.inst.cfg | 2 +- .../ultimaker3/um3_aa0.4_BAM_Normal_Quality.inst.cfg | 2 +- .../ultimaker3/um3_aa0.4_CPEP_Draft_Print.inst.cfg | 2 +- .../ultimaker3/um3_aa0.4_CPEP_Fast_Print.inst.cfg | 2 +- .../ultimaker3/um3_aa0.4_CPEP_High_Quality.inst.cfg | 2 +- .../ultimaker3/um3_aa0.4_CPEP_Normal_Quality.inst.cfg | 2 +- .../ultimaker3/um3_aa0.4_CPE_Draft_Print.inst.cfg | 2 +- .../ultimaker3/um3_aa0.4_CPE_Fast_Print.inst.cfg | 2 +- .../ultimaker3/um3_aa0.4_CPE_High_Quality.inst.cfg | 2 +- .../ultimaker3/um3_aa0.4_CPE_Normal_Quality.inst.cfg | 2 +- .../ultimaker3/um3_aa0.4_Nylon_Draft_Print.inst.cfg | 2 +- .../ultimaker3/um3_aa0.4_Nylon_Fast_Print.inst.cfg | 2 +- .../ultimaker3/um3_aa0.4_Nylon_High_Quality.inst.cfg | 2 +- .../ultimaker3/um3_aa0.4_Nylon_Normal_Quality.inst.cfg | 2 +- .../ultimaker3/um3_aa0.4_PC_Draft_Print.inst.cfg | 2 +- .../ultimaker3/um3_aa0.4_PC_Fast_Print.inst.cfg | 2 +- .../ultimaker3/um3_aa0.4_PC_High_Quality.inst.cfg | 2 +- .../ultimaker3/um3_aa0.4_PC_Normal_Quality.inst.cfg | 2 +- .../ultimaker3/um3_aa0.4_PLA_Draft_Print.inst.cfg | 2 +- .../ultimaker3/um3_aa0.4_PLA_Fast_Print.inst.cfg | 2 +- .../ultimaker3/um3_aa0.4_PLA_High_Quality.inst.cfg | 2 +- .../ultimaker3/um3_aa0.4_PLA_Normal_Quality.inst.cfg | 2 +- .../ultimaker3/um3_aa0.4_PP_Draft_Print.inst.cfg | 2 +- .../ultimaker3/um3_aa0.4_PP_Fast_Print.inst.cfg | 2 +- .../ultimaker3/um3_aa0.4_PP_Normal_Quality.inst.cfg | 2 +- .../ultimaker3/um3_aa0.4_TPLA_Draft_Print.inst.cfg | 2 +- .../ultimaker3/um3_aa0.4_TPLA_Fast_Print.inst.cfg | 2 +- .../ultimaker3/um3_aa0.4_TPLA_Normal_Quality.inst.cfg | 2 +- .../ultimaker3/um3_aa0.4_TPU_Draft_Print.inst.cfg | 2 +- .../ultimaker3/um3_aa0.4_TPU_Fast_Print.inst.cfg | 2 +- .../ultimaker3/um3_aa0.4_TPU_Normal_Quality.inst.cfg | 2 +- .../ultimaker3/um3_aa0.8_CPEP_Fast_Print.inst.cfg | 2 +- .../um3_aa0.8_CPEP_Superdraft_Print.inst.cfg | 2 +- .../ultimaker3/um3_aa0.8_CPEP_Verydraft_Print.inst.cfg | 2 +- .../ultimaker3/um3_aa0.8_PC_Fast_Print.inst.cfg | 2 +- .../ultimaker3/um3_aa0.8_PC_Superdraft_Print.inst.cfg | 2 +- .../ultimaker3/um3_aa0.8_PC_Verydraft_Print.inst.cfg | 2 +- .../um_s5_aa0.25_CPE_Normal_Quality.inst.cfg | 2 +- .../um_s5_aa0.25_PC_Normal_Quality.inst.cfg | 4 ++-- .../um_s5_aa0.25_PLA_Normal_Quality.inst.cfg | 6 +++--- .../um_s5_aa0.25_PP_Normal_Quality.inst.cfg | 2 +- .../ultimaker_s5/um_s5_aa0.4_ABS_Draft_Print.inst.cfg | 2 +- .../ultimaker_s5/um_s5_aa0.4_ABS_Fast_Print.inst.cfg | 2 +- .../ultimaker_s5/um_s5_aa0.4_ABS_High_Quality.inst.cfg | 2 +- .../um_s5_aa0.4_ABS_Normal_Quality.inst.cfg | 2 +- .../ultimaker_s5/um_s5_aa0.4_BAM_Draft_Print.inst.cfg | 2 +- .../ultimaker_s5/um_s5_aa0.4_BAM_Fast_Print.inst.cfg | 2 +- .../um_s5_aa0.4_BAM_Normal_Quality.inst.cfg | 2 +- .../ultimaker_s5/um_s5_aa0.4_CPEP_Draft_Print.inst.cfg | 2 +- .../ultimaker_s5/um_s5_aa0.4_CPEP_Fast_Print.inst.cfg | 2 +- .../um_s5_aa0.4_CPEP_High_Quality.inst.cfg | 2 +- .../um_s5_aa0.4_CPEP_Normal_Quality.inst.cfg | 2 +- .../ultimaker_s5/um_s5_aa0.4_CPE_Draft_Print.inst.cfg | 2 +- .../ultimaker_s5/um_s5_aa0.4_CPE_Fast_Print.inst.cfg | 2 +- .../ultimaker_s5/um_s5_aa0.4_CPE_High_Quality.inst.cfg | 2 +- .../um_s5_aa0.4_CPE_Normal_Quality.inst.cfg | 2 +- .../um_s5_aa0.4_Nylon_Draft_Print.inst.cfg | 2 +- .../ultimaker_s5/um_s5_aa0.4_Nylon_Fast_Print.inst.cfg | 2 +- .../um_s5_aa0.4_Nylon_High_Quality.inst.cfg | 2 +- .../um_s5_aa0.4_Nylon_Normal_Quality.inst.cfg | 2 +- .../ultimaker_s5/um_s5_aa0.4_PC_Draft_Print.inst.cfg | 4 ++-- .../ultimaker_s5/um_s5_aa0.4_PC_Fast_Print.inst.cfg | 4 ++-- .../ultimaker_s5/um_s5_aa0.4_PC_High_Quality.inst.cfg | 4 ++-- .../um_s5_aa0.4_PC_Normal_Quality.inst.cfg | 4 ++-- .../ultimaker_s5/um_s5_aa0.4_PLA_Draft_Print.inst.cfg | 2 +- .../ultimaker_s5/um_s5_aa0.4_PLA_Fast_Print.inst.cfg | 2 +- .../ultimaker_s5/um_s5_aa0.4_PLA_High_Quality.inst.cfg | 2 +- .../um_s5_aa0.4_PLA_Normal_Quality.inst.cfg | 2 +- .../ultimaker_s5/um_s5_aa0.4_PP_Draft_Print.inst.cfg | 2 +- .../ultimaker_s5/um_s5_aa0.4_PP_Fast_Print.inst.cfg | 2 +- .../um_s5_aa0.4_PP_Normal_Quality.inst.cfg | 2 +- .../ultimaker_s5/um_s5_aa0.4_TPLA_Draft_Print.inst.cfg | 2 +- .../ultimaker_s5/um_s5_aa0.4_TPLA_Fast_Print.inst.cfg | 2 +- .../um_s5_aa0.4_TPLA_High_Quality.inst.cfg | 2 +- .../um_s5_aa0.4_TPLA_Normal_Quality.inst.cfg | 2 +- .../ultimaker_s5/um_s5_aa0.4_TPU_Draft_Print.inst.cfg | 2 +- .../ultimaker_s5/um_s5_aa0.4_TPU_Fast_Print.inst.cfg | 2 +- .../um_s5_aa0.4_TPU_Normal_Quality.inst.cfg | 2 +- .../ultimaker_s5/um_s5_aa0.8_CPEP_Fast_Print.inst.cfg | 2 +- .../um_s5_aa0.8_CPEP_Superdraft_Print.inst.cfg | 2 +- .../um_s5_aa0.8_CPEP_Verydraft_Print.inst.cfg | 2 +- .../ultimaker_s5/um_s5_aa0.8_PC_Fast_Print.inst.cfg | 2 +- .../um_s5_aa0.8_PC_Superdraft_Print.inst.cfg | 2 +- .../um_s5_aa0.8_PC_Verydraft_Print.inst.cfg | 2 +- .../quality/zyyx/zyyx_agile_pro_flex_fast.inst.cfg | 4 ++-- .../quality/zyyx/zyyx_agile_pro_flex_fine.inst.cfg | 4 ++-- .../quality/zyyx/zyyx_agile_pro_flex_normal.inst.cfg | 4 ++-- .../quality/zyyx/zyyx_agile_pro_pla_fast.inst.cfg | 4 ++-- .../quality/zyyx/zyyx_agile_pro_pla_fine.inst.cfg | 4 ++-- .../quality/zyyx/zyyx_agile_pro_pla_normal.inst.cfg | 4 ++-- 200 files changed, 404 insertions(+), 377 deletions(-) diff --git a/resources/quality/abax_pri3/apri3_pla_fast.inst.cfg b/resources/quality/abax_pri3/apri3_pla_fast.inst.cfg index b46e2473af..52a20ac306 100644 --- a/resources/quality/abax_pri3/apri3_pla_fast.inst.cfg +++ b/resources/quality/abax_pri3/apri3_pla_fast.inst.cfg @@ -17,6 +17,6 @@ top_bottom_thickness = 0.8 infill_sparse_density = 20 speed_print = 80 speed_layer_0 = =round(speed_print * 30 / 50) -speed_topbottom = 20 +speed_topbottom = =math.ceil(speed_print * 20 / 80) cool_min_layer_time = 5 cool_min_speed = 10 diff --git a/resources/quality/abax_pri3/apri3_pla_high.inst.cfg b/resources/quality/abax_pri3/apri3_pla_high.inst.cfg index a12d8d1b72..2effe4cfc2 100644 --- a/resources/quality/abax_pri3/apri3_pla_high.inst.cfg +++ b/resources/quality/abax_pri3/apri3_pla_high.inst.cfg @@ -17,6 +17,6 @@ top_bottom_thickness = 0.8 infill_sparse_density = 20 speed_print = 50 speed_layer_0 = =round(speed_print * 30 / 50) -speed_topbottom = 20 +speed_topbottom = =math.ceil(speed_print * 20 / 50) cool_min_layer_time = 5 cool_min_speed = 10 diff --git a/resources/quality/abax_pri3/apri3_pla_normal.inst.cfg b/resources/quality/abax_pri3/apri3_pla_normal.inst.cfg index 3cea7931aa..8cab45135c 100644 --- a/resources/quality/abax_pri3/apri3_pla_normal.inst.cfg +++ b/resources/quality/abax_pri3/apri3_pla_normal.inst.cfg @@ -17,6 +17,6 @@ top_bottom_thickness = 0.8 infill_sparse_density = 20 speed_print = 50 speed_layer_0 = =round(speed_print * 30 / 50) -speed_topbottom = 20 +speed_topbottom = =math.ceil(speed_print * 20 / 50) cool_min_layer_time = 5 cool_min_speed = 10 diff --git a/resources/quality/abax_pri5/apri5_pla_fast.inst.cfg b/resources/quality/abax_pri5/apri5_pla_fast.inst.cfg index ba1de97b89..0d71942031 100644 --- a/resources/quality/abax_pri5/apri5_pla_fast.inst.cfg +++ b/resources/quality/abax_pri5/apri5_pla_fast.inst.cfg @@ -17,6 +17,6 @@ top_bottom_thickness = 0.8 infill_sparse_density = 20 speed_print = 80 speed_layer_0 = =round(speed_print * 30 / 50) -speed_topbottom = 20 +speed_topbottom = =math.ceil(speed_print * 20 / 80) cool_min_layer_time = 5 cool_min_speed = 10 diff --git a/resources/quality/abax_pri5/apri5_pla_high.inst.cfg b/resources/quality/abax_pri5/apri5_pla_high.inst.cfg index d1ea040f93..184c23a331 100644 --- a/resources/quality/abax_pri5/apri5_pla_high.inst.cfg +++ b/resources/quality/abax_pri5/apri5_pla_high.inst.cfg @@ -17,6 +17,6 @@ top_bottom_thickness = 0.8 infill_sparse_density = 20 speed_print = 50 speed_layer_0 = =round(speed_print * 30 / 50) -speed_topbottom = 20 +speed_topbottom = =math.ceil(speed_print * 20 / 50) cool_min_layer_time = 5 cool_min_speed = 10 diff --git a/resources/quality/abax_pri5/apri5_pla_normal.inst.cfg b/resources/quality/abax_pri5/apri5_pla_normal.inst.cfg index c2bb8d343b..c36b4894b8 100644 --- a/resources/quality/abax_pri5/apri5_pla_normal.inst.cfg +++ b/resources/quality/abax_pri5/apri5_pla_normal.inst.cfg @@ -17,6 +17,6 @@ top_bottom_thickness = 0.8 infill_sparse_density = 20 speed_print = 50 speed_layer_0 = =round(speed_print * 30 / 50) -speed_topbottom = 20 +speed_topbottom = =math.ceil(speed_print * 20 / 50) cool_min_layer_time = 5 cool_min_speed = 10 diff --git a/resources/quality/abax_titan/atitan_pla_fast.inst.cfg b/resources/quality/abax_titan/atitan_pla_fast.inst.cfg index ec54c373c9..58c41fc68f 100644 --- a/resources/quality/abax_titan/atitan_pla_fast.inst.cfg +++ b/resources/quality/abax_titan/atitan_pla_fast.inst.cfg @@ -17,6 +17,6 @@ top_bottom_thickness = 0.8 infill_sparse_density = 20 speed_print = 80 speed_layer_0 = =round(speed_print * 30 / 50) -speed_topbottom = 20 +speed_topbottom = =math.ceil(speed_print * 20 / 80) cool_min_layer_time = 5 cool_min_speed = 10 diff --git a/resources/quality/abax_titan/atitan_pla_high.inst.cfg b/resources/quality/abax_titan/atitan_pla_high.inst.cfg index f8d016f6d0..3f1336d9e5 100644 --- a/resources/quality/abax_titan/atitan_pla_high.inst.cfg +++ b/resources/quality/abax_titan/atitan_pla_high.inst.cfg @@ -17,6 +17,6 @@ top_bottom_thickness = 0.8 infill_sparse_density = 20 speed_print = 50 speed_layer_0 = =round(speed_print * 30 / 50) -speed_topbottom = 20 +speed_topbottom = =math.ceil(speed_print * 20 / 50) cool_min_layer_time = 5 cool_min_speed = 10 diff --git a/resources/quality/abax_titan/atitan_pla_normal.inst.cfg b/resources/quality/abax_titan/atitan_pla_normal.inst.cfg index b25a0ff47e..23a3b06fd3 100644 --- a/resources/quality/abax_titan/atitan_pla_normal.inst.cfg +++ b/resources/quality/abax_titan/atitan_pla_normal.inst.cfg @@ -17,6 +17,6 @@ top_bottom_thickness = 0.8 infill_sparse_density = 20 speed_print = 50 speed_layer_0 = =round(speed_print * 30 / 50) -speed_topbottom = 20 +speed_topbottom = =math.ceil(speed_print * 20 / 50) cool_min_layer_time = 5 cool_min_speed = 10 diff --git a/resources/quality/anycubic_i3_mega/anycubic_i3_mega_draft.inst.cfg b/resources/quality/anycubic_i3_mega/anycubic_i3_mega_draft.inst.cfg index ae18246f3f..633133a8d4 100644 --- a/resources/quality/anycubic_i3_mega/anycubic_i3_mega_draft.inst.cfg +++ b/resources/quality/anycubic_i3_mega/anycubic_i3_mega_draft.inst.cfg @@ -41,13 +41,13 @@ retraction_speed = 40 skirt_brim_speed = 40 skirt_gap = 5 skirt_line_count = 3 -speed_infill = 60 +speed_infill = =speed_print speed_print = 60 speed_support = 60 -speed_topbottom = 30 +speed_topbottom = =math.ceil(speed_print * 30 / 60) speed_travel = 100 -speed_wall = 60 -speed_wall_x = 60 +speed_wall = =speed_print +speed_wall_x = =speed_print support_angle = 60 support_enable = True support_interface_enable = True diff --git a/resources/quality/anycubic_i3_mega/anycubic_i3_mega_high.inst.cfg b/resources/quality/anycubic_i3_mega/anycubic_i3_mega_high.inst.cfg index bbaa9c63b1..9954be2fac 100644 --- a/resources/quality/anycubic_i3_mega/anycubic_i3_mega_high.inst.cfg +++ b/resources/quality/anycubic_i3_mega/anycubic_i3_mega_high.inst.cfg @@ -41,13 +41,13 @@ retraction_speed = 40 skirt_brim_speed = 40 skirt_gap = 5 skirt_line_count = 3 -speed_infill = 50 +speed_infill = =speed_print speed_print = 50 speed_support = 30 -speed_topbottom = 20 +speed_topbottom = =math.ceil(speed_print * 20 / 50) speed_travel = 50 -speed_wall = 50 -speed_wall_x = 50 +speed_wall = =speed_print +speed_wall_x = =speed_print support_angle = 60 support_enable = True support_interface_enable = True diff --git a/resources/quality/anycubic_i3_mega/anycubic_i3_mega_normal.inst.cfg b/resources/quality/anycubic_i3_mega/anycubic_i3_mega_normal.inst.cfg index d319b09952..8faececc66 100644 --- a/resources/quality/anycubic_i3_mega/anycubic_i3_mega_normal.inst.cfg +++ b/resources/quality/anycubic_i3_mega/anycubic_i3_mega_normal.inst.cfg @@ -41,13 +41,13 @@ retraction_speed = 40 skirt_brim_speed = 40 skirt_gap = 5 skirt_line_count = 3 -speed_infill = 50 +speed_infill = =speed_print speed_print = 50 speed_support = 30 -speed_topbottom = 20 +speed_topbottom = =math.ceil(speed_print * 20 / 50) speed_travel = 100 -speed_wall = 50 -speed_wall_x = 50 +speed_wall = =speed_print +speed_wall_x = =speed_print support_angle = 60 support_enable = True support_interface_enable = True diff --git a/resources/quality/deltacomb/deltacomb_nylon_fast.inst.cfg b/resources/quality/deltacomb/deltacomb_nylon_fast.inst.cfg index e5718fdc95..c224414b23 100644 --- a/resources/quality/deltacomb/deltacomb_nylon_fast.inst.cfg +++ b/resources/quality/deltacomb/deltacomb_nylon_fast.inst.cfg @@ -43,11 +43,11 @@ skirt_brim_minimal_length = 75 skirt_gap = 1.5 skirt_line_count = 5 speed_infill = =speed_print -speed_layer_0 = 25 +speed_layer_0 = =math.ceil(speed_print * 25 / 50) speed_print = 50 -speed_topbottom = 40 +speed_topbottom = =math.ceil(speed_print * 40 / 50) speed_travel = 200 -speed_wall_0 = 40 +speed_wall_0 = =math.ceil(speed_print * 40 / 50) speed_wall_x = =speed_print support_angle = 70 support_type = buildplate diff --git a/resources/quality/deltacomb/deltacomb_nylon_high.inst.cfg b/resources/quality/deltacomb/deltacomb_nylon_high.inst.cfg index 2b29b49c68..bfbc1d0129 100644 --- a/resources/quality/deltacomb/deltacomb_nylon_high.inst.cfg +++ b/resources/quality/deltacomb/deltacomb_nylon_high.inst.cfg @@ -43,11 +43,11 @@ skirt_brim_minimal_length = 75 skirt_gap = 1.5 skirt_line_count = 5 speed_infill = =speed_print -speed_layer_0 = 25 +speed_layer_0 = =math.ceil(speed_print * 25 / 50) speed_print = 50 -speed_topbottom = 40 +speed_topbottom = =math.ceil(speed_print * 40 / 50) speed_travel = 200 -speed_wall_0 = 40 +speed_wall_0 = =math.ceil(speed_print * 40 / 50) speed_wall_x = =speed_print support_angle = 70 support_type = buildplate diff --git a/resources/quality/deltacomb/deltacomb_nylon_normal.inst.cfg b/resources/quality/deltacomb/deltacomb_nylon_normal.inst.cfg index 9853831b12..9636906707 100644 --- a/resources/quality/deltacomb/deltacomb_nylon_normal.inst.cfg +++ b/resources/quality/deltacomb/deltacomb_nylon_normal.inst.cfg @@ -43,11 +43,11 @@ skirt_brim_minimal_length = 75 skirt_gap = 1.5 skirt_line_count = 5 speed_infill = =speed_print -speed_layer_0 = 25 +speed_layer_0 = =math.ceil(speed_print * 25 / 50) speed_print = 50 -speed_topbottom = 40 +speed_topbottom = =math.ceil(speed_print * 40 / 50) speed_travel = 200 -speed_wall_0 = 40 +speed_wall_0 = =math.ceil(speed_print * 40 / 50) speed_wall_x = =speed_print support_angle = 70 support_type = buildplate diff --git a/resources/quality/fabtotum/fabtotum_nylon_fast.inst.cfg b/resources/quality/fabtotum/fabtotum_nylon_fast.inst.cfg index 88985a7918..010ce182e6 100644 --- a/resources/quality/fabtotum/fabtotum_nylon_fast.inst.cfg +++ b/resources/quality/fabtotum/fabtotum_nylon_fast.inst.cfg @@ -43,11 +43,11 @@ skirt_brim_minimal_length = 75 skirt_gap = 1.5 skirt_line_count = 5 speed_infill = =speed_print -speed_layer_0 = 25 +speed_layer_0 = =math.ceil(speed_print * 25 / 30) speed_print = 30 -speed_topbottom = 40 +speed_topbottom = =math.ceil(speed_print * 40 / 30) speed_travel = 200 -speed_wall_0 = 40 +speed_wall_0 = =math.ceil(speed_print * 40 / 30) speed_wall_x = =speed_print support_angle = 70 support_type = buildplate diff --git a/resources/quality/fabtotum/fabtotum_nylon_high.inst.cfg b/resources/quality/fabtotum/fabtotum_nylon_high.inst.cfg index cef9b6023a..2b7e7d7c24 100644 --- a/resources/quality/fabtotum/fabtotum_nylon_high.inst.cfg +++ b/resources/quality/fabtotum/fabtotum_nylon_high.inst.cfg @@ -43,11 +43,11 @@ skirt_brim_minimal_length = 75 skirt_gap = 1.5 skirt_line_count = 5 speed_infill = =speed_print -speed_layer_0 = 25 +speed_layer_0 = =math.ceil(speed_print * 25 / 30) speed_print = 30 -speed_topbottom = 40 +speed_topbottom = =math.ceil(speed_print * 40 / 30) speed_travel = 200 -speed_wall_0 = 40 +speed_wall_0 = =math.ceil(speed_print * 40 / 30) speed_wall_x = =speed_print support_angle = 70 support_type = buildplate diff --git a/resources/quality/fabtotum/fabtotum_nylon_normal.inst.cfg b/resources/quality/fabtotum/fabtotum_nylon_normal.inst.cfg index 63b2baf019..4a34c7e369 100644 --- a/resources/quality/fabtotum/fabtotum_nylon_normal.inst.cfg +++ b/resources/quality/fabtotum/fabtotum_nylon_normal.inst.cfg @@ -43,11 +43,11 @@ skirt_brim_minimal_length = 75 skirt_gap = 1.5 skirt_line_count = 5 speed_infill = =speed_print -speed_layer_0 = 25 +speed_layer_0 = =math.ceil(speed_print * 25 / 30) speed_print = 30 -speed_topbottom = 40 +speed_topbottom = =math.ceil(speed_print * 40 / 30) speed_travel = 200 -speed_wall_0 = 40 +speed_wall_0 = =math.ceil(speed_print * 40 / 30) speed_wall_x = =speed_print support_angle = 70 support_type = buildplate diff --git a/resources/quality/fast.inst.cfg b/resources/quality/fast.inst.cfg index a725947eba..b77932eb9b 100644 --- a/resources/quality/fast.inst.cfg +++ b/resources/quality/fast.inst.cfg @@ -14,8 +14,8 @@ global_quality = True infill_sparse_density = 10 layer_height = 0.15 cool_min_layer_time = 3 -speed_wall_0 = 40 -speed_wall_x = 80 -speed_infill = 100 +speed_wall_0 = =math.ceil(speed_print * 40 / 60) +speed_wall_x = =math.ceil(speed_print * 80 / 60) +speed_infill = =math.ceil(speed_print * 100 / 60) wall_thickness = 1 -speed_topbottom = 30 +speed_topbottom = =math.ceil(speed_print * 30 / 60) diff --git a/resources/quality/high.inst.cfg b/resources/quality/high.inst.cfg index 673ce56f04..ca621a2b9d 100644 --- a/resources/quality/high.inst.cfg +++ b/resources/quality/high.inst.cfg @@ -12,5 +12,5 @@ global_quality = True [values] layer_height = 0.06 -speed_topbottom = 15 -speed_infill = 80 +speed_topbottom = =math.ceil(speed_print * 15 / 60) +speed_infill = =math.ceil(speed_print * 80 / 60) diff --git a/resources/quality/imade3d_jellybox/generic_petg_0.4_coarse.inst.cfg b/resources/quality/imade3d_jellybox/generic_petg_0.4_coarse.inst.cfg index 25b6f1155a..4d12c193c0 100644 --- a/resources/quality/imade3d_jellybox/generic_petg_0.4_coarse.inst.cfg +++ b/resources/quality/imade3d_jellybox/generic_petg_0.4_coarse.inst.cfg @@ -43,13 +43,13 @@ skin_no_small_gaps_heuristic = False skirt_brim_minimal_length = 100 skirt_brim_speed = 25 skirt_line_count = 2 -speed_layer_0 = 14 +speed_layer_0 = =math.ceil(speed_print * 14 / 40) speed_print = 40 speed_slowdown_layers = 1 -speed_topbottom = 20 +speed_topbottom = =math.ceil(speed_print * 20 / 40) speed_travel = 120 speed_travel_layer_0 = 60 -speed_wall = 25 -speed_wall_x = 35 +speed_wall = =math.ceil(speed_print * 25 / 40) +speed_wall_x = =math.ceil(speed_print * 35 / 40) top_thickness = =top_bottom_thickness wall_thickness = 0.8 diff --git a/resources/quality/imade3d_jellybox/generic_petg_0.4_coarse_2-fans.inst.cfg b/resources/quality/imade3d_jellybox/generic_petg_0.4_coarse_2-fans.inst.cfg index 2d975b1240..f59bee301a 100644 --- a/resources/quality/imade3d_jellybox/generic_petg_0.4_coarse_2-fans.inst.cfg +++ b/resources/quality/imade3d_jellybox/generic_petg_0.4_coarse_2-fans.inst.cfg @@ -43,13 +43,13 @@ skin_no_small_gaps_heuristic = False skirt_brim_minimal_length = 100 skirt_brim_speed = 25 skirt_line_count = 2 -speed_layer_0 = 14 +speed_layer_0 = =math.ceil(speed_print * 14 / 40) speed_print = 40 speed_slowdown_layers = 1 -speed_topbottom = 20 +speed_topbottom = =math.ceil(speed_print * 20 / 40) speed_travel = 120 speed_travel_layer_0 = 60 -speed_wall = 25 -speed_wall_x = 35 +speed_wall = =math.ceil(speed_print * 25 / 40) +speed_wall_x = =math.ceil(speed_print * 35 / 40) top_thickness = =top_bottom_thickness wall_thickness = 0.8 diff --git a/resources/quality/imade3d_jellybox/generic_petg_0.4_medium.inst.cfg b/resources/quality/imade3d_jellybox/generic_petg_0.4_medium.inst.cfg index c510473c3d..f2abdd22a4 100644 --- a/resources/quality/imade3d_jellybox/generic_petg_0.4_medium.inst.cfg +++ b/resources/quality/imade3d_jellybox/generic_petg_0.4_medium.inst.cfg @@ -43,13 +43,13 @@ skin_no_small_gaps_heuristic = False skirt_brim_minimal_length = 100 skirt_brim_speed = 25 skirt_line_count = 2 -speed_layer_0 = 14 +speed_layer_0 = =math.ceil(speed_print * 14 / 40) speed_print = 40 speed_slowdown_layers = 1 -speed_topbottom = 20 +speed_topbottom = =math.ceil(speed_print * 20 / 40) speed_travel = 120 speed_travel_layer_0 = 60 -speed_wall = 25 -speed_wall_x = 35 +speed_wall = =math.ceil(speed_print * 25 / 40) +speed_wall_x = =math.ceil(speed_print * 35 / 40) top_thickness = =top_bottom_thickness wall_thickness = 0.8 diff --git a/resources/quality/imade3d_jellybox/generic_petg_0.4_medium_2-fans.inst.cfg b/resources/quality/imade3d_jellybox/generic_petg_0.4_medium_2-fans.inst.cfg index 682f850c83..c592252f54 100644 --- a/resources/quality/imade3d_jellybox/generic_petg_0.4_medium_2-fans.inst.cfg +++ b/resources/quality/imade3d_jellybox/generic_petg_0.4_medium_2-fans.inst.cfg @@ -43,13 +43,13 @@ skin_no_small_gaps_heuristic = False skirt_brim_minimal_length = 100 skirt_brim_speed = 25 skirt_line_count = 2 -speed_layer_0 = 14 +speed_layer_0 = =math.ceil(speed_print * 14 / 40) speed_print = 40 speed_slowdown_layers = 1 -speed_topbottom = 20 +speed_topbottom = =math.ceil(speed_print * 20 / 40) speed_travel = 120 speed_travel_layer_0 = 60 -speed_wall = 25 -speed_wall_x = 35 +speed_wall = =math.ceil(speed_print * 25 / 40) +speed_wall_x = =math.ceil(speed_print * 35 / 40) top_thickness = =top_bottom_thickness wall_thickness = 0.8 diff --git a/resources/quality/imade3d_jellybox/generic_pla_0.4_coarse.inst.cfg b/resources/quality/imade3d_jellybox/generic_pla_0.4_coarse.inst.cfg index 264878f9d9..98f9a8cf1b 100644 --- a/resources/quality/imade3d_jellybox/generic_pla_0.4_coarse.inst.cfg +++ b/resources/quality/imade3d_jellybox/generic_pla_0.4_coarse.inst.cfg @@ -41,13 +41,13 @@ skin_no_small_gaps_heuristic = False skirt_brim_minimal_length = 100 skirt_brim_speed = 20 skirt_line_count = 3 -speed_layer_0 = 20 +speed_layer_0 = =math.ceil(speed_print * 20 / 45) speed_print = 45 speed_slowdown_layers = 1 -speed_topbottom = 25 +speed_topbottom = =math.ceil(speed_print * 25 / 45) speed_travel = 120 speed_travel_layer_0 = 60 -speed_wall = 25 -speed_wall_x = 35 +speed_wall = =math.ceil(speed_print * 25 / 45) +speed_wall_x = =math.ceil(speed_print * 35 / 45) top_thickness = 0.8 wall_thickness = 0.8 diff --git a/resources/quality/imade3d_jellybox/generic_pla_0.4_coarse_2-fans.inst.cfg b/resources/quality/imade3d_jellybox/generic_pla_0.4_coarse_2-fans.inst.cfg index 8427144478..fd26acc671 100644 --- a/resources/quality/imade3d_jellybox/generic_pla_0.4_coarse_2-fans.inst.cfg +++ b/resources/quality/imade3d_jellybox/generic_pla_0.4_coarse_2-fans.inst.cfg @@ -41,13 +41,13 @@ skin_no_small_gaps_heuristic = False skirt_brim_minimal_length = 100 skirt_brim_speed = 20 skirt_line_count = 3 -speed_layer_0 = 20 +speed_layer_0 = =math.ceil(speed_print * 20 / 45) speed_print = 45 speed_slowdown_layers = 1 -speed_topbottom = 25 +speed_topbottom = =math.ceil(speed_print * 25 / 45) speed_travel = 120 speed_travel_layer_0 = 60 -speed_wall = 25 -speed_wall_x = 35 +speed_wall = =math.ceil(speed_print * 25 / 45) +speed_wall_x = =math.ceil(speed_print * 35 / 45) top_thickness = 0.8 wall_thickness = 0.8 diff --git a/resources/quality/imade3d_jellybox/generic_pla_0.4_fine.inst.cfg b/resources/quality/imade3d_jellybox/generic_pla_0.4_fine.inst.cfg index 335e62c698..d233e1cd4a 100644 --- a/resources/quality/imade3d_jellybox/generic_pla_0.4_fine.inst.cfg +++ b/resources/quality/imade3d_jellybox/generic_pla_0.4_fine.inst.cfg @@ -42,13 +42,13 @@ skin_no_small_gaps_heuristic = False skirt_brim_minimal_length = 100 skirt_brim_speed = 20 skirt_line_count = 3 -speed_layer_0 = 20 +speed_layer_0 = =math.ceil(speed_print * 20 / 45) speed_print = 45 speed_slowdown_layers = 1 -speed_topbottom = 25 +speed_topbottom = =math.ceil(speed_print * 25 / 45) speed_travel = 120 speed_travel_layer_0 = 60 -speed_wall = 25 -speed_wall_x = 35 +speed_wall = =math.ceil(speed_print * 25 / 45) +speed_wall_x = =math.ceil(speed_print * 35 / 45) top_thickness = 0.8 wall_thickness = 0.8 diff --git a/resources/quality/imade3d_jellybox/generic_pla_0.4_fine_2-fans.inst.cfg b/resources/quality/imade3d_jellybox/generic_pla_0.4_fine_2-fans.inst.cfg index bb4f9f0570..4fd76f6b8d 100644 --- a/resources/quality/imade3d_jellybox/generic_pla_0.4_fine_2-fans.inst.cfg +++ b/resources/quality/imade3d_jellybox/generic_pla_0.4_fine_2-fans.inst.cfg @@ -42,13 +42,13 @@ skin_no_small_gaps_heuristic = False skirt_brim_minimal_length = 100 skirt_brim_speed = 20 skirt_line_count = 3 -speed_layer_0 = 20 +speed_layer_0 = =math.ceil(speed_print * 20 / 45) speed_print = 45 speed_slowdown_layers = 1 -speed_topbottom = 25 +speed_topbottom = =math.ceil(speed_print * 25 / 45) speed_travel = 120 speed_travel_layer_0 = 60 -speed_wall = 25 -speed_wall_x = 35 +speed_wall = =math.ceil(speed_print * 25 / 45) +speed_wall_x = =math.ceil(speed_print * 35 / 45) top_thickness = 0.8 wall_thickness = 0.8 diff --git a/resources/quality/imade3d_jellybox/generic_pla_0.4_medium.inst.cfg b/resources/quality/imade3d_jellybox/generic_pla_0.4_medium.inst.cfg index 8bb391bdaa..1fa7db1c7a 100644 --- a/resources/quality/imade3d_jellybox/generic_pla_0.4_medium.inst.cfg +++ b/resources/quality/imade3d_jellybox/generic_pla_0.4_medium.inst.cfg @@ -41,13 +41,13 @@ skin_no_small_gaps_heuristic = False skirt_brim_minimal_length = 100 skirt_brim_speed = 20 skirt_line_count = 3 -speed_layer_0 = 20 +speed_layer_0 = =math.ceil(speed_print * 20 / 45) speed_print = 45 speed_slowdown_layers = 1 -speed_topbottom = 25 +speed_topbottom = =math.ceil(speed_print * 25 / 45) speed_travel = 120 speed_travel_layer_0 = 60 -speed_wall = 25 -speed_wall_x = 35 +speed_wall = =math.ceil(speed_print * 25 / 45) +speed_wall_x = =math.ceil(speed_print * 35 / 45) top_thickness = 0.8 wall_thickness = 0.8 diff --git a/resources/quality/imade3d_jellybox/generic_pla_0.4_medium_2-fans.inst.cfg b/resources/quality/imade3d_jellybox/generic_pla_0.4_medium_2-fans.inst.cfg index 9e4d8efddc..402d4dda1d 100644 --- a/resources/quality/imade3d_jellybox/generic_pla_0.4_medium_2-fans.inst.cfg +++ b/resources/quality/imade3d_jellybox/generic_pla_0.4_medium_2-fans.inst.cfg @@ -41,13 +41,13 @@ skin_no_small_gaps_heuristic = False skirt_brim_minimal_length = 100 skirt_brim_speed = 20 skirt_line_count = 3 -speed_layer_0 = 20 +speed_layer_0 = =math.ceil(speed_print * 20 / 45) speed_print = 45 speed_slowdown_layers = 1 -speed_topbottom = 25 +speed_topbottom = =math.ceil(speed_print * 25 / 45) speed_travel = 120 speed_travel_layer_0 = 60 -speed_wall = 25 -speed_wall_x = 35 +speed_wall = =math.ceil(speed_print * 25 / 45) +speed_wall_x = =math.ceil(speed_print * 35 / 45) top_thickness = 0.8 wall_thickness = 0.8 diff --git a/resources/quality/imade3d_jellybox/generic_pla_0.4_ultrafine.inst.cfg b/resources/quality/imade3d_jellybox/generic_pla_0.4_ultrafine.inst.cfg index aac761463d..de4302e853 100644 --- a/resources/quality/imade3d_jellybox/generic_pla_0.4_ultrafine.inst.cfg +++ b/resources/quality/imade3d_jellybox/generic_pla_0.4_ultrafine.inst.cfg @@ -43,13 +43,13 @@ skin_no_small_gaps_heuristic = False skirt_brim_minimal_length = 100 skirt_brim_speed = 20 skirt_line_count = 3 -speed_layer_0 = 20 +speed_layer_0 = =math.ceil(speed_print * 20 / 45) speed_print = 45 speed_slowdown_layers = 1 -speed_topbottom = 25 +speed_topbottom = =math.ceil(speed_print * 25 / 45) speed_travel = 120 speed_travel_layer_0 = 60 -speed_wall = 25 -speed_wall_x = 35 +speed_wall = =math.ceil(speed_print * 25 / 45) +speed_wall_x = =math.ceil(speed_print * 35 / 45) top_thickness = 0.8 wall_thickness = 0.8 diff --git a/resources/quality/imade3d_jellybox/generic_pla_0.4_ultrafine_2-fans.inst.cfg b/resources/quality/imade3d_jellybox/generic_pla_0.4_ultrafine_2-fans.inst.cfg index 8df712f8ee..28425681fd 100644 --- a/resources/quality/imade3d_jellybox/generic_pla_0.4_ultrafine_2-fans.inst.cfg +++ b/resources/quality/imade3d_jellybox/generic_pla_0.4_ultrafine_2-fans.inst.cfg @@ -43,13 +43,13 @@ skin_no_small_gaps_heuristic = False skirt_brim_minimal_length = 100 skirt_brim_speed = 20 skirt_line_count = 3 -speed_layer_0 = 20 +speed_layer_0 = =math.ceil(speed_print * 20 / 45) speed_print = 45 speed_slowdown_layers = 1 -speed_topbottom = 25 +speed_topbottom = =math.ceil(speed_print * 25 / 45) speed_travel = 120 speed_travel_layer_0 = 60 -speed_wall = 25 -speed_wall_x = 35 +speed_wall = =math.ceil(speed_print * 25 / 45) +speed_wall_x = =math.ceil(speed_print * 35 / 45) top_thickness = 0.8 wall_thickness = 0.8 diff --git a/resources/quality/kemiq_q2/kemiq_q2_beta_abs_draft.inst.cfg b/resources/quality/kemiq_q2/kemiq_q2_beta_abs_draft.inst.cfg index 38a5208905..c9f38786f8 100644 --- a/resources/quality/kemiq_q2/kemiq_q2_beta_abs_draft.inst.cfg +++ b/resources/quality/kemiq_q2/kemiq_q2_beta_abs_draft.inst.cfg @@ -15,11 +15,11 @@ layer_height = 0.35 layer_height_0 = 0.3 speed_print = 70 -speed_infill = 60 -speed_layer_0 = 20 -speed_wall_0 = 30 -speed_wall_x = 50 -speed_topbottom = 30 +speed_infill = =math.ceil(speed_print * 60 / 70) +speed_layer_0 = =math.ceil(speed_print * 20 / 70) +speed_wall_0 = =math.ceil(speed_print * 30 / 70) +speed_wall_x = =math.ceil(speed_print * 50 / 70) +speed_topbottom = =math.ceil(speed_print * 30 / 70) speed_travel = 120 material_print_temperature = 246 diff --git a/resources/quality/kemiq_q2/kemiq_q2_beta_abs_extra_fine.inst.cfg b/resources/quality/kemiq_q2/kemiq_q2_beta_abs_extra_fine.inst.cfg index 9438ecbfa7..a402bb0990 100644 --- a/resources/quality/kemiq_q2/kemiq_q2_beta_abs_extra_fine.inst.cfg +++ b/resources/quality/kemiq_q2/kemiq_q2_beta_abs_extra_fine.inst.cfg @@ -15,11 +15,11 @@ layer_height = 0.06 layer_height_0 = 0.3 speed_print = 40 -speed_infill = 50 -speed_layer_0 = 15 -speed_wall_0 = 20 -speed_wall_x = 40 -speed_topbottom = 20 +speed_infill = =math.ceil(speed_print * 50 / 40) +speed_layer_0 = =math.ceil(speed_print * 15 / 40) +speed_wall_0 = =math.ceil(speed_print * 20 / 40) +speed_wall_x = =speed_print +speed_topbottom = =math.ceil(speed_print * 20 / 40) speed_travel = 120 material_print_temperature = 246 diff --git a/resources/quality/kemiq_q2/kemiq_q2_beta_abs_fine.inst.cfg b/resources/quality/kemiq_q2/kemiq_q2_beta_abs_fine.inst.cfg index 16d3367472..0aa0c8ace0 100644 --- a/resources/quality/kemiq_q2/kemiq_q2_beta_abs_fine.inst.cfg +++ b/resources/quality/kemiq_q2/kemiq_q2_beta_abs_fine.inst.cfg @@ -15,11 +15,11 @@ layer_height = 0.1 layer_height_0 = 0.3 speed_print = 50 -speed_infill = 60 -speed_layer_0 = 20 -speed_wall_0 = 25 -speed_wall_x = 45 -speed_topbottom = 30 +speed_infill = =math.ceil(speed_print * 60 / 50) +speed_layer_0 = =math.ceil(speed_print * 20 / 50) +speed_wall_0 = =math.ceil(speed_print * 25 / 50) +speed_wall_x = =math.ceil(speed_print * 45 / 50) +speed_topbottom = =math.ceil(speed_print * 30 / 50) speed_travel = 120 material_print_temperature = 246 diff --git a/resources/quality/kemiq_q2/kemiq_q2_beta_abs_low.inst.cfg b/resources/quality/kemiq_q2/kemiq_q2_beta_abs_low.inst.cfg index d0b15cf47b..8c3d118315 100644 --- a/resources/quality/kemiq_q2/kemiq_q2_beta_abs_low.inst.cfg +++ b/resources/quality/kemiq_q2/kemiq_q2_beta_abs_low.inst.cfg @@ -15,11 +15,11 @@ layer_height = 0.2 layer_height_0 = 0.3 speed_print = 70 -speed_infill = 60 -speed_layer_0 = 20 -speed_wall_0 = 30 -speed_wall_x = 50 -speed_topbottom = 30 +speed_infill = =math.ceil(speed_print * 60 / 70) +speed_layer_0 = =math.ceil(speed_print * 20 / 70) +speed_wall_0 = =math.ceil(speed_print * 30 / 70) +speed_wall_x = =math.ceil(speed_print * 50 / 70) +speed_topbottom = =math.ceil(speed_print * 30 / 70) speed_travel = 120 material_print_temperature = 246 diff --git a/resources/quality/kemiq_q2/kemiq_q2_beta_abs_normal.inst.cfg b/resources/quality/kemiq_q2/kemiq_q2_beta_abs_normal.inst.cfg index 2d32a0cc87..a889f34610 100644 --- a/resources/quality/kemiq_q2/kemiq_q2_beta_abs_normal.inst.cfg +++ b/resources/quality/kemiq_q2/kemiq_q2_beta_abs_normal.inst.cfg @@ -15,11 +15,11 @@ layer_height = 0.15 layer_height_0 = 0.3 speed_print = 60 -speed_infill = 50 -speed_layer_0 = 15 -speed_wall_0 = 20 -speed_wall_x = 40 -speed_topbottom = 20 +speed_infill = =math.ceil(speed_print * 50 / 60) +speed_layer_0 = =math.ceil(speed_print * 15 / 60) +speed_wall_0 = =math.ceil(speed_print * 20 / 60) +speed_wall_x = =math.ceil(speed_print * 40 / 60) +speed_topbottom = =math.ceil(speed_print * 20 / 60) speed_travel = 120 material_print_temperature = 246 diff --git a/resources/quality/kemiq_q2/kemiq_q2_gama_pla_extra_fine.inst.cfg b/resources/quality/kemiq_q2/kemiq_q2_gama_pla_extra_fine.inst.cfg index 8c0d1cf9ca..78a59d00c2 100644 --- a/resources/quality/kemiq_q2/kemiq_q2_gama_pla_extra_fine.inst.cfg +++ b/resources/quality/kemiq_q2/kemiq_q2_gama_pla_extra_fine.inst.cfg @@ -15,11 +15,11 @@ layer_height = 0.06 adhesion_type = skirt speed_print = 40 -speed_infill = 50 -speed_layer_0 = 15 -speed_wall_0 = 20 -speed_wall_x = 40 -speed_topbottom = 20 +speed_infill = =math.ceil(speed_print * 50 / 40) +speed_layer_0 = =math.ceil(speed_print * 15 / 40) +speed_wall_0 = =math.ceil(speed_print * 20 / 40) +speed_wall_x = =speed_print +speed_topbottom = =math.ceil(speed_print * 20 / 40) speed_travel = 120 material_print_temperature = 214 diff --git a/resources/quality/kemiq_q2/kemiq_q2_gama_pla_fine.inst.cfg b/resources/quality/kemiq_q2/kemiq_q2_gama_pla_fine.inst.cfg index b1e576f162..5ce23ce0d3 100644 --- a/resources/quality/kemiq_q2/kemiq_q2_gama_pla_fine.inst.cfg +++ b/resources/quality/kemiq_q2/kemiq_q2_gama_pla_fine.inst.cfg @@ -15,11 +15,11 @@ layer_height = 0.1 adhesion_type = skirt speed_print = 50 -speed_infill = 60 -speed_layer_0 = 20 -speed_wall_0 = 25 -speed_wall_x = 45 -speed_topbottom = 30 +speed_infill = =math.ceil(speed_print * 60 / 50) +speed_layer_0 = =math.ceil(speed_print * 20 / 50) +speed_wall_0 = =math.ceil(speed_print * 25 / 50) +speed_wall_x = =math.ceil(speed_print * 45 / 50) +speed_topbottom = =math.ceil(speed_print * 30 / 50) speed_travel = 120 material_print_temperature = 214 diff --git a/resources/quality/kemiq_q2/kemiq_q2_gama_pla_normal.inst.cfg b/resources/quality/kemiq_q2/kemiq_q2_gama_pla_normal.inst.cfg index da6d2d89ae..75b7407449 100644 --- a/resources/quality/kemiq_q2/kemiq_q2_gama_pla_normal.inst.cfg +++ b/resources/quality/kemiq_q2/kemiq_q2_gama_pla_normal.inst.cfg @@ -15,11 +15,11 @@ layer_height = 0.15 adhesion_type = skirt speed_print = 60 -speed_infill = 50 -speed_layer_0 = 15 -speed_wall_0 = 20 -speed_wall_x = 40 -speed_topbottom = 20 +speed_infill = =math.ceil(speed_print * 50 / 60) +speed_layer_0 = =math.ceil(speed_print * 15 / 60) +speed_wall_0 = =math.ceil(speed_print * 20 / 60) +speed_wall_x = =math.ceil(speed_print * 40 / 60) +speed_topbottom = =math.ceil(speed_print * 20 / 60) speed_travel = 120 material_print_temperature = 214 diff --git a/resources/quality/malyan_m200/malyan_m200_global_Draft_Quality.inst.cfg b/resources/quality/malyan_m200/malyan_m200_global_Draft_Quality.inst.cfg index 91153f57f7..257f5a9e81 100644 --- a/resources/quality/malyan_m200/malyan_m200_global_Draft_Quality.inst.cfg +++ b/resources/quality/malyan_m200/malyan_m200_global_Draft_Quality.inst.cfg @@ -18,6 +18,6 @@ top_bottom_thickness = 0.72 infill_sparse_density = 22 speed_print = 50 speed_layer_0 = =round(speed_print * 30 / 50) -speed_topbottom = 20 +speed_topbottom = =math.ceil(speed_print * 20 / 50) cool_min_layer_time = 5 cool_min_speed = 10 diff --git a/resources/quality/malyan_m200/malyan_m200_global_Fast_Quality.inst.cfg b/resources/quality/malyan_m200/malyan_m200_global_Fast_Quality.inst.cfg index 6b29fc3649..c7d789e4cf 100644 --- a/resources/quality/malyan_m200/malyan_m200_global_Fast_Quality.inst.cfg +++ b/resources/quality/malyan_m200/malyan_m200_global_Fast_Quality.inst.cfg @@ -18,6 +18,6 @@ top_bottom_thickness = 0.72 infill_sparse_density = 22 speed_print = 50 speed_layer_0 = =round(speed_print * 30 / 50) -speed_topbottom = 20 +speed_topbottom = =math.ceil(speed_print * 20 / 50) cool_min_layer_time = 5 cool_min_speed = 10 diff --git a/resources/quality/malyan_m200/malyan_m200_global_High_Quality.inst.cfg b/resources/quality/malyan_m200/malyan_m200_global_High_Quality.inst.cfg index c32814152f..f474170e69 100644 --- a/resources/quality/malyan_m200/malyan_m200_global_High_Quality.inst.cfg +++ b/resources/quality/malyan_m200/malyan_m200_global_High_Quality.inst.cfg @@ -18,6 +18,6 @@ top_bottom_thickness = 0.72 infill_sparse_density = 22 speed_print = 50 speed_layer_0 = =round(speed_print * 30 / 50) -speed_topbottom = 20 +speed_topbottom = =math.ceil(speed_print * 20 / 50) cool_min_layer_time = 5 cool_min_speed = 10 diff --git a/resources/quality/malyan_m200/malyan_m200_global_Normal_Quality.inst.cfg b/resources/quality/malyan_m200/malyan_m200_global_Normal_Quality.inst.cfg index eb29cfa8a5..b887c3a1f9 100644 --- a/resources/quality/malyan_m200/malyan_m200_global_Normal_Quality.inst.cfg +++ b/resources/quality/malyan_m200/malyan_m200_global_Normal_Quality.inst.cfg @@ -18,6 +18,6 @@ top_bottom_thickness = 0.72 infill_sparse_density = 22 speed_print = 50 speed_layer_0 = =round(speed_print * 30 / 50) -speed_topbottom = 20 +speed_topbottom = =math.ceil(speed_print * 20 / 50) cool_min_layer_time = 5 cool_min_speed = 10 diff --git a/resources/quality/malyan_m200/malyan_m200_global_SuperDraft_Quality.inst.cfg b/resources/quality/malyan_m200/malyan_m200_global_SuperDraft_Quality.inst.cfg index 47bd154d90..0182bb2ad9 100644 --- a/resources/quality/malyan_m200/malyan_m200_global_SuperDraft_Quality.inst.cfg +++ b/resources/quality/malyan_m200/malyan_m200_global_SuperDraft_Quality.inst.cfg @@ -18,6 +18,6 @@ top_bottom_thickness = 0.72 infill_sparse_density = 22 speed_print = 50 speed_layer_0 = =round(speed_print * 30 / 50) -speed_topbottom = 20 +speed_topbottom = =math.ceil(speed_print * 20 / 50) cool_min_layer_time = 5 cool_min_speed = 10 diff --git a/resources/quality/malyan_m200/malyan_m200_global_ThickerDraft_Quality.inst.cfg b/resources/quality/malyan_m200/malyan_m200_global_ThickerDraft_Quality.inst.cfg index c7b6a0b44d..22fa4e8ada 100644 --- a/resources/quality/malyan_m200/malyan_m200_global_ThickerDraft_Quality.inst.cfg +++ b/resources/quality/malyan_m200/malyan_m200_global_ThickerDraft_Quality.inst.cfg @@ -18,6 +18,6 @@ top_bottom_thickness = 0.72 infill_sparse_density = 22 speed_print = 50 speed_layer_0 = =round(speed_print * 30 / 50) -speed_topbottom = 20 +speed_topbottom = =math.ceil(speed_print * 20 / 50) cool_min_layer_time = 5 cool_min_speed = 10 diff --git a/resources/quality/malyan_m200/malyan_m200_global_Ultra_Quality.inst.cfg b/resources/quality/malyan_m200/malyan_m200_global_Ultra_Quality.inst.cfg index f3917e23f7..31edd74bfe 100644 --- a/resources/quality/malyan_m200/malyan_m200_global_Ultra_Quality.inst.cfg +++ b/resources/quality/malyan_m200/malyan_m200_global_Ultra_Quality.inst.cfg @@ -18,6 +18,6 @@ top_bottom_thickness = 0.72 infill_sparse_density = 22 speed_print = 50 speed_layer_0 = =round(speed_print * 30 / 50) -speed_topbottom = 20 +speed_topbottom = =math.ceil(speed_print * 20 / 50) cool_min_layer_time = 5 cool_min_speed = 10 diff --git a/resources/quality/malyan_m200/malyan_m200_global_VeryDraft_Quality.inst.cfg b/resources/quality/malyan_m200/malyan_m200_global_VeryDraft_Quality.inst.cfg index 281374a7f1..f6d3119ada 100644 --- a/resources/quality/malyan_m200/malyan_m200_global_VeryDraft_Quality.inst.cfg +++ b/resources/quality/malyan_m200/malyan_m200_global_VeryDraft_Quality.inst.cfg @@ -18,6 +18,6 @@ top_bottom_thickness = 0.72 infill_sparse_density = 22 speed_print = 50 speed_layer_0 = =round(speed_print * 30 / 50) -speed_topbottom = 20 +speed_topbottom = =math.ceil(speed_print * 20 / 50) cool_min_layer_time = 5 cool_min_speed = 10 diff --git a/resources/quality/monoprice_select_mini_v2/monoprice_select_mini_v2_global_Draft_Quality.inst.cfg b/resources/quality/monoprice_select_mini_v2/monoprice_select_mini_v2_global_Draft_Quality.inst.cfg index 002784bf21..ca03cca9a6 100644 --- a/resources/quality/monoprice_select_mini_v2/monoprice_select_mini_v2_global_Draft_Quality.inst.cfg +++ b/resources/quality/monoprice_select_mini_v2/monoprice_select_mini_v2_global_Draft_Quality.inst.cfg @@ -18,6 +18,6 @@ top_bottom_thickness = 0.72 infill_sparse_density = 22 speed_print = 50 speed_layer_0 = =round(speed_print * 30 / 50) -speed_topbottom = 20 +speed_topbottom = =math.ceil(speed_print * 20 / 50) cool_min_layer_time = 5 cool_min_speed = 10 diff --git a/resources/quality/monoprice_select_mini_v2/monoprice_select_mini_v2_global_Fast_Quality.inst.cfg b/resources/quality/monoprice_select_mini_v2/monoprice_select_mini_v2_global_Fast_Quality.inst.cfg index 31965ff4ef..32cf802c6f 100644 --- a/resources/quality/monoprice_select_mini_v2/monoprice_select_mini_v2_global_Fast_Quality.inst.cfg +++ b/resources/quality/monoprice_select_mini_v2/monoprice_select_mini_v2_global_Fast_Quality.inst.cfg @@ -18,6 +18,6 @@ top_bottom_thickness = 0.72 infill_sparse_density = 22 speed_print = 50 speed_layer_0 = =round(speed_print * 30 / 50) -speed_topbottom = 20 +speed_topbottom = =math.ceil(speed_print * 20 / 50) cool_min_layer_time = 5 cool_min_speed = 10 diff --git a/resources/quality/monoprice_select_mini_v2/monoprice_select_mini_v2_global_High_Quality.inst.cfg b/resources/quality/monoprice_select_mini_v2/monoprice_select_mini_v2_global_High_Quality.inst.cfg index a828a3466f..4913e1c415 100644 --- a/resources/quality/monoprice_select_mini_v2/monoprice_select_mini_v2_global_High_Quality.inst.cfg +++ b/resources/quality/monoprice_select_mini_v2/monoprice_select_mini_v2_global_High_Quality.inst.cfg @@ -18,6 +18,6 @@ top_bottom_thickness = 0.72 infill_sparse_density = 22 speed_print = 50 speed_layer_0 = =round(speed_print * 30 / 50) -speed_topbottom = 20 +speed_topbottom = =math.ceil(speed_print * 20 / 50) cool_min_layer_time = 5 cool_min_speed = 10 diff --git a/resources/quality/monoprice_select_mini_v2/monoprice_select_mini_v2_global_Normal_Quality.inst.cfg b/resources/quality/monoprice_select_mini_v2/monoprice_select_mini_v2_global_Normal_Quality.inst.cfg index 560a98eedd..1d14d2d9cf 100644 --- a/resources/quality/monoprice_select_mini_v2/monoprice_select_mini_v2_global_Normal_Quality.inst.cfg +++ b/resources/quality/monoprice_select_mini_v2/monoprice_select_mini_v2_global_Normal_Quality.inst.cfg @@ -18,6 +18,6 @@ top_bottom_thickness = 0.72 infill_sparse_density = 22 speed_print = 50 speed_layer_0 = =round(speed_print * 30 / 50) -speed_topbottom = 20 +speed_topbottom = =math.ceil(speed_print * 20 / 50) cool_min_layer_time = 5 cool_min_speed = 10 diff --git a/resources/quality/monoprice_select_mini_v2/monoprice_select_mini_v2_global_SuperDraft_Quality.inst.cfg b/resources/quality/monoprice_select_mini_v2/monoprice_select_mini_v2_global_SuperDraft_Quality.inst.cfg index 32aab452b9..9b6fc58109 100644 --- a/resources/quality/monoprice_select_mini_v2/monoprice_select_mini_v2_global_SuperDraft_Quality.inst.cfg +++ b/resources/quality/monoprice_select_mini_v2/monoprice_select_mini_v2_global_SuperDraft_Quality.inst.cfg @@ -18,6 +18,6 @@ top_bottom_thickness = 0.72 infill_sparse_density = 22 speed_print = 50 speed_layer_0 = =round(speed_print * 30 / 50) -speed_topbottom = 20 +speed_topbottom = =math.ceil(speed_print * 20 / 50) cool_min_layer_time = 5 cool_min_speed = 10 diff --git a/resources/quality/monoprice_select_mini_v2/monoprice_select_mini_v2_global_ThickerDraft_Quality.inst.cfg b/resources/quality/monoprice_select_mini_v2/monoprice_select_mini_v2_global_ThickerDraft_Quality.inst.cfg index d591899d58..c8494b4600 100644 --- a/resources/quality/monoprice_select_mini_v2/monoprice_select_mini_v2_global_ThickerDraft_Quality.inst.cfg +++ b/resources/quality/monoprice_select_mini_v2/monoprice_select_mini_v2_global_ThickerDraft_Quality.inst.cfg @@ -18,6 +18,6 @@ top_bottom_thickness = 0.72 infill_sparse_density = 22 speed_print = 50 speed_layer_0 = =round(speed_print * 30 / 50) -speed_topbottom = 20 +speed_topbottom = =math.ceil(speed_print * 20 / 50) cool_min_layer_time = 5 cool_min_speed = 10 diff --git a/resources/quality/monoprice_select_mini_v2/monoprice_select_mini_v2_global_Ultra_Quality.inst.cfg b/resources/quality/monoprice_select_mini_v2/monoprice_select_mini_v2_global_Ultra_Quality.inst.cfg index 2d1cb39569..25d453a7a1 100644 --- a/resources/quality/monoprice_select_mini_v2/monoprice_select_mini_v2_global_Ultra_Quality.inst.cfg +++ b/resources/quality/monoprice_select_mini_v2/monoprice_select_mini_v2_global_Ultra_Quality.inst.cfg @@ -18,6 +18,6 @@ top_bottom_thickness = 0.72 infill_sparse_density = 22 speed_print = 50 speed_layer_0 = =round(speed_print * 30 / 50) -speed_topbottom = 20 +speed_topbottom = =math.ceil(speed_print * 20 / 50) cool_min_layer_time = 5 cool_min_speed = 10 diff --git a/resources/quality/monoprice_select_mini_v2/monoprice_select_mini_v2_global_VeryDraft_Quality.inst.cfg b/resources/quality/monoprice_select_mini_v2/monoprice_select_mini_v2_global_VeryDraft_Quality.inst.cfg index 41e6553b52..8e583a463d 100644 --- a/resources/quality/monoprice_select_mini_v2/monoprice_select_mini_v2_global_VeryDraft_Quality.inst.cfg +++ b/resources/quality/monoprice_select_mini_v2/monoprice_select_mini_v2_global_VeryDraft_Quality.inst.cfg @@ -18,6 +18,6 @@ top_bottom_thickness = 0.72 infill_sparse_density = 22 speed_print = 50 speed_layer_0 = =round(speed_print * 30 / 50) -speed_topbottom = 20 +speed_topbottom = =math.ceil(speed_print * 20 / 50) cool_min_layer_time = 5 cool_min_speed = 10 diff --git a/resources/quality/tevo_blackwidow/tevo_blackwidow_draft.inst.cfg b/resources/quality/tevo_blackwidow/tevo_blackwidow_draft.inst.cfg index 29de7591bf..b85fc8c95c 100644 --- a/resources/quality/tevo_blackwidow/tevo_blackwidow_draft.inst.cfg +++ b/resources/quality/tevo_blackwidow/tevo_blackwidow_draft.inst.cfg @@ -14,13 +14,13 @@ brim_width = 4.0 infill_pattern = zigzag layer_height = 0.3 material_diameter = 1.75 -speed_infill = 50 +speed_infill = =speed_print speed_print = 50 speed_support = 30 -speed_topbottom = 20 +speed_topbottom = =math.ceil(speed_print * 20 / 50) speed_travel = 100 -speed_wall = 50 -speed_wall_x = 50 +speed_wall = =speed_print +speed_wall_x = =speed_print support_angle = 60 support_enable = True support_interface_enable = True diff --git a/resources/quality/tevo_blackwidow/tevo_blackwidow_high.inst.cfg b/resources/quality/tevo_blackwidow/tevo_blackwidow_high.inst.cfg index e495d2d74b..9b52da8c0b 100644 --- a/resources/quality/tevo_blackwidow/tevo_blackwidow_high.inst.cfg +++ b/resources/quality/tevo_blackwidow/tevo_blackwidow_high.inst.cfg @@ -14,13 +14,13 @@ brim_width = 4.0 infill_pattern = zigzag layer_height = 0.1 material_diameter = 1.75 -speed_infill = 50 +speed_infill = =speed_print speed_print = 50 speed_support = 30 -speed_topbottom = 15 +speed_topbottom = =math.ceil(speed_print * 15 / 50) speed_travel = 100 -speed_wall = 50 -speed_wall_x = 50 +speed_wall = =speed_print +speed_wall_x = =speed_print support_angle = 60 support_enable = True support_interface_enable = True diff --git a/resources/quality/tevo_blackwidow/tevo_blackwidow_normal.inst.cfg b/resources/quality/tevo_blackwidow/tevo_blackwidow_normal.inst.cfg index 4df87784ef..a171463fde 100644 --- a/resources/quality/tevo_blackwidow/tevo_blackwidow_normal.inst.cfg +++ b/resources/quality/tevo_blackwidow/tevo_blackwidow_normal.inst.cfg @@ -14,13 +14,13 @@ brim_width = 4.0 infill_pattern = zigzag layer_height = 0.2 material_diameter = 1.75 -speed_infill = 60 +speed_infill = =math.ceil(speed_print * 60 / 50) speed_print = 50 speed_support = 30 -speed_topbottom = 20 +speed_topbottom = =math.ceil(speed_print * 20 / 50) speed_travel = 100 -speed_wall = 50 -speed_wall_x = 50 +speed_wall = =speed_print +speed_wall_x = =speed_print support_angle = 60 support_enable = True support_interface_enable = True diff --git a/resources/quality/ultimaker2/um2_fast.inst.cfg b/resources/quality/ultimaker2/um2_fast.inst.cfg index 99ddb540cc..0534f821e1 100644 --- a/resources/quality/ultimaker2/um2_fast.inst.cfg +++ b/resources/quality/ultimaker2/um2_fast.inst.cfg @@ -14,8 +14,8 @@ global_quality = True infill_sparse_density = 10 layer_height = 0.15 cool_min_layer_time = 3 -speed_wall_0 = 40 -speed_wall_x = 80 -speed_infill = 100 +speed_wall_0 = =math.ceil(speed_print * 40 / 60) +speed_wall_x = =math.ceil(speed_print * 80 / 60) +speed_infill = =math.ceil(speed_print * 100 / 60) wall_thickness = 1 -speed_topbottom = 30 +speed_topbottom = =math.ceil(speed_print * 30 / 60) diff --git a/resources/quality/ultimaker2/um2_high.inst.cfg b/resources/quality/ultimaker2/um2_high.inst.cfg index f54700bf70..74e1f2f528 100644 --- a/resources/quality/ultimaker2/um2_high.inst.cfg +++ b/resources/quality/ultimaker2/um2_high.inst.cfg @@ -12,5 +12,5 @@ global_quality = True [values] layer_height = 0.06 -speed_topbottom = 15 -speed_infill = 80 +speed_topbottom = =math.ceil(speed_print * 15 / 60) +speed_infill = =math.ceil(speed_print * 80 / 60) diff --git a/resources/quality/ultimaker2_plus/pla_0.4_fast.inst.cfg b/resources/quality/ultimaker2_plus/pla_0.4_fast.inst.cfg index b50de37b47..02396f6820 100644 --- a/resources/quality/ultimaker2_plus/pla_0.4_fast.inst.cfg +++ b/resources/quality/ultimaker2_plus/pla_0.4_fast.inst.cfg @@ -18,8 +18,8 @@ infill_sparse_density = 18 layer_height = 0.15 speed_layer_0 = =round(speed_print * 30 / 60) speed_print = 60 -speed_topbottom = 30 +speed_topbottom = =math.ceil(speed_print * 30 / 60) speed_travel = 150 -speed_wall = 50 +speed_wall = =math.ceil(speed_print * 50 / 60) top_bottom_thickness = 0.75 wall_thickness = 0.7 diff --git a/resources/quality/ultimaker2_plus/pla_0.4_high.inst.cfg b/resources/quality/ultimaker2_plus/pla_0.4_high.inst.cfg index 9481e3427a..62816d0ab0 100644 --- a/resources/quality/ultimaker2_plus/pla_0.4_high.inst.cfg +++ b/resources/quality/ultimaker2_plus/pla_0.4_high.inst.cfg @@ -18,6 +18,6 @@ infill_sparse_density = 22 layer_height = 0.06 speed_layer_0 = =round(speed_print * 30 / 50) speed_print = 50 -speed_topbottom = 20 +speed_topbottom = =math.ceil(speed_print * 20 / 50) top_bottom_thickness = 0.72 wall_thickness = 1.05 diff --git a/resources/quality/ultimaker2_plus/pla_0.4_normal.inst.cfg b/resources/quality/ultimaker2_plus/pla_0.4_normal.inst.cfg index 875db4959f..51aa06dc14 100644 --- a/resources/quality/ultimaker2_plus/pla_0.4_normal.inst.cfg +++ b/resources/quality/ultimaker2_plus/pla_0.4_normal.inst.cfg @@ -18,6 +18,6 @@ infill_sparse_density = 20 layer_height = 0.1 speed_layer_0 = =round(speed_print * 30 / 50) speed_print = 50 -speed_topbottom = 20 +speed_topbottom = =math.ceil(speed_print * 20 / 50) top_bottom_thickness = 0.8 wall_thickness = 1.05 diff --git a/resources/quality/ultimaker2_plus/pla_0.6_normal.inst.cfg b/resources/quality/ultimaker2_plus/pla_0.6_normal.inst.cfg index b07b4931ca..f6384421b2 100644 --- a/resources/quality/ultimaker2_plus/pla_0.6_normal.inst.cfg +++ b/resources/quality/ultimaker2_plus/pla_0.6_normal.inst.cfg @@ -18,8 +18,8 @@ infill_sparse_density = 20 layer_height = 0.15 speed_layer_0 = =round(speed_print * 30 / 55) speed_print = 55 -speed_topbottom = 20 -speed_wall = 40 -speed_wall_0 = 25 +speed_topbottom = =math.ceil(speed_print * 20 / 55) +speed_wall = =math.ceil(speed_print * 40 / 55) +speed_wall_0 = =math.ceil(speed_print * 25 / 55) top_bottom_thickness = 1.2 wall_thickness = 1.59 diff --git a/resources/quality/ultimaker2_plus/pla_0.8_normal.inst.cfg b/resources/quality/ultimaker2_plus/pla_0.8_normal.inst.cfg index 0e76e53316..314ef8ec68 100644 --- a/resources/quality/ultimaker2_plus/pla_0.8_normal.inst.cfg +++ b/resources/quality/ultimaker2_plus/pla_0.8_normal.inst.cfg @@ -18,6 +18,6 @@ infill_sparse_density = 20 layer_height = 0.2 speed_layer_0 = =round(speed_print * 30 / 40) speed_print = 40 -speed_wall_0 = 25 +speed_wall_0 = =math.ceil(speed_print * 25 / 40) top_bottom_thickness = 1.2 wall_thickness = 2.1 diff --git a/resources/quality/ultimaker2_plus/um2p_abs_0.4_fast.inst.cfg b/resources/quality/ultimaker2_plus/um2p_abs_0.4_fast.inst.cfg index ded9319b3e..4d7f6eb535 100644 --- a/resources/quality/ultimaker2_plus/um2p_abs_0.4_fast.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_abs_0.4_fast.inst.cfg @@ -20,8 +20,11 @@ infill_sparse_density = 18 layer_height = 0.15 speed_layer_0 = =round(speed_print * 30 / 55) speed_print = 55 -speed_topbottom = 30 +speed_topbottom = =math.ceil(speed_print * 30 / 55) speed_travel = 150 -speed_wall = 40 +speed_wall = =math.ceil(speed_print * 40 / 55) top_bottom_thickness = 0.75 wall_thickness = 0.7 +speed_wall_0 = =math.ceil(speed_print * 40 / 55) +speed_wall_x = =math.ceil(speed_print * 80 / 55) +speed_infill = =math.ceil(speed_print * 100 / 55) diff --git a/resources/quality/ultimaker2_plus/um2p_abs_0.4_high.inst.cfg b/resources/quality/ultimaker2_plus/um2p_abs_0.4_high.inst.cfg index c94333555c..155d890d78 100644 --- a/resources/quality/ultimaker2_plus/um2p_abs_0.4_high.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_abs_0.4_high.inst.cfg @@ -20,6 +20,8 @@ infill_sparse_density = 22 layer_height = 0.06 speed_layer_0 = =round(speed_print * 30 / 45) speed_print = 45 -speed_wall = 30 +speed_wall = =math.ceil(speed_print * 30 / 45) top_bottom_thickness = 0.72 wall_thickness = 1.05 +speed_topbottom = =math.ceil(speed_print * 15 / 45) +speed_infill = =math.ceil(speed_print * 80 / 45) diff --git a/resources/quality/ultimaker2_plus/um2p_abs_0.4_normal.inst.cfg b/resources/quality/ultimaker2_plus/um2p_abs_0.4_normal.inst.cfg index 6adb9c9caf..da79e75346 100644 --- a/resources/quality/ultimaker2_plus/um2p_abs_0.4_normal.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_abs_0.4_normal.inst.cfg @@ -20,6 +20,6 @@ infill_sparse_density = 20 layer_height = 0.1 speed_layer_0 = =round(speed_print * 30 / 45) speed_print = 45 -speed_wall = 30 +speed_wall = =math.ceil(speed_print * 30 / 45) top_bottom_thickness = 0.8 wall_thickness = 1.05 diff --git a/resources/quality/ultimaker2_plus/um2p_abs_0.6_normal.inst.cfg b/resources/quality/ultimaker2_plus/um2p_abs_0.6_normal.inst.cfg index 332608a2f9..0cb3118bfc 100644 --- a/resources/quality/ultimaker2_plus/um2p_abs_0.6_normal.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_abs_0.6_normal.inst.cfg @@ -18,7 +18,7 @@ cool_min_layer_time_fan_speed_max = 20 cool_min_speed = 20 infill_sparse_density = 20 layer_height = 0.15 -speed_infill = 55 +speed_infill = =math.ceil(speed_print * 55 / 40) speed_layer_0 = =round(speed_print * 30 / 40) speed_print = 40 top_bottom_thickness = 1.2 diff --git a/resources/quality/ultimaker2_plus/um2p_cpe_0.4_fast.inst.cfg b/resources/quality/ultimaker2_plus/um2p_cpe_0.4_fast.inst.cfg index b9ec279e07..2c3eebc1de 100644 --- a/resources/quality/ultimaker2_plus/um2p_cpe_0.4_fast.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_cpe_0.4_fast.inst.cfg @@ -21,6 +21,10 @@ layer_height = 0.15 speed_layer_0 = =round(speed_print * 30 / 45) speed_print = 45 speed_travel = 150 -speed_wall = 40 +speed_wall = =math.ceil(speed_print * 40 / 45) top_bottom_thickness = 0.75 wall_thickness = 0.7 +speed_wall_0 = =math.ceil(speed_print * 40 / 45) +speed_topbottom = =math.ceil(speed_print * 30 / 45) +speed_wall_x = =math.ceil(speed_print * 80 / 45) +speed_infill = =math.ceil(speed_print * 100 / 45) diff --git a/resources/quality/ultimaker2_plus/um2p_cpe_0.4_high.inst.cfg b/resources/quality/ultimaker2_plus/um2p_cpe_0.4_high.inst.cfg index e929d9f545..8facfa298c 100644 --- a/resources/quality/ultimaker2_plus/um2p_cpe_0.4_high.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_cpe_0.4_high.inst.cfg @@ -20,6 +20,8 @@ infill_sparse_density = 22 layer_height = 0.06 speed_layer_0 = =round(speed_print * 30 / 45) speed_print = 45 -speed_wall = 30 +speed_wall = =math.ceil(speed_print * 30 / 45) top_bottom_thickness = 0.72 wall_thickness = 1.05 +speed_topbottom = =math.ceil(speed_print * 15 / 45) +speed_infill = =math.ceil(speed_print * 80 / 45) diff --git a/resources/quality/ultimaker2_plus/um2p_cpe_0.4_normal.inst.cfg b/resources/quality/ultimaker2_plus/um2p_cpe_0.4_normal.inst.cfg index 7637f6440a..e7d78d68c3 100644 --- a/resources/quality/ultimaker2_plus/um2p_cpe_0.4_normal.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_cpe_0.4_normal.inst.cfg @@ -20,6 +20,6 @@ infill_sparse_density = 20 layer_height = 0.1 speed_layer_0 = =round(speed_print * 30 / 45) speed_print = 45 -speed_wall = 30 +speed_wall = =math.ceil(speed_print * 30 / 45) top_bottom_thickness = 0.8 wall_thickness = 1.05 diff --git a/resources/quality/ultimaker2_plus/um2p_cpep_0.4_draft.inst.cfg b/resources/quality/ultimaker2_plus/um2p_cpep_0.4_draft.inst.cfg index fe975128a0..0e366a78fb 100644 --- a/resources/quality/ultimaker2_plus/um2p_cpep_0.4_draft.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_cpep_0.4_draft.inst.cfg @@ -29,11 +29,11 @@ raft_interface_line_spacing = 1 raft_interface_line_width = 0.8 raft_margin = 15 raft_surface_line_width = 0.38 -speed_layer_0 = 15 +speed_layer_0 = =math.ceil(speed_print * 15 / 25) speed_print = 25 -speed_topbottom = 20 -speed_wall_0 = 20 -speed_wall_x = 25 +speed_topbottom = =math.ceil(speed_print * 20 / 25) +speed_wall_0 = =math.ceil(speed_print * 20 / 25) +speed_wall_x = =speed_print support_angle = 45 support_enable = True support_infill_rate = 20 diff --git a/resources/quality/ultimaker2_plus/um2p_cpep_0.4_normal.inst.cfg b/resources/quality/ultimaker2_plus/um2p_cpep_0.4_normal.inst.cfg index e7bb7b3449..4e97629fb2 100644 --- a/resources/quality/ultimaker2_plus/um2p_cpep_0.4_normal.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_cpep_0.4_normal.inst.cfg @@ -29,11 +29,11 @@ raft_interface_line_spacing = 1 raft_interface_line_width = 0.8 raft_margin = 15 raft_surface_line_width = 0.38 -speed_layer_0 = 15 +speed_layer_0 = =math.ceil(speed_print * 15 / 35) speed_print = 35 -speed_topbottom = 20 -speed_wall_0 = 20 -speed_wall_x = 30 +speed_topbottom = =math.ceil(speed_print * 20 / 35) +speed_wall_0 = =math.ceil(speed_print * 20 / 35) +speed_wall_x = =math.ceil(speed_print * 30 / 35) support_angle = 45 support_enable = True support_infill_rate = 20 diff --git a/resources/quality/ultimaker2_plus/um2p_cpep_0.6_draft.inst.cfg b/resources/quality/ultimaker2_plus/um2p_cpep_0.6_draft.inst.cfg index 9751bef5fe..7002367337 100644 --- a/resources/quality/ultimaker2_plus/um2p_cpep_0.6_draft.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_cpep_0.6_draft.inst.cfg @@ -32,10 +32,10 @@ raft_surface_line_width = 0.57 raft_surface_thickness = 0.2 speed_layer_0 = =round(speed_print * 30 / 50) speed_print = 25 -speed_topbottom = 20 +speed_topbottom = =math.ceil(speed_print * 20 / 25) speed_travel = 150 -speed_wall_0 = 20 -speed_wall_x = 25 +speed_wall_0 = =math.ceil(speed_print * 20 / 25) +speed_wall_x = =speed_print support_angle = 45 support_enable = True support_infill_rate = 20 diff --git a/resources/quality/ultimaker2_plus/um2p_cpep_0.6_normal.inst.cfg b/resources/quality/ultimaker2_plus/um2p_cpep_0.6_normal.inst.cfg index 203d122de5..b79829e3e3 100644 --- a/resources/quality/ultimaker2_plus/um2p_cpep_0.6_normal.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_cpep_0.6_normal.inst.cfg @@ -30,12 +30,12 @@ raft_interface_line_width = 1.2 raft_margin = 15 raft_surface_line_width = 0.57 raft_surface_thickness = 0.2 -speed_layer_0 = 30 +speed_layer_0 = =math.ceil(speed_print * 30 / 35) speed_print = 35 -speed_topbottom = 20 +speed_topbottom = =math.ceil(speed_print * 20 / 35) speed_travel = 150 -speed_wall_0 = 30 -speed_wall_x = 35 +speed_wall_0 = =math.ceil(speed_print * 30 / 35) +speed_wall_x = =speed_print support_angle = 45 support_enable = True support_infill_rate = 20 diff --git a/resources/quality/ultimaker2_plus/um2p_cpep_0.8_draft.inst.cfg b/resources/quality/ultimaker2_plus/um2p_cpep_0.8_draft.inst.cfg index b80949a627..32b79e62cc 100644 --- a/resources/quality/ultimaker2_plus/um2p_cpep_0.8_draft.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_cpep_0.8_draft.inst.cfg @@ -30,9 +30,9 @@ raft_surface_line_width = 0.7 raft_surface_thickness = 0.2 speed_layer_0 = =round(speed_print * 30 / 25) speed_print = 25 -speed_topbottom = 20 -speed_wall_0 = 20 -speed_wall_x = 25 +speed_topbottom = =math.ceil(speed_print * 20 / 25) +speed_wall_0 = =math.ceil(speed_print * 20 / 25) +speed_wall_x = =speed_print support_angle = 45 support_enable = True support_infill_rate = 20 diff --git a/resources/quality/ultimaker2_plus/um2p_cpep_0.8_normal.inst.cfg b/resources/quality/ultimaker2_plus/um2p_cpep_0.8_normal.inst.cfg index 4f96db3c3b..5ec9db4a02 100644 --- a/resources/quality/ultimaker2_plus/um2p_cpep_0.8_normal.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_cpep_0.8_normal.inst.cfg @@ -30,9 +30,9 @@ raft_surface_line_width = 0.7 raft_surface_thickness = 0.2 speed_layer_0 = =round(speed_print * 30 / 30) speed_print = 30 -speed_topbottom = 20 -speed_wall_0 = 20 -speed_wall_x = 30 +speed_topbottom = =math.ceil(speed_print * 20 / 30) +speed_wall_0 = =math.ceil(speed_print * 20 / 30) +speed_wall_x = =speed_print support_angle = 45 support_enable = True support_infill_rate = 20 diff --git a/resources/quality/ultimaker2_plus/um2p_nylon_0.25_high.inst.cfg b/resources/quality/ultimaker2_plus/um2p_nylon_0.25_high.inst.cfg index d31c23a5c0..b4622b1cdc 100644 --- a/resources/quality/ultimaker2_plus/um2p_nylon_0.25_high.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_nylon_0.25_high.inst.cfg @@ -28,13 +28,13 @@ raft_interface_line_width = 0.5 raft_margin = 15 raft_surface_line_width = 0.2 retraction_hop_enabled = 0.2 -speed_layer_0 = 30 +speed_layer_0 = =math.ceil(speed_print * 30 / 40) speed_print = 40 speed_support = 40 -speed_topbottom = 35 +speed_topbottom = =math.ceil(speed_print * 35 / 40) speed_travel = 150 -speed_wall_0 = 20 -speed_wall_x = 40 +speed_wall_0 = =math.ceil(speed_print * 20 / 40) +speed_wall_x = =speed_print support_enable = True support_infill_rate = 20 support_pattern = lines @@ -42,3 +42,4 @@ support_xy_distance = 0.6 support_z_distance = =layer_height * 2 top_bottom_thickness = 1.2 wall_thickness = 1 +speed_infill = =math.ceil(speed_print * 80 / 40) diff --git a/resources/quality/ultimaker2_plus/um2p_nylon_0.25_normal.inst.cfg b/resources/quality/ultimaker2_plus/um2p_nylon_0.25_normal.inst.cfg index 0f9fd57197..6f1eae09c6 100644 --- a/resources/quality/ultimaker2_plus/um2p_nylon_0.25_normal.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_nylon_0.25_normal.inst.cfg @@ -28,13 +28,13 @@ raft_interface_line_width = 0.5 raft_margin = 15 raft_surface_line_width = 0.2 retraction_hop_enabled = 0.2 -speed_layer_0 = 30 +speed_layer_0 = =math.ceil(speed_print * 30 / 40) speed_print = 40 speed_support = 40 -speed_topbottom = 35 +speed_topbottom = =math.ceil(speed_print * 35 / 40) speed_travel = 150 -speed_wall_0 = 20 -speed_wall_x = 40 +speed_wall_0 = =math.ceil(speed_print * 20 / 40) +speed_wall_x = =speed_print support_enable = True support_infill_rate = 20 support_pattern = lines diff --git a/resources/quality/ultimaker2_plus/um2p_nylon_0.4_fast.inst.cfg b/resources/quality/ultimaker2_plus/um2p_nylon_0.4_fast.inst.cfg index 0d8371760f..36fe6170af 100644 --- a/resources/quality/ultimaker2_plus/um2p_nylon_0.4_fast.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_nylon_0.4_fast.inst.cfg @@ -28,11 +28,11 @@ raft_interface_line_width = 0.8 raft_margin = 15 raft_surface_line_width = 0.5 raft_surface_thickness = 0.15 -speed_layer_0 = 30 +speed_layer_0 = =math.ceil(speed_print * 30 / 45) speed_print = 45 -speed_topbottom = 20 +speed_topbottom = =math.ceil(speed_print * 20 / 45) speed_travel = 150 -speed_wall = 40 +speed_wall = =math.ceil(speed_print * 40 / 45) support_angle = 45 support_enable = True support_infill_rate = 25 @@ -41,3 +41,6 @@ support_xy_distance = 0.6 support_z_distance = =layer_height * 2 top_bottom_thickness = 0.75 wall_thickness = 1.06 +speed_wall_0 = =math.ceil(speed_print * 40 / 45) +speed_wall_x = =math.ceil(speed_print * 80 / 45) +speed_infill = =math.ceil(speed_print * 100 / 45) diff --git a/resources/quality/ultimaker2_plus/um2p_nylon_0.4_normal.inst.cfg b/resources/quality/ultimaker2_plus/um2p_nylon_0.4_normal.inst.cfg index 3ac77b3642..7c9c13ad9d 100644 --- a/resources/quality/ultimaker2_plus/um2p_nylon_0.4_normal.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_nylon_0.4_normal.inst.cfg @@ -28,10 +28,10 @@ raft_interface_line_width = 0.8 raft_margin = 15 raft_surface_line_width = 0.5 raft_surface_thickness = 0.15 -speed_layer_0 = 30 +speed_layer_0 = =math.ceil(speed_print * 30 / 45) speed_print = 45 speed_travel = 150 -speed_wall = 40 +speed_wall = =math.ceil(speed_print * 40 / 45) support_angle = 45 support_enable = True support_infill_rate = 25 diff --git a/resources/quality/ultimaker2_plus/um2p_nylon_0.6_fast.inst.cfg b/resources/quality/ultimaker2_plus/um2p_nylon_0.6_fast.inst.cfg index d6332e5688..527a78a6c9 100644 --- a/resources/quality/ultimaker2_plus/um2p_nylon_0.6_fast.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_nylon_0.6_fast.inst.cfg @@ -29,13 +29,13 @@ raft_margin = 15 raft_surface_line_width = 0.6 raft_surface_thickness = 0.15 retraction_hop_enabled = 0.2 -speed_layer_0 = 30 +speed_layer_0 = =math.ceil(speed_print * 30 / 55) speed_print = 55 speed_support = 40 -speed_topbottom = 35 +speed_topbottom = =math.ceil(speed_print * 35 / 55) speed_travel = 150 -speed_wall_0 = 15 -speed_wall_x = 40 +speed_wall_0 = =math.ceil(speed_print * 15 / 55) +speed_wall_x = =math.ceil(speed_print * 40 / 55) support_angle = 45 support_bottom_distance = 0.55 support_enable = True @@ -46,3 +46,4 @@ support_xy_distance = 0.7 support_z_distance = =layer_height * 2 top_bottom_thickness = 1.2 wall_thickness = 1.2 +speed_infill = =math.ceil(speed_print * 100 / 55) diff --git a/resources/quality/ultimaker2_plus/um2p_nylon_0.6_normal.inst.cfg b/resources/quality/ultimaker2_plus/um2p_nylon_0.6_normal.inst.cfg index 22250e1147..adaf07c272 100644 --- a/resources/quality/ultimaker2_plus/um2p_nylon_0.6_normal.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_nylon_0.6_normal.inst.cfg @@ -29,13 +29,13 @@ raft_margin = 15 raft_surface_line_width = 0.6 raft_surface_thickness = 0.15 retraction_hop_enabled = 0.2 -speed_layer_0 = 30 +speed_layer_0 = =math.ceil(speed_print * 30 / 55) speed_print = 55 speed_support = 40 -speed_topbottom = 35 +speed_topbottom = =math.ceil(speed_print * 35 / 55) speed_travel = 150 -speed_wall_0 = 15 -speed_wall_x = 40 +speed_wall_0 = =math.ceil(speed_print * 15 / 55) +speed_wall_x = =math.ceil(speed_print * 40 / 55) support_angle = 45 support_enable = True support_infill_rate = 25 diff --git a/resources/quality/ultimaker2_plus/um2p_nylon_0.8_draft.inst.cfg b/resources/quality/ultimaker2_plus/um2p_nylon_0.8_draft.inst.cfg index 0ba3a33812..cd292e6a2b 100644 --- a/resources/quality/ultimaker2_plus/um2p_nylon_0.8_draft.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_nylon_0.8_draft.inst.cfg @@ -28,13 +28,13 @@ raft_margin = 15 raft_surface_line_width = 0.7 raft_surface_thickness = 0.2 retraction_hop_enabled = 0.2 -speed_layer_0 = 30 +speed_layer_0 = =math.ceil(speed_print * 30 / 55) speed_print = 55 speed_support = 40 -speed_topbottom = 35 +speed_topbottom = =math.ceil(speed_print * 35 / 55) speed_travel = 150 -speed_wall_0 = 15 -speed_wall_x = 40 +speed_wall_0 = =math.ceil(speed_print * 15 / 55) +speed_wall_x = =math.ceil(speed_print * 40 / 55) support_angle = 45 support_bottom_distance = 0.65 support_enable = True diff --git a/resources/quality/ultimaker2_plus/um2p_nylon_0.8_normal.inst.cfg b/resources/quality/ultimaker2_plus/um2p_nylon_0.8_normal.inst.cfg index 5e0d64ec12..a93243dca5 100644 --- a/resources/quality/ultimaker2_plus/um2p_nylon_0.8_normal.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_nylon_0.8_normal.inst.cfg @@ -31,10 +31,10 @@ retraction_hop_enabled = 0.2 speed_layer_0 = =round(speed_print * 30 / 55) speed_print = 55 speed_support = 40 -speed_topbottom = 35 +speed_topbottom = =math.ceil(speed_print * 35 / 55) speed_travel = 150 -speed_wall_0 = 15 -speed_wall_x = 40 +speed_wall_0 = =math.ceil(speed_print * 15 / 55) +speed_wall_x = =math.ceil(speed_print * 40 / 55) support_angle = 45 support_bottom_distance = 0.65 support_enable = True diff --git a/resources/quality/ultimaker2_plus/um2p_pc_0.25_high.inst.cfg b/resources/quality/ultimaker2_plus/um2p_pc_0.25_high.inst.cfg index d7cafd20a5..4a18f2ac65 100644 --- a/resources/quality/ultimaker2_plus/um2p_pc_0.25_high.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_pc_0.25_high.inst.cfg @@ -36,3 +36,5 @@ support_infill_rate = 20 support_pattern = lines support_z_distance = 0.19 wall_thickness = 0.88 +speed_topbottom = =math.ceil(speed_print * 15 / 30) +speed_infill = =math.ceil(speed_print * 80 / 30) diff --git a/resources/quality/ultimaker2_plus/um2p_pc_0.4_fast.inst.cfg b/resources/quality/ultimaker2_plus/um2p_pc_0.4_fast.inst.cfg index aaf4812786..5cf189f8da 100644 --- a/resources/quality/ultimaker2_plus/um2p_pc_0.4_fast.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_pc_0.4_fast.inst.cfg @@ -29,11 +29,13 @@ raft_interface_line_width = 0.8 raft_margin = 15 speed_layer_0 = =round(speed_print * 30 / 45) speed_print = 45 -speed_wall_0 = 20 -speed_wall_x = 30 +speed_wall_0 = =math.ceil(speed_print * 20 / 45) +speed_wall_x = =math.ceil(speed_print * 30 / 45) support_angle = 45 support_enable = True support_infill_rate = 20 support_pattern = lines support_z_distance = 0.19 wall_thickness = 1.2 +speed_topbottom = =math.ceil(speed_print * 30 / 45) +speed_infill = =math.ceil(speed_print * 100 / 45) diff --git a/resources/quality/ultimaker2_plus/um2p_pc_0.4_normal.inst.cfg b/resources/quality/ultimaker2_plus/um2p_pc_0.4_normal.inst.cfg index a54ce9d946..32b0c37636 100644 --- a/resources/quality/ultimaker2_plus/um2p_pc_0.4_normal.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_pc_0.4_normal.inst.cfg @@ -29,8 +29,8 @@ raft_interface_line_width = 0.8 raft_margin = 15 speed_layer_0 = =round(speed_print * 30 / 45) speed_print = 45 -speed_wall_0 = 20 -speed_wall_x = 30 +speed_wall_0 = =math.ceil(speed_print * 20 / 45) +speed_wall_x = =math.ceil(speed_print * 30 / 45) support_angle = 45 support_enable = True support_infill_rate = 20 diff --git a/resources/quality/ultimaker2_plus/um2p_pc_0.6_fast.inst.cfg b/resources/quality/ultimaker2_plus/um2p_pc_0.6_fast.inst.cfg index 2d50f96661..09b60aadff 100644 --- a/resources/quality/ultimaker2_plus/um2p_pc_0.6_fast.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_pc_0.6_fast.inst.cfg @@ -29,12 +29,12 @@ raft_interface_line_width = 1.2 raft_margin = 15 raft_surface_line_width = 0.6 raft_surface_thickness = 0.15 -speed_layer_0 = 30 +speed_layer_0 = =math.ceil(speed_print * 30 / 45) speed_print = 45 -speed_topbottom = 20 +speed_topbottom = =math.ceil(speed_print * 20 / 45) speed_travel = 150 -speed_wall_0 = 30 -speed_wall_x = 40 +speed_wall_0 = =math.ceil(speed_print * 30 / 45) +speed_wall_x = =math.ceil(speed_print * 40 / 45) support_angle = 45 support_enable = True support_infill_rate = 20 @@ -43,3 +43,4 @@ support_pattern = lines support_z_distance = 0.21 top_bottom_thickness = 0.75 wall_thickness = 1.06 +speed_infill = =math.ceil(speed_print * 100 / 45) diff --git a/resources/quality/ultimaker2_plus/um2p_pc_0.6_normal.inst.cfg b/resources/quality/ultimaker2_plus/um2p_pc_0.6_normal.inst.cfg index a19483c39a..b4b556a720 100644 --- a/resources/quality/ultimaker2_plus/um2p_pc_0.6_normal.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_pc_0.6_normal.inst.cfg @@ -29,12 +29,12 @@ raft_interface_line_width = 1.2 raft_margin = 15 raft_surface_line_width = 0.6 raft_surface_thickness = 0.15 -speed_layer_0 = 30 +speed_layer_0 = =math.ceil(speed_print * 30 / 45) speed_print = 45 -speed_topbottom = 20 +speed_topbottom = =math.ceil(speed_print * 20 / 45) speed_travel = 150 -speed_wall_0 = 30 -speed_wall_x = 40 +speed_wall_0 = =math.ceil(speed_print * 30 / 45) +speed_wall_x = =math.ceil(speed_print * 40 / 45) support_angle = 45 support_enable = True support_infill_rate = 20 diff --git a/resources/quality/ultimaker2_plus/um2p_pp_0.4_fast.inst.cfg b/resources/quality/ultimaker2_plus/um2p_pp_0.4_fast.inst.cfg index 16c4a47340..4a12fe0883 100644 --- a/resources/quality/ultimaker2_plus/um2p_pp_0.4_fast.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_pp_0.4_fast.inst.cfg @@ -50,7 +50,7 @@ retraction_hop_only_when_collides = True retraction_min_travel = 0.5 retraction_prime_speed = 15 skin_overlap = 10 -speed_layer_0 = 25 +speed_layer_0 = =speed_print speed_prime_tower = =speed_topbottom speed_print = 25 speed_support_interface = =speed_topbottom @@ -69,3 +69,5 @@ travel_avoid_distance = 3 wall_0_inset = 0 wall_line_width_x = =round(line_width * 0.38 / 0.38, 2) wall_thickness = 0.76 +speed_wall_x = =math.ceil(speed_print * 80 / 25) +speed_infill = =math.ceil(speed_print * 100 / 25) diff --git a/resources/quality/ultimaker2_plus/um2p_pp_0.4_normal.inst.cfg b/resources/quality/ultimaker2_plus/um2p_pp_0.4_normal.inst.cfg index d318275700..8ceed3cd94 100644 --- a/resources/quality/ultimaker2_plus/um2p_pp_0.4_normal.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_pp_0.4_normal.inst.cfg @@ -49,7 +49,7 @@ retraction_hop_only_when_collides = True retraction_min_travel = 0.5 retraction_prime_speed = 15 skin_overlap = 10 -speed_layer_0 = 25 +speed_layer_0 = =speed_print speed_prime_tower = =speed_topbottom speed_print = 25 speed_support_interface = =speed_topbottom diff --git a/resources/quality/ultimaker2_plus/um2p_pp_0.6_draft.inst.cfg b/resources/quality/ultimaker2_plus/um2p_pp_0.6_draft.inst.cfg index dd150d903a..d22984afa1 100644 --- a/resources/quality/ultimaker2_plus/um2p_pp_0.6_draft.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_pp_0.6_draft.inst.cfg @@ -50,7 +50,7 @@ retraction_hop_only_when_collides = True retraction_prime_speed = 15 skin_overlap = 10 skirt_brim_line_width = 0.6 -speed_layer_0 = 25 +speed_layer_0 = =speed_print speed_prime_tower = =speed_topbottom speed_print = 25 speed_support_interface = =speed_topbottom diff --git a/resources/quality/ultimaker2_plus/um2p_pp_0.6_fast.inst.cfg b/resources/quality/ultimaker2_plus/um2p_pp_0.6_fast.inst.cfg index 8cb602b7eb..a8dd425d3d 100644 --- a/resources/quality/ultimaker2_plus/um2p_pp_0.6_fast.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_pp_0.6_fast.inst.cfg @@ -50,7 +50,7 @@ retraction_hop_only_when_collides = True retraction_prime_speed = 15 skin_overlap = 10 skirt_brim_line_width = 0.6 -speed_layer_0 = 25 +speed_layer_0 = =speed_print speed_prime_tower = =speed_topbottom speed_print = 25 speed_support_interface = =speed_topbottom @@ -70,3 +70,5 @@ travel_avoid_distance = 3 wall_0_inset = 0 wall_line_width_x = =round(line_width * 0.57 / 0.57, 2) wall_thickness = 1.14 +speed_wall_x = =math.ceil(speed_print * 80 / 25) +speed_infill = =math.ceil(speed_print * 100 / 25) diff --git a/resources/quality/ultimaker2_plus/um2p_pp_0.8_draft.inst.cfg b/resources/quality/ultimaker2_plus/um2p_pp_0.8_draft.inst.cfg index 3e38caa1ec..aa7f5c27ee 100644 --- a/resources/quality/ultimaker2_plus/um2p_pp_0.8_draft.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_pp_0.8_draft.inst.cfg @@ -50,7 +50,7 @@ retraction_hop_only_when_collides = True retraction_prime_speed = 15 skin_overlap = 10 skirt_brim_line_width = 0.8 -speed_layer_0 = 25 +speed_layer_0 = =speed_print speed_prime_tower = =speed_topbottom speed_print = 25 speed_support_interface = =speed_topbottom diff --git a/resources/quality/ultimaker2_plus/um2p_pp_0.8_verydraft.inst.cfg b/resources/quality/ultimaker2_plus/um2p_pp_0.8_verydraft.inst.cfg index 39408477af..177e86c60d 100644 --- a/resources/quality/ultimaker2_plus/um2p_pp_0.8_verydraft.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_pp_0.8_verydraft.inst.cfg @@ -50,7 +50,7 @@ retraction_hop_only_when_collides = True retraction_prime_speed = 15 skin_overlap = 10 skirt_brim_line_width = 0.8 -speed_layer_0 = 25 +speed_layer_0 = =speed_print speed_prime_tower = =speed_topbottom speed_print = 25 speed_support_interface = =speed_topbottom diff --git a/resources/quality/ultimaker2_plus/um2p_tpu_0.25_high.inst.cfg b/resources/quality/ultimaker2_plus/um2p_tpu_0.25_high.inst.cfg index 3e5f8f8180..559a636445 100644 --- a/resources/quality/ultimaker2_plus/um2p_tpu_0.25_high.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_tpu_0.25_high.inst.cfg @@ -27,13 +27,13 @@ raft_interface_line_spacing = 1 raft_interface_line_width = 0.2 raft_surface_line_width = 0.2 retraction_hop_enabled = 0.2 -speed_layer_0 = 30 +speed_layer_0 = =math.ceil(speed_print * 30 / 40) speed_print = 40 speed_support = 40 -speed_topbottom = 35 +speed_topbottom = =math.ceil(speed_print * 35 / 40) speed_travel = 150 -speed_wall_0 = 15 -speed_wall_x = 38 +speed_wall_0 = =math.ceil(speed_print * 15 / 40) +speed_wall_x = =math.ceil(speed_print * 38 / 40) support_angle = 45 support_enable = True support_infill_rate = 25 @@ -41,3 +41,4 @@ support_xy_distance = 0.6 support_z_distance = =layer_height * 2 top_bottom_thickness = 1.2 wall_thickness = 0.88 +speed_infill = =math.ceil(speed_print * 80 / 40) diff --git a/resources/quality/ultimaker2_plus/um2p_tpu_0.4_normal.inst.cfg b/resources/quality/ultimaker2_plus/um2p_tpu_0.4_normal.inst.cfg index 84065dbfdf..3a2825685e 100644 --- a/resources/quality/ultimaker2_plus/um2p_tpu_0.4_normal.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_tpu_0.4_normal.inst.cfg @@ -24,13 +24,13 @@ raft_base_line_width = 0.8 raft_interface_line_spacing = 1 raft_margin = 12 retraction_hop_enabled = 0.2 -speed_layer_0 = 30 +speed_layer_0 = =math.ceil(speed_print * 30 / 40) speed_print = 40 speed_support = 40 -speed_topbottom = 35 +speed_topbottom = =math.ceil(speed_print * 35 / 40) speed_travel = 150 -speed_wall_0 = 20 -speed_wall_x = 35 +speed_wall_0 = =math.ceil(speed_print * 20 / 40) +speed_wall_x = =math.ceil(speed_print * 35 / 40) support_angle = 45 support_enable = True support_infill_rate = 25 diff --git a/resources/quality/ultimaker2_plus/um2p_tpu_0.6_fast.inst.cfg b/resources/quality/ultimaker2_plus/um2p_tpu_0.6_fast.inst.cfg index ec424a6f40..87a429134f 100644 --- a/resources/quality/ultimaker2_plus/um2p_tpu_0.6_fast.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_tpu_0.6_fast.inst.cfg @@ -29,13 +29,13 @@ raft_interface_line_width = 0.57 raft_margin = 15 raft_surface_line_width = 0.5 retraction_hop_enabled = 0.2 -speed_layer_0 = 30 +speed_layer_0 = =math.ceil(speed_print * 30 / 45) speed_print = 45 speed_support = 40 -speed_topbottom = 35 +speed_topbottom = =math.ceil(speed_print * 35 / 45) speed_travel = 150 -speed_wall_0 = 15 -speed_wall_x = 40 +speed_wall_0 = =math.ceil(speed_print * 15 / 45) +speed_wall_x = =math.ceil(speed_print * 40 / 45) support_angle = 45 support_enable = True support_infill_rate = 25 @@ -43,3 +43,4 @@ support_xy_distance = 0.7 support_z_distance = =layer_height * 2 top_bottom_thickness = 1.2 wall_thickness = 1.14 +speed_infill = =math.ceil(speed_print * 100 / 45) diff --git a/resources/quality/ultimaker3/um3_aa0.25_CPE_Normal_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.25_CPE_Normal_Quality.inst.cfg index fabe67cc27..0292bfa6d1 100644 --- a/resources/quality/ultimaker3/um3_aa0.25_CPE_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.25_CPE_Normal_Quality.inst.cfg @@ -16,7 +16,7 @@ prime_tower_purge_volume = 1 prime_tower_size = 12 prime_tower_wall_thickness = 0.9 retraction_extrusion_window = 0.5 -speed_infill = 40 +speed_infill = =math.ceil(speed_print * 40 / 55) speed_topbottom = =math.ceil(speed_print * 30 / 55) top_bottom_thickness = 0.8 wall_thickness = 0.92 diff --git a/resources/quality/ultimaker3/um3_aa0.25_PC_Normal_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.25_PC_Normal_Quality.inst.cfg index 8444d0faef..608bc837c7 100644 --- a/resources/quality/ultimaker3/um3_aa0.25_PC_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.25_PC_Normal_Quality.inst.cfg @@ -38,9 +38,9 @@ retraction_hop_only_when_collides = True retraction_min_travel = 0.8 retraction_prime_speed = 15 skin_overlap = 30 -speed_layer_0 = 25 +speed_layer_0 = =math.ceil(speed_print * 25 / 50) speed_print = 50 -speed_topbottom = 25 +speed_topbottom = =math.ceil(speed_print * 25 / 50) speed_travel = 250 speed_wall = =math.ceil(speed_print * 40 / 50) speed_wall_0 = =math.ceil(speed_wall * 25 / 40) diff --git a/resources/quality/ultimaker3/um3_aa0.25_PLA_Normal_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.25_PLA_Normal_Quality.inst.cfg index 14345dc626..b4c557216e 100644 --- a/resources/quality/ultimaker3/um3_aa0.25_PLA_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.25_PLA_Normal_Quality.inst.cfg @@ -24,11 +24,11 @@ material_initial_print_temperature = =max(-273.15, material_print_temperature - material_print_temperature = 190 retraction_hop = 0.2 skin_overlap = 5 -speed_layer_0 = 30 +speed_layer_0 = =speed_print speed_print = 30 speed_travel_layer_0 = 120 -speed_wall = 25 -speed_wall_0 = 20 +speed_wall = =math.ceil(speed_print * 25 / 30) +speed_wall_0 = =math.ceil(speed_print * 20 / 30) top_bottom_thickness = 0.72 travel_avoid_distance = 0.4 wall_0_inset = 0.015 diff --git a/resources/quality/ultimaker3/um3_aa0.25_PP_Normal_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.25_PP_Normal_Quality.inst.cfg index dd8a906e4c..fefbf55b97 100644 --- a/resources/quality/ultimaker3/um3_aa0.25_PP_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.25_PP_Normal_Quality.inst.cfg @@ -42,7 +42,7 @@ retraction_hop_only_when_collides = True retraction_min_travel = 0.8 retraction_prime_speed = 13 speed_equalize_flow_enabled = True -speed_layer_0 = 15 +speed_layer_0 = =math.ceil(speed_print * 15 / 25) speed_print = 25 speed_travel = 300 speed_travel_layer_0 = 50 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 f7748e3903..d03f8f24c1 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 @@ -20,7 +20,7 @@ material_final_print_temperature = =material_print_temperature - 10 prime_tower_enable = False skin_overlap = 20 speed_print = 60 -speed_layer_0 = 20 +speed_layer_0 = =math.ceil(speed_print * 20 / 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) 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 50fb12eaa4..ca82990b13 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 @@ -21,7 +21,7 @@ material_final_print_temperature = =material_print_temperature - 10 material_standby_temperature = 100 prime_tower_enable = False speed_print = 60 -speed_layer_0 = 20 +speed_layer_0 = =math.ceil(speed_print * 20 / 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 6215afc9df..35cd06e589 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 @@ -21,6 +21,6 @@ material_initial_print_temperature = =material_print_temperature - 5 material_final_print_temperature = =material_print_temperature - 10 prime_tower_enable = False speed_print = 50 -speed_layer_0 = 20 +speed_layer_0 = =math.ceil(speed_print * 20 / 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 a7683fb249..fdeafbc86b 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 @@ -19,6 +19,6 @@ material_final_print_temperature = =material_print_temperature - 10 material_standby_temperature = 100 prime_tower_enable = False speed_print = 55 -speed_layer_0 = 20 +speed_layer_0 = =math.ceil(speed_print * 20 / 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_BAM_Draft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_BAM_Draft_Print.inst.cfg index f9a2bd88a4..d9a241742b 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_BAM_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_BAM_Draft_Print.inst.cfg @@ -20,7 +20,7 @@ material_print_temperature = =default_material_print_temperature + 5 # prime_tower_enable: see CURA-4248 prime_tower_enable = =min(extruderValues('material_surface_energy')) < 100 skin_overlap = 20 -speed_layer_0 = 20 +speed_layer_0 = =math.ceil(speed_print * 20 / 70) 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) diff --git a/resources/quality/ultimaker3/um3_aa0.4_BAM_Fast_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_BAM_Fast_Print.inst.cfg index d181e7e4c9..5d7d6bde25 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_BAM_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_BAM_Fast_Print.inst.cfg @@ -19,7 +19,7 @@ machine_nozzle_heat_up_speed = 1.6 # prime_tower_enable: see CURA-4248 prime_tower_enable = =min(extruderValues('material_surface_energy')) < 100 speed_print = 80 -speed_layer_0 = 20 +speed_layer_0 = =math.ceil(speed_print * 20 / 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) diff --git a/resources/quality/ultimaker3/um3_aa0.4_BAM_Normal_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_BAM_Normal_Quality.inst.cfg index 4a8bde54b3..d85bb0cbf6 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_BAM_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_BAM_Normal_Quality.inst.cfg @@ -20,7 +20,7 @@ machine_nozzle_heat_up_speed = 1.6 material_print_temperature = =default_material_print_temperature - 10 prime_tower_enable = =min(extruderValues('material_surface_energy')) < 100 skin_overlap = 10 -speed_layer_0 = 20 +speed_layer_0 = =math.ceil(speed_print * 20 / 70) support_interface_enable = True support_interface_density = =min(extruderValues('material_surface_energy')) support_interface_pattern = ='lines' if support_interface_density < 100 else 'concentric' diff --git a/resources/quality/ultimaker3/um3_aa0.4_CPEP_Draft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_CPEP_Draft_Print.inst.cfg index 8f071b18d7..9a1dd89f9c 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_CPEP_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_CPEP_Draft_Print.inst.cfg @@ -38,7 +38,7 @@ retraction_hop = 0.2 retraction_hop_enabled = False retraction_hop_only_when_collides = True skin_overlap = 20 -speed_layer_0 = 20 +speed_layer_0 = =math.ceil(speed_print * 20 / 50) speed_print = 50 speed_topbottom = =math.ceil(speed_print * 40 / 50) speed_travel = 250 diff --git a/resources/quality/ultimaker3/um3_aa0.4_CPEP_Fast_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_CPEP_Fast_Print.inst.cfg index fc6eee65bc..e3c0e9d69a 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_CPEP_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_CPEP_Fast_Print.inst.cfg @@ -38,7 +38,7 @@ retraction_hop = 0.2 retraction_hop_enabled = False retraction_hop_only_when_collides = True skin_overlap = 20 -speed_layer_0 = 20 +speed_layer_0 = =math.ceil(speed_print * 20 / 45) speed_print = 45 speed_topbottom = =math.ceil(speed_print * 35 / 45) speed_travel = 250 diff --git a/resources/quality/ultimaker3/um3_aa0.4_CPEP_High_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_CPEP_High_Quality.inst.cfg index 3559ed5e67..e3c7dd7941 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_CPEP_High_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_CPEP_High_Quality.inst.cfg @@ -40,7 +40,7 @@ retraction_hop = 0.2 retraction_hop_enabled = False retraction_hop_only_when_collides = True skin_overlap = 20 -speed_layer_0 = 20 +speed_layer_0 = =math.ceil(speed_print * 20 / 40) speed_print = 40 speed_topbottom = =math.ceil(speed_print * 30 / 35) speed_travel = 250 diff --git a/resources/quality/ultimaker3/um3_aa0.4_CPEP_Normal_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_CPEP_Normal_Quality.inst.cfg index 02a807c7b8..1496ac3c05 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_CPEP_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_CPEP_Normal_Quality.inst.cfg @@ -39,7 +39,7 @@ retraction_hop = 0.2 retraction_hop_enabled = False retraction_hop_only_when_collides = True skin_overlap = 20 -speed_layer_0 = 20 +speed_layer_0 = =math.ceil(speed_print * 20 / 40) speed_print = 40 speed_topbottom = =math.ceil(speed_print * 30 / 35) speed_travel = 250 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 7a54e34f6d..686073542f 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 @@ -19,7 +19,7 @@ material_standby_temperature = 100 prime_tower_purge_volume = 1 skin_overlap = 20 speed_print = 60 -speed_layer_0 = 20 +speed_layer_0 = =math.ceil(speed_print * 20 / 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) 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 94476b33d1..d35ada198c 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 @@ -19,7 +19,7 @@ material_final_print_temperature = =material_print_temperature - 10 material_standby_temperature = 100 prime_tower_purge_volume = 1 speed_print = 60 -speed_layer_0 = 20 +speed_layer_0 = =math.ceil(speed_print * 20 / 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 d8899f1bca..f33425f7c6 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 @@ -21,6 +21,6 @@ material_final_print_temperature = =material_print_temperature - 10 material_standby_temperature = 100 prime_tower_purge_volume = 1 speed_print = 50 -speed_layer_0 = 20 +speed_layer_0 = =math.ceil(speed_print * 20 / 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 4f144ca92e..650e5a4bef 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 @@ -19,6 +19,6 @@ material_final_print_temperature = =material_print_temperature - 10 material_standby_temperature = 100 prime_tower_purge_volume = 1 speed_print = 55 -speed_layer_0 = 20 +speed_layer_0 = =math.ceil(speed_print * 20 / 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 91600ed6fa..ab5f60feb5 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 @@ -29,7 +29,7 @@ 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 = 20 +speed_layer_0 = =math.ceil(speed_print * 20 / 70) switch_extruder_prime_speed = 30 switch_extruder_retraction_amount = 30 switch_extruder_retraction_speeds = 40 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 7db3683333..64508a15ea 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 @@ -29,7 +29,7 @@ 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 = 20 +speed_layer_0 = =math.ceil(speed_print * 20 / 70) switch_extruder_prime_speed = 30 switch_extruder_retraction_amount = 30 switch_extruder_retraction_speeds = 40 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 fd9ffb53b4..85ac422729 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 @@ -28,7 +28,7 @@ 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 = 20 +speed_layer_0 = =math.ceil(speed_print * 20 / 70) switch_extruder_prime_speed = 30 switch_extruder_retraction_amount = 30 switch_extruder_retraction_speeds = 40 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 c8ed69342d..4f6ebbe993 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 @@ -28,7 +28,7 @@ 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 = 20 +speed_layer_0 = =math.ceil(speed_print * 20 / 70) switch_extruder_prime_speed = 30 switch_extruder_retraction_amount = 30 switch_extruder_retraction_speeds = 40 diff --git a/resources/quality/ultimaker3/um3_aa0.4_PC_Draft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_PC_Draft_Print.inst.cfg index 2f05384abd..dc72708d9f 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_PC_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_PC_Draft_Print.inst.cfg @@ -48,7 +48,7 @@ retraction_hop_only_when_collides = True retraction_min_travel = 0.8 retraction_prime_speed = 15 skin_overlap = 30 -speed_layer_0 = 25 +speed_layer_0 = =math.ceil(speed_print * 25 / 50) speed_print = 50 speed_topbottom = =math.ceil(speed_print * 25 / 50) speed_travel = 250 diff --git a/resources/quality/ultimaker3/um3_aa0.4_PC_Fast_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_PC_Fast_Print.inst.cfg index ef6f5978ad..0a5990d00d 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_PC_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_PC_Fast_Print.inst.cfg @@ -47,7 +47,7 @@ retraction_hop_only_when_collides = True retraction_min_travel = 0.8 retraction_prime_speed = 15 skin_overlap = 30 -speed_layer_0 = 25 +speed_layer_0 = =math.ceil(speed_print * 25 / 50) speed_print = 50 speed_topbottom = =math.ceil(speed_print * 25 / 50) speed_travel = 250 diff --git a/resources/quality/ultimaker3/um3_aa0.4_PC_High_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_PC_High_Quality.inst.cfg index cbba3ffddb..51596c0af1 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_PC_High_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_PC_High_Quality.inst.cfg @@ -48,7 +48,7 @@ retraction_hop_only_when_collides = True retraction_min_travel = 0.8 retraction_prime_speed = 15 skin_overlap = 30 -speed_layer_0 = 25 +speed_layer_0 = =math.ceil(speed_print * 25 / 50) speed_print = 50 speed_topbottom = =math.ceil(speed_print * 25 / 50) speed_travel = 250 diff --git a/resources/quality/ultimaker3/um3_aa0.4_PC_Normal_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_PC_Normal_Quality.inst.cfg index ac78470b03..42055f214d 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_PC_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_PC_Normal_Quality.inst.cfg @@ -45,7 +45,7 @@ retraction_hop_only_when_collides = True retraction_min_travel = 0.8 retraction_prime_speed = 15 skin_overlap = 30 -speed_layer_0 = 25 +speed_layer_0 = =math.ceil(speed_print * 25 / 50) speed_print = 50 speed_topbottom = =math.ceil(speed_print * 25 / 50) speed_travel = 250 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 735dac3b76..cb44ec8664 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 @@ -21,7 +21,7 @@ material_print_temperature = =default_material_print_temperature + 5 material_standby_temperature = 100 prime_tower_enable = False skin_overlap = 20 -speed_layer_0 = 20 +speed_layer_0 = =math.ceil(speed_print * 20 / 70) speed_topbottom = =math.ceil(speed_print * 40 / 70) speed_wall = =math.ceil(speed_print * 55 / 70) speed_wall_0 = =math.ceil(speed_wall * 45 / 50) 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 b69fa30a8b..c22c6b3a11 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 @@ -20,7 +20,7 @@ machine_nozzle_heat_up_speed = 1.6 material_standby_temperature = 100 prime_tower_enable = False speed_print = 80 -speed_layer_0 = 20 +speed_layer_0 = =math.ceil(speed_print * 20 / 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) 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 325d22fe5a..6af3bb1e70 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 @@ -23,7 +23,7 @@ material_standby_temperature = 100 prime_tower_enable = False skin_overlap = 10 speed_print = 60 -speed_layer_0 = 20 +speed_layer_0 = =math.ceil(speed_print * 20 / 60) speed_topbottom = =math.ceil(speed_print * 30 / 60) speed_wall = =math.ceil(speed_print * 30 / 60) top_bottom_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 910f3cec4b..f0be5bf4ea 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 @@ -21,6 +21,6 @@ machine_nozzle_heat_up_speed = 1.6 material_standby_temperature = 100 prime_tower_enable = False skin_overlap = 10 -speed_layer_0 = 20 +speed_layer_0 = =math.ceil(speed_print * 20 / 70) top_bottom_thickness = 1 wall_thickness = 1 diff --git a/resources/quality/ultimaker3/um3_aa0.4_PP_Draft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_PP_Draft_Print.inst.cfg index 4ea3552891..4870a547c6 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_PP_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_PP_Draft_Print.inst.cfg @@ -49,7 +49,7 @@ retraction_hop_only_when_collides = True retraction_min_travel = 0.8 retraction_prime_speed = 18 speed_equalize_flow_enabled = True -speed_layer_0 = 15 +speed_layer_0 = =math.ceil(speed_print * 15 / 25) speed_print = 25 speed_topbottom = =math.ceil(speed_print * 25 / 25) speed_travel = 300 diff --git a/resources/quality/ultimaker3/um3_aa0.4_PP_Fast_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_PP_Fast_Print.inst.cfg index bfb0085db4..77d5651cd9 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_PP_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_PP_Fast_Print.inst.cfg @@ -48,7 +48,7 @@ retraction_hop_only_when_collides = True retraction_min_travel = 0.8 retraction_prime_speed = 18 speed_equalize_flow_enabled = True -speed_layer_0 = 15 +speed_layer_0 = =math.ceil(speed_print * 15 / 25) speed_print = 25 speed_topbottom = =math.ceil(speed_print * 25 / 25) speed_travel = 300 diff --git a/resources/quality/ultimaker3/um3_aa0.4_PP_Normal_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_PP_Normal_Quality.inst.cfg index f3b30b853b..019bf8abda 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_PP_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_PP_Normal_Quality.inst.cfg @@ -47,7 +47,7 @@ retraction_hop_only_when_collides = True retraction_min_travel = 0.8 retraction_prime_speed = 18 speed_equalize_flow_enabled = True -speed_layer_0 = 15 +speed_layer_0 = =math.ceil(speed_print * 15 / 25) speed_print = 25 speed_topbottom = =math.ceil(speed_print * 25 / 25) speed_travel = 300 diff --git a/resources/quality/ultimaker3/um3_aa0.4_TPLA_Draft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_TPLA_Draft_Print.inst.cfg index 850fbd247b..fbe9e70219 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_TPLA_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_TPLA_Draft_Print.inst.cfg @@ -27,7 +27,7 @@ prime_tower_enable = False roofing_layer_count = 2 skin_outline_count = 0 skin_overlap = 20 -speed_layer_0 = 20 +speed_layer_0 = =math.ceil(speed_print * 20 / 50) speed_print = 50 speed_roofing = =math.ceil(speed_wall * 20 / 24) speed_topbottom = =math.ceil(speed_print * 25 / 50) diff --git a/resources/quality/ultimaker3/um3_aa0.4_TPLA_Fast_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_TPLA_Fast_Print.inst.cfg index f61e356a8f..2575a01cdb 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_TPLA_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_TPLA_Fast_Print.inst.cfg @@ -21,7 +21,7 @@ machine_nozzle_heat_up_speed = 1.6 material_print_temperature = =default_material_print_temperature -10 material_standby_temperature = 100 prime_tower_enable = False -speed_layer_0 = 20 +speed_layer_0 = =math.ceil(speed_print * 20 / 45) speed_print = 45 speed_topbottom = =math.ceil(speed_print * 35 / 45) speed_wall = =math.ceil(speed_print * 40 / 45) diff --git a/resources/quality/ultimaker3/um3_aa0.4_TPLA_Normal_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_TPLA_Normal_Quality.inst.cfg index 0779260c76..5347df099f 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_TPLA_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_TPLA_Normal_Quality.inst.cfg @@ -23,7 +23,7 @@ material_print_temperature = =default_material_print_temperature - 15 material_standby_temperature = 100 prime_tower_enable = False skin_overlap = 10 -speed_layer_0 = 20 +speed_layer_0 = =math.ceil(speed_print * 20 / 45) speed_print = 45 speed_topbottom = =math.ceil(speed_print * 35 / 45) speed_wall = =math.ceil(speed_print * 40 / 45) diff --git a/resources/quality/ultimaker3/um3_aa0.4_TPU_Draft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_TPU_Draft_Print.inst.cfg index 59c650ef0e..51e6c98306 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_TPU_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_TPU_Draft_Print.inst.cfg @@ -48,7 +48,7 @@ retraction_min_travel = =line_width * 2 retraction_prime_speed = 15 skin_overlap = 5 speed_equalize_flow_enabled = True -speed_layer_0 = 18 +speed_layer_0 = =math.ceil(speed_print * 18 / 25) speed_print = 25 speed_topbottom = =math.ceil(speed_print * 25 / 25) speed_travel = 300 diff --git a/resources/quality/ultimaker3/um3_aa0.4_TPU_Fast_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_TPU_Fast_Print.inst.cfg index f0a889c12e..1e3cb508d7 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_TPU_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_TPU_Fast_Print.inst.cfg @@ -49,7 +49,7 @@ retraction_min_travel = =line_width * 2 retraction_prime_speed = 15 skin_overlap = 5 speed_equalize_flow_enabled = True -speed_layer_0 = 18 +speed_layer_0 = =math.ceil(speed_print * 18 / 25) speed_print = 25 speed_topbottom = =math.ceil(speed_print * 25 / 25) speed_travel = 300 diff --git a/resources/quality/ultimaker3/um3_aa0.4_TPU_Normal_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_TPU_Normal_Quality.inst.cfg index 1b6ac261cf..2f113beb47 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_TPU_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_TPU_Normal_Quality.inst.cfg @@ -46,7 +46,7 @@ retraction_min_travel = =line_width * 2 retraction_prime_speed = 15 skin_overlap = 5 speed_equalize_flow_enabled = True -speed_layer_0 = 18 +speed_layer_0 = =math.ceil(speed_print * 18 / 25) speed_print = 25 speed_topbottom = =math.ceil(speed_print * 25 / 25) speed_travel = 300 diff --git a/resources/quality/ultimaker3/um3_aa0.8_CPEP_Fast_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_CPEP_Fast_Print.inst.cfg index 961e127a57..ed6e35f700 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_CPEP_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_CPEP_Fast_Print.inst.cfg @@ -26,7 +26,7 @@ retraction_combing = off retraction_hop = 0.1 retraction_hop_enabled = False skin_overlap = 0 -speed_layer_0 = 15 +speed_layer_0 = =math.ceil(speed_print * 15 / 50) speed_print = 50 speed_slowdown_layers = 15 speed_topbottom = =math.ceil(speed_print * 35 / 50) diff --git a/resources/quality/ultimaker3/um3_aa0.8_CPEP_Superdraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_CPEP_Superdraft_Print.inst.cfg index b112bf8f4f..6ce17b25f2 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_CPEP_Superdraft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_CPEP_Superdraft_Print.inst.cfg @@ -27,7 +27,7 @@ retraction_combing = off retraction_hop = 0.1 retraction_hop_enabled = False skin_overlap = 0 -speed_layer_0 = 15 +speed_layer_0 = =math.ceil(speed_print * 15 / 50) speed_print = 50 speed_slowdown_layers = 8 speed_topbottom = =math.ceil(speed_print * 35 / 50) diff --git a/resources/quality/ultimaker3/um3_aa0.8_CPEP_Verydraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_CPEP_Verydraft_Print.inst.cfg index c51ee3a90f..c4b0655e3d 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_CPEP_Verydraft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_CPEP_Verydraft_Print.inst.cfg @@ -27,7 +27,7 @@ retraction_combing = off retraction_hop = 0.1 retraction_hop_enabled = False skin_overlap = 0 -speed_layer_0 = 15 +speed_layer_0 = =math.ceil(speed_print * 15 / 50) speed_print = 50 speed_slowdown_layers = 10 speed_topbottom = =math.ceil(speed_print * 35 / 50) diff --git a/resources/quality/ultimaker3/um3_aa0.8_PC_Fast_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_PC_Fast_Print.inst.cfg index fba7e2c824..c6258781e0 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_PC_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_PC_Fast_Print.inst.cfg @@ -22,7 +22,7 @@ material_standby_temperature = 100 raft_airgap = 0.5 raft_margin = 15 skin_overlap = 0 -speed_layer_0 = 15 +speed_layer_0 = =math.ceil(speed_print * 15 / 50) speed_print = 50 speed_slowdown_layers = 15 speed_topbottom = =math.ceil(speed_print * 25 / 50) diff --git a/resources/quality/ultimaker3/um3_aa0.8_PC_Superdraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_PC_Superdraft_Print.inst.cfg index 5838a48fb7..6e272a3c9f 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_PC_Superdraft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_PC_Superdraft_Print.inst.cfg @@ -22,7 +22,7 @@ material_standby_temperature = 100 raft_airgap = 0.5 raft_margin = 15 skin_overlap = 0 -speed_layer_0 = 15 +speed_layer_0 = =math.ceil(speed_print * 15 / 50) speed_print = 50 speed_slowdown_layers = 8 speed_topbottom = =math.ceil(speed_print * 25 / 50) diff --git a/resources/quality/ultimaker3/um3_aa0.8_PC_Verydraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_PC_Verydraft_Print.inst.cfg index 83a331e801..61ab7e29ea 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_PC_Verydraft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_PC_Verydraft_Print.inst.cfg @@ -23,7 +23,7 @@ material_standby_temperature = 100 raft_airgap = 0.5 raft_margin = 15 skin_overlap = 0 -speed_layer_0 = 15 +speed_layer_0 = =math.ceil(speed_print * 15 / 50) speed_print = 50 speed_slowdown_layers = 10 speed_topbottom = =math.ceil(speed_print * 25 / 50) diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.25_CPE_Normal_Quality.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.25_CPE_Normal_Quality.inst.cfg index a69053b8ab..f8305eda7c 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.25_CPE_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.25_CPE_Normal_Quality.inst.cfg @@ -15,7 +15,7 @@ variant = AA 0.25 prime_tower_size = 12 prime_tower_wall_thickness = 0.9 retraction_extrusion_window = 0.5 -speed_infill = 40 +speed_infill = =math.ceil(speed_print * 40 / 55) speed_topbottom = =math.ceil(speed_print * 30 / 55) top_bottom_thickness = 0.8 wall_thickness = 0.92 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.25_PC_Normal_Quality.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.25_PC_Normal_Quality.inst.cfg index c188f37d96..bd5e8d08ff 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.25_PC_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.25_PC_Normal_Quality.inst.cfg @@ -38,9 +38,9 @@ retraction_hop_only_when_collides = True retraction_min_travel = 0.8 retraction_prime_speed = 15 skin_overlap = 30 -speed_layer_0 = 25 +speed_layer_0 = =math.ceil(speed_print * 25 / 50) speed_print = 50 -speed_topbottom = 25 +speed_topbottom = =math.ceil(speed_print * 25 / 50) speed_wall = =math.ceil(speed_print * 40 / 50) speed_wall_0 = =math.ceil(speed_wall * 25 / 40) support_bottom_distance = =support_z_distance diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.25_PLA_Normal_Quality.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.25_PLA_Normal_Quality.inst.cfg index f964bba440..6d7c46772c 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.25_PLA_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.25_PLA_Normal_Quality.inst.cfg @@ -24,11 +24,11 @@ material_initial_print_temperature = =max(-273.15, material_print_temperature - material_print_temperature = 190 retraction_hop = 0.2 skin_overlap = 5 -speed_layer_0 = 30 +speed_layer_0 = =speed_print speed_print = 30 speed_travel_layer_0 = 120 -speed_wall = 25 -speed_wall_0 = 20 +speed_wall = =math.ceil(speed_print * 25 / 30) +speed_wall_0 = =math.ceil(speed_print * 20 / 30) top_bottom_thickness = 0.72 travel_avoid_distance = 0.4 wall_0_inset = 0.015 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.25_PP_Normal_Quality.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.25_PP_Normal_Quality.inst.cfg index 72c16ebc1d..d4b4691be4 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.25_PP_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.25_PP_Normal_Quality.inst.cfg @@ -42,7 +42,7 @@ retraction_hop_only_when_collides = True retraction_min_travel = 0.8 retraction_prime_speed = 13 speed_equalize_flow_enabled = True -speed_layer_0 = 15 +speed_layer_0 = =math.ceil(speed_print * 15 / 25) speed_print = 25 speed_travel_layer_0 = 50 speed_wall = =math.ceil(speed_print * 25 / 25) diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_ABS_Draft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_ABS_Draft_Print.inst.cfg index b2c44dab01..2cf03fe4c9 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_ABS_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_ABS_Draft_Print.inst.cfg @@ -20,7 +20,7 @@ material_final_print_temperature = =material_print_temperature - 20 prime_tower_enable = False skin_overlap = 20 speed_print = 60 -speed_layer_0 = 20 +speed_layer_0 = =math.ceil(speed_print * 20 / 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) diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_ABS_Fast_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_ABS_Fast_Print.inst.cfg index 0470956c6d..9b819ad56a 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_ABS_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_ABS_Fast_Print.inst.cfg @@ -20,7 +20,7 @@ material_initial_print_temperature = =material_print_temperature - 15 material_final_print_temperature = =material_print_temperature - 20 prime_tower_enable = False speed_print = 60 -speed_layer_0 = 20 +speed_layer_0 = =math.ceil(speed_print * 20 / 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/ultimaker_s5/um_s5_aa0.4_ABS_High_Quality.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_ABS_High_Quality.inst.cfg index 497071e01a..3fce280901 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_ABS_High_Quality.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_ABS_High_Quality.inst.cfg @@ -20,7 +20,7 @@ material_initial_print_temperature = =material_print_temperature - 15 material_final_print_temperature = =material_print_temperature - 20 prime_tower_enable = False speed_print = 50 -speed_layer_0 = 20 +speed_layer_0 = =math.ceil(speed_print * 20 / 50) speed_topbottom = =math.ceil(speed_print * 30 / 50) speed_wall = =math.ceil(speed_print * 30 / 50) diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_ABS_Normal_Quality.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_ABS_Normal_Quality.inst.cfg index f080adb06f..3e1836b3b6 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_ABS_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_ABS_Normal_Quality.inst.cfg @@ -19,7 +19,7 @@ material_initial_print_temperature = =material_print_temperature - 15 material_final_print_temperature = =material_print_temperature - 20 prime_tower_enable = False speed_print = 55 -speed_layer_0 = 20 +speed_layer_0 = =math.ceil(speed_print * 20 / 55) speed_topbottom = =math.ceil(speed_print * 30 / 55) speed_wall = =math.ceil(speed_print * 30 / 55) diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_BAM_Draft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_BAM_Draft_Print.inst.cfg index b4652d23dd..f33b562820 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_BAM_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_BAM_Draft_Print.inst.cfg @@ -20,7 +20,7 @@ material_print_temperature = =default_material_print_temperature + 5 # prime_tower_enable: see CURA-4248 prime_tower_enable = =min(extruderValues('material_surface_energy')) < 100 skin_overlap = 20 -speed_layer_0 = 20 +speed_layer_0 = =math.ceil(speed_print * 20 / 70) 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) diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_BAM_Fast_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_BAM_Fast_Print.inst.cfg index bebc993ca3..6ed4df3844 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_BAM_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_BAM_Fast_Print.inst.cfg @@ -19,7 +19,7 @@ machine_nozzle_heat_up_speed = 1.6 # prime_tower_enable: see CURA-4248 prime_tower_enable = =min(extruderValues('material_surface_energy')) < 100 speed_print = 80 -speed_layer_0 = 20 +speed_layer_0 = =math.ceil(speed_print * 20 / 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) diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_BAM_Normal_Quality.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_BAM_Normal_Quality.inst.cfg index 40f0c2ab70..764094b897 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_BAM_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_BAM_Normal_Quality.inst.cfg @@ -21,7 +21,7 @@ material_print_temperature = =default_material_print_temperature - 10 # prime_tower_enable: see CURA-4248 prime_tower_enable = =min(extruderValues('material_surface_energy')) < 100 skin_overlap = 10 -speed_layer_0 = 20 +speed_layer_0 = =math.ceil(speed_print * 20 / 70) support_interface_enable = True support_interface_density = =min(extruderValues('material_surface_energy')) support_interface_pattern = ='lines' if support_interface_density < 100 else 'concentric' diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_CPEP_Draft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_CPEP_Draft_Print.inst.cfg index bb5cad456f..aa34425a46 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_CPEP_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_CPEP_Draft_Print.inst.cfg @@ -35,7 +35,7 @@ retraction_hop = 0.2 retraction_hop_enabled = False retraction_hop_only_when_collides = True skin_overlap = 20 -speed_layer_0 = 20 +speed_layer_0 = =math.ceil(speed_print * 20 / 50) speed_print = 50 speed_topbottom = =math.ceil(speed_print * 40 / 50) diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_CPEP_Fast_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_CPEP_Fast_Print.inst.cfg index ef3e8d7f4e..5ae2a219ef 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_CPEP_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_CPEP_Fast_Print.inst.cfg @@ -35,7 +35,7 @@ retraction_hop = 0.2 retraction_hop_enabled = False retraction_hop_only_when_collides = True skin_overlap = 20 -speed_layer_0 = 20 +speed_layer_0 = =math.ceil(speed_print * 20 / 45) speed_print = 45 speed_topbottom = =math.ceil(speed_print * 35 / 45) diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_CPEP_High_Quality.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_CPEP_High_Quality.inst.cfg index 823a6e0fdf..77b2201627 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_CPEP_High_Quality.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_CPEP_High_Quality.inst.cfg @@ -37,7 +37,7 @@ retraction_hop = 0.2 retraction_hop_enabled = False retraction_hop_only_when_collides = True skin_overlap = 20 -speed_layer_0 = 20 +speed_layer_0 = =math.ceil(speed_print * 20 / 40) speed_print = 40 speed_topbottom = =math.ceil(speed_print * 30 / 35) diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_CPEP_Normal_Quality.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_CPEP_Normal_Quality.inst.cfg index 05c960e443..3963e53991 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_CPEP_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_CPEP_Normal_Quality.inst.cfg @@ -37,7 +37,7 @@ retraction_hop = 0.2 retraction_hop_enabled = False retraction_hop_only_when_collides = True skin_overlap = 20 -speed_layer_0 = 20 +speed_layer_0 = =math.ceil(speed_print * 20 / 40) speed_print = 40 speed_topbottom = =math.ceil(speed_print * 30 / 35) diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_CPE_Draft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_CPE_Draft_Print.inst.cfg index 744b49b03b..3f0ff31ce1 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_CPE_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_CPE_Draft_Print.inst.cfg @@ -17,7 +17,7 @@ material_initial_print_temperature = =material_print_temperature - 5 material_final_print_temperature = =material_print_temperature - 10 skin_overlap = 20 speed_print = 60 -speed_layer_0 = 20 +speed_layer_0 = =math.ceil(speed_print * 20 / 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) diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_CPE_Fast_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_CPE_Fast_Print.inst.cfg index 58757c6dd1..7b4155c1e2 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_CPE_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_CPE_Fast_Print.inst.cfg @@ -17,7 +17,7 @@ material_print_temperature = =default_material_print_temperature + 5 material_initial_print_temperature = =material_print_temperature - 5 material_final_print_temperature = =material_print_temperature - 10 speed_print = 60 -speed_layer_0 = 20 +speed_layer_0 = =math.ceil(speed_print * 20 / 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/ultimaker_s5/um_s5_aa0.4_CPE_High_Quality.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_CPE_High_Quality.inst.cfg index 010ad9114a..01cf298308 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_CPE_High_Quality.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_CPE_High_Quality.inst.cfg @@ -19,7 +19,7 @@ material_print_temperature = =default_material_print_temperature - 5 material_initial_print_temperature = =material_print_temperature - 5 material_final_print_temperature = =material_print_temperature - 10 speed_print = 50 -speed_layer_0 = 20 +speed_layer_0 = =math.ceil(speed_print * 20 / 50) speed_topbottom = =math.ceil(speed_print * 30 / 50) speed_wall = =math.ceil(speed_print * 30 / 50) diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_CPE_Normal_Quality.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_CPE_Normal_Quality.inst.cfg index 386350212d..bfec569199 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_CPE_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_CPE_Normal_Quality.inst.cfg @@ -17,7 +17,7 @@ machine_nozzle_heat_up_speed = 1.5 material_initial_print_temperature = =material_print_temperature - 5 material_final_print_temperature = =material_print_temperature - 10 speed_print = 55 -speed_layer_0 = 20 +speed_layer_0 = =math.ceil(speed_print * 20 / 55) speed_topbottom = =math.ceil(speed_print * 30 / 55) speed_wall = =math.ceil(speed_print * 30 / 55) diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_Nylon_Draft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_Nylon_Draft_Print.inst.cfg index ac23b19285..42c1e4c195 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_Nylon_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_Nylon_Draft_Print.inst.cfg @@ -29,7 +29,7 @@ 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 = 20 +speed_layer_0 = =math.ceil(speed_print * 20 / 70) switch_extruder_prime_speed = 30 switch_extruder_retraction_amount = 30 switch_extruder_retraction_speeds = 40 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_Nylon_Fast_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_Nylon_Fast_Print.inst.cfg index 977ba5c309..76a1773bf4 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_Nylon_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_Nylon_Fast_Print.inst.cfg @@ -29,7 +29,7 @@ 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 = 20 +speed_layer_0 = =math.ceil(speed_print * 20 / 70) switch_extruder_prime_speed = 30 switch_extruder_retraction_amount = 30 switch_extruder_retraction_speeds = 40 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_Nylon_High_Quality.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_Nylon_High_Quality.inst.cfg index 7e4ebed906..3d83a83d4e 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_Nylon_High_Quality.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_Nylon_High_Quality.inst.cfg @@ -28,7 +28,7 @@ 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 = 20 +speed_layer_0 = =math.ceil(speed_print * 20 / 70) switch_extruder_prime_speed = 30 switch_extruder_retraction_amount = 30 switch_extruder_retraction_speeds = 40 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_Nylon_Normal_Quality.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_Nylon_Normal_Quality.inst.cfg index 941561499b..5ec5bed4c5 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_Nylon_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_Nylon_Normal_Quality.inst.cfg @@ -28,7 +28,7 @@ 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 = 20 +speed_layer_0 = =math.ceil(speed_print * 20 / 70) switch_extruder_prime_speed = 30 switch_extruder_retraction_amount = 30 switch_extruder_retraction_speeds = 40 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_PC_Draft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_PC_Draft_Print.inst.cfg index 04db39fc54..14562c3763 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_PC_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_PC_Draft_Print.inst.cfg @@ -47,9 +47,9 @@ retraction_hop_only_when_collides = True retraction_min_travel = 0.8 retraction_prime_speed = 15 skin_overlap = 30 -speed_layer_0 = 25 +speed_layer_0 = =math.ceil(speed_print * 25 / 50) speed_print = 50 -speed_topbottom = 25 +speed_topbottom = =math.ceil(speed_print * 25 / 50) speed_wall = =math.ceil(speed_print * 40 / 50) speed_wall_0 = =math.ceil(speed_wall * 25 / 40) support_bottom_distance = =support_z_distance diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_PC_Fast_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_PC_Fast_Print.inst.cfg index 65fd293954..e331f446f7 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_PC_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_PC_Fast_Print.inst.cfg @@ -46,9 +46,9 @@ retraction_hop_only_when_collides = True retraction_min_travel = 0.8 retraction_prime_speed = 15 skin_overlap = 30 -speed_layer_0 = 25 +speed_layer_0 = =math.ceil(speed_print * 25 / 50) speed_print = 50 -speed_topbottom = 25 +speed_topbottom = =math.ceil(speed_print * 25 / 50) speed_wall = =math.ceil(speed_print * 40 / 50) speed_wall_0 = =math.ceil(speed_wall * 25 / 40) diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_PC_High_Quality.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_PC_High_Quality.inst.cfg index d75b918479..afbb374fe2 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_PC_High_Quality.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_PC_High_Quality.inst.cfg @@ -47,9 +47,9 @@ retraction_hop_only_when_collides = True retraction_min_travel = 0.8 retraction_prime_speed = 15 skin_overlap = 30 -speed_layer_0 = 25 +speed_layer_0 = =math.ceil(speed_print * 25 / 50) speed_print = 50 -speed_topbottom = 25 +speed_topbottom = =math.ceil(speed_print * 25 / 50) speed_wall = =math.ceil(speed_print * 40 / 50) speed_wall_0 = =math.ceil(speed_wall * 25 / 40) diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_PC_Normal_Quality.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_PC_Normal_Quality.inst.cfg index ccffa0bc7c..969d7fc29c 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_PC_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_PC_Normal_Quality.inst.cfg @@ -45,9 +45,9 @@ retraction_hop_only_when_collides = True retraction_min_travel = 0.8 retraction_prime_speed = 15 skin_overlap = 30 -speed_layer_0 = 25 +speed_layer_0 = =math.ceil(speed_print * 25 / 50) speed_print = 50 -speed_topbottom = 25 +speed_topbottom = =math.ceil(speed_print * 25 / 50) speed_wall = =math.ceil(speed_print * 40 / 50) speed_wall_0 = =math.ceil(speed_wall * 25 / 40) diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_PLA_Draft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_PLA_Draft_Print.inst.cfg index 8ea92a86d7..909af71245 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_PLA_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_PLA_Draft_Print.inst.cfg @@ -20,7 +20,7 @@ material_print_temperature = =default_material_print_temperature + 5 material_standby_temperature = 100 prime_tower_enable = False skin_overlap = 20 -speed_layer_0 = 20 +speed_layer_0 = =math.ceil(speed_print * 20 / 70) speed_topbottom = =math.ceil(speed_print * 40 / 70) speed_wall = =math.ceil(speed_print * 55 / 70) speed_wall_0 = =math.ceil(speed_wall * 45 / 50) diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_PLA_Fast_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_PLA_Fast_Print.inst.cfg index 35a6c51ea4..fea7a76971 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_PLA_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_PLA_Fast_Print.inst.cfg @@ -19,7 +19,7 @@ machine_nozzle_heat_up_speed = 1.6 material_standby_temperature = 100 prime_tower_enable = False speed_print = 70 -speed_layer_0 = 20 +speed_layer_0 = =math.ceil(speed_print * 20 / 70) speed_topbottom = =math.ceil(speed_print * 35 / 70) speed_wall = =math.ceil(speed_print * 45 / 70) speed_wall_0 = =math.ceil(speed_wall * 35 / 70) diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_PLA_High_Quality.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_PLA_High_Quality.inst.cfg index d739d132a9..d9ef5052e5 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_PLA_High_Quality.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_PLA_High_Quality.inst.cfg @@ -22,7 +22,7 @@ material_standby_temperature = 100 prime_tower_enable = False skin_overlap = 10 speed_print = 50 -speed_layer_0 = 20 +speed_layer_0 = =math.ceil(speed_print * 20 / 50) speed_topbottom = =math.ceil(speed_print * 35 / 50) speed_wall = =math.ceil(speed_print * 35 / 50) top_bottom_thickness = 1 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_PLA_Normal_Quality.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_PLA_Normal_Quality.inst.cfg index 7c86049fe1..a2eb547b08 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_PLA_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_PLA_Normal_Quality.inst.cfg @@ -20,7 +20,7 @@ machine_nozzle_heat_up_speed = 1.6 material_standby_temperature = 100 prime_tower_enable = False skin_overlap = 10 -speed_layer_0 = 20 +speed_layer_0 = =math.ceil(speed_print * 20 / 70) top_bottom_thickness = 1 wall_thickness = 1 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_PP_Draft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_PP_Draft_Print.inst.cfg index e53cd8f7a8..fb806d2a8e 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_PP_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_PP_Draft_Print.inst.cfg @@ -47,7 +47,7 @@ retraction_hop_only_when_collides = True retraction_min_travel = 0.8 retraction_prime_speed = 18 speed_equalize_flow_enabled = True -speed_layer_0 = 15 +speed_layer_0 = =math.ceil(speed_print * 15 / 25) speed_print = 25 speed_topbottom = =math.ceil(speed_print * 25 / 25) speed_travel_layer_0 = 50 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_PP_Fast_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_PP_Fast_Print.inst.cfg index e9d08feaff..30fe9772ef 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_PP_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_PP_Fast_Print.inst.cfg @@ -47,7 +47,7 @@ retraction_hop_only_when_collides = True retraction_min_travel = 0.8 retraction_prime_speed = 18 speed_equalize_flow_enabled = True -speed_layer_0 = 15 +speed_layer_0 = =math.ceil(speed_print * 15 / 25) speed_print = 25 speed_topbottom = =math.ceil(speed_print * 25 / 25) diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_PP_Normal_Quality.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_PP_Normal_Quality.inst.cfg index 58d9e1639a..7be40498f5 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_PP_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_PP_Normal_Quality.inst.cfg @@ -47,7 +47,7 @@ retraction_hop_only_when_collides = True retraction_min_travel = 0.8 retraction_prime_speed = 18 speed_equalize_flow_enabled = True -speed_layer_0 = 15 +speed_layer_0 = =math.ceil(speed_print * 15 / 25) speed_print = 25 speed_topbottom = =math.ceil(speed_print * 25 / 25) diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_TPLA_Draft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_TPLA_Draft_Print.inst.cfg index 8adebb167e..d13e6a8b68 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_TPLA_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_TPLA_Draft_Print.inst.cfg @@ -27,7 +27,7 @@ prime_tower_enable = False roofing_layer_count = 2 skin_outline_count = 0 skin_overlap = 20 -speed_layer_0 = 20 +speed_layer_0 = =math.ceil(speed_print * 20 / 50) speed_print = 50 speed_roofing = =math.ceil(speed_wall * 20 / 24) speed_topbottom = =math.ceil(speed_print * 25 / 50) diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_TPLA_Fast_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_TPLA_Fast_Print.inst.cfg index 780ad37ab4..b41f7851cf 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_TPLA_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_TPLA_Fast_Print.inst.cfg @@ -21,7 +21,7 @@ machine_nozzle_heat_up_speed = 1.6 material_print_temperature = =default_material_print_temperature -10 material_standby_temperature = 100 prime_tower_enable = False -speed_layer_0 = 20 +speed_layer_0 = =math.ceil(speed_print * 20 / 45) speed_print = 45 speed_topbottom = =math.ceil(speed_print * 35 / 45) speed_wall = =math.ceil(speed_print * 40 / 45) diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_TPLA_High_Quality.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_TPLA_High_Quality.inst.cfg index 3bcb7142e9..1c3f1470a2 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_TPLA_High_Quality.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_TPLA_High_Quality.inst.cfg @@ -22,7 +22,7 @@ material_standby_temperature = 100 prime_tower_enable = False skin_overlap = 10 speed_print = 45 -speed_layer_0 = 20 +speed_layer_0 = =math.ceil(speed_print * 20 / 45) speed_topbottom = =math.ceil(speed_print * 35 / 45) speed_wall = =math.ceil(speed_print * 40 / 45) speed_wall_0 = =math.ceil(speed_wall * 35 / 45) diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_TPLA_Normal_Quality.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_TPLA_Normal_Quality.inst.cfg index b1e7eee3bb..81a952d743 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_TPLA_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_TPLA_Normal_Quality.inst.cfg @@ -23,7 +23,7 @@ material_print_temperature = =default_material_print_temperature - 15 material_standby_temperature = 100 prime_tower_enable = False skin_overlap = 10 -speed_layer_0 = 20 +speed_layer_0 = =math.ceil(speed_print * 20 / 45) speed_print = 45 speed_topbottom = =math.ceil(speed_print * 35 / 45) speed_wall = =math.ceil(speed_print * 40 / 45) diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_TPU_Draft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_TPU_Draft_Print.inst.cfg index 56249427bf..5009b8395f 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_TPU_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_TPU_Draft_Print.inst.cfg @@ -46,7 +46,7 @@ retraction_min_travel = =line_width * 2 retraction_prime_speed = 15 skin_overlap = 5 speed_equalize_flow_enabled = True -speed_layer_0 = 18 +speed_layer_0 = =math.ceil(speed_print * 18 / 25) speed_print = 25 speed_topbottom = =math.ceil(speed_print * 25 / 25) diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_TPU_Fast_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_TPU_Fast_Print.inst.cfg index e362ffd25d..64475d822e 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_TPU_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_TPU_Fast_Print.inst.cfg @@ -46,7 +46,7 @@ retraction_min_travel = =line_width * 2 retraction_prime_speed = 15 skin_overlap = 5 speed_equalize_flow_enabled = True -speed_layer_0 = 18 +speed_layer_0 = =math.ceil(speed_print * 18 / 25) speed_print = 25 speed_topbottom = =math.ceil(speed_print * 25 / 25) diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_TPU_Normal_Quality.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_TPU_Normal_Quality.inst.cfg index 8ffe0afae6..ac6a62ae5a 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_TPU_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_TPU_Normal_Quality.inst.cfg @@ -45,7 +45,7 @@ retraction_min_travel = =line_width * 2 retraction_prime_speed = 15 skin_overlap = 5 speed_equalize_flow_enabled = True -speed_layer_0 = 18 +speed_layer_0 = =math.ceil(speed_print * 18 / 25) speed_print = 25 speed_topbottom = =math.ceil(speed_print * 25 / 25) diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_CPEP_Fast_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_CPEP_Fast_Print.inst.cfg index 4599155da4..3c1b47bfdb 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_CPEP_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_CPEP_Fast_Print.inst.cfg @@ -26,7 +26,7 @@ retraction_combing = off retraction_hop = 0.1 retraction_hop_enabled = False skin_overlap = 0 -speed_layer_0 = 15 +speed_layer_0 = =math.ceil(speed_print * 15 / 50) speed_print = 50 speed_slowdown_layers = 15 speed_topbottom = =math.ceil(speed_print * 35 / 50) diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_CPEP_Superdraft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_CPEP_Superdraft_Print.inst.cfg index 36654edf61..00ef557151 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_CPEP_Superdraft_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_CPEP_Superdraft_Print.inst.cfg @@ -26,7 +26,7 @@ retraction_combing = off retraction_hop = 0.1 retraction_hop_enabled = False skin_overlap = 0 -speed_layer_0 = 15 +speed_layer_0 = =math.ceil(speed_print * 15 / 50) speed_print = 50 speed_slowdown_layers = 8 speed_topbottom = =math.ceil(speed_print * 35 / 50) diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_CPEP_Verydraft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_CPEP_Verydraft_Print.inst.cfg index 0588f2bf34..86535d5d77 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_CPEP_Verydraft_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_CPEP_Verydraft_Print.inst.cfg @@ -26,7 +26,7 @@ retraction_combing = off retraction_hop = 0.1 retraction_hop_enabled = False skin_overlap = 0 -speed_layer_0 = 15 +speed_layer_0 = =math.ceil(speed_print * 15 / 50) speed_print = 50 speed_slowdown_layers = 10 speed_topbottom = =math.ceil(speed_print * 35 / 50) diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_PC_Fast_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_PC_Fast_Print.inst.cfg index fddb41d4b5..2e90b0215f 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_PC_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_PC_Fast_Print.inst.cfg @@ -22,7 +22,7 @@ material_standby_temperature = 100 raft_airgap = 0.5 raft_margin = 15 skin_overlap = 0 -speed_layer_0 = 15 +speed_layer_0 = =math.ceil(speed_print * 15 / 50) speed_print = 50 speed_slowdown_layers = 15 speed_topbottom = =math.ceil(speed_print * 25 / 50) diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_PC_Superdraft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_PC_Superdraft_Print.inst.cfg index 9f364651c4..cf1dcfe540 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_PC_Superdraft_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_PC_Superdraft_Print.inst.cfg @@ -21,7 +21,7 @@ material_standby_temperature = 100 raft_airgap = 0.5 raft_margin = 15 skin_overlap = 0 -speed_layer_0 = 15 +speed_layer_0 = =math.ceil(speed_print * 15 / 50) speed_print = 50 speed_slowdown_layers = 8 speed_topbottom = =math.ceil(speed_print * 25 / 50) diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_PC_Verydraft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_PC_Verydraft_Print.inst.cfg index d3ee0ed88c..7c77bf1d53 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_PC_Verydraft_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_PC_Verydraft_Print.inst.cfg @@ -22,7 +22,7 @@ material_standby_temperature = 100 raft_airgap = 0.5 raft_margin = 15 skin_overlap = 0 -speed_layer_0 = 15 +speed_layer_0 = =math.ceil(speed_print * 15 / 50) speed_print = 50 speed_slowdown_layers = 10 speed_topbottom = =math.ceil(speed_print * 25 / 50) diff --git a/resources/quality/zyyx/zyyx_agile_pro_flex_fast.inst.cfg b/resources/quality/zyyx/zyyx_agile_pro_flex_fast.inst.cfg index fe1e98747d..cc538076d2 100644 --- a/resources/quality/zyyx/zyyx_agile_pro_flex_fast.inst.cfg +++ b/resources/quality/zyyx/zyyx_agile_pro_flex_fast.inst.cfg @@ -20,8 +20,8 @@ material_print_temperature_layer_0 = 235 retraction_amount = 1.0 retraction_speed = 15 speed_print = 20 -speed_wall = 20 -speed_wall_x = 20 +speed_wall = =speed_print +speed_wall_x = =speed_print adhesion_type = brim material_flow = 105 raft_airgap = 0.2 diff --git a/resources/quality/zyyx/zyyx_agile_pro_flex_fine.inst.cfg b/resources/quality/zyyx/zyyx_agile_pro_flex_fine.inst.cfg index e0b43cfd95..1791305b92 100644 --- a/resources/quality/zyyx/zyyx_agile_pro_flex_fine.inst.cfg +++ b/resources/quality/zyyx/zyyx_agile_pro_flex_fine.inst.cfg @@ -20,8 +20,8 @@ material_print_temperature_layer_0 = 235 retraction_amount = 0.2 retraction_speed = 15 speed_print = 15 -speed_wall = 15 -speed_wall_x = 15 +speed_wall = =speed_print +speed_wall_x = =speed_print adhesion_type = brim material_flow = 105 raft_airgap = 0.1 diff --git a/resources/quality/zyyx/zyyx_agile_pro_flex_normal.inst.cfg b/resources/quality/zyyx/zyyx_agile_pro_flex_normal.inst.cfg index 959f65469a..70020f5fde 100644 --- a/resources/quality/zyyx/zyyx_agile_pro_flex_normal.inst.cfg +++ b/resources/quality/zyyx/zyyx_agile_pro_flex_normal.inst.cfg @@ -20,8 +20,8 @@ material_print_temperature_layer_0 = 235 retraction_amount = 1.0 retraction_speed = 15 speed_print = 20 -speed_wall = 15 -speed_wall_x = 20 +speed_wall = =math.ceil(speed_print * 15 / 20) +speed_wall_x = =speed_print adhesion_type = brim material_flow = 105 raft_airgap = 0.2 diff --git a/resources/quality/zyyx/zyyx_agile_pro_pla_fast.inst.cfg b/resources/quality/zyyx/zyyx_agile_pro_pla_fast.inst.cfg index 14b9d50351..0f36b6cb67 100644 --- a/resources/quality/zyyx/zyyx_agile_pro_pla_fast.inst.cfg +++ b/resources/quality/zyyx/zyyx_agile_pro_pla_fast.inst.cfg @@ -20,8 +20,8 @@ material_print_temperature_layer_0 = 225 retraction_amount = 1.5 retraction_speed = 20 speed_print = 40 -speed_wall = 40 -speed_wall_x = 40 +speed_wall = =speed_print +speed_wall_x = =speed_print adhesion_type = brim material_flow = 95 raft_airgap = 0.15 diff --git a/resources/quality/zyyx/zyyx_agile_pro_pla_fine.inst.cfg b/resources/quality/zyyx/zyyx_agile_pro_pla_fine.inst.cfg index 25f3aa45de..80ad562b2a 100644 --- a/resources/quality/zyyx/zyyx_agile_pro_pla_fine.inst.cfg +++ b/resources/quality/zyyx/zyyx_agile_pro_pla_fine.inst.cfg @@ -20,8 +20,8 @@ material_print_temperature_layer_0 = 225 retraction_amount = 0.4 retraction_speed = 20 speed_print = 35 -speed_wall = 18 -speed_wall_x = 25 +speed_wall = =math.ceil(speed_print * 18 / 35) +speed_wall_x = =math.ceil(speed_print * 25 / 35) adhesion_type = brim material_flow = 95 raft_airgap = 0.08 diff --git a/resources/quality/zyyx/zyyx_agile_pro_pla_normal.inst.cfg b/resources/quality/zyyx/zyyx_agile_pro_pla_normal.inst.cfg index 3760781e54..e3b933bc1c 100644 --- a/resources/quality/zyyx/zyyx_agile_pro_pla_normal.inst.cfg +++ b/resources/quality/zyyx/zyyx_agile_pro_pla_normal.inst.cfg @@ -20,8 +20,8 @@ material_print_temperature_layer_0 = 225 retraction_amount = 1.2 retraction_speed = 20 speed_print = 50 -speed_wall = 22 -speed_wall_x = 33 +speed_wall = =math.ceil(speed_print * 22 / 50) +speed_wall_x = =math.ceil(speed_print * 33 / 50) adhesion_type = brim material_flow = 95 raft_airgap = 0.15 From 48bac1a0f70ed9e20a52131083205e2574d0f0d2 Mon Sep 17 00:00:00 2001 From: Lipu Fei Date: Mon, 11 Jun 2018 14:45:43 +0200 Subject: [PATCH 15/34] Do not move locked nodes CURA-5347 --- cura/PlatformPhysics.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/cura/PlatformPhysics.py b/cura/PlatformPhysics.py index 6b539a4574..8ddcdbfb2f 100755 --- a/cura/PlatformPhysics.py +++ b/cura/PlatformPhysics.py @@ -8,6 +8,7 @@ from UM.Scene.SceneNode import SceneNode from UM.Scene.Iterator.BreadthFirstIterator import BreadthFirstIterator from UM.Math.Vector import Vector from UM.Scene.Selection import Selection +from UM.Scene.SceneNodeSettings import SceneNodeSettings from cura.Scene.ConvexHullDecorator import ConvexHullDecorator @@ -80,6 +81,10 @@ class PlatformPhysics: # only push away objects if this node is a printing mesh if not node.callDecoration("isNonPrintingMesh") and Application.getInstance().getPreferences().getValue("physics/automatic_push_free"): + # Do not move locked nodes + if node.getSetting(SceneNodeSettings.LockPosition): + continue + # Check for collisions between convex hulls for other_node in BreadthFirstIterator(root): # Ignore root, ourselves and anything that is not a normal SceneNode. From 2eedc96f36576fb93dedd982f4995becc10f4322 Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Mon, 11 Jun 2018 15:00:35 +0200 Subject: [PATCH 16/34] Convert to Doxygen documentation Like the rest of Cura and Uranium. --- cura/API/Backups.py | 34 +++++++++++++---------------- cura/API/__init__.py | 13 ++++++------ cura/Backups/Backup.py | 39 +++++++++++++--------------------- cura/Backups/BackupsManager.py | 29 ++++++++++++------------- 4 files changed, 50 insertions(+), 65 deletions(-) diff --git a/cura/API/Backups.py b/cura/API/Backups.py index ba416bd870..a2423bd798 100644 --- a/cura/API/Backups.py +++ b/cura/API/Backups.py @@ -3,30 +3,26 @@ from cura.Backups.BackupsManager import BackupsManager +## The back-ups API provides a version-proof bridge between Cura's +# BackupManager and plug-ins that hook into it. +# +# Usage: +# ``from cura.API import CuraAPI +# api = CuraAPI() +# api.backups.createBackup() +# api.backups.restoreBackup(my_zip_file, {"cura_release": "3.1"})`` class Backups: - """ - The backups API provides a version-proof bridge between Cura's BackupManager and plugins that hook into it. - - Usage: - from cura.API import CuraAPI - api = CuraAPI() - api.backups.createBackup() - api.backups.restoreBackup(my_zip_file, {"cura_release": "3.1"}) - """ - manager = BackupsManager() # Re-used instance of the backups manager. + ## Create a new back-up using the BackupsManager. + # \return Tuple containing a ZIP file with the back-up data and a dict + # with metadata about the back-up. def createBackup(self) -> (bytes, dict): - """ - Create a new backup using the BackupsManager. - :return: Tuple containing a ZIP file with the backup data and a dict with meta data about the backup. - """ return self.manager.createBackup() + ## Restore a back-up using the BackupsManager. + # \param zip_file A ZIP file containing the actual back-up data. + # \param meta_data Some metadata needed for restoring a back-up, like the + # Cura version number. def restoreBackup(self, zip_file: bytes, meta_data: dict) -> None: - """ - Restore a backup using the BackupManager. - :param zip_file: A ZIP file containing the actual backup data. - :param meta_data: Some meta data needed for restoring a backup, like the Cura version number. - """ return self.manager.restoreBackup(zip_file, meta_data) diff --git a/cura/API/__init__.py b/cura/API/__init__.py index 7dd5d8f79e..13f6722336 100644 --- a/cura/API/__init__.py +++ b/cura/API/__init__.py @@ -3,14 +3,13 @@ from UM.PluginRegistry import PluginRegistry from cura.API.Backups import Backups - +## The official Cura API that plug-ins can use to interact with Cura. +# +# Python does not technically prevent talking to other classes as well, but +# this API provides a version-safe interface with proper deprecation warnings +# etc. Usage of any other methods than the ones provided in this API can cause +# plug-ins to be unstable. class CuraAPI: - """ - The official Cura API that plugins can use to interact with Cura. - Python does not technically prevent talking to other classes as well, - but this API provides a version-safe interface with proper deprecation warnings etc. - Usage of any other methods than the ones provided in this API can cause plugins to be unstable. - """ # For now we use the same API version to be consistent. VERSION = PluginRegistry.APIVersion diff --git a/cura/Backups/Backup.py b/cura/Backups/Backup.py index c4fe720b2b..70807a96d7 100644 --- a/cura/Backups/Backup.py +++ b/cura/Backups/Backup.py @@ -17,12 +17,11 @@ from UM.Resources import Resources from cura.CuraApplication import CuraApplication +## The back-up class holds all data about a back-up. +# +# It is also responsible for reading and writing the zip file to the user data +# folder. class Backup: - """ - The backup class holds all data about a backup. - It is also responsible for reading and writing the zip file to the user data folder. - """ - # These files should be ignored when making a backup. IGNORED_FILES = [r"cura\.log", r"plugins\.json", r"cache", r"__pycache__", r"\.qmlc", r"\.pyc"] @@ -33,10 +32,8 @@ class Backup: self.zip_file = zip_file # type: Optional[bytes] self.meta_data = meta_data # type: Optional[dict] + ## Create a back-up from the current user config folder. def makeFromCurrent(self) -> (bool, Optional[str]): - """ - Create a backup from the current user config folder. - """ cura_release = CuraApplication.getInstance().getVersion() version_data_dir = Resources.getDataStoragePath() @@ -75,12 +72,10 @@ class Backup: "plugin_count": str(plugin_count) } + ## Make a full archive from the given root path with the given name. + # \param root_path The root directory to archive recursively. + # \return The archive as bytes. def _makeArchive(self, buffer: "io.BytesIO", root_path: str) -> Optional[ZipFile]: - """ - Make a full archive from the given root path with the given name. - :param root_path: The root directory to archive recursively. - :return: The archive as bytes. - """ ignore_string = re.compile("|".join(self.IGNORED_FILES)) try: archive = ZipFile(buffer, "w", ZIP_DEFLATED) @@ -99,15 +94,13 @@ class Backup: "Could not create archive from user data directory: {}".format(error))) return None + ## Show a UI message. def _showMessage(self, message: str) -> None: - """Show a UI message""" Message(message, title=self.catalog.i18nc("@info:title", "Backup"), lifetime=30).show() + ## Restore this back-up. + # \return Whether we had success or not. def restore(self) -> bool: - """ - Restore this backups - :return: A boolean whether we had success or not. - """ if not self.zip_file or not self.meta_data or not self.meta_data.get("cura_release", None): # We can restore without the minimum required information. Logger.log("w", "Tried to restore a Cura backup without having proper data or meta data.") @@ -140,14 +133,12 @@ class Backup: return extracted + ## Extract the whole archive to the given target path. + # \param archive The archive as ZipFile. + # \param target_path The target path. + # \return Whether we had success or not. @staticmethod def _extractArchive(archive: "ZipFile", target_path: str) -> bool: - """ - Extract the whole archive to the given target path. - :param archive: The archive as ZipFile. - :param target_path: The target path. - :return: A boolean whether we had success or not. - """ Logger.log("d", "Removing current data in location: %s", target_path) Resources.factoryReset() Logger.log("d", "Extracting backup to location: %s", target_path) diff --git a/cura/Backups/BackupsManager.py b/cura/Backups/BackupsManager.py index fa75ddb587..850b0a2edc 100644 --- a/cura/Backups/BackupsManager.py +++ b/cura/Backups/BackupsManager.py @@ -7,19 +7,18 @@ from cura.Backups.Backup import Backup from cura.CuraApplication import CuraApplication +## The BackupsManager is responsible for managing the creating and restoring of +# back-ups. +# +# Back-ups themselves are represented in a different class. class BackupsManager: - """ - The BackupsManager is responsible for managing the creating and restoring of backups. - Backups themselves are represented in a different class. - """ def __init__(self): self._application = CuraApplication.getInstance() + ## Get a back-up of the current configuration. + # \return A tuple containing a ZipFile (the actual back-up) and a dict + # containing some metadata (like version). def createBackup(self) -> (Optional[bytes], Optional[dict]): - """ - Get a backup of the current configuration. - :return: A Tuple containing a ZipFile (the actual backup) and a dict containing some meta data (like version). - """ self._disableAutoSave() backup = Backup() backup.makeFromCurrent() @@ -27,12 +26,11 @@ class BackupsManager: # We don't return a Backup here because we want plugins only to interact with our API and not full objects. return backup.zip_file, backup.meta_data + ## Restore a back-up from a given ZipFile. + # \param zip_file A bytes object containing the actual back-up. + # \param meta_data A dict containing some metadata that is needed to + # restore the back-up correctly. def restoreBackup(self, zip_file: bytes, meta_data: dict) -> None: - """ - Restore a backup from a given ZipFile. - :param zip_file: A bytes object containing the actual backup. - :param meta_data: A dict containing some meta data that is needed to restore the backup correctly. - """ if not meta_data.get("cura_release", None): # If there is no "cura_release" specified in the meta data, we don't execute a backup restore. Logger.log("w", "Tried to restore a backup without specifying a Cura version number.") @@ -47,10 +45,11 @@ class BackupsManager: # We don't want to store the data at this point as that would override the just-restored backup. self._application.windowClosed(save_data=False) + ## Here we try to disable the auto-save plug-in as it might interfere with + # restoring a back-up. def _disableAutoSave(self): - """Here we try to disable the auto-save plugin as it might interfere with restoring a backup.""" self._application.setSaveDataEnabled(False) + ## Re-enable auto-save after we're done. def _enableAutoSave(self): - """Re-enable auto-save after we're done.""" self._application.setSaveDataEnabled(True) From a8b27905c8a0da7d8a4f9663bebcb4c12153e44a Mon Sep 17 00:00:00 2001 From: Andreea Scorojitu Date: Mon, 11 Jun 2018 15:46:42 +0200 Subject: [PATCH 17/34] Cleaned_up_profiles_name_UM2, CURA-5462 Quality was removed from the name and Low Quality is now Normal. --- resources/quality/coarse.inst.cfg | 2 +- resources/quality/draft.inst.cfg | 2 +- resources/quality/extra_coarse.inst.cfg | 2 +- resources/quality/fast.inst.cfg | 2 +- resources/quality/ultimaker2/um2_draft.inst.cfg | 2 +- resources/quality/ultimaker2/um2_fast.inst.cfg | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/resources/quality/coarse.inst.cfg b/resources/quality/coarse.inst.cfg index ffbd57263b..478d8bc30c 100644 --- a/resources/quality/coarse.inst.cfg +++ b/resources/quality/coarse.inst.cfg @@ -1,6 +1,6 @@ [general] version = 4 -name = Coarse Quality +name = Coarse definition = fdmprinter [metadata] diff --git a/resources/quality/draft.inst.cfg b/resources/quality/draft.inst.cfg index 2e0e97e812..cf32886039 100644 --- a/resources/quality/draft.inst.cfg +++ b/resources/quality/draft.inst.cfg @@ -1,6 +1,6 @@ [general] version = 4 -name = Draft Quality +name = Draft definition = fdmprinter [metadata] diff --git a/resources/quality/extra_coarse.inst.cfg b/resources/quality/extra_coarse.inst.cfg index 98aeecbc79..271dfb8a63 100644 --- a/resources/quality/extra_coarse.inst.cfg +++ b/resources/quality/extra_coarse.inst.cfg @@ -1,6 +1,6 @@ [general] version = 4 -name = Extra Coarse Quality +name = Extra Coarse definition = fdmprinter [metadata] diff --git a/resources/quality/fast.inst.cfg b/resources/quality/fast.inst.cfg index a725947eba..a79184de99 100644 --- a/resources/quality/fast.inst.cfg +++ b/resources/quality/fast.inst.cfg @@ -1,6 +1,6 @@ [general] version = 4 -name = Low Quality +name = Normal definition = fdmprinter [metadata] diff --git a/resources/quality/ultimaker2/um2_draft.inst.cfg b/resources/quality/ultimaker2/um2_draft.inst.cfg index faf2b68208..27c40da15f 100644 --- a/resources/quality/ultimaker2/um2_draft.inst.cfg +++ b/resources/quality/ultimaker2/um2_draft.inst.cfg @@ -1,6 +1,6 @@ [general] version = 4 -name = Draft Quality +name = Draft definition = ultimaker2 [metadata] diff --git a/resources/quality/ultimaker2/um2_fast.inst.cfg b/resources/quality/ultimaker2/um2_fast.inst.cfg index 99ddb540cc..731faf2347 100644 --- a/resources/quality/ultimaker2/um2_fast.inst.cfg +++ b/resources/quality/ultimaker2/um2_fast.inst.cfg @@ -1,6 +1,6 @@ [general] version = 4 -name = Low Quality +name = Low definition = ultimaker2 [metadata] From b3f6e5c9e0534e836325ffb7bc2fb4757cb59fc9 Mon Sep 17 00:00:00 2001 From: Jack Ha Date: Mon, 11 Jun 2018 15:52:28 +0200 Subject: [PATCH 18/34] CURA-5327 renamed MachineManager._updateMaterialWithVariant to updateMaterialWithVariant --- cura/Settings/MachineManager.py | 12 ++++++------ .../MachineSettingsAction/MachineSettingsAction.py | 2 +- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/cura/Settings/MachineManager.py b/cura/Settings/MachineManager.py index 9abdd2cb96..1039085cf3 100755 --- a/cura/Settings/MachineManager.py +++ b/cura/Settings/MachineManager.py @@ -309,7 +309,7 @@ class MachineManager(QObject): # Update materials to make sure that the diameters match with the machine's for position in global_stack.extruders: - self._updateMaterialWithVariant(position) + self.updateMaterialWithVariant(position) global_quality = global_stack.quality quality_type = global_quality.getMetaDataEntry("quality_type") @@ -1205,7 +1205,7 @@ class MachineManager(QObject): current_quality_type, quality_type) self._setQualityGroup(candidate_quality_groups[quality_type], empty_quality_changes = True) - def _updateMaterialWithVariant(self, position: Optional[str]): + def updateMaterialWithVariant(self, position: Optional[str]): if self._global_container_stack is None: return if position is None: @@ -1291,7 +1291,7 @@ class MachineManager(QObject): self._setMaterial(position, material_container_node) else: self._global_container_stack.extruders[position].material = self._empty_material_container - self._updateMaterialWithVariant(position) + self.updateMaterialWithVariant(position) if configuration.buildplateConfiguration is not None: global_variant_container_node = self._variant_manager.getBuildplateVariantNode(self._global_container_stack.definition.getId(), configuration.buildplateConfiguration) @@ -1337,7 +1337,7 @@ class MachineManager(QObject): self.blurSettings.emit() with postponeSignals(*self._getContainerChangedSignals(), compress = CompressTechnique.CompressPerParameterValue): self._setGlobalVariant(container_node) - self._updateMaterialWithVariant(None) # Update all materials + self.updateMaterialWithVariant(None) # Update all materials self._updateQualityWithMaterial() @pyqtSlot(str, str) @@ -1374,7 +1374,7 @@ class MachineManager(QObject): self.blurSettings.emit() with postponeSignals(*self._getContainerChangedSignals(), compress = CompressTechnique.CompressPerParameterValue): self._setVariantNode(position, container_node) - self._updateMaterialWithVariant(position) + self.updateMaterialWithVariant(position) self._updateQualityWithMaterial() # See if we need to show the Discard or Keep changes screen @@ -1438,5 +1438,5 @@ class MachineManager(QObject): if self._global_container_stack is None: return with postponeSignals(*self._getContainerChangedSignals(), compress = CompressTechnique.CompressPerParameterValue): - self._updateMaterialWithVariant(None) + self.updateMaterialWithVariant(None) self._updateQualityWithMaterial() diff --git a/plugins/MachineSettingsAction/MachineSettingsAction.py b/plugins/MachineSettingsAction/MachineSettingsAction.py index 974ecf4b02..0f8e0fa1ca 100755 --- a/plugins/MachineSettingsAction/MachineSettingsAction.py +++ b/plugins/MachineSettingsAction/MachineSettingsAction.py @@ -158,4 +158,4 @@ class MachineSettingsAction(MachineAction): @pyqtSlot(int) def updateMaterialForDiameter(self, extruder_position: int): # Updates the material container to a material that matches the material diameter set for the printer - self._application.getMachineManager()._updateMaterialWithVariant(extruder_position) + self._application.getMachineManager().updateMaterialWithVariant(extruder_position) From 6e575c9cf5738efa8de9e1d445cb51396ae3768b Mon Sep 17 00:00:00 2001 From: Diego Prado Gesto Date: Mon, 11 Jun 2018 15:54:11 +0200 Subject: [PATCH 19/34] CURA-5463 The packages that are scheduled to be removed, are not old packages. --- plugins/Toolbox/src/Toolbox.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/plugins/Toolbox/src/Toolbox.py b/plugins/Toolbox/src/Toolbox.py index c29c673c8a..2f26e21d65 100644 --- a/plugins/Toolbox/src/Toolbox.py +++ b/plugins/Toolbox/src/Toolbox.py @@ -262,12 +262,14 @@ class Toolbox(QObject, Extension): # list of old plugins old_plugin_ids = self._plugin_registry.getInstalledPlugins() installed_package_ids = self._package_manager.getAllInstalledPackageIDs() + scheduled_to_remove_package_ids = self._package_manager.getToRemovePackageIDs() self._old_plugin_ids = [] self._old_plugin_metadata = [] for plugin_id in old_plugin_ids: - if plugin_id not in installed_package_ids: + # Neither the installed packages nor the packages that are scheduled to remove are old plugins + if plugin_id not in installed_package_ids and plugin_id not in scheduled_to_remove_package_ids: Logger.log('i', 'Found a plugin that was installed with the old plugin browser: %s', plugin_id) old_metadata = self._plugin_registry.getMetaData(plugin_id) From 89c84eb93b1ebfb7db0226ae4c4d343cdaf91c02 Mon Sep 17 00:00:00 2001 From: Jack Ha Date: Mon, 11 Jun 2018 17:00:43 +0200 Subject: [PATCH 20/34] CURA-5327 fix crash when changing material diameter --- plugins/MachineSettingsAction/MachineSettingsAction.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/MachineSettingsAction/MachineSettingsAction.py b/plugins/MachineSettingsAction/MachineSettingsAction.py index 0f8e0fa1ca..4c459e69cf 100755 --- a/plugins/MachineSettingsAction/MachineSettingsAction.py +++ b/plugins/MachineSettingsAction/MachineSettingsAction.py @@ -158,4 +158,4 @@ class MachineSettingsAction(MachineAction): @pyqtSlot(int) def updateMaterialForDiameter(self, extruder_position: int): # Updates the material container to a material that matches the material diameter set for the printer - self._application.getMachineManager().updateMaterialWithVariant(extruder_position) + self._application.getMachineManager().updateMaterialWithVariant(str(extruder_position)) From 3be58e7d6b4103f45c36efe50ad04553b4ec0c0a Mon Sep 17 00:00:00 2001 From: Diego Prado Gesto Date: Mon, 11 Jun 2018 17:04:18 +0200 Subject: [PATCH 21/34] CURA-5462 Change Low name to Normal --- resources/quality/ultimaker2/um2_fast.inst.cfg | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/quality/ultimaker2/um2_fast.inst.cfg b/resources/quality/ultimaker2/um2_fast.inst.cfg index 092b787785..236a6f73cd 100644 --- a/resources/quality/ultimaker2/um2_fast.inst.cfg +++ b/resources/quality/ultimaker2/um2_fast.inst.cfg @@ -1,6 +1,6 @@ [general] version = 4 -name = Low +name = Normal definition = ultimaker2 [metadata] From e554adc1c8cfc21067102808238dcac9942dbb06 Mon Sep 17 00:00:00 2001 From: Diego Prado Gesto Date: Tue, 12 Jun 2018 10:40:02 +0200 Subject: [PATCH 22/34] CURA-5453 Remove duplicate line. --- cura/Settings/ContainerManager.py | 1 - 1 file changed, 1 deletion(-) diff --git a/cura/Settings/ContainerManager.py b/cura/Settings/ContainerManager.py index b1800facb5..6b252d2286 100644 --- a/cura/Settings/ContainerManager.py +++ b/cura/Settings/ContainerManager.py @@ -313,7 +313,6 @@ class ContainerManager(QObject): self._machine_manager.blurSettings.emit() - global_stack = self._machine_manager.activeMachine current_quality_changes_name = global_stack.qualityChanges.getName() current_quality_type = global_stack.quality.getMetaDataEntry("quality_type") extruder_stacks = list(global_stack.extruders.values()) From cc11e0a2425f0f5a6cb71005cdee1c92cd6736c2 Mon Sep 17 00:00:00 2001 From: Lipu Fei Date: Tue, 12 Jun 2018 10:50:08 +0200 Subject: [PATCH 23/34] Fix for code style checks CURA-5456 --- cura/Settings/SettingOverrideDecorator.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/cura/Settings/SettingOverrideDecorator.py b/cura/Settings/SettingOverrideDecorator.py index f14977866e..2a903d4a33 100644 --- a/cura/Settings/SettingOverrideDecorator.py +++ b/cura/Settings/SettingOverrideDecorator.py @@ -95,7 +95,7 @@ class SettingOverrideDecorator(SceneNodeDecorator): # # \return An extruder's container stack. def getActiveExtruder(self): - return self._extruder_stack.getId() + return None if self._extruder_stack is None else self._extruder_stack.getId() ## Gets the signal that emits if the active extruder changed. # @@ -154,10 +154,13 @@ class SettingOverrideDecorator(SceneNodeDecorator): # # \param extruder_stack_id The new extruder stack to print with. def setActiveExtruder(self, extruder_stack_id): - if self._extruder_stack.getId() == extruder_stack_id: + if self._extruder_stack is None or self._extruder_stack.getId() == extruder_stack_id: return global_stack = Application.getInstance().getMachineManager().activeMachine + if global_stack is None: + return + for extruder in global_stack.extruders.values(): if extruder.getId() == extruder_stack_id: self._extruder_stack = extruder From c5d48a3a9a87f9ecdecb6466f6a057bb58f24b55 Mon Sep 17 00:00:00 2001 From: Diego Prado Gesto Date: Tue, 12 Jun 2018 11:21:36 +0200 Subject: [PATCH 24/34] CURA-5456 Fix some code-style --- cura/Settings/SettingOverrideDecorator.py | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/cura/Settings/SettingOverrideDecorator.py b/cura/Settings/SettingOverrideDecorator.py index 2a903d4a33..a5acb79881 100644 --- a/cura/Settings/SettingOverrideDecorator.py +++ b/cura/Settings/SettingOverrideDecorator.py @@ -3,6 +3,7 @@ import copy import uuid +from typing import cast from UM.Scene.SceneNodeDecorator import SceneNodeDecorator from UM.Signal import Signal, signalemitter @@ -12,6 +13,7 @@ from UM.Logger import Logger from UM.Util import parseBool from UM.Application import Application +from cura.Settings.CuraContainerStack import CuraContainerStack from cura.Settings.PerObjectContainerStack import PerObjectContainerStack from cura.Settings.ExtruderManager import ExtruderManager @@ -62,6 +64,8 @@ class SettingOverrideDecorator(SceneNodeDecorator): if not parseBool(self._extruder_stack.getMetaDataEntry("enabled", "True")): # switch to the first extruder that's available global_stack = Application.getInstance().getMachineManager().activeMachine + if global_stack is None: + return for _, extruder in sorted(list(global_stack.extruders.items())): if parseBool(extruder.getMetaDataEntry("enabled", "True")): self._extruder_stack = extruder @@ -82,7 +86,10 @@ class SettingOverrideDecorator(SceneNodeDecorator): deep_copy._stack.replaceContainer(0, instance_container) # Properly set the right extruder on the copy - deep_copy.setActiveExtruder(self._extruder_stack.getId()) + if self._extruder_stack is None: + deep_copy._extruder_stack = None + else: + deep_copy.setActiveExtruder(self._extruder_stack.getId()) # use value from the stack because there can be a delay in signal triggering and "_is_non_printing_mesh" # has not been updated yet. @@ -148,12 +155,14 @@ class SettingOverrideDecorator(SceneNodeDecorator): Application.getInstance().getBackend().needsSlicing() Application.getInstance().getBackend().tickle() else: - self._stack.setNextStack(Application.getInstance().getGlobalContainerStack()) + global_stack = Application.getInstance().getGlobalContainerStack() + if global_stack: + self._stack.setNextStack(cast(CuraContainerStack, global_stack)) ## Changes the extruder with which to print this node. # # \param extruder_stack_id The new extruder stack to print with. - def setActiveExtruder(self, extruder_stack_id): + def setActiveExtruder(self, extruder_stack_id: str) -> None: if self._extruder_stack is None or self._extruder_stack.getId() == extruder_stack_id: return From c31d329657530a8543c297916cfa54542a1abca5 Mon Sep 17 00:00:00 2001 From: Diego Prado Gesto Date: Tue, 12 Jun 2018 13:20:20 +0200 Subject: [PATCH 25/34] Remove preference 'arrange models on load' since it was experimental and now the arranger makes the job. --- cura/CuraApplication.py | 5 +---- resources/qml/Preferences/GeneralPage.qml | 15 --------------- 2 files changed, 1 insertion(+), 19 deletions(-) diff --git a/cura/CuraApplication.py b/cura/CuraApplication.py index af65d63e70..e651ef5413 100755 --- a/cura/CuraApplication.py +++ b/cura/CuraApplication.py @@ -513,7 +513,6 @@ class CuraApplication(QtApplication): preferences.addPreference("cura/asked_dialog_on_project_save", False) preferences.addPreference("cura/choice_on_profile_override", "always_ask") preferences.addPreference("cura/choice_on_open_project", "always_ask") - preferences.addPreference("cura/not_arrange_objects_on_load", False) preferences.addPreference("cura/use_multi_build_plate", False) preferences.addPreference("cura/currency", "€") @@ -1603,9 +1602,7 @@ class CuraApplication(QtApplication): self._currently_loading_files.remove(filename) self.fileLoaded.emit(filename) - arrange_objects_on_load = ( - not self.getPreferences().getValue("cura/use_multi_build_plate") or - not self.getPreferences().getValue("cura/not_arrange_objects_on_load")) + arrange_objects_on_load = not self.getPreferences().getValue("cura/use_multi_build_plate") target_build_plate = self.getMultiBuildPlateModel().activeBuildPlate if arrange_objects_on_load else -1 root = self.getController().getScene().getRoot() diff --git a/resources/qml/Preferences/GeneralPage.qml b/resources/qml/Preferences/GeneralPage.qml index 5de74ac3a8..5e3c4f700b 100644 --- a/resources/qml/Preferences/GeneralPage.qml +++ b/resources/qml/Preferences/GeneralPage.qml @@ -741,21 +741,6 @@ UM.PreferencesPage } } - UM.TooltipArea - { - width: childrenRect.width - height: childrenRect.height - text: catalog.i18nc("@info:tooltip", "Should newly loaded models be arranged on the build plate? Used in conjunction with multi build plate (EXPERIMENTAL)") - - CheckBox - { - id: arrangeOnLoadCheckbox - text: catalog.i18nc("@option:check", "Do not arrange objects on load") - checked: boolCheck(UM.Preferences.getValue("cura/not_arrange_objects_on_load")) - onCheckedChanged: UM.Preferences.setValue("cura/not_arrange_objects_on_load", checked) - } - } - Connections { target: UM.Preferences From 7cd0f57f2249bf51e251aa7be2f6391b71e06614 Mon Sep 17 00:00:00 2001 From: Diego Prado Gesto Date: Tue, 12 Jun 2018 13:32:54 +0200 Subject: [PATCH 26/34] Make the slider label width adjustable depending on the number of digits of the total number of layers. --- plugins/SimulationView/SimulationSliderLabel.qml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/plugins/SimulationView/SimulationSliderLabel.qml b/plugins/SimulationView/SimulationSliderLabel.qml index 6f7749df63..b3824e5344 100644 --- a/plugins/SimulationView/SimulationSliderLabel.qml +++ b/plugins/SimulationView/SimulationSliderLabel.qml @@ -53,7 +53,7 @@ UM.PointingRectangle { verticalCenter: parent.verticalCenter } - width: 40 * screenScaleFactor + width: maximumValue.toString().length * 10 * screenScaleFactor text: sliderLabelRoot.value + startFrom // the current handle value, add 1 because layers is an array horizontalAlignment: TextInput.AlignRight @@ -77,11 +77,12 @@ UM.PointingRectangle { if (valueLabel.text != "") { // -startFrom because we need to convert back to an array structure sliderLabelRoot.setValue(parseInt(valueLabel.text) - startFrom) + } } validator: IntValidator { - bottom:startFrom + bottom: startFrom top: sliderLabelRoot.maximumValue + startFrom // +startFrom because maybe we want to start in a different value rather than 0 } } From b9a94a1025ee335027f0148a3a71e6e2512fbb75 Mon Sep 17 00:00:00 2001 From: Diego Prado Gesto Date: Tue, 12 Jun 2018 13:40:28 +0200 Subject: [PATCH 27/34] Adjust the slider label width a bit to look ok in macOS --- plugins/SimulationView/SimulationSliderLabel.qml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/SimulationView/SimulationSliderLabel.qml b/plugins/SimulationView/SimulationSliderLabel.qml index b3824e5344..8615a382da 100644 --- a/plugins/SimulationView/SimulationSliderLabel.qml +++ b/plugins/SimulationView/SimulationSliderLabel.qml @@ -53,7 +53,7 @@ UM.PointingRectangle { verticalCenter: parent.verticalCenter } - width: maximumValue.toString().length * 10 * screenScaleFactor + width: maximumValue.toString().length * 12 * screenScaleFactor text: sliderLabelRoot.value + startFrom // the current handle value, add 1 because layers is an array horizontalAlignment: TextInput.AlignRight From 3bb65a276091ef7593543dfba7b72eb447f06cc8 Mon Sep 17 00:00:00 2001 From: Lipu Fei Date: Tue, 12 Jun 2018 16:28:42 +0200 Subject: [PATCH 28/34] No need to deepcopy before auto-arrange --- cura/Arranging/Arrange.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cura/Arranging/Arrange.py b/cura/Arranging/Arrange.py index 21ed45dbf1..4005f436be 100644 --- a/cura/Arranging/Arrange.py +++ b/cura/Arranging/Arrange.py @@ -86,7 +86,7 @@ class Arrange: # \param offset_shape_arr ShapeArray with offset, for placing the shape # \param hull_shape_arr ShapeArray without offset, used to find location def findNodePlacement(self, node, offset_shape_arr, hull_shape_arr, step = 1): - new_node = copy.deepcopy(node) + new_node = node best_spot = self.bestSpot( hull_shape_arr, start_prio = self._last_priority, step = step) x, y = best_spot.x, best_spot.y From 1b3706e172f97812e2b78371303c8f93f7c7ef62 Mon Sep 17 00:00:00 2001 From: Lipu Fei Date: Wed, 13 Jun 2018 08:59:13 +0200 Subject: [PATCH 29/34] Fix missing new quality_changes CURA-5471 Otherwise they don't get saved... --- cura/Settings/ContainerManager.py | 1 + 1 file changed, 1 insertion(+) diff --git a/cura/Settings/ContainerManager.py b/cura/Settings/ContainerManager.py index 6b252d2286..0ba4963886 100644 --- a/cura/Settings/ContainerManager.py +++ b/cura/Settings/ContainerManager.py @@ -323,6 +323,7 @@ class ContainerManager(QObject): if quality_changes.getId() == "empty_quality_changes": quality_changes = self._quality_manager._createQualityChanges(current_quality_type, current_quality_changes_name, global_stack, stack) + self._container_registry.addContainer(quality_changes) stack.qualityChanges = quality_changes if not quality_changes or self._container_registry.isReadOnly(quality_changes.getId()): From abed6052d08cbf7c534d897ac90c153a411a992d Mon Sep 17 00:00:00 2001 From: Lipu Fei Date: Wed, 13 Jun 2018 10:33:46 +0200 Subject: [PATCH 30/34] Revert "CURA-5456 Fix some code-style" CURA-5456 This reverts commit c5d48a3a9a87f9ecdecb6466f6a057bb58f24b55. --- cura/Settings/SettingOverrideDecorator.py | 15 +++------------ 1 file changed, 3 insertions(+), 12 deletions(-) diff --git a/cura/Settings/SettingOverrideDecorator.py b/cura/Settings/SettingOverrideDecorator.py index a5acb79881..2a903d4a33 100644 --- a/cura/Settings/SettingOverrideDecorator.py +++ b/cura/Settings/SettingOverrideDecorator.py @@ -3,7 +3,6 @@ import copy import uuid -from typing import cast from UM.Scene.SceneNodeDecorator import SceneNodeDecorator from UM.Signal import Signal, signalemitter @@ -13,7 +12,6 @@ from UM.Logger import Logger from UM.Util import parseBool from UM.Application import Application -from cura.Settings.CuraContainerStack import CuraContainerStack from cura.Settings.PerObjectContainerStack import PerObjectContainerStack from cura.Settings.ExtruderManager import ExtruderManager @@ -64,8 +62,6 @@ class SettingOverrideDecorator(SceneNodeDecorator): if not parseBool(self._extruder_stack.getMetaDataEntry("enabled", "True")): # switch to the first extruder that's available global_stack = Application.getInstance().getMachineManager().activeMachine - if global_stack is None: - return for _, extruder in sorted(list(global_stack.extruders.items())): if parseBool(extruder.getMetaDataEntry("enabled", "True")): self._extruder_stack = extruder @@ -86,10 +82,7 @@ class SettingOverrideDecorator(SceneNodeDecorator): deep_copy._stack.replaceContainer(0, instance_container) # Properly set the right extruder on the copy - if self._extruder_stack is None: - deep_copy._extruder_stack = None - else: - deep_copy.setActiveExtruder(self._extruder_stack.getId()) + deep_copy.setActiveExtruder(self._extruder_stack.getId()) # use value from the stack because there can be a delay in signal triggering and "_is_non_printing_mesh" # has not been updated yet. @@ -155,14 +148,12 @@ class SettingOverrideDecorator(SceneNodeDecorator): Application.getInstance().getBackend().needsSlicing() Application.getInstance().getBackend().tickle() else: - global_stack = Application.getInstance().getGlobalContainerStack() - if global_stack: - self._stack.setNextStack(cast(CuraContainerStack, global_stack)) + self._stack.setNextStack(Application.getInstance().getGlobalContainerStack()) ## Changes the extruder with which to print this node. # # \param extruder_stack_id The new extruder stack to print with. - def setActiveExtruder(self, extruder_stack_id: str) -> None: + def setActiveExtruder(self, extruder_stack_id): if self._extruder_stack is None or self._extruder_stack.getId() == extruder_stack_id: return From 880e09803147e80eb7ae51127867f33d6b4a9704 Mon Sep 17 00:00:00 2001 From: Lipu Fei Date: Wed, 13 Jun 2018 10:33:55 +0200 Subject: [PATCH 31/34] Revert "Fix for code style checks" CURA-5456 This reverts commit cc11e0a2425f0f5a6cb71005cdee1c92cd6736c2. --- cura/Settings/SettingOverrideDecorator.py | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/cura/Settings/SettingOverrideDecorator.py b/cura/Settings/SettingOverrideDecorator.py index 2a903d4a33..f14977866e 100644 --- a/cura/Settings/SettingOverrideDecorator.py +++ b/cura/Settings/SettingOverrideDecorator.py @@ -95,7 +95,7 @@ class SettingOverrideDecorator(SceneNodeDecorator): # # \return An extruder's container stack. def getActiveExtruder(self): - return None if self._extruder_stack is None else self._extruder_stack.getId() + return self._extruder_stack.getId() ## Gets the signal that emits if the active extruder changed. # @@ -154,13 +154,10 @@ class SettingOverrideDecorator(SceneNodeDecorator): # # \param extruder_stack_id The new extruder stack to print with. def setActiveExtruder(self, extruder_stack_id): - if self._extruder_stack is None or self._extruder_stack.getId() == extruder_stack_id: + if self._extruder_stack.getId() == extruder_stack_id: return global_stack = Application.getInstance().getMachineManager().activeMachine - if global_stack is None: - return - for extruder in global_stack.extruders.values(): if extruder.getId() == extruder_stack_id: self._extruder_stack = extruder From b0b4f78cf2b6243d7bd29fb0f3312a039b69262e Mon Sep 17 00:00:00 2001 From: Lipu Fei Date: Wed, 13 Jun 2018 10:34:01 +0200 Subject: [PATCH 32/34] Revert "Update SettingOverrideDecorator upon extruder enabled/disabled" CURA-5456 This reverts commit 7a6e7112765c386c7d1ac1ac52fce132b67240ba. --- cura/Settings/SettingOverrideDecorator.py | 52 ++++++++--------------- 1 file changed, 18 insertions(+), 34 deletions(-) diff --git a/cura/Settings/SettingOverrideDecorator.py b/cura/Settings/SettingOverrideDecorator.py index f14977866e..27ae1d69f0 100644 --- a/cura/Settings/SettingOverrideDecorator.py +++ b/cura/Settings/SettingOverrideDecorator.py @@ -9,7 +9,6 @@ from UM.Signal import Signal, signalemitter from UM.Settings.InstanceContainer import InstanceContainer from UM.Settings.ContainerRegistry import ContainerRegistry from UM.Logger import Logger -from UM.Util import parseBool from UM.Application import Application @@ -40,7 +39,7 @@ class SettingOverrideDecorator(SceneNodeDecorator): user_container = InstanceContainer(container_id = self._generateUniqueName()) user_container.addMetaDataEntry("type", "user") self._stack.userChanges = user_container - self._extruder_stack = ExtruderManager.getInstance().getExtruderStack(0) + self._extruder_stack = ExtruderManager.getInstance().getExtruderStack(0).getId() self._is_non_printing_mesh = False self._is_non_thumbnail_visible_mesh = False @@ -49,25 +48,13 @@ class SettingOverrideDecorator(SceneNodeDecorator): Application.getInstance().getContainerRegistry().addContainer(self._stack) - Application.getInstance().globalContainerStackChanged.connect(self._onNumberOfExtrudersEnabledChanged) - Application.getInstance().getMachineManager().numberExtrudersEnabledChanged.connect(self._onNumberOfExtrudersEnabledChanged) - + Application.getInstance().globalContainerStackChanged.connect(self._updateNextStack) self.activeExtruderChanged.connect(self._updateNextStack) self._updateNextStack() def _generateUniqueName(self): return "SettingOverrideInstanceContainer-%s" % uuid.uuid1() - def _onNumberOfExtrudersEnabledChanged(self, *args, **kwargs): - if not parseBool(self._extruder_stack.getMetaDataEntry("enabled", "True")): - # switch to the first extruder that's available - global_stack = Application.getInstance().getMachineManager().activeMachine - for _, extruder in sorted(list(global_stack.extruders.items())): - if parseBool(extruder.getMetaDataEntry("enabled", "True")): - self._extruder_stack = extruder - self._updateNextStack() - break - def __deepcopy__(self, memo): ## Create a fresh decorator object deep_copy = SettingOverrideDecorator() @@ -82,7 +69,7 @@ class SettingOverrideDecorator(SceneNodeDecorator): deep_copy._stack.replaceContainer(0, instance_container) # Properly set the right extruder on the copy - deep_copy.setActiveExtruder(self._extruder_stack.getId()) + deep_copy.setActiveExtruder(self._extruder_stack) # use value from the stack because there can be a delay in signal triggering and "_is_non_printing_mesh" # has not been updated yet. @@ -95,7 +82,7 @@ class SettingOverrideDecorator(SceneNodeDecorator): # # \return An extruder's container stack. def getActiveExtruder(self): - return self._extruder_stack.getId() + return self._extruder_stack ## Gets the signal that emits if the active extruder changed. # @@ -137,16 +124,20 @@ class SettingOverrideDecorator(SceneNodeDecorator): # kept up to date. def _updateNextStack(self): if self._extruder_stack: - if self._stack.getNextStack(): - old_extruder_stack_id = self._stack.getNextStack().getId() - else: - old_extruder_stack_id = "" + extruder_stack = ContainerRegistry.getInstance().findContainerStacks(id = self._extruder_stack) + if extruder_stack: + if self._stack.getNextStack(): + old_extruder_stack_id = self._stack.getNextStack().getId() + else: + old_extruder_stack_id = "" - self._stack.setNextStack(self._extruder_stack) - # Trigger slice/need slicing if the extruder changed. - if self._stack.getNextStack().getId() != old_extruder_stack_id: - Application.getInstance().getBackend().needsSlicing() - Application.getInstance().getBackend().tickle() + self._stack.setNextStack(extruder_stack[0]) + # Trigger slice/need slicing if the extruder changed. + if self._stack.getNextStack().getId() != old_extruder_stack_id: + Application.getInstance().getBackend().needsSlicing() + Application.getInstance().getBackend().tickle() + else: + Logger.log("e", "Extruder stack %s below per-object settings does not exist.", self._extruder_stack) else: self._stack.setNextStack(Application.getInstance().getGlobalContainerStack()) @@ -154,14 +145,7 @@ class SettingOverrideDecorator(SceneNodeDecorator): # # \param extruder_stack_id The new extruder stack to print with. def setActiveExtruder(self, extruder_stack_id): - if self._extruder_stack.getId() == extruder_stack_id: - return - - global_stack = Application.getInstance().getMachineManager().activeMachine - for extruder in global_stack.extruders.values(): - if extruder.getId() == extruder_stack_id: - self._extruder_stack = extruder - break + self._extruder_stack = extruder_stack_id self._updateNextStack() ExtruderManager.getInstance().resetSelectedObjectExtruders() self.activeExtruderChanged.emit() From 439ea79c6029454a2f988e29b459e65754a166fa Mon Sep 17 00:00:00 2001 From: Lipu Fei Date: Wed, 13 Jun 2018 11:09:18 +0200 Subject: [PATCH 33/34] Add message for unable to slice due to disabled extruders CURA-5456 --- plugins/CuraEngineBackend/CuraEngineBackend.py | 8 ++++++++ plugins/CuraEngineBackend/StartSliceJob.py | 14 +++++++++++++- 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/plugins/CuraEngineBackend/CuraEngineBackend.py b/plugins/CuraEngineBackend/CuraEngineBackend.py index d298ff1aca..3e66edc203 100755 --- a/plugins/CuraEngineBackend/CuraEngineBackend.py +++ b/plugins/CuraEngineBackend/CuraEngineBackend.py @@ -379,6 +379,14 @@ class CuraEngineBackend(QObject, Backend): else: self.backendStateChange.emit(BackendState.NotStarted) + if job.getResult() == StartSliceJob.StartJobResult.ObjectsWithDisabledExtruder: + self._error_message = Message(catalog.i18nc("@info:status", "Unable to slice because there are objects associated with disabled Extruder %s." % job.getMessage()), + title = catalog.i18nc("@info:title", "Unable to slice")) + self._error_message.show() + self.backendStateChange.emit(BackendState.Error) + self.backendError.emit(job) + return + if job.getResult() == StartSliceJob.StartJobResult.NothingToSlice: if Application.getInstance().platformActivity: self._error_message = Message(catalog.i18nc("@info:status", "Nothing to slice because none of the models fit the build volume. Please scale or rotate models to fit."), diff --git a/plugins/CuraEngineBackend/StartSliceJob.py b/plugins/CuraEngineBackend/StartSliceJob.py index 467351dd4b..b704ca0d2f 100644 --- a/plugins/CuraEngineBackend/StartSliceJob.py +++ b/plugins/CuraEngineBackend/StartSliceJob.py @@ -32,6 +32,7 @@ class StartJobResult(IntEnum): MaterialIncompatible = 5 BuildPlateError = 6 ObjectSettingError = 7 #When an error occurs in per-object settings. + ObjectsWithDisabledExtruder = 8 ## Formatter class that handles token expansion in start/end gcod @@ -213,16 +214,27 @@ class StartSliceJob(Job): extruders_enabled = {position: stack.isEnabled for position, stack in Application.getInstance().getGlobalContainerStack().extruders.items()} filtered_object_groups = [] + has_model_with_disabled_extruders = False + associated_siabled_extruders = set() for group in object_groups: stack = Application.getInstance().getGlobalContainerStack() skip_group = False for node in group: - if not extruders_enabled[node.callDecoration("getActiveExtruderPosition")]: + extruder_position = node.callDecoration("getActiveExtruderPosition") + if not extruders_enabled[extruder_position]: skip_group = True + has_model_with_disabled_extruders = True + associated_siabled_extruders.add(extruder_position) break if not skip_group: filtered_object_groups.append(group) + if has_model_with_disabled_extruders: + self.setResult(StartJobResult.ObjectsWithDisabledExtruder) + associated_siabled_extruders = [str(c) for c in sorted([int(p) + 1 for p in associated_siabled_extruders])] + self.setMessage(", ".join(associated_siabled_extruders)) + return + # There are cases when there is nothing to slice. This can happen due to one at a time slicing not being # able to find a possible sequence or because there are no objects on the build plate (or they are outside # the build volume) From 981eed313c841dcdbc2f9cfc1d4869b99c774846 Mon Sep 17 00:00:00 2001 From: Diego Prado Gesto Date: Wed, 13 Jun 2018 11:28:20 +0200 Subject: [PATCH 34/34] FindNodePlacement should find a placement for the node, but not creating a new node. --- cura/Arranging/Arrange.py | 17 +++++++++-------- cura/CuraApplication.py | 2 +- cura/MultiplyObjectsJob.py | 7 ++++--- 3 files changed, 14 insertions(+), 12 deletions(-) diff --git a/cura/Arranging/Arrange.py b/cura/Arranging/Arrange.py index 4005f436be..ee5db3f1fb 100644 --- a/cura/Arranging/Arrange.py +++ b/cura/Arranging/Arrange.py @@ -1,10 +1,12 @@ # Copyright (c) 2018 Ultimaker B.V. # Cura is released under the terms of the LGPLv3 or higher. +from typing import List from UM.Scene.Iterator.DepthFirstIterator import DepthFirstIterator from UM.Logger import Logger from UM.Math.Polygon import Polygon from UM.Math.Vector import Vector +from UM.Scene.SceneNode import SceneNode from cura.Arranging.ShapeArray import ShapeArray from cura.Scene import ZOffsetDecorator @@ -85,8 +87,7 @@ class Arrange: # \param node # \param offset_shape_arr ShapeArray with offset, for placing the shape # \param hull_shape_arr ShapeArray without offset, used to find location - def findNodePlacement(self, node, offset_shape_arr, hull_shape_arr, step = 1): - new_node = node + def findNodePlacement(self, node: SceneNode, offset_shape_arr: ShapeArray, hull_shape_arr: ShapeArray, step = 1): best_spot = self.bestSpot( hull_shape_arr, start_prio = self._last_priority, step = step) x, y = best_spot.x, best_spot.y @@ -95,21 +96,21 @@ class Arrange: self._last_priority = best_spot.priority # Ensure that the object is above the build platform - new_node.removeDecorator(ZOffsetDecorator.ZOffsetDecorator) - if new_node.getBoundingBox(): - center_y = new_node.getWorldPosition().y - new_node.getBoundingBox().bottom + node.removeDecorator(ZOffsetDecorator.ZOffsetDecorator) + if node.getBoundingBox(): + center_y = node.getWorldPosition().y - node.getBoundingBox().bottom else: center_y = 0 if x is not None: # We could find a place - new_node.setPosition(Vector(x, center_y, y)) + node.setPosition(Vector(x, center_y, y)) found_spot = True self.place(x, y, offset_shape_arr) # place the object in arranger else: Logger.log("d", "Could not find spot!"), found_spot = False - new_node.setPosition(Vector(200, center_y, 100)) - return new_node, found_spot + node.setPosition(Vector(200, center_y, 100)) + return found_spot ## Fill priority, center is best. Lower value is better # This is a strategy for the arranger. diff --git a/cura/CuraApplication.py b/cura/CuraApplication.py index e651ef5413..9db53c0836 100755 --- a/cura/CuraApplication.py +++ b/cura/CuraApplication.py @@ -1675,7 +1675,7 @@ class CuraApplication(QtApplication): return # Step is for skipping tests to make it a lot faster. it also makes the outcome somewhat rougher - node, _ = arranger.findNodePlacement(node, offset_shape_arr, hull_shape_arr, step = 10) + arranger.findNodePlacement(node, offset_shape_arr, hull_shape_arr, step = 10) # This node is deep copied from some other node which already has a BuildPlateDecorator, but the deepcopy # of BuildPlateDecorator produces one that's associated with build plate -1. So, here we need to check if diff --git a/cura/MultiplyObjectsJob.py b/cura/MultiplyObjectsJob.py index 57db7734e7..3cbf795952 100644 --- a/cura/MultiplyObjectsJob.py +++ b/cura/MultiplyObjectsJob.py @@ -64,10 +64,11 @@ class MultiplyObjectsJob(Job): arranger.resetLastPriority() for i in range(self._count): # We do place the nodes one by one, as we want to yield in between. + new_node = copy.deepcopy(node) + solution_found = False if not node_too_big: - new_node, solution_found = arranger.findNodePlacement(current_node, offset_shape_arr, hull_shape_arr) - else: - new_node = copy.deepcopy(node) + solution_found = arranger.findNodePlacement(new_node, offset_shape_arr, hull_shape_arr) + if node_too_big or not solution_found: found_solution_for_all = False new_location = new_node.getPosition()