mirror of
https://github.com/Ultimaker/Cura.git
synced 2025-07-16 19:28:07 -06:00
Add optional machine_extruder_count when creating a machine
If the machine_extruder_count is not taken into consideration on machine creation, calling the extruderList of that machine will return an incomplete list of extruders (since it considers the default machine_extruder_count). This causes problems in machines with settable number of extruders where the default machine_extruder_count is 1 while the machine may have more than 1 extruders. The problem becomes especially visible when opening a project file with e.g. a CFFF with multiple extruders, because when the machine is created we do not know yet how many extruders the printer actually has. CURA-7646
This commit is contained in:
parent
e7d95f6d90
commit
2828f45e89
1 changed files with 10 additions and 3 deletions
|
@ -16,13 +16,13 @@ from .ExtruderStack import ExtruderStack
|
||||||
class CuraStackBuilder:
|
class CuraStackBuilder:
|
||||||
"""Contains helper functions to create new machines."""
|
"""Contains helper functions to create new machines."""
|
||||||
|
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def createMachine(cls, name: str, definition_id: str) -> Optional[GlobalStack]:
|
def createMachine(cls, name: str, definition_id: str, machine_extruder_count: Optional[int] = None) -> Optional[GlobalStack]:
|
||||||
"""Create a new instance of a machine.
|
"""Create a new instance of a machine.
|
||||||
|
|
||||||
:param name: The name of the new machine.
|
:param name: The name of the new machine.
|
||||||
:param definition_id: The ID of the machine definition to use.
|
:param definition_id: The ID of the machine definition to use.
|
||||||
|
:param machine_extruder_count: The number of extruders in the machine.
|
||||||
|
|
||||||
:return: The new global stack or None if an error occurred.
|
:return: The new global stack or None if an error occurred.
|
||||||
"""
|
"""
|
||||||
|
@ -66,7 +66,14 @@ class CuraStackBuilder:
|
||||||
Logger.logException("e", "Failed to create an extruder stack for position {pos}: {err}".format(pos = position, err = str(e)))
|
Logger.logException("e", "Failed to create an extruder stack for position {pos}: {err}".format(pos = position, err = str(e)))
|
||||||
return None
|
return None
|
||||||
|
|
||||||
for new_extruder in new_global_stack.extruderList: # Only register the extruders if we're sure that all of them are correct.
|
# If given, set the machine_extruder_count when creating the machine, or else the extruderList used bellow will
|
||||||
|
# not return the correct extruder list (since by default, the machine_extruder_count is 1) in machines with
|
||||||
|
# settable number of extruders. See CURA-7646.
|
||||||
|
if machine_extruder_count and 0 <= machine_extruder_count <= len(extruder_dict):
|
||||||
|
new_global_stack.setProperty("machine_extruder_count", "value", machine_extruder_count)
|
||||||
|
|
||||||
|
# Only register the extruders if we're sure that all of them are correct.
|
||||||
|
for new_extruder in new_global_stack.extruderList:
|
||||||
registry.addContainer(new_extruder)
|
registry.addContainer(new_extruder)
|
||||||
|
|
||||||
# Register the global stack after the extruder stacks are created. This prevents the registry from adding another
|
# Register the global stack after the extruder stacks are created. This prevents the registry from adding another
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue