Просмотр исходного кода

Merge pull request #12530 from Ultimaker/CURA-8610_save_required_packages_metadata

[CURA-8610] save required packages metadata
Jaime van Kessel 2 лет назад
Родитель
Сommit
ac32f3b625
2 измененных файлов с 7 добавлено и 3 удалено
  1. 5 3
      cura/CuraPackageManager.py
  2. 2 0
      plugins/3MFWriter/ThreeMFWriter.py

+ 5 - 3
cura/CuraPackageManager.py

@@ -62,10 +62,11 @@ class CuraPackageManager(PackageManager):
         for path in Resources.getSecureSearchPaths():
             # Secure search paths are install directory paths, if a material is in here it must be bundled.
 
-            paths = [Path(p) for p in glob.glob(path + '/**/*.xml.fdm_material')]
+            paths = [Path(p) for p in glob.glob(path + '/**/*.xml.fdm_material', recursive=True)]
             for material in paths:
                 if material.name == file_name:
-                    with open(str(material), encoding="utf-8") as f:
+                    Logger.info(f"Found bundled material: {material.name}. Located in path: {str(material)}")
+                    with open(material, encoding="utf-8") as f:
                         # Make sure the file we found has the same guid as our material
                         # Parsing this xml would be better but the namespace is needed to search it.
                         parsed_guid = PluginRegistry.getInstance().getPluginObject(
@@ -87,11 +88,12 @@ class CuraPackageManager(PackageManager):
                     # File with the name we are looking for is not in this directory
                     continue
 
-                with open(root + "/" + file_name, encoding="utf-8") as f:
+                with open(os.path.join(root, file_name), encoding="utf-8") as f:
                     # Make sure the file we found has the same guid as our material
                     # Parsing this xml would be better but the namespace is needed to search it.
                     parsed_guid = PluginRegistry.getInstance().getPluginObject("XmlMaterialProfile").getMetadataFromSerialized(
                         f.read(), "GUID")
+
                     if guid == parsed_guid:
                         return package_id
 

+ 2 - 0
plugins/3MFWriter/ThreeMFWriter.py

@@ -10,6 +10,7 @@ from UM.Logger import Logger
 from UM.Math.Matrix import Matrix
 from UM.Application import Application
 from UM.Message import Message
+from UM.Resources import Resources
 from UM.Scene.SceneNode import SceneNode
 
 from cura.CuraApplication import CuraApplication
@@ -276,6 +277,7 @@ class ThreeMFWriter(MeshWriter):
 
             if not package_data:
                 # We failed to find the package for this material
+
                 message = Message(catalog.i18nc("@error:material",
                                                 "It was not possible to store material package information in project file: {material}. This project may not open correctly on other systems.".format(material=extruder.getName())),
                                   title=catalog.i18nc("@info:title", "Failed to save material package information"),