mirror of
https://git.mirrors.martin98.com/https://github.com/Ultimaker/Cura
synced 2025-08-15 10:05:57 +08:00
CURA-4606 CURA-5012 corrected and moved approximateMaterialDiameter to ExtruderStack
This commit is contained in:
parent
d79206301d
commit
df46241225
@ -30,7 +30,7 @@ def getAvailableMaterials(extruder_position: Optional[int] = None):
|
|||||||
variant_name = None
|
variant_name = None
|
||||||
if extruder_stack.variant.getId() != "empty_variant":
|
if extruder_stack.variant.getId() != "empty_variant":
|
||||||
variant_name = extruder_stack.variant.getName()
|
variant_name = extruder_stack.variant.getName()
|
||||||
diameter = extruder_stack.getProperty("material_diameter", "value")
|
diameter = extruder_stack.approximateMaterialDiameter
|
||||||
|
|
||||||
# Fetch the available materials (ContainerNode) for the current active machine and extruder setup.
|
# Fetch the available materials (ContainerNode) for the current active machine and extruder setup.
|
||||||
result_dict = material_manager.getAvailableMaterials(machine_definition_id, variant_name, diameter)
|
result_dict = material_manager.getAvailableMaterials(machine_definition_id, variant_name, diameter)
|
||||||
|
@ -179,6 +179,7 @@ class ExtruderManager(QObject):
|
|||||||
self._selected_object_extruders = []
|
self._selected_object_extruders = []
|
||||||
self.selectedObjectExtrudersChanged.emit()
|
self.selectedObjectExtrudersChanged.emit()
|
||||||
|
|
||||||
|
@pyqtSlot(result = QObject)
|
||||||
def getActiveExtruderStack(self) -> Optional["ExtruderStack"]:
|
def getActiveExtruderStack(self) -> Optional["ExtruderStack"]:
|
||||||
global_container_stack = Application.getInstance().getGlobalContainerStack()
|
global_container_stack = Application.getInstance().getGlobalContainerStack()
|
||||||
|
|
||||||
|
@ -3,6 +3,8 @@
|
|||||||
|
|
||||||
from typing import Any, TYPE_CHECKING, Optional
|
from typing import Any, TYPE_CHECKING, Optional
|
||||||
|
|
||||||
|
from PyQt5.QtCore import pyqtProperty
|
||||||
|
|
||||||
from UM.Decorators import override
|
from UM.Decorators import override
|
||||||
from UM.MimeTypeDatabase import MimeType, MimeTypeDatabase
|
from UM.MimeTypeDatabase import MimeType, MimeTypeDatabase
|
||||||
from UM.Settings.ContainerStack import ContainerStack
|
from UM.Settings.ContainerStack import ContainerStack
|
||||||
@ -49,6 +51,33 @@ class ExtruderStack(CuraContainerStack):
|
|||||||
def getLoadingPriority(cls) -> int:
|
def getLoadingPriority(cls) -> int:
|
||||||
return 3
|
return 3
|
||||||
|
|
||||||
|
## Return the filament diameter that the machine requires.
|
||||||
|
#
|
||||||
|
# If the machine has no requirement for the diameter, -1 is returned.
|
||||||
|
# \return The filament diameter for the printer
|
||||||
|
@property
|
||||||
|
def materialDiameter(self) -> float:
|
||||||
|
containers_to_check = [self.variant, self.definitionChanges, self.definition]
|
||||||
|
|
||||||
|
for container in containers_to_check:
|
||||||
|
if container is not None:
|
||||||
|
material_diameter = container.getProperty("material_diameter", "value")
|
||||||
|
if material_diameter is not None:
|
||||||
|
return material_diameter
|
||||||
|
return -1
|
||||||
|
|
||||||
|
## Return the approximate filament diameter that the machine requires.
|
||||||
|
#
|
||||||
|
# The approximate material diameter is the material diameter rounded to
|
||||||
|
# the nearest millimetre.
|
||||||
|
#
|
||||||
|
# If the machine has no requirement for the diameter, -1 is returned.
|
||||||
|
#
|
||||||
|
# \return The approximate filament diameter for the printer
|
||||||
|
@pyqtProperty(float)
|
||||||
|
def approximateMaterialDiameter(self) -> float:
|
||||||
|
return round(float(self.materialDiameter))
|
||||||
|
|
||||||
## Overridden from ContainerStack
|
## Overridden from ContainerStack
|
||||||
#
|
#
|
||||||
# It will perform a few extra checks when trying to get properties.
|
# It will perform a few extra checks when trying to get properties.
|
||||||
|
@ -125,21 +125,6 @@ class GlobalStack(CuraContainerStack):
|
|||||||
def setNextStack(self, next_stack: ContainerStack) -> None:
|
def setNextStack(self, next_stack: ContainerStack) -> None:
|
||||||
raise Exceptions.InvalidOperationError("Global stack cannot have a next stack!")
|
raise Exceptions.InvalidOperationError("Global stack cannot have a next stack!")
|
||||||
|
|
||||||
## Gets the approximate filament diameter that the machine requires.
|
|
||||||
#
|
|
||||||
# The approximate material diameter is the material diameter rounded to
|
|
||||||
# the nearest millimetre.
|
|
||||||
#
|
|
||||||
# If the machine has no requirement for the diameter, -1 is returned.
|
|
||||||
#
|
|
||||||
# \return The approximate filament diameter for the printer, as a string.
|
|
||||||
@pyqtProperty(str)
|
|
||||||
def approximateMaterialDiameter(self) -> str:
|
|
||||||
material_diameter = self.definition.getProperty("material_diameter", "value")
|
|
||||||
if material_diameter is None:
|
|
||||||
return "-1"
|
|
||||||
return str(round(float(material_diameter))) #Round, then convert back to string.
|
|
||||||
|
|
||||||
# protected:
|
# protected:
|
||||||
|
|
||||||
# Determine whether or not we should try to get the "resolve" property instead of the
|
# Determine whether or not we should try to get the "resolve" property instead of the
|
||||||
|
@ -207,7 +207,7 @@ TabView
|
|||||||
var old_diameter = Cura.ContainerManager.getContainerProperty(base.containerId, "material_diameter", "value").toString();
|
var old_diameter = Cura.ContainerManager.getContainerProperty(base.containerId, "material_diameter", "value").toString();
|
||||||
var old_approximate_diameter = Cura.ContainerManager.getContainerMetaDataEntry(base.containerId, "approximate_diameter");
|
var old_approximate_diameter = Cura.ContainerManager.getContainerMetaDataEntry(base.containerId, "approximate_diameter");
|
||||||
var new_approximate_diameter = getApproximateDiameter(value);
|
var new_approximate_diameter = getApproximateDiameter(value);
|
||||||
if (Cura.MachineManager.filterMaterialsByMachine && new_approximate_diameter != Cura.MachineManager.activeMachine.approximateMaterialDiameter)
|
if (Cura.MachineManager.filterMaterialsByMachine && new_approximate_diameter != Cura.ExtruderManager.getActiveExtruderStack().approximateMaterialDiameter)
|
||||||
{
|
{
|
||||||
confirmDiameterChangeDialog.old_diameter_value = old_diameter;
|
confirmDiameterChangeDialog.old_diameter_value = old_diameter;
|
||||||
confirmDiameterChangeDialog.new_diameter_value = value;
|
confirmDiameterChangeDialog.new_diameter_value = value;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user