mirror of
https://github.com/Ultimaker/Cura.git
synced 2025-07-15 02:37:49 -06:00
Create extruder stack for single extrusion machines when adding new machine - CURA-4482
This commit is contained in:
parent
9806ec7374
commit
f36c9ffbc0
4 changed files with 37 additions and 21 deletions
|
@ -919,13 +919,8 @@ class BuildVolume(SceneNode):
|
||||||
# \return The property of the specified setting in the specified extruder.
|
# \return The property of the specified setting in the specified extruder.
|
||||||
def _getSettingFromExtruder(self, setting_key, extruder_setting_key, prop = "value"):
|
def _getSettingFromExtruder(self, setting_key, extruder_setting_key, prop = "value"):
|
||||||
extruder_index = self._global_container_stack.getProperty(extruder_setting_key, "value")
|
extruder_index = self._global_container_stack.getProperty(extruder_setting_key, "value")
|
||||||
|
extruder_stack_id = ExtruderManager.getInstance().extruderIds[str(extruder_index)]
|
||||||
# TODO: remove this - CURA-4482
|
extruder_stack = ContainerRegistry.getInstance().findContainerStacks(id = extruder_stack_id)[0]
|
||||||
if str(extruder_index) == "-1": # If extruder index is -1 use global instead
|
|
||||||
extruder_stack = self._global_container_stack
|
|
||||||
else:
|
|
||||||
extruder_stack_id = ExtruderManager.getInstance().extruderIds[str(extruder_index)]
|
|
||||||
extruder_stack = ContainerRegistry.getInstance().findContainerStacks(id = extruder_stack_id)[0]
|
|
||||||
|
|
||||||
value = extruder_stack.getProperty(setting_key, prop)
|
value = extruder_stack.getProperty(setting_key, prop)
|
||||||
setting_type = extruder_stack.getProperty(setting_key, "type")
|
setting_type = extruder_stack.getProperty(setting_key, "type")
|
||||||
|
|
|
@ -47,22 +47,40 @@ class CuraStackBuilder:
|
||||||
|
|
||||||
new_global_stack.setName(generated_name)
|
new_global_stack.setName(generated_name)
|
||||||
|
|
||||||
for extruder_definition in registry.findDefinitionContainers(machine = machine_definition.id):
|
extruder_definition = registry.findDefinitionContainers(machine = machine_definition.getId())
|
||||||
position = extruder_definition.getMetaDataEntry("position", None)
|
|
||||||
if not position:
|
|
||||||
Logger.log("w", "Extruder definition %s specifies no position metadata entry.", extruder_definition.id)
|
|
||||||
|
|
||||||
new_extruder_id = registry.uniqueName(extruder_definition.id)
|
if not extruder_definition:
|
||||||
|
# create extruder stack for single extrusion machines that have no separate extruder definition files
|
||||||
|
extruder_definition = registry.findDefinitionContainers(id = "fdmextruder")
|
||||||
|
new_extruder_id = registry.uniqueName(machine_definition.getId() + " " + "fdmextruder")
|
||||||
new_extruder = cls.createExtruderStack(
|
new_extruder = cls.createExtruderStack(
|
||||||
new_extruder_id,
|
new_extruder_id,
|
||||||
definition = extruder_definition,
|
definition=extruder_definition,
|
||||||
machine_definition = machine_definition,
|
machine_definition=machine_definition,
|
||||||
quality = "default",
|
quality="default",
|
||||||
material = "default",
|
material="default",
|
||||||
variant = "default",
|
variant="default",
|
||||||
next_stack = new_global_stack
|
next_stack=new_global_stack
|
||||||
)
|
)
|
||||||
# new_global_stack.addExtruder(new_extruder)
|
new_global_stack.addExtruder(new_extruder)
|
||||||
|
else:
|
||||||
|
# create extruder stack for each found extruder definition
|
||||||
|
for extruder_definition in registry.findDefinitionContainers(machine = machine_definition.id):
|
||||||
|
position = extruder_definition.getMetaDataEntry("position", None)
|
||||||
|
if not position:
|
||||||
|
Logger.log("w", "Extruder definition %s specifies no position metadata entry.", extruder_definition.id)
|
||||||
|
|
||||||
|
new_extruder_id = registry.uniqueName(extruder_definition.id)
|
||||||
|
new_extruder = cls.createExtruderStack(
|
||||||
|
new_extruder_id,
|
||||||
|
definition = extruder_definition,
|
||||||
|
machine_definition = machine_definition,
|
||||||
|
quality = "default",
|
||||||
|
material = "default",
|
||||||
|
variant = "default",
|
||||||
|
next_stack = new_global_stack
|
||||||
|
)
|
||||||
|
new_global_stack.addExtruder(new_extruder)
|
||||||
|
|
||||||
return new_global_stack
|
return new_global_stack
|
||||||
|
|
||||||
|
|
|
@ -193,6 +193,7 @@ class ExtruderManager(QObject):
|
||||||
if global_container_stack.getId() in self._extruder_trains:
|
if global_container_stack.getId() in self._extruder_trains:
|
||||||
if str(self._active_extruder_index) in self._extruder_trains[global_container_stack.getId()]:
|
if str(self._active_extruder_index) in self._extruder_trains[global_container_stack.getId()]:
|
||||||
return self._extruder_trains[global_container_stack.getId()][str(self._active_extruder_index)]
|
return self._extruder_trains[global_container_stack.getId()][str(self._active_extruder_index)]
|
||||||
|
|
||||||
return None
|
return None
|
||||||
|
|
||||||
## Get an extruder stack by index
|
## Get an extruder stack by index
|
||||||
|
@ -435,6 +436,10 @@ class ExtruderManager(QObject):
|
||||||
|
|
||||||
scene_root = Application.getInstance().getController().getScene().getRoot()
|
scene_root = Application.getInstance().getController().getScene().getRoot()
|
||||||
|
|
||||||
|
# If no extruders are registered in the extruder manager yet, return an empty array
|
||||||
|
if len(self.extruderIds) == 0:
|
||||||
|
return []
|
||||||
|
|
||||||
# Get the extruders of all printable meshes in the scene
|
# Get the extruders of all printable meshes in the scene
|
||||||
meshes = [node for node in DepthFirstIterator(scene_root) if type(node) is SceneNode and node.isSelectable()]
|
meshes = [node for node in DepthFirstIterator(scene_root) if type(node) is SceneNode and node.isSelectable()]
|
||||||
for mesh in meshes:
|
for mesh in meshes:
|
||||||
|
|
|
@ -340,8 +340,6 @@ class MachineManager(QObject):
|
||||||
old_active_container_stack = self._active_container_stack
|
old_active_container_stack = self._active_container_stack
|
||||||
|
|
||||||
self._active_container_stack = ExtruderManager.getInstance().getActiveExtruderStack()
|
self._active_container_stack = ExtruderManager.getInstance().getActiveExtruderStack()
|
||||||
# if not self._active_container_stack:
|
|
||||||
# self._active_container_stack = self._global_container_stack
|
|
||||||
|
|
||||||
self._error_check_timer.start()
|
self._error_check_timer.start()
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue