mirror of
https://github.com/Ultimaker/Cura.git
synced 2025-07-06 22:47:29 -06:00
Create own quality changes profiles instead of asking quality manager
It was a protected function call on a different class anyway, so that should never have gotten accepted. Contributes to issue CURA-6600.
This commit is contained in:
parent
9a6f76c069
commit
71b94f6d5b
2 changed files with 26 additions and 9 deletions
|
@ -20,7 +20,9 @@ from UM.Settings.ContainerRegistry import ContainerRegistry
|
||||||
from UM.Settings.ContainerStack import ContainerStack
|
from UM.Settings.ContainerStack import ContainerStack
|
||||||
from UM.Settings.DefinitionContainer import DefinitionContainer
|
from UM.Settings.DefinitionContainer import DefinitionContainer
|
||||||
from UM.Settings.InstanceContainer import InstanceContainer
|
from UM.Settings.InstanceContainer import InstanceContainer
|
||||||
|
|
||||||
import cura.CuraApplication
|
import cura.CuraApplication
|
||||||
|
from cura.Machines.ContainerTree import ContainerTree
|
||||||
from cura.Machines.MaterialManager import MaterialManager
|
from cura.Machines.MaterialManager import MaterialManager
|
||||||
|
|
||||||
if TYPE_CHECKING:
|
if TYPE_CHECKING:
|
||||||
|
@ -271,24 +273,30 @@ class ContainerManager(QObject):
|
||||||
# \return \type{bool} True if successful, False if not.
|
# \return \type{bool} True if successful, False if not.
|
||||||
@pyqtSlot(result = bool)
|
@pyqtSlot(result = bool)
|
||||||
def updateQualityChanges(self) -> bool:
|
def updateQualityChanges(self) -> bool:
|
||||||
global_stack = cura.CuraApplication.CuraApplication.getInstance().getMachineManager().activeMachine
|
application = cura.CuraApplication.CuraApplication.getInstance()
|
||||||
|
global_stack = application.getMachineManager().activeMachine
|
||||||
if not global_stack:
|
if not global_stack:
|
||||||
return False
|
return False
|
||||||
|
|
||||||
cura.CuraApplication.CuraApplication.getInstance().getMachineManager().blurSettings.emit()
|
application.getMachineManager().blurSettings.emit()
|
||||||
|
|
||||||
current_quality_changes_name = global_stack.qualityChanges.getName()
|
current_quality_changes_name = global_stack.qualityChanges.getName()
|
||||||
current_quality_type = global_stack.quality.getMetaDataEntry("quality_type")
|
current_quality_type = global_stack.quality.getMetaDataEntry("quality_type")
|
||||||
extruder_stacks = list(global_stack.extruders.values())
|
extruder_stacks = list(global_stack.extruders.values())
|
||||||
container_registry = cura.CuraApplication.CuraApplication.getInstance().getContainerRegistry()
|
container_registry = cura.CuraApplication.CuraApplication.getInstance().getContainerRegistry()
|
||||||
quality_manager = QualityManager.getInstance()
|
machine_definition_id = ContainerTree.getInstance().definitions[global_stack.definition.getId()].quality_definition
|
||||||
for stack in [global_stack] + extruder_stacks:
|
for stack in [global_stack] + extruder_stacks:
|
||||||
# Find the quality_changes container for this stack and merge the contents of the top container into it.
|
# Find the quality_changes container for this stack and merge the contents of the top container into it.
|
||||||
quality_changes = stack.qualityChanges
|
quality_changes = stack.qualityChanges
|
||||||
|
|
||||||
if quality_changes.getId() == "empty_quality_changes":
|
if quality_changes.getId() == "empty_quality_changes":
|
||||||
quality_changes = quality_manager._createQualityChanges(current_quality_type, current_quality_changes_name,
|
quality_changes = InstanceContainer(container_registry.uniqueName((stack.getId() + "_" + current_quality_changes_name).lower().replace(" ", "_")))
|
||||||
global_stack, stack)
|
quality_changes.setName(current_quality_changes_name)
|
||||||
|
quality_changes.setMetaDataEntry("type", "quality_changes")
|
||||||
|
quality_changes.setMetaDataEntry("quality_type", current_quality_type)
|
||||||
|
quality_changes.setMetaDataEntry("position", stack.getMetaDataEntry("position"))
|
||||||
|
quality_changes.setMetaDataEntry("setting_version", application.SettingVersion)
|
||||||
|
quality_changes.setDefinition(machine_definition_id)
|
||||||
container_registry.addContainer(quality_changes)
|
container_registry.addContainer(quality_changes)
|
||||||
stack.qualityChanges = quality_changes
|
stack.qualityChanges = quality_changes
|
||||||
|
|
||||||
|
|
|
@ -116,17 +116,22 @@ class GCodeWriter(MeshWriter):
|
||||||
# \return A serialised string of the settings.
|
# \return A serialised string of the settings.
|
||||||
def _serialiseSettings(self, stack):
|
def _serialiseSettings(self, stack):
|
||||||
container_registry = self._application.getContainerRegistry()
|
container_registry = self._application.getContainerRegistry()
|
||||||
quality_manager = self._application.getQualityManager()
|
|
||||||
|
|
||||||
prefix = self._setting_keyword + str(GCodeWriter.version) + " " # The prefix to put before each line.
|
prefix = self._setting_keyword + str(GCodeWriter.version) + " " # The prefix to put before each line.
|
||||||
prefix_length = len(prefix)
|
prefix_length = len(prefix)
|
||||||
|
|
||||||
quality_type = stack.quality.getMetaDataEntry("quality_type")
|
quality_type = stack.quality.getMetaDataEntry("quality_type")
|
||||||
container_with_profile = stack.qualityChanges
|
container_with_profile = stack.qualityChanges
|
||||||
|
machine_definition_id_for_quality = ContainerTree.getInstance().machines[stack.definition.getId()].quality_definition
|
||||||
if container_with_profile.getId() == "empty_quality_changes":
|
if container_with_profile.getId() == "empty_quality_changes":
|
||||||
# If the global quality changes is empty, create a new one
|
# If the global quality changes is empty, create a new one
|
||||||
quality_name = container_registry.uniqueName(stack.quality.getName())
|
quality_name = container_registry.uniqueName(stack.quality.getName())
|
||||||
container_with_profile = quality_manager._createQualityChanges(quality_type, quality_name, stack, None)
|
quality_id = container_registry.uniqueName((stack.definition.getId() + "_" + quality_name).lower().replace(" ", "_"))
|
||||||
|
container_with_profile = InstanceContainer(quality_id)
|
||||||
|
container_with_profile.setName(quality_name)
|
||||||
|
container_with_profile.setMetaDataEntry("type", "quality_changes")
|
||||||
|
container_with_profile.setMetaDataEntry("quality_type", quality_type)
|
||||||
|
container_with_profile.setDefinition(machine_definition_id_for_quality)
|
||||||
|
|
||||||
flat_global_container = self._createFlattenedContainerInstance(stack.userChanges, container_with_profile)
|
flat_global_container = self._createFlattenedContainerInstance(stack.userChanges, container_with_profile)
|
||||||
# If the quality changes is not set, we need to set type manually
|
# If the quality changes is not set, we need to set type manually
|
||||||
|
@ -138,7 +143,6 @@ class GCodeWriter(MeshWriter):
|
||||||
flat_global_container.setMetaDataEntry("quality_type", stack.quality.getMetaDataEntry("quality_type", "normal"))
|
flat_global_container.setMetaDataEntry("quality_type", stack.quality.getMetaDataEntry("quality_type", "normal"))
|
||||||
|
|
||||||
# Get the machine definition ID for quality profiles
|
# Get the machine definition ID for quality profiles
|
||||||
machine_definition_id_for_quality = ContainerTree.getInstance().machines[stack.definition.getId()].quality_definition
|
|
||||||
flat_global_container.setMetaDataEntry("definition", machine_definition_id_for_quality)
|
flat_global_container.setMetaDataEntry("definition", machine_definition_id_for_quality)
|
||||||
|
|
||||||
serialized = flat_global_container.serialize()
|
serialized = flat_global_container.serialize()
|
||||||
|
@ -150,7 +154,12 @@ class GCodeWriter(MeshWriter):
|
||||||
if extruder_quality.getId() == "empty_quality_changes":
|
if extruder_quality.getId() == "empty_quality_changes":
|
||||||
# Same story, if quality changes is empty, create a new one
|
# Same story, if quality changes is empty, create a new one
|
||||||
quality_name = container_registry.uniqueName(stack.quality.getName())
|
quality_name = container_registry.uniqueName(stack.quality.getName())
|
||||||
extruder_quality = quality_manager._createQualityChanges(quality_type, quality_name, stack, None)
|
quality_id = container_registry.uniqueName((stack.definition.getId() + "_" + quality_name).lower().replace(" ", "_"))
|
||||||
|
extruder_quality = InstanceContainer(quality_id)
|
||||||
|
extruder_quality.setName(quality_name)
|
||||||
|
extruder_quality.setMetaDataEntry("type", "quality_changes")
|
||||||
|
extruder_quality.setMetaDataEntry("quality_type", quality_type)
|
||||||
|
extruder_quality.setDefinition(machine_definition_id_for_quality)
|
||||||
|
|
||||||
flat_extruder_quality = self._createFlattenedContainerInstance(extruder.userChanges, extruder_quality)
|
flat_extruder_quality = self._createFlattenedContainerInstance(extruder.userChanges, extruder_quality)
|
||||||
# If the quality changes is not set, we need to set type manually
|
# If the quality changes is not set, we need to set type manually
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue