Use position number to get extruders for overriding in project loading

CURA-3756
This commit is contained in:
Lipu Fei 2017-05-18 14:34:00 +02:00
parent 89adc46142
commit 870d6fe76a

View file

@ -312,11 +312,17 @@ class ThreeMFWorkspaceReader(WorkspaceReader):
return WorkspaceReader.PreReadResult.accepted return WorkspaceReader.PreReadResult.accepted
## Overrides an ExtruderStack in the given GlobalStack and returns the new ExtruderStack. ## Overrides an ExtruderStack in the given GlobalStack and returns the new ExtruderStack.
def _overrideExtruderStack(self, global_stack, extruder_index, extruder_file_content): def _overrideExtruderStack(self, global_stack, extruder_file_content):
extruder_index_str = str(extruder_index) # get extruder position first
extruder_config = configparser.ConfigParser()
extruder_config.read_string(extruder_file_content)
if not extruder_config.has_option("metadata", "position"):
msg = "Could not find 'metadata/position' in extruder stack file"
Logger.log("e", "Could not find 'metadata/position' in extruder stack file")
raise RuntimeError(msg)
extruder_position = extruder_config.get("metadata", "position")
extruder_stack = global_stack.extruders[extruder_index_str] extruder_stack = global_stack.extruders[extruder_position]
old_extruder_stack_id = extruder_stack.getId()
# override the given extruder stack # override the given extruder stack
extruder_stack.deserialize(extruder_file_content) extruder_stack.deserialize(extruder_file_content)
@ -631,7 +637,7 @@ class ThreeMFWorkspaceReader(WorkspaceReader):
if self._resolve_strategies["machine"] == "override": if self._resolve_strategies["machine"] == "override":
# NOTE: This is the same code as those in the lower part # NOTE: This is the same code as those in the lower part
# deserialize new extruder stack over the current ones # deserialize new extruder stack over the current ones
stack = self._overrideExtruderStack(global_stack, index, extruder_file_content) stack = self._overrideExtruderStack(global_stack, extruder_file_content)
elif self._resolve_strategies["machine"] == "new": elif self._resolve_strategies["machine"] == "new":
# create a new extruder stack from this one # create a new extruder stack from this one
@ -662,7 +668,7 @@ class ThreeMFWorkspaceReader(WorkspaceReader):
# No extruder stack with the same ID can be found # No extruder stack with the same ID can be found
if self._resolve_strategies["machine"] == "override": if self._resolve_strategies["machine"] == "override":
# deserialize new extruder stack over the current ones # deserialize new extruder stack over the current ones
stack = self._overrideExtruderStack(global_stack, index, extruder_file_content) stack = self._overrideExtruderStack(global_stack, extruder_file_content)
elif self._resolve_strategies["machine"] == "new": elif self._resolve_strategies["machine"] == "new":
# container not found, create a new one # container not found, create a new one