diff --git a/cura/Settings/ExtruderManager.py b/cura/Settings/ExtruderManager.py index 81a58c3f78..50d2034860 100644 --- a/cura/Settings/ExtruderManager.py +++ b/cura/Settings/ExtruderManager.py @@ -150,6 +150,18 @@ class ExtruderManager(QObject): if changed: self.extrudersChanged.emit(machine_id) + def registerExtruder(self, extruder_train, machine_id): + changed = False + + if machine_id not in self._extruder_trains: + self._extruder_trains[machine_id] = {} + changed = True + if extruder_train: + self._extruder_trains[machine_id][extruder_train.getMetaDataEntry("position")] = extruder_train + changed = True + if changed: + self.extrudersChanged.emit(machine_id) + ## Creates a container stack for an extruder train. # # The container stack has an extruder definition at the bottom, which is diff --git a/plugins/3MFReader/ThreeMFWorkspaceReader.py b/plugins/3MFReader/ThreeMFWorkspaceReader.py index df395b9e67..719ec1c8d7 100644 --- a/plugins/3MFReader/ThreeMFWorkspaceReader.py +++ b/plugins/3MFReader/ThreeMFWorkspaceReader.py @@ -301,11 +301,11 @@ class ThreeMFWorkspaceReader(WorkspaceReader): quality_changes_index = stack.getContainerIndex(old_container) stack.replaceContainer(quality_changes_index, container) - # TODO: This is nasty hack; this should be made way more robust (setter?) - if global_stack.getId() not in ExtruderManager.getInstance()._extruder_trains: - ExtruderManager.getInstance()._extruder_trains[global_stack.getId()] = {} for stack in extruder_stacks: - ExtruderManager.getInstance()._extruder_trains[global_stack.getId()][stack.getMetaDataEntry("position")] = stack + ExtruderManager.getInstance().registerExtruder(stack, global_stack.getId()) + else: + # Machine has no extruders, but it needs to be registered with the extruder manager. + ExtruderManager.getInstance().registerExtruder(None, global_stack.getId()) Logger.log("d", "Workspace loading is notifying rest of the code of changes...") # Notify everything/one that is to notify about changes. diff --git a/plugins/3MFReader/WorkspaceDialog.qml b/plugins/3MFReader/WorkspaceDialog.qml index 3b33fa8661..4120c5b61e 100644 --- a/plugins/3MFReader/WorkspaceDialog.qml +++ b/plugins/3MFReader/WorkspaceDialog.qml @@ -128,7 +128,7 @@ UM.Dialog width: parent.width height: visible ? 25 : 0 text: catalog.i18nc("@info:tooltip", "How should the conflict in the material(s) be resolved?") - visible: false #manager.materialConflict + visible: false //manager.materialConflict Row { width: parent.width