From 3f9f00673adf91bc6f6b649df37be490198dd5bb Mon Sep 17 00:00:00 2001 From: Lipu Fei Date: Fri, 22 Dec 2017 11:36:42 +0100 Subject: [PATCH 01/10] Fix addExtruderStackForSingleExtrusionMachine() CURA-4708 - Create definition_changes container for the newly created ExtruderStacks. - Move extruder-specific definition_changes settings from the machine's container to the extruder's container --- cura/Settings/CuraContainerRegistry.py | 25 +++++++++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) diff --git a/cura/Settings/CuraContainerRegistry.py b/cura/Settings/CuraContainerRegistry.py index 089d513071..4a31ed5cc4 100644 --- a/cura/Settings/CuraContainerRegistry.py +++ b/cura/Settings/CuraContainerRegistry.py @@ -430,11 +430,32 @@ class CuraContainerRegistry(ContainerRegistry): extruder_stack.setDefinition(extruder_definition) extruder_stack.addMetaDataEntry("position", extruder_definition.getMetaDataEntry("position")) + from cura.CuraApplication import CuraApplication + + # create a new definition_changes container for the extruder stack + definition_changes_id = self.uniqueName(extruder_stack.getId() + "_settings") + definition_changes_name = definition_changes_id + definition_changes = InstanceContainer(definition_changes_id) + definition_changes.setName(definition_changes_name) + definition_changes.addMetaDataEntry("setting_version", CuraApplication.SettingVersion) + definition_changes.addMetaDataEntry("type", "definition_changes") + definition_changes.addMetaDataEntry("definition", extruder_definition.getId()) + + # move definition_changes settings if exist + for setting_key in ("machine_nozzle_size", "material_diameter"): + setting_instance = machine.definitionChanges.getInstance(setting_key) + if setting_instance is not None: + # move it to the extruder stack's definition_changes + definition_changes.addInstance(setting_instance) + machine.definitionChanges.removeInstance(setting_key, postpone_emit = True) + + self.addContainer(definition_changes) + extruder_stack.setDefinitionChanges(definition_changes) + # create empty user changes container otherwise - user_container = InstanceContainer(extruder_stack.id + "_user") + user_container = InstanceContainer(extruder_stack.getId() + "_user") user_container.addMetaDataEntry("type", "user") user_container.addMetaDataEntry("machine", extruder_stack.getId()) - from cura.CuraApplication import CuraApplication user_container.addMetaDataEntry("setting_version", CuraApplication.SettingVersion) user_container.setDefinition(machine.definition.getId()) From 3fb3b5826fae02295cb6d36653dfcc1cf38043a0 Mon Sep 17 00:00:00 2001 From: Lipu Fei Date: Fri, 22 Dec 2017 11:39:51 +0100 Subject: [PATCH 02/10] Make sure user containers have unique IDs CURA-4708 --- cura/Settings/CuraContainerRegistry.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/cura/Settings/CuraContainerRegistry.py b/cura/Settings/CuraContainerRegistry.py index 4a31ed5cc4..292e7f1f82 100644 --- a/cura/Settings/CuraContainerRegistry.py +++ b/cura/Settings/CuraContainerRegistry.py @@ -453,7 +453,10 @@ class CuraContainerRegistry(ContainerRegistry): extruder_stack.setDefinitionChanges(definition_changes) # create empty user changes container otherwise - user_container = InstanceContainer(extruder_stack.getId() + "_user") + user_container_id = self.uniqueName(extruder_stack.getId() + "_user") + user_container_name = user_container_id + user_container = InstanceContainer(user_container_id) + user_container.setName(user_container_name) user_container.addMetaDataEntry("type", "user") user_container.addMetaDataEntry("machine", extruder_stack.getId()) user_container.addMetaDataEntry("setting_version", CuraApplication.SettingVersion) From 26a136f7c51e1cd8f4f9267c00ebeabc3561ed88 Mon Sep 17 00:00:00 2001 From: Lipu Fei Date: Fri, 22 Dec 2017 13:29:55 +0100 Subject: [PATCH 03/10] Revert "Simplified upgrade funtion, typos, check extruder count" This reverts commit fd6d3e76a3754dae14f83a45d20685b4ddae6062. CURA-4708 --- .../VersionUpgrade30to31.py | 123 +++++++++--------- 1 file changed, 64 insertions(+), 59 deletions(-) diff --git a/plugins/VersionUpgrade/VersionUpgrade30to31/VersionUpgrade30to31.py b/plugins/VersionUpgrade/VersionUpgrade30to31/VersionUpgrade30to31.py index c350dadefe..c01ff158b1 100644 --- a/plugins/VersionUpgrade/VersionUpgrade30to31/VersionUpgrade30to31.py +++ b/plugins/VersionUpgrade/VersionUpgrade30to31/VersionUpgrade30to31.py @@ -129,17 +129,12 @@ class VersionUpgrade30to31(VersionUpgrade): if parser.has_option("values", "machine_nozzle_size"): machine_nozzle_size = parser["values"]["machine_nozzle_size"] - machine_extruder_count = '1' # by default it is 1 and the value cannot be stored in the global stack - if parser.has_option("values", "machine_extruder_count"): - machine_extruder_count = parser["values"]["machine_extruder_count"] + definition_name = parser["general"]["name"] + machine_extruders = self._getSingleExtrusionMachineExtruders(definition_name) - if machine_extruder_count == '1': - definition_name = parser["general"]["name"] - machine_extruders = self._getSingleExtrusionMachineExtruders(definition_name) - - # For single extruder machine we need only first extruder - if len(machine_extruders) !=0: - self._updateSingleExtruderDefinitionFile(machine_extruders, machine_nozzle_size) + #For single extuder machine we nee only first extruder + if len(machine_extruders) !=0: + if self._updateSingleExtuderDefinitionFile(machine_extruders, machine_nozzle_size): parser.remove_option("values", "machine_nozzle_size") # Update version numbers @@ -224,9 +219,9 @@ class VersionUpgrade30to31(VersionUpgrade): machine_instances_dir = Resources.getPath(CuraApplication.ResourceTypes.MachineStack) - machine_instance_id = None + machine_instances = [] - # Find machine instances + #Find all machine instances for item in os.listdir(machine_instances_dir): file_path = os.path.join(machine_instances_dir, item) if not os.path.isfile(file_path): @@ -247,51 +242,57 @@ class VersionUpgrade30to31(VersionUpgrade): if not parser.has_option("general", "id"): continue - id = parser["general"]["id"] - if id + "_settings" != definition_name: + machine_instances.append(parser) + + #Find for extruders + extruders_instances_dir = Resources.getPath(CuraApplication.ResourceTypes.ExtruderStack) + #"machine",[extruders] + extruder_instances_per_machine = {} + + #Find all custom extruders for founded machines + for item in os.listdir(extruders_instances_dir): + file_path = os.path.join(extruders_instances_dir, item) + if not os.path.isfile(file_path): continue - else: - machine_instance_id = id + + parser = configparser.ConfigParser(interpolation=None) + try: + parser.read([file_path]) + except: + # skip, it is not a valid stack file + continue + + if not parser.has_option("metadata", "type"): + continue + if "extruder_train" != parser["metadata"]["type"]: + continue + + if not parser.has_option("metadata", "machine"): + continue + if not parser.has_option("metadata", "position"): + continue + + + for machine_instace in machine_instances: + + machine_id = machine_instace["general"]["id"] + if machine_id != parser["metadata"]["machine"]: + continue + + if machine_id + "_settings" != definition_name: + continue + + if extruder_instances_per_machine.get(machine_id) is None: + extruder_instances_per_machine.update({machine_id:[]}) + + extruder_instances_per_machine.get(machine_id).append(parser) + #the extruder can be related only to one machine break - if machine_instance_id is not None: + return extruder_instances_per_machine - extruders_instances_dir = Resources.getPath(CuraApplication.ResourceTypes.ExtruderStack) - #"machine",[extruders] - extruder_instances = [] - - # Find all custom extruders for found machines - for item in os.listdir(extruders_instances_dir): - file_path = os.path.join(extruders_instances_dir, item) - if not os.path.isfile(file_path): - continue - - parser = configparser.ConfigParser(interpolation=None) - try: - parser.read([file_path]) - except: - # skip, it is not a valid stack file - continue - - if not parser.has_option("metadata", "type"): - continue - if "extruder_train" != parser["metadata"]["type"]: - continue - - if not parser.has_option("metadata", "machine"): - continue - if not parser.has_option("metadata", "position"): - continue - - if machine_instance_id != parser["metadata"]["machine"]: - continue - - extruder_instances.append(parser) - - return extruder_instances - - # Find extruder definition at index 0 and update its values - def _updateSingleExtruderDefinitionFile(self, extruder_instances_per_machine, machine_nozzle_size): + #Find extruder defition at index 0 and update its values + def _updateSingleExtuderDefinitionFile(self, extruder_instances_per_machine, machine_nozzle_size): defintion_instances_dir = Resources.getPath(CuraApplication.ResourceTypes.DefinitionChangesContainer) @@ -311,15 +312,19 @@ class VersionUpgrade30to31(VersionUpgrade): continue name = parser["general"]["name"] custom_extruder_at_0_position = None - for extruder_instance in extruder_instances_per_machine: + for machine_extruders in extruder_instances_per_machine: + for extruder_instance in extruder_instances_per_machine[machine_extruders]: - definition_position = extruder_instance["metadata"]["position"] + if extruder_instance["general"]["id"] + "_settings" == name: + defition_position = extruder_instance["metadata"]["position"] - if definition_position == "0": - custom_extruder_at_0_position = extruder_instance + if defition_position == "0": + custom_extruder_at_0_position = extruder_instance + break + if custom_extruder_at_0_position is not None: break - # If not null, then parsed file is for first extuder and then can be updated. I need to update only + #If not null, then parsed file is for first extuder and then can be updated. I need to update only # first, because this update for single extuder machine if custom_extruder_at_0_position is not None: @@ -369,4 +374,4 @@ class VersionUpgrade30to31(VersionUpgrade): quality_changes_dir = Resources.getPath(CuraApplication.ResourceTypes.QualityInstanceContainer) with open(os.path.join(quality_changes_dir, extruder_quality_changes_filename), "w") as f: - f.write(extruder_quality_changes_output.getvalue()) \ No newline at end of file + f.write(extruder_quality_changes_output.getvalue()) From 2cffb1759f68a7cd5c861e74540bb4dc3f95d1cf Mon Sep 17 00:00:00 2001 From: Lipu Fei Date: Fri, 22 Dec 2017 13:30:06 +0100 Subject: [PATCH 04/10] Revert "Version upgrade for nozzle_size" This reverts commit 54bc7dd348d77efa7f2dc3f420200df9864b8d37. CURA-4708 --- .../VersionUpgrade30to31.py | 142 ------------------ 1 file changed, 142 deletions(-) diff --git a/plugins/VersionUpgrade/VersionUpgrade30to31/VersionUpgrade30to31.py b/plugins/VersionUpgrade/VersionUpgrade30to31/VersionUpgrade30to31.py index c01ff158b1..8c5a160ff4 100644 --- a/plugins/VersionUpgrade/VersionUpgrade30to31/VersionUpgrade30to31.py +++ b/plugins/VersionUpgrade/VersionUpgrade30to31/VersionUpgrade30to31.py @@ -122,21 +122,6 @@ class VersionUpgrade30to31(VersionUpgrade): if len(all_quality_changes) <= 1 and not parser.has_option("metadata", "extruder"): self._createExtruderQualityChangesForSingleExtrusionMachine(filename, parser) - if parser["metadata"]["type"] == "definition_changes": - if parser["general"]["definition"] == "custom": - - # We are only interested in machine_nozzle_size - if parser.has_option("values", "machine_nozzle_size"): - machine_nozzle_size = parser["values"]["machine_nozzle_size"] - - definition_name = parser["general"]["name"] - machine_extruders = self._getSingleExtrusionMachineExtruders(definition_name) - - #For single extuder machine we nee only first extruder - if len(machine_extruders) !=0: - if self._updateSingleExtuderDefinitionFile(machine_extruders, machine_nozzle_size): - parser.remove_option("values", "machine_nozzle_size") - # Update version numbers parser["general"]["version"] = "2" parser["metadata"]["setting_version"] = "4" @@ -215,133 +200,6 @@ class VersionUpgrade30to31(VersionUpgrade): return quality_changes_containers - def _getSingleExtrusionMachineExtruders(self, definition_name): - - machine_instances_dir = Resources.getPath(CuraApplication.ResourceTypes.MachineStack) - - machine_instances = [] - - #Find all machine instances - for item in os.listdir(machine_instances_dir): - file_path = os.path.join(machine_instances_dir, item) - if not os.path.isfile(file_path): - continue - - parser = configparser.ConfigParser(interpolation=None) - try: - parser.read([file_path]) - except: - # skip, it is not a valid stack file - continue - - if not parser.has_option("metadata", "type"): - continue - if "machine" != parser["metadata"]["type"]: - continue - - if not parser.has_option("general", "id"): - continue - - machine_instances.append(parser) - - #Find for extruders - extruders_instances_dir = Resources.getPath(CuraApplication.ResourceTypes.ExtruderStack) - #"machine",[extruders] - extruder_instances_per_machine = {} - - #Find all custom extruders for founded machines - for item in os.listdir(extruders_instances_dir): - file_path = os.path.join(extruders_instances_dir, item) - if not os.path.isfile(file_path): - continue - - parser = configparser.ConfigParser(interpolation=None) - try: - parser.read([file_path]) - except: - # skip, it is not a valid stack file - continue - - if not parser.has_option("metadata", "type"): - continue - if "extruder_train" != parser["metadata"]["type"]: - continue - - if not parser.has_option("metadata", "machine"): - continue - if not parser.has_option("metadata", "position"): - continue - - - for machine_instace in machine_instances: - - machine_id = machine_instace["general"]["id"] - if machine_id != parser["metadata"]["machine"]: - continue - - if machine_id + "_settings" != definition_name: - continue - - if extruder_instances_per_machine.get(machine_id) is None: - extruder_instances_per_machine.update({machine_id:[]}) - - extruder_instances_per_machine.get(machine_id).append(parser) - #the extruder can be related only to one machine - break - - return extruder_instances_per_machine - - #Find extruder defition at index 0 and update its values - def _updateSingleExtuderDefinitionFile(self, extruder_instances_per_machine, machine_nozzle_size): - - defintion_instances_dir = Resources.getPath(CuraApplication.ResourceTypes.DefinitionChangesContainer) - - for item in os.listdir(defintion_instances_dir): - file_path = os.path.join(defintion_instances_dir, item) - if not os.path.isfile(file_path): - continue - - parser = configparser.ConfigParser(interpolation=None) - try: - parser.read([file_path]) - except: - # skip, it is not a valid stack file - continue - - if not parser.has_option("general", "name"): - continue - name = parser["general"]["name"] - custom_extruder_at_0_position = None - for machine_extruders in extruder_instances_per_machine: - for extruder_instance in extruder_instances_per_machine[machine_extruders]: - - if extruder_instance["general"]["id"] + "_settings" == name: - defition_position = extruder_instance["metadata"]["position"] - - if defition_position == "0": - custom_extruder_at_0_position = extruder_instance - break - if custom_extruder_at_0_position is not None: - break - - #If not null, then parsed file is for first extuder and then can be updated. I need to update only - # first, because this update for single extuder machine - if custom_extruder_at_0_position is not None: - - #Add new value - parser["values"]["machine_nozzle_size"] = machine_nozzle_size - - definition_output = io.StringIO() - parser.write(definition_output) - - with open(file_path, "w") as f: - f.write(definition_output.getvalue()) - - return True - - return False - - def _createExtruderQualityChangesForSingleExtrusionMachine(self, filename, global_quality_changes): suffix = "_" + quote_plus(global_quality_changes["general"]["name"].lower()) machine_name = os.path.os.path.basename(filename).replace(".inst.cfg", "").replace(suffix, "") From a7d51326c0c94cdcd8b6114764a43d3f24353955 Mon Sep 17 00:00:00 2001 From: Lipu Fei Date: Fri, 22 Dec 2017 14:06:11 +0100 Subject: [PATCH 05/10] Move extruder-specific DC settings CURA-4708 Read code comments. --- cura/Settings/ExtruderStack.py | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/cura/Settings/ExtruderStack.py b/cura/Settings/ExtruderStack.py index 42a2733879..6dffeda6c2 100644 --- a/cura/Settings/ExtruderStack.py +++ b/cura/Settings/ExtruderStack.py @@ -8,6 +8,7 @@ from UM.MimeTypeDatabase import MimeType, MimeTypeDatabase from UM.Settings.ContainerStack import ContainerStack from UM.Settings.ContainerRegistry import ContainerRegistry from UM.Settings.Interfaces import ContainerInterface, PropertyEvaluationContext +from UM.Settings.SettingInstance import SettingInstance from . import Exceptions from .CuraContainerStack import CuraContainerStack @@ -16,6 +17,11 @@ from .ExtruderManager import ExtruderManager if TYPE_CHECKING: from cura.Settings.GlobalStack import GlobalStack + +_EXTRUDER_SPECIFIC_DEFINITION_CHANGES_SETTINGS = ["machine_nozzle_size", + "material_diameter"] + + ## Represents an Extruder and its related containers. # # @@ -39,6 +45,29 @@ class ExtruderStack(CuraContainerStack): # For backward compatibility: Register the extruder with the Extruder Manager ExtruderManager.getInstance().registerExtruder(self, stack.id) + # Now each machine will have at least one extruder stack. If this is the first extruder, the extruder-specific + # settings such as nozzle size and material diameter should be moved from the machine's definition_changes to + # the this extruder's definition_changes. + # + # We do this here because it is tooooo expansive to do it in the version upgrade: During the version upgrade, + # when we are upgrading a definition_changes container file, there is NO guarantee that other files such as + # machine an extruder stack files are upgraded before this, so we cannot read those files assuming they are in + # the latest format. + if self.getMetaDataEntry("position") == "0": + for key in _EXTRUDER_SPECIFIC_DEFINITION_CHANGES_SETTINGS: + setting_value = stack.definitionChanges.getProperty(key, "value") + if setting_value is None: + continue + + setting_definition = stack.getSettingDefinition(key) + new_instance = SettingInstance(setting_definition, self.definitionChanges) + new_instance.setProperty("value", setting_value) + new_instance.resetState() # Ensure that the state is not seen as a user state. + self.definitionChanges.addInstance(new_instance) + self.definitionChanges.setDirty(True) + + stack.definitionChanges.removeInstance(key, postpone_emit = True) + @override(ContainerStack) def getNextStack(self) -> Optional["GlobalStack"]: return super().getNextStack() From 0cd392fbd233c1f4ed21afa44dab1d3219db36e7 Mon Sep 17 00:00:00 2001 From: Lipu Fei Date: Fri, 22 Dec 2017 14:08:22 +0100 Subject: [PATCH 06/10] Create new SettingInstance when moving extruder DC settings CURA-4708 --- cura/Settings/CuraContainerRegistry.py | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/cura/Settings/CuraContainerRegistry.py b/cura/Settings/CuraContainerRegistry.py index 292e7f1f82..533908a614 100644 --- a/cura/Settings/CuraContainerRegistry.py +++ b/cura/Settings/CuraContainerRegistry.py @@ -14,6 +14,7 @@ from UM.Decorators import override from UM.Settings.ContainerRegistry import ContainerRegistry from UM.Settings.ContainerStack import ContainerStack from UM.Settings.InstanceContainer import InstanceContainer +from UM.Settings.SettingInstance import SettingInstance from UM.Application import Application from UM.Logger import Logger from UM.Message import Message @@ -443,10 +444,16 @@ class CuraContainerRegistry(ContainerRegistry): # move definition_changes settings if exist for setting_key in ("machine_nozzle_size", "material_diameter"): - setting_instance = machine.definitionChanges.getInstance(setting_key) - if setting_instance is not None: + setting_value = machine.definitionChanges.getProperty(setting_key, "value") + if setting_value is not None: # move it to the extruder stack's definition_changes - definition_changes.addInstance(setting_instance) + setting_definition = machine.getSettingDefinition(setting_key) + new_instance = SettingInstance(setting_definition, definition_changes) + new_instance.setProperty("value", setting_value) + new_instance.resetState() # Ensure that the state is not seen as a user state. + definition_changes.addInstance(new_instance) + definition_changes.setDirty(True) + machine.definitionChanges.removeInstance(setting_key, postpone_emit = True) self.addContainer(definition_changes) From 0c28c61e0536ce3f73bf0415ee4e001e5fb92e82 Mon Sep 17 00:00:00 2001 From: Lipu Fei Date: Fri, 22 Dec 2017 14:09:13 +0100 Subject: [PATCH 07/10] Create new SettingInstances when moving user changes settings CURA-4708 --- cura/Settings/CuraContainerRegistry.py | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/cura/Settings/CuraContainerRegistry.py b/cura/Settings/CuraContainerRegistry.py index 533908a614..7b21332ee4 100644 --- a/cura/Settings/CuraContainerRegistry.py +++ b/cura/Settings/CuraContainerRegistry.py @@ -475,7 +475,15 @@ class CuraContainerRegistry(ContainerRegistry): for user_setting_key in machine.userChanges.getAllKeys(): settable_per_extruder = machine.getProperty(user_setting_key, "settable_per_extruder") if settable_per_extruder: - user_container.addInstance(machine.userChanges.getInstance(user_setting_key)) + setting_value = machine.getProperty(user_setting_key, "value") + + setting_definition = machine.getSettingDefinition(user_setting_key) + new_instance = SettingInstance(setting_definition, definition_changes) + new_instance.setProperty("value", setting_value) + new_instance.resetState() # Ensure that the state is not seen as a user state. + user_container.addInstance(new_instance) + user_container.setDirty(True) + machine.userChanges.removeInstance(user_setting_key, postpone_emit = True) self.addContainer(user_container) From 2e197f0f3480b7ee0ed82ff24d83d8f3803591a2 Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Tue, 2 Jan 2018 08:36:46 +0100 Subject: [PATCH 08/10] Move all per-extruder settings Also move things that we didn't think of previously, such as extruder offsets. You can't enter them as a user in the interface if it was single-extrusion, but you could've edited the files. Contributes to issue CURA-4708. --- cura/Settings/CuraContainerRegistry.py | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/cura/Settings/CuraContainerRegistry.py b/cura/Settings/CuraContainerRegistry.py index 7b21332ee4..008f3aa680 100644 --- a/cura/Settings/CuraContainerRegistry.py +++ b/cura/Settings/CuraContainerRegistry.py @@ -443,18 +443,19 @@ class CuraContainerRegistry(ContainerRegistry): definition_changes.addMetaDataEntry("definition", extruder_definition.getId()) # move definition_changes settings if exist - for setting_key in ("machine_nozzle_size", "material_diameter"): - setting_value = machine.definitionChanges.getProperty(setting_key, "value") - if setting_value is not None: - # move it to the extruder stack's definition_changes - setting_definition = machine.getSettingDefinition(setting_key) - new_instance = SettingInstance(setting_definition, definition_changes) - new_instance.setProperty("value", setting_value) - new_instance.resetState() # Ensure that the state is not seen as a user state. - definition_changes.addInstance(new_instance) - definition_changes.setDirty(True) + for setting_key in definition_changes.getAllKeys(): + if machine.definition.getProperty(setting_key, "settable_per_extruder"): + setting_value = machine.definitionChanges.getProperty(setting_key, "value") + if setting_value is not None: + # move it to the extruder stack's definition_changes + setting_definition = machine.getSettingDefinition(setting_key) + new_instance = SettingInstance(setting_definition, definition_changes) + new_instance.setProperty("value", setting_value) + new_instance.resetState() # Ensure that the state is not seen as a user state. + definition_changes.addInstance(new_instance) + definition_changes.setDirty(True) - machine.definitionChanges.removeInstance(setting_key, postpone_emit = True) + machine.definitionChanges.removeInstance(setting_key, postpone_emit = True) self.addContainer(definition_changes) extruder_stack.setDefinitionChanges(definition_changes) From 16dfc094ebd4990fd392e45f3675e4705bd1136c Mon Sep 17 00:00:00 2001 From: Lipu Fei Date: Tue, 2 Jan 2018 10:47:19 +0100 Subject: [PATCH 09/10] Fix version upgrade 30 to 31 CURA-4708 A merge mistake. No need to be there. --- .../VersionUpgrade30to31.py | 20 ------------------- 1 file changed, 20 deletions(-) diff --git a/plugins/VersionUpgrade/VersionUpgrade30to31/VersionUpgrade30to31.py b/plugins/VersionUpgrade/VersionUpgrade30to31/VersionUpgrade30to31.py index c87ce91545..8c5a160ff4 100644 --- a/plugins/VersionUpgrade/VersionUpgrade30to31/VersionUpgrade30to31.py +++ b/plugins/VersionUpgrade/VersionUpgrade30to31/VersionUpgrade30to31.py @@ -122,26 +122,6 @@ class VersionUpgrade30to31(VersionUpgrade): if len(all_quality_changes) <= 1 and not parser.has_option("metadata", "extruder"): self._createExtruderQualityChangesForSingleExtrusionMachine(filename, parser) - if parser["metadata"]["type"] == "definition_changes": - if parser["general"]["definition"] == "custom": - - # We are only interested in machine_nozzle_size - if parser.has_option("values", "machine_nozzle_size"): - machine_nozzle_size = parser["values"]["machine_nozzle_size"] - - machine_extruder_count = '1' # by default it is 1 and the value cannot be stored in the global stack - if parser.has_option("values", "machine_extruder_count"): - machine_extruder_count = parser["values"]["machine_extruder_count"] - - if machine_extruder_count == '1': - definition_name = parser["general"]["name"] - machine_extruders = self._getSingleExtrusionMachineExtruders(definition_name) - - # For single extruder machine we need only first extruder - if len(machine_extruders) != 0: - self._updateSingleExtruderDefinitionFile(machine_extruders, machine_nozzle_size) - parser.remove_option("values", "machine_nozzle_size") - # Update version numbers parser["general"]["version"] = "2" parser["metadata"]["setting_version"] = "4" From 2e4ffc83b53ee5275e25c0e0dbe457a8dfcec688 Mon Sep 17 00:00:00 2001 From: Lipu Fei Date: Tue, 2 Jan 2018 10:50:06 +0100 Subject: [PATCH 10/10] Add material_diameter to fdmextruder definition CURA-4708 --- resources/definitions/fdmextruder.def.json | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/resources/definitions/fdmextruder.def.json b/resources/definitions/fdmextruder.def.json index 2b314cd6a5..3a59e7df1e 100644 --- a/resources/definitions/fdmextruder.def.json +++ b/resources/definitions/fdmextruder.def.json @@ -181,6 +181,27 @@ } } }, + "material": { + "label": "Material", + "icon": "category_material", + "description": "Material", + "type": "category", + "children": { + "material_diameter": { + "label": "Diameter", + "description": "Adjusts the diameter of the filament used. Match this value with the diameter of the used filament.", + "unit": "mm", + "type": "float", + "default_value": 2.85, + "minimum_value": "0.0001", + "minimum_value_warning": "0.4", + "maximum_value_warning": "3.5", + "enabled": "machine_gcode_flavor != \"UltiGCode\"", + "settable_per_mesh": false, + "settable_per_extruder": true + } + } + }, "platform_adhesion": { "label": "Build Plate Adhesion",