mirror of
https://github.com/Ultimaker/Cura.git
synced 2025-07-10 08:17:49 -06:00
Restore both material and variant to match 1st extruder when switching to single extrusion
This commit is contained in:
parent
8d42f9c187
commit
2ca24ba7e6
2 changed files with 25 additions and 7 deletions
|
@ -505,6 +505,17 @@ class MachineManager(QObject):
|
||||||
|
|
||||||
return result
|
return result
|
||||||
|
|
||||||
|
@pyqtProperty("QVariantList", notify = activeVariantChanged)
|
||||||
|
def activeMaterialIds(self):
|
||||||
|
result = []
|
||||||
|
if ExtruderManager.getInstance().getActiveGlobalAndExtruderStacks() is not None:
|
||||||
|
for stack in ExtruderManager.getInstance().getActiveGlobalAndExtruderStacks():
|
||||||
|
variant_container = stack.findContainer({"type": "variant"})
|
||||||
|
if variant_container and variant_container != self._empty_variant_container:
|
||||||
|
result.append(variant_container.getId())
|
||||||
|
|
||||||
|
return result
|
||||||
|
|
||||||
@pyqtProperty("QVariantList", notify = activeMaterialChanged)
|
@pyqtProperty("QVariantList", notify = activeMaterialChanged)
|
||||||
def activeMaterialNames(self):
|
def activeMaterialNames(self):
|
||||||
result = []
|
result = []
|
||||||
|
|
|
@ -134,9 +134,14 @@ class MachineSettingsAction(MachineAction):
|
||||||
if extruder_count == self._global_container_stack.getProperty("machine_extruder_count", "value"):
|
if extruder_count == self._global_container_stack.getProperty("machine_extruder_count", "value"):
|
||||||
return
|
return
|
||||||
|
|
||||||
extruder_material = None
|
extruder_material_id = None
|
||||||
if extruder_count == 1 and machine_manager.hasMaterials:
|
extruder_variant_id = None
|
||||||
extruder_material = machine_manager.allActiveMaterialIds[machine_manager.activeStackId]
|
if extruder_count == 1:
|
||||||
|
# Get the material and variant of the first extruder before setting the number extruders to 1
|
||||||
|
if machine_manager.hasMaterials:
|
||||||
|
extruder_material_id = machine_manager.allActiveMaterialIds[extruder_manager.extruderIds["0"]]
|
||||||
|
if machine_manager.hasVariants:
|
||||||
|
extruder_variant_id = machine_manager.activeVariantIds[0]
|
||||||
|
|
||||||
definition_changes_container.setProperty("machine_extruder_count", "value", extruder_count)
|
definition_changes_container.setProperty("machine_extruder_count", "value", extruder_count)
|
||||||
self.forceUpdate()
|
self.forceUpdate()
|
||||||
|
@ -150,10 +155,12 @@ class MachineSettingsAction(MachineAction):
|
||||||
if extruder_manager.activeExtruderIndex > -1:
|
if extruder_manager.activeExtruderIndex > -1:
|
||||||
extruder_manager.setActiveExtruderIndex(-1);
|
extruder_manager.setActiveExtruderIndex(-1);
|
||||||
|
|
||||||
if extruder_material:
|
# Restore material and variant on global stack
|
||||||
# restore material on global stack
|
# MachineManager._onGlobalContainerChanged removes the global material and vaiant of multiextruder machines
|
||||||
# MachineManager._onGlobalContainerChanged removes the global material of multiextruder machines
|
if extruder_material_id:
|
||||||
machine_manager.setActiveMaterial(extruder_material);
|
machine_manager.setActiveMaterial(extruder_material_id);
|
||||||
|
if extruder_variant_id:
|
||||||
|
machine_manager.setActiveVariant(extruder_variant_id);
|
||||||
|
|
||||||
|
|
||||||
@pyqtSlot()
|
@pyqtSlot()
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue