diff --git a/plugins/3MFReader/ThreeMFWorkspaceReader.py b/plugins/3MFReader/ThreeMFWorkspaceReader.py index f25d98a10b..10b38a9d69 100755 --- a/plugins/3MFReader/ThreeMFWorkspaceReader.py +++ b/plugins/3MFReader/ThreeMFWorkspaceReader.py @@ -1095,7 +1095,8 @@ class ThreeMFWorkspaceReader(WorkspaceReader): if global_stack.getProperty(key, "settable_per_extruder"): values_to_set_for_extruders[key] = value else: - global_stack.definitionChanges.setProperty(key, "value", value) + if not self._settingIsFromMissingPackage(key, value): + global_stack.definitionChanges.setProperty(key, "value", value) for position, extruder_stack in extruder_stack_dict.items(): if position not in self._machine_info.extruder_info_dict: @@ -1109,7 +1110,8 @@ class ThreeMFWorkspaceReader(WorkspaceReader): extruder_stack.definitionChanges.setProperty(key, "value", value) if parser is not None: for key, value in parser["values"].items(): - extruder_stack.definitionChanges.setProperty(key, "value", value) + if not self._settingIsFromMissingPackage(key, value): + extruder_stack.definitionChanges.setProperty(key, "value", value) def _applyUserChanges(self, global_stack, extruder_stack_dict): values_to_set_for_extruder_0 = {} @@ -1119,7 +1121,8 @@ class ThreeMFWorkspaceReader(WorkspaceReader): if global_stack.getProperty(key, "settable_per_extruder"): values_to_set_for_extruder_0[key] = value else: - global_stack.userChanges.setProperty(key, "value", value) + if not self._settingIsFromMissingPackage(key, value): + global_stack.userChanges.setProperty(key, "value", value) for position, extruder_stack in extruder_stack_dict.items(): if position not in self._machine_info.extruder_info_dict: @@ -1133,7 +1136,8 @@ class ThreeMFWorkspaceReader(WorkspaceReader): extruder_stack.userChanges.setProperty(key, "value", value) if parser is not None: for key, value in parser["values"].items(): - extruder_stack.userChanges.setProperty(key, "value", value) + if not self._settingIsFromMissingPackage(key, value): + extruder_stack.userChanges.setProperty(key, "value", value) def _applyVariants(self, global_stack, extruder_stack_dict): machine_node = ContainerTree.getInstance().machines[global_stack.definition.getId()] @@ -1208,6 +1212,15 @@ class ThreeMFWorkspaceReader(WorkspaceReader): if key not in _ignored_machine_network_metadata: global_stack.setMetaDataEntry(key, value) + def _settingIsFromMissingPackage(self, key, value): + # Check if the key and value pair is from the missing package + for package in self._dialog.missingPackages: + if value.startswith("PLUGIN::"): + if (package['id'] + "@" + package['package_version']) in value: + Logger.log("w", f"Ignoring {key} value {value} from missing package") + return True + return False + def _updateActiveMachine(self, global_stack): # Actually change the active machine. machine_manager = Application.getInstance().getMachineManager() @@ -1327,3 +1340,4 @@ class ThreeMFWorkspaceReader(WorkspaceReader): missing_packages.append(package) return missing_packages +