Fix _applyVariants using variant manager

The variant manager doesn't get properly filled any more.

Contributes to issue CURA-6776.
This commit is contained in:
Ghostkeeper 2019-09-20 09:45:55 +02:00
parent 4a68e7ec95
commit 3479a3df76
No known key found for this signature in database
GPG key ID: 86BEF881AE2CF276

View file

@ -920,41 +920,27 @@ class ThreeMFWorkspaceReader(WorkspaceReader):
extruder_stack.userChanges.setProperty(key, "value", value) extruder_stack.userChanges.setProperty(key, "value", value)
def _applyVariants(self, global_stack, extruder_stack_dict): def _applyVariants(self, global_stack, extruder_stack_dict):
application = CuraApplication.getInstance() machine_node = ContainerTree.getInstance().machines[global_stack.definition.getId()]
variant_manager = application.getVariantManager()
# Take the global variant from the machine info if available.
if self._machine_info.variant_info is not None: if self._machine_info.variant_info is not None:
parser = self._machine_info.variant_info.parser variant_name = self._machine_info.variant_info.parser["general"]["name"]
variant_name = parser["general"]["name"] global_stack.variant = machine_node.variants[variant_name].container
variant_type = VariantType.BUILD_PLATE
node = variant_manager.getVariantNode(global_stack.definition.getId(), variant_name, variant_type)
if node is not None and node.container is not None:
global_stack.variant = node.container
for position, extruder_stack in extruder_stack_dict.items(): for position, extruder_stack in extruder_stack_dict.items():
if position not in self._machine_info.extruder_info_dict: if position not in self._machine_info.extruder_info_dict:
continue continue
extruder_info = self._machine_info.extruder_info_dict[position] extruder_info = self._machine_info.extruder_info_dict[position]
if extruder_info.variant_info is None: if extruder_info.variant_info is None:
# If there is no variant_info, try to use the default variant. Otherwise, leave it be. # If there is no variant_info, try to use the default variant. Otherwise, any available variant.
machine_node = ContainerTree.getInstance().machines[global_stack.definition.getId()] node = machine_node.variants.get(machine_node.preferred_variant_name, next(iter(machine_node.variants.values())))
node = machine_node.variants[machine_node.preferred_variant_name] else:
if node is not None and node.container is not None: variant_name = extruder_info.variant_info.parser["general"]["name"]
extruder_stack.variant = node.container
continue
parser = extruder_info.variant_info.parser
variant_name = parser["general"]["name"]
variant_type = VariantType.NOZZLE
node = ContainerTree.getInstance().machines[global_stack.definition.getId()].variants[variant_name] node = ContainerTree.getInstance().machines[global_stack.definition.getId()].variants[variant_name]
if node is not None and node.container is not None:
extruder_stack.variant = node.container extruder_stack.variant = node.container
def _applyMaterials(self, global_stack, extruder_stack_dict): def _applyMaterials(self, global_stack, extruder_stack_dict):
machine_node = ContainerTree.getInstance().machines[global_stack] machine_node = ContainerTree.getInstance().machines[global_stack.definition.getId()]
for position, extruder_stack in extruder_stack_dict.items(): for position, extruder_stack in extruder_stack_dict.items():
if position not in self._machine_info.extruder_info_dict: if position not in self._machine_info.extruder_info_dict:
continue continue