diff --git a/plugins/3MFReader/ThreeMFWorkspaceReader.py b/plugins/3MFReader/ThreeMFWorkspaceReader.py index 59a001bdc6..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,14 +1136,7 @@ class ThreeMFWorkspaceReader(WorkspaceReader): extruder_stack.userChanges.setProperty(key, "value", value) if parser is not None: for key, value in parser["values"].items(): - value_not_in_missing_package = True - if "PLUGIN" in value: - for package in self._dialog.missingPackages: - if (package['id']+"@"+package['package_version']) in value: - value_not_in_missing_package = False - Logger.log("w", f"Ignoring {key} value {value} from missing package") - - if value_not_in_missing_package : + if not self._settingIsFromMissingPackage(key, value): extruder_stack.userChanges.setProperty(key, "value", value) def _applyVariants(self, global_stack, extruder_stack_dict): @@ -1216,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() @@ -1335,3 +1340,4 @@ class ThreeMFWorkspaceReader(WorkspaceReader): missing_packages.append(package) return missing_packages +