Browse Source

Ensure profiles are always exported in order (global, ex. 0, ex. 1, ...)

The order is important because the importer expects this order.

CURA-2478
fieldOfView 8 years ago
parent
commit
71c22e8369
1 changed files with 15 additions and 0 deletions
  1. 15 0
      cura/Settings/CuraContainerRegistry.py

+ 15 - 0
cura/Settings/CuraContainerRegistry.py

@@ -84,11 +84,26 @@ class CuraContainerRegistry(ContainerRegistry):
                 if result == QMessageBox.No:
                     return
         found_containers = []
+        extruder_positions = []
         for instance_id in instance_ids:
             containers = ContainerRegistry.getInstance().findInstanceContainers(id=instance_id)
             if containers:
                 found_containers.append(containers[0])
 
+                # Determine the position of the extruder of this container
+                extruder_id = containers[0].getMetaDataEntry("extruder", "")
+                if extruder_id == "":
+                    # Global stack
+                    extruder_positions.append(-1)
+                else:
+                    extruder_containers = ContainerRegistry.getInstance().findDefinitionContainers(id=extruder_id)
+                    if extruder_containers:
+                        extruder_positions.append(int(extruder_containers[0].getMetaDataEntry("position", 0)))
+                    else:
+                        extruder_positions.append(0)
+        # Ensure the profiles are always exported in order (global, extruder 0, extruder 1, ...)
+        found_containers = [containers for (positions, containers) in sorted(zip(extruder_positions, found_containers))]
+
         profile_writer = self._findProfileWriter(extension, description)
 
         try: