diff --git a/cura/CuraApplication.py b/cura/CuraApplication.py index 7e047cae0a..b85c1a2f54 100755 --- a/cura/CuraApplication.py +++ b/cura/CuraApplication.py @@ -99,6 +99,11 @@ if not MYPY: class CuraApplication(QtApplication): + # SettingVersion represents the set of settings available in the machine/extruder definitions. + # You need to make sure that this version number needs to be increased if there is any non-backwards-compatible + # changes of the settings. + SettingVersion = 1 + class ResourceTypes: QmlFiles = Resources.UserType + 1 Firmware = Resources.UserType + 2 @@ -169,11 +174,11 @@ class CuraApplication(QtApplication): UM.VersionUpgradeManager.VersionUpgradeManager.getInstance().setCurrentVersions( { - ("quality", InstanceContainer.Version): (self.ResourceTypes.QualityInstanceContainer, "application/x-uranium-instancecontainer"), + ("quality_changes", InstanceContainer.Version * 1000000 + self.SettingVersion): (self.ResourceTypes.QualityInstanceContainer, "application/x-uranium-instancecontainer"), ("machine_stack", ContainerStack.Version): (self.ResourceTypes.MachineStack, "application/x-uranium-containerstack"), ("extruder_train", ContainerStack.Version): (self.ResourceTypes.ExtruderStack, "application/x-uranium-extruderstack"), ("preferences", Preferences.Version): (Resources.Preferences, "application/x-uranium-preferences"), - ("user", InstanceContainer.Version): (self.ResourceTypes.UserInstanceContainer, "application/x-uranium-instancecontainer") + ("user", InstanceContainer.Version * 1000000 + self.SettingVersion): (self.ResourceTypes.UserInstanceContainer, "application/x-uranium-instancecontainer") } ) diff --git a/cura/Settings/ContainerManager.py b/cura/Settings/ContainerManager.py index dee468f069..b5c76f1f17 100644 --- a/cura/Settings/ContainerManager.py +++ b/cura/Settings/ContainerManager.py @@ -918,7 +918,8 @@ class ContainerManager(QObject): quality_changes.setDefinition(self._container_registry.findContainers(id = "fdmprinter")[0]) else: quality_changes.setDefinition(QualityManager.getInstance().getParentMachineDefinition(machine_definition)) - quality_changes.addMetaDataEntry("setting_version", quality_changes.getDefinition().getMetaDataEntry("setting_version", default = 0)) + from cura.CuraApplication import CuraApplication + quality_changes.addMetaDataEntry("setting_version", CuraApplication.SettingVersion) return quality_changes diff --git a/cura/Settings/CuraContainerRegistry.py b/cura/Settings/CuraContainerRegistry.py index 2943ed009d..7961e8db31 100644 --- a/cura/Settings/CuraContainerRegistry.py +++ b/cura/Settings/CuraContainerRegistry.py @@ -22,6 +22,8 @@ from . import GlobalStack from .ContainerManager import ContainerManager from .ExtruderManager import ExtruderManager +from cura.CuraApplication import CuraApplication + from UM.i18n import i18nCatalog catalog = i18nCatalog("cura") @@ -43,7 +45,7 @@ class CuraContainerRegistry(ContainerRegistry): if isinstance(container, InstanceContainer) and type(container) != type(self.getEmptyInstanceContainer()): #Check against setting version of the definition. - required_setting_version = int(container.getDefinition().getMetaDataEntry("setting_version", default = 0)) + required_setting_version = CuraApplication.SettingVersion actual_setting_version = int(container.getMetaDataEntry("setting_version", default = 0)) if required_setting_version != actual_setting_version: Logger.log("w", "Instance container {container_id} is outdated. Its setting version is {actual_setting_version} but it should be {required_setting_version}.".format(container_id = container.getId(), actual_setting_version = actual_setting_version, required_setting_version = required_setting_version)) diff --git a/cura/Settings/CuraStackBuilder.py b/cura/Settings/CuraStackBuilder.py index 652425ba6a..b84b1f4634 100644 --- a/cura/Settings/CuraStackBuilder.py +++ b/cura/Settings/CuraStackBuilder.py @@ -9,7 +9,6 @@ from UM.Settings.ContainerRegistry import ContainerRegistry from .GlobalStack import GlobalStack from .ExtruderStack import ExtruderStack -from .CuraContainerStack import CuraContainerStack from typing import Optional @@ -76,7 +75,8 @@ class CuraStackBuilder: user_container = InstanceContainer(new_stack_id + "_user") user_container.addMetaDataEntry("type", "user") user_container.addMetaDataEntry("extruder", new_stack_id) - user_container.addMetaDataEntry("setting_version", machine_definition.getMetaDataEntry("setting_version", default = 0)) + from cura.CuraApplication import CuraApplication + user_container.addMetaDataEntry("setting_version", CuraApplication.SettingVersion) user_container.setDefinition(machine_definition) stack.setUserChanges(user_container) @@ -125,7 +125,8 @@ class CuraStackBuilder: user_container = InstanceContainer(new_stack_id + "_user") user_container.addMetaDataEntry("type", "user") user_container.addMetaDataEntry("machine", new_stack_id) - user_container.addMetaDataEntry("setting_version", definition.getMetaDataEntry("setting_version", default = 0)) + from cura.CuraApplication import CuraApplication + user_container.addMetaDataEntry("setting_version", CuraApplication.SettingVersion) user_container.setDefinition(definition) stack.setUserChanges(user_container) diff --git a/cura/Settings/ExtruderManager.py b/cura/Settings/ExtruderManager.py index 40d8fe7a19..10934c2d31 100755 --- a/cura/Settings/ExtruderManager.py +++ b/cura/Settings/ExtruderManager.py @@ -363,7 +363,8 @@ class ExtruderManager(QObject): user_profile = InstanceContainer(extruder_stack_id + "_current_settings") # Add an empty user profile. user_profile.addMetaDataEntry("type", "user") user_profile.addMetaDataEntry("extruder", extruder_stack_id) - user_profile.addMetaDataEntry("setting_version", machine_definition.getMetaDataEntry("setting_version", default = 0)) + from cura.CuraApplication import CuraApplication + user_profile.addMetaDataEntry("setting_version", CuraApplication.SettingVersion) user_profile.setDefinition(machine_definition) container_registry.addContainer(user_profile) container_stack.addContainer(user_profile) diff --git a/plugins/3MFReader/ThreeMFWorkspaceReader.py b/plugins/3MFReader/ThreeMFWorkspaceReader.py index e1b65805c1..593591b5dc 100755 --- a/plugins/3MFReader/ThreeMFWorkspaceReader.py +++ b/plugins/3MFReader/ThreeMFWorkspaceReader.py @@ -46,6 +46,12 @@ class ThreeMFWorkspaceReader(WorkspaceReader): self._extruder_stack_suffix = "." + ContainerRegistry.getMimeTypeForContainer(ExtruderStack).preferredSuffix self._global_stack_suffix = "." + ContainerRegistry.getMimeTypeForContainer(GlobalStack).preferredSuffix + # Certain instance container types are ignored because we make the assumption that only we make those types + # of containers. They are: + # - quality + # - variant + self._ignored_instance_container_types = {"quality", "variant"} + self._resolve_strategies = {} self._id_mapping = {} @@ -183,6 +189,7 @@ class ThreeMFWorkspaceReader(WorkspaceReader): num_user_settings = 0 quality_changes_conflict = False definition_changes_conflict = False + for each_instance_container_file in instance_container_files: container_id = self._stripFileToId(each_instance_container_file) instance_container = InstanceContainer(container_id) @@ -208,14 +215,12 @@ class ThreeMFWorkspaceReader(WorkspaceReader): if definition_changes: if definition_changes[0] != instance_container: definition_changes_conflict = True - elif container_type == "quality": - # If the quality name is not set (either by quality or changes, set it now) - # Quality changes should always override this (as they are "on top") - if quality_name == "": - quality_name = instance_container.getName() - quality_type = instance_container.getName() elif container_type == "user": num_user_settings += len(instance_container._instances) + elif container_type in self._ignored_instance_container_types: + # Ignore certain instance container types + Logger.log("w", "Ignoring instance container [%s] with type [%s]", container_id, container_type) + continue Job.yieldThread() @@ -417,13 +422,29 @@ class ThreeMFWorkspaceReader(WorkspaceReader): quality_and_definition_changes_instance_containers = [] for instance_container_file in instance_container_files: container_id = self._stripFileToId(instance_container_file) + serialized = archive.open(instance_container_file).read().decode("utf-8") + + # HACK! we ignore the "metadata/type = quality" instance containers! + parser = configparser.ConfigParser() + parser.read_string(serialized) + if not parser.has_option("metadata", "type"): + Logger.log("w", "Cannot find metadata/type in %s, ignoring it", instance_container_file) + continue + if parser.get("metadata", "type") == "quality": + continue + instance_container = InstanceContainer(container_id) # Deserialize InstanceContainer by converting read data from bytes to string - instance_container.deserialize(archive.open(instance_container_file).read().decode("utf-8")) + instance_container.deserialize(serialized) container_type = instance_container.getMetaDataEntry("type") Job.yieldThread() - if container_type == "user": + + if container_type in self._ignored_instance_container_types: + # Ignore certain instance container types + Logger.log("w", "Ignoring instance container [%s] with type [%s]", container_id, container_type) + continue + elif container_type == "user": # Check if quality changes already exists. user_containers = self._container_registry.findInstanceContainers(id = container_id) if not user_containers: diff --git a/plugins/MachineSettingsAction/MachineSettingsAction.py b/plugins/MachineSettingsAction/MachineSettingsAction.py index f09d1f2b1d..983b70d174 100755 --- a/plugins/MachineSettingsAction/MachineSettingsAction.py +++ b/plugins/MachineSettingsAction/MachineSettingsAction.py @@ -14,7 +14,7 @@ from UM.Settings.DefinitionContainer import DefinitionContainer from UM.Scene.Iterator.DepthFirstIterator import DepthFirstIterator from UM.Logger import Logger -from cura.Settings.CuraContainerRegistry import CuraContainerRegistry +from cura.CuraApplication import CuraApplication from cura.Settings.ExtruderManager import ExtruderManager import UM.i18n @@ -99,7 +99,7 @@ class MachineSettingsAction(MachineAction): definition = container_stack.getBottom() definition_changes_container.setDefinition(definition) definition_changes_container.addMetaDataEntry("type", "definition_changes") - definition_changes_container.addMetaDataEntry("setting_version", definition.getMetaDataEntry("setting_version", default = 0)) + definition_changes_container.addMetaDataEntry("setting_version", CuraApplication.SettingVersion) self._container_registry.addContainer(definition_changes_container) container_stack.definitionChanges = definition_changes_container diff --git a/plugins/UltimakerMachineActions/UMOUpgradeSelection.py b/plugins/UltimakerMachineActions/UMOUpgradeSelection.py index d2c3b31359..02b1482719 100644 --- a/plugins/UltimakerMachineActions/UMOUpgradeSelection.py +++ b/plugins/UltimakerMachineActions/UMOUpgradeSelection.py @@ -11,7 +11,7 @@ from UM.Application import Application catalog = i18nCatalog("cura") import UM.Settings.InstanceContainer - +from cura.CuraApplication import CuraApplication ## The Ultimaker Original can have a few revisions & upgrades. This action helps with selecting them, so they are added # as a variant. @@ -49,7 +49,7 @@ class UMOUpgradeSelection(MachineAction): definition = global_container_stack.getBottom() definition_changes_container.setDefinition(definition) definition_changes_container.addMetaDataEntry("type", "definition_changes") - definition_changes_container.addMetaDataEntry("setting_version", definition.getMetaDataEntry("setting_version", default = 0)) + definition_changes_container.addMetaDataEntry("setting_version", CuraApplication.SettingVersion) UM.Settings.ContainerRegistry.ContainerRegistry.getInstance().addContainer(definition_changes_container) # Insert definition_changes between the definition and the variant diff --git a/plugins/VersionUpgrade/VersionUpgrade22to24/VersionUpgrade.py b/plugins/VersionUpgrade/VersionUpgrade22to24/VersionUpgrade.py index ab934210f6..9d508e553b 100644 --- a/plugins/VersionUpgrade/VersionUpgrade22to24/VersionUpgrade.py +++ b/plugins/VersionUpgrade/VersionUpgrade22to24/VersionUpgrade.py @@ -142,6 +142,16 @@ class VersionUpgrade22to24(VersionUpgrade): config.write(output) return [filename], [output.getvalue()] + def upgradeQuality(self, serialised, filename): + config = configparser.ConfigParser(interpolation = None) + config.read_string(serialised) # Read the input string as config file. + config.set("metadata", "type", "quality_changes") # Update metadata/type to quality_changes + config.set("general", "version", "2") # Just bump the version number. That is all we need for now. + + output = io.StringIO() + config.write(output) + return [filename], [output.getvalue()] + def getCfgVersion(self, serialised): parser = configparser.ConfigParser(interpolation = None) parser.read_string(serialised) diff --git a/plugins/VersionUpgrade/VersionUpgrade22to24/__init__.py b/plugins/VersionUpgrade/VersionUpgrade22to24/__init__.py index 0df2c94b75..0ff121f35e 100644 --- a/plugins/VersionUpgrade/VersionUpgrade22to24/__init__.py +++ b/plugins/VersionUpgrade/VersionUpgrade22to24/__init__.py @@ -21,9 +21,9 @@ def getMetaData(): # From To Upgrade function ("machine_instance", 2000000): ("machine_stack", 3000000, upgrade.upgradeMachineInstance), ("extruder_train", 2000000): ("extruder_train", 3000000, upgrade.upgradeExtruderTrain), - ("preferences", 3000000): ("preferences", 4000000, upgrade.upgradePreferences) - - }, + ("preferences", 3000000): ("preferences", 4000000, upgrade.upgradePreferences), + ("quality", 2000000): ("quality_changes", 2000000, upgrade.upgradeQuality), + }, "sources": { "machine_stack": { "get_version": upgrade.getCfgVersion, diff --git a/plugins/VersionUpgrade/VersionUpgrade25to26/VersionUpgrade25to26.py b/plugins/VersionUpgrade/VersionUpgrade25to26/VersionUpgrade25to26.py index c61962d276..85f54dd654 100644 --- a/plugins/VersionUpgrade/VersionUpgrade25to26/VersionUpgrade25to26.py +++ b/plugins/VersionUpgrade/VersionUpgrade25to26/VersionUpgrade25to26.py @@ -5,6 +5,7 @@ import configparser #To parse the files we need to upgrade and write the new fil import io #To serialise configparser output to a string. from UM.VersionUpgrade import VersionUpgrade +from cura.CuraApplication import CuraApplication _removed_settings = { #Settings that were removed in 2.5. "start_layers_at_same_position", @@ -86,11 +87,17 @@ class VersionUpgrade25to26(VersionUpgrade): parser["values"][replacement] = parser["values"][replaced_setting] #Copy to replacement before removing the original! del replaced_setting - #Change the version number in the file. - if parser.has_section("general"): - parser["general"]["setting_version"] = "1" + for each_section in ("general", "metadata"): + if not parser.has_section(each_section): + parser.add_section(each_section) + + # Change the version number in the file. + parser["metadata"]["setting_version"] = str(CuraApplication.SettingVersion) + + # Update version + parser["general"]["version"] = "2" #Re-serialise the file. output = io.StringIO() parser.write(output) - return [filename], [output.getvalue()] \ No newline at end of file + return [filename], [output.getvalue()] diff --git a/plugins/VersionUpgrade/VersionUpgrade25to26/__init__.py b/plugins/VersionUpgrade/VersionUpgrade25to26/__init__.py index 3aee161e3c..a24473f65d 100644 --- a/plugins/VersionUpgrade/VersionUpgrade25to26/__init__.py +++ b/plugins/VersionUpgrade/VersionUpgrade25to26/__init__.py @@ -18,14 +18,16 @@ def getMetaData(): "api": 3 }, "version_upgrade": { - # From To Upgrade function - ("preferences", 4000000): ("preferences", 4000001, upgrade.upgradePreferences), - ("quality", 2000000): ("quality", 2000001, upgrade.upgradeInstanceContainer), - ("variant", 2000000): ("variant", 2000001, upgrade.upgradeInstanceContainer), #We can re-use upgradeContainerStack since there is nothing specific to quality, variant or user profiles being changed. - ("user", 2000000): ("user", 2000001, upgrade.upgradeInstanceContainer) + # From To Upgrade function + ("preferences", 4000000): ("preferences", 4000001, upgrade.upgradePreferences), + # NOTE: All the instance containers share the same general/version, so we have to update all of them + # if any is updated. + ("quality_changes", 2000000): ("quality_changes", 2000001, upgrade.upgradeInstanceContainer), + ("user", 2000000): ("user", 2000001, upgrade.upgradeInstanceContainer), + ("quality", 2000000): ("quality", 2000001, upgrade.upgradeInstanceContainer), }, "sources": { - "quality": { + "quality_changes": { "get_version": upgrade.getCfgVersion, "location": {"./quality"} }, @@ -36,7 +38,7 @@ def getMetaData(): "user": { "get_version": upgrade.getCfgVersion, "location": {"./user"} - } + }, } } diff --git a/resources/definitions/fdmprinter.def.json b/resources/definitions/fdmprinter.def.json index cd28064e0f..621feb2c70 100755 --- a/resources/definitions/fdmprinter.def.json +++ b/resources/definitions/fdmprinter.def.json @@ -2555,7 +2555,6 @@ "default_value": 20, "value": "jerk_support_interface", "minimum_value": "0.1", - "minimum_value_warning": "5", "maximum_value_warning": "50", "enabled": "resolveOrValue('jerk_enabled') and extruderValue(support_roof_extruder_nr, 'support_roof_enable') and support_enable", "limit_to_extruder": "support_roof_extruder_nr", @@ -2571,7 +2570,6 @@ "default_value": 20, "value": "jerk_support_interface", "minimum_value": "0.1", - "minimum_value_warning": "5", "maximum_value_warning": "50", "enabled": "resolveOrValue('jerk_enabled') and extruderValue(support_bottom_extruder_nr, 'support_bottom_enable') and support_enable", "limit_to_extruder": "support_bottom_extruder_nr", diff --git a/resources/quality/ultimaker3/um3_bb0.4_PVA_Draft_Print.inst.cfg b/resources/quality/ultimaker3/um3_bb0.4_PVA_Draft_Print.inst.cfg index 767e321da0..43bb096ebf 100644 --- a/resources/quality/ultimaker3/um3_bb0.4_PVA_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_bb0.4_PVA_Draft_Print.inst.cfg @@ -13,10 +13,6 @@ setting_version = 1 [values] material_print_temperature = =default_material_print_temperature + 10 material_standby_temperature = 100 +prime_tower_enable = False skin_overlap = 20 support_interface_height = 0.8 -prime_tower_enable = False -speed_support_interface = =math.ceil(speed_support * 20 / 25) -jerk_support_interface = =math.ceil(jerk_support * 1 / 5) -acceleration_support_interface = =math.ceil(acceleration_support * 100 / 500 ) -support_xy_distance = =round(line_width * 1.5, 2) diff --git a/resources/quality/ultimaker3/um3_bb0.4_PVA_Fast_Print.inst.cfg b/resources/quality/ultimaker3/um3_bb0.4_PVA_Fast_Print.inst.cfg index f266a26ef0..c78833b867 100644 --- a/resources/quality/ultimaker3/um3_bb0.4_PVA_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_bb0.4_PVA_Fast_Print.inst.cfg @@ -13,10 +13,6 @@ setting_version = 1 [values] material_print_temperature = =default_material_print_temperature + 5 material_standby_temperature = 100 +prime_tower_enable = False skin_overlap = 15 support_interface_height = 0.8 -prime_tower_enable = False -speed_support_interface = =math.ceil(speed_support * 20 / 25) -jerk_support_interface = =math.ceil(jerk_support * 1 / 5) -acceleration_support_interface = =math.ceil(acceleration_support * 100 / 500 ) -support_xy_distance = =round(line_width * 1.5, 2) diff --git a/resources/quality/ultimaker3/um3_bb0.4_PVA_High_Quality.inst.cfg b/resources/quality/ultimaker3/um3_bb0.4_PVA_High_Quality.inst.cfg index b2abfff2e7..5bc96c8f08 100644 --- a/resources/quality/ultimaker3/um3_bb0.4_PVA_High_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_bb0.4_PVA_High_Quality.inst.cfg @@ -11,11 +11,7 @@ material = generic_pva_ultimaker3_BB_0.4 setting_version = 1 [values] -support_infill_rate = 25 -support_interface_height = 0.8 material_standby_temperature = 100 prime_tower_enable = False -speed_support_interface = =math.ceil(speed_support * 20 / 25) -jerk_support_interface = =math.ceil(jerk_support * 1 / 5) -acceleration_support_interface = =math.ceil(acceleration_support * 100 / 500 ) -support_xy_distance = =round(line_width * 1.5, 2) +support_infill_rate = 25 +support_interface_height = 0.8 diff --git a/resources/quality/ultimaker3/um3_bb0.4_PVA_Normal_Quality.inst.cfg b/resources/quality/ultimaker3/um3_bb0.4_PVA_Normal_Quality.inst.cfg index f6bb460359..7896b5a57a 100644 --- a/resources/quality/ultimaker3/um3_bb0.4_PVA_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_bb0.4_PVA_Normal_Quality.inst.cfg @@ -11,11 +11,7 @@ material = generic_pva_ultimaker3_BB_0.4 setting_version = 1 [values] -support_infill_rate = 25 -support_interface_height = 0.8 material_standby_temperature = 100 prime_tower_enable = False -speed_support_interface = =math.ceil(speed_support * 20 / 25) -jerk_support_interface = =math.ceil(jerk_support * 1 / 5) -acceleration_support_interface = =math.ceil(acceleration_support * 100 / 500 ) -support_xy_distance = =round(line_width * 1.5, 2) +support_infill_rate = 25 +support_interface_height = 0.8 diff --git a/resources/variants/ultimaker3_bb0.8.inst.cfg b/resources/variants/ultimaker3_bb0.8.inst.cfg index c0e09e808c..4ba2ca8422 100644 --- a/resources/variants/ultimaker3_bb0.8.inst.cfg +++ b/resources/variants/ultimaker3_bb0.8.inst.cfg @@ -75,7 +75,7 @@ support_line_width = =round(line_width * 0.4 / 0.35, 2) support_offset = 1.5 support_pattern = triangles support_use_towers = False -support_xy_distance = =wall_line_width_0 / 2 +support_xy_distance = =round(wall_line_width_0 * 0.75, 2) support_xy_distance_overhang = =wall_line_width_0 / 4 support_z_distance = 0 switch_extruder_prime_speed = 15 diff --git a/resources/variants/ultimaker3_bb04.inst.cfg b/resources/variants/ultimaker3_bb04.inst.cfg index 654de8a986..f379a8d1e2 100644 --- a/resources/variants/ultimaker3_bb04.inst.cfg +++ b/resources/variants/ultimaker3_bb04.inst.cfg @@ -36,5 +36,5 @@ support_interface_skip_height = =layer_height support_join_distance = 3 support_line_width = =round(line_width * 0.4 / 0.35, 2) support_offset = 3 -support_xy_distance = =wall_line_width_0 * 3 +support_xy_distance = =round(wall_line_width_0 * 0.75, 2) support_xy_distance_overhang = =wall_line_width_0 / 2 diff --git a/resources/variants/ultimaker3_extended_bb0.8.inst.cfg b/resources/variants/ultimaker3_extended_bb0.8.inst.cfg index f88dc818c8..2e6292ed08 100644 --- a/resources/variants/ultimaker3_extended_bb0.8.inst.cfg +++ b/resources/variants/ultimaker3_extended_bb0.8.inst.cfg @@ -11,7 +11,9 @@ setting_version = 1 [values] acceleration_enabled = True acceleration_print = 4000 -acceleration_support_interface = =math.ceil(acceleration_topbottom * 100 / 500) +acceleration_support = =math.ceil(acceleration_print * 2000 / 4000) +acceleration_support_interface = =math.ceil(acceleration_support * 1500 / 2000) +acceleration_support_bottom = =math.ceil(acceleration_support_interface * 100 / 1500) brim_width = 3 cool_fan_speed = 50 cool_min_speed = 5 @@ -21,7 +23,9 @@ infill_pattern = triangles infill_wipe_dist = 0 jerk_enabled = True jerk_print = 25 -jerk_support_interface = =math.ceil(jerk_topbottom * 1 / 5) +jerk_support = =math.ceil(jerk_print * 15 / 25) +jerk_support_interface = =math.ceil(jerk_support * 10 / 15) +jerk_support_bottom = =math.ceil(jerk_support_interface * 1 / 10) layer_height = 0.2 machine_min_cool_heat_time_window = 15 machine_nozzle_heat_up_speed = 1.5 @@ -54,20 +58,24 @@ retraction_prime_speed = 15 skin_overlap = 5 speed_layer_0 = 20 speed_print = 35 -speed_support_interface = =math.ceil(speed_topbottom * 15 / 20) +speed_support = =math.ceil(speed_print * 25 / 35) +speed_support_interface = =math.ceil(speed_support * 20 / 25) +speed_support_bottom = =math.ceil(speed_support_interface * 10 / 20) speed_wall_0 = =math.ceil(speed_wall * 25 / 30) support_angle = 60 support_bottom_height = =layer_height * 2 +support_bottom_pattern = zigzag support_bottom_stair_step_height = =layer_height support_infill_rate = 25 support_interface_enable = True support_interface_height = =layer_height * 5 +support_interface_skip_height = =layer_height support_join_distance = 3 support_line_width = =round(line_width * 0.4 / 0.35, 2) support_offset = 1.5 support_pattern = triangles support_use_towers = False -support_xy_distance = =wall_line_width_0 / 2 +support_xy_distance = =round(wall_line_width_0 * 0.75, 2) support_xy_distance_overhang = =wall_line_width_0 / 4 support_z_distance = 0 switch_extruder_prime_speed = 15 diff --git a/resources/variants/ultimaker3_extended_bb04.inst.cfg b/resources/variants/ultimaker3_extended_bb04.inst.cfg index 229bde1916..abeaf69db2 100644 --- a/resources/variants/ultimaker3_extended_bb04.inst.cfg +++ b/resources/variants/ultimaker3_extended_bb04.inst.cfg @@ -9,20 +9,32 @@ type = variant setting_version = 1 [values] -cool_fan_speed_max = 100 +acceleration_support = =math.ceil(acceleration_print * 2000 / 4000) +acceleration_support_interface = =math.ceil(acceleration_support * 1500 / 2000) +acceleration_support_bottom = =math.ceil(acceleration_support_interface * 100 / 1500) +cool_fan_speed_max = =cool_fan_speed +jerk_support = =math.ceil(jerk_print * 15 / 25) +jerk_support_interface = =math.ceil(jerk_support * 10 / 15) +jerk_support_bottom = =math.ceil(jerk_support_interface * 1 / 10) machine_nozzle_heat_up_speed = 1.5 -machine_nozzle_size = 0.4 -material_bed_temperature = 60 material_print_temperature = 215 -raft_acceleration = =acceleration_layer_0 -raft_jerk = =jerk_layer_0 +raft_base_speed = 20 +raft_interface_speed = 20 +raft_speed = 25 retraction_extrusion_window = =retraction_amount +speed_layer_0 = 20 +speed_support = =math.ceil(speed_print * 25 / 35) +speed_support_interface = =math.ceil(speed_support * 20 / 25) +speed_support_bottom = =math.ceil(speed_support_interface * 10 / 20) speed_wall_0 = =math.ceil(speed_wall * 25 / 30) support_bottom_height = =layer_height * 2 +support_bottom_pattern = zigzag support_bottom_stair_step_height = =layer_height +support_infill_rate = 25 support_interface_enable = True +support_interface_skip_height = =layer_height +support_join_distance = 3 support_line_width = =round(line_width * 0.4 / 0.35, 2) -support_pattern = triangles -support_use_towers = False -support_xy_distance = =wall_line_width_0 * 3 +support_offset = 3 +support_xy_distance = =round(wall_line_width_0 * 0.75, 2) support_xy_distance_overhang = =wall_line_width_0 / 2 diff --git a/tests/Settings/TestCuraContainerRegistry.py b/tests/Settings/TestCuraContainerRegistry.py index ad79f74dd4..11e772c3b7 100644 --- a/tests/Settings/TestCuraContainerRegistry.py +++ b/tests/Settings/TestCuraContainerRegistry.py @@ -68,11 +68,12 @@ def test_addContainerGlobalStack(container_registry, definition_container): assert type(mock_super_add_container.call_args_list[0][0][0]) == GlobalStack def test_addContainerGoodSettingVersion(container_registry, definition_container): - definition_container.getMetaData()["setting_version"] = 3 + from cura.CuraApplication import CuraApplication + definition_container.getMetaData()["setting_version"] = CuraApplication.SettingVersion container_registry.addContainer(definition_container) instance = UM.Settings.InstanceContainer.InstanceContainer(container_id = "Test Instance") - instance.addMetaDataEntry("setting_version", 3) + instance.addMetaDataEntry("setting_version", CuraApplication.SettingVersion) instance.setDefinition(definition_container) mock_super_add_container = unittest.mock.MagicMock() #Take the role of the Uranium-ContainerRegistry where the resulting containers get registered. @@ -82,7 +83,8 @@ def test_addContainerGoodSettingVersion(container_registry, definition_container mock_super_add_container.assert_called_once_with(instance) #The instance must have been registered now. def test_addContainerNoSettingVersion(container_registry, definition_container): - definition_container.getMetaData()["setting_version"] = 3 + from cura.CuraApplication import CuraApplication + definition_container.getMetaData()["setting_version"] = CuraApplication.SettingVersion container_registry.addContainer(definition_container) instance = UM.Settings.InstanceContainer.InstanceContainer(container_id = "Test Instance") @@ -96,7 +98,8 @@ def test_addContainerNoSettingVersion(container_registry, definition_container): mock_super_add_container.assert_not_called() #Should not get passed on to UM.Settings.ContainerRegistry.addContainer, because the setting_version is interpreted as 0! def test_addContainerBadSettingVersion(container_registry, definition_container): - definition_container.getMetaData()["setting_version"] = 3 + from cura.CuraApplication import CuraApplication + definition_container.getMetaData()["setting_version"] = CuraApplication.SettingVersion container_registry.addContainer(definition_container) instance = UM.Settings.InstanceContainer.InstanceContainer(container_id = "Test Instance")