mirror of
https://git.mirrors.martin98.com/https://github.com/Ultimaker/Cura
synced 2025-08-15 17:35:58 +08:00
Merge branch '2.7'
This commit is contained in:
commit
9aa65eab44
@ -61,6 +61,12 @@ class GlobalStack(CuraContainerStack):
|
|||||||
# already have the maximum number of extruders.
|
# already have the maximum number of extruders.
|
||||||
def addExtruder(self, extruder: ContainerStack) -> None:
|
def addExtruder(self, extruder: ContainerStack) -> None:
|
||||||
extruder_count = self.getProperty("machine_extruder_count", "value")
|
extruder_count = self.getProperty("machine_extruder_count", "value")
|
||||||
|
|
||||||
|
if extruder_count <= 1:
|
||||||
|
Logger.log("i", "Not adding extruder[%s] to [%s] because it is a single-extrusion machine.",
|
||||||
|
extruder.id, self.id)
|
||||||
|
return
|
||||||
|
|
||||||
if extruder_count and len(self._extruders) + 1 > extruder_count:
|
if extruder_count and len(self._extruders) + 1 > extruder_count:
|
||||||
Logger.log("w", "Adding extruder {meta} to {id} but its extruder count is {count}".format(id = self.id, count = extruder_count, meta = str(extruder.getMetaData())))
|
Logger.log("w", "Adding extruder {meta} to {id} but its extruder count is {count}".format(id = self.id, count = extruder_count, meta = str(extruder.getMetaData())))
|
||||||
return
|
return
|
||||||
@ -73,7 +79,9 @@ class GlobalStack(CuraContainerStack):
|
|||||||
if any(item.getId() == extruder.id for item in self._extruders.values()):
|
if any(item.getId() == extruder.id for item in self._extruders.values()):
|
||||||
Logger.log("w", "Extruder [%s] has already been added to this stack [%s]", extruder.id, self._id)
|
Logger.log("w", "Extruder [%s] has already been added to this stack [%s]", extruder.id, self._id)
|
||||||
return
|
return
|
||||||
|
|
||||||
self._extruders[position] = extruder
|
self._extruders[position] = extruder
|
||||||
|
Logger.log("i", "Extruder[%s] added to [%s] at position [%s]", extruder.id, self.id, position)
|
||||||
|
|
||||||
## Overridden from ContainerStack
|
## Overridden from ContainerStack
|
||||||
#
|
#
|
||||||
|
@ -17,6 +17,7 @@ from .WorkspaceDialog import WorkspaceDialog
|
|||||||
|
|
||||||
import xml.etree.ElementTree as ET
|
import xml.etree.ElementTree as ET
|
||||||
|
|
||||||
|
from cura.Settings.CuraStackBuilder import CuraStackBuilder
|
||||||
from cura.Settings.ExtruderManager import ExtruderManager
|
from cura.Settings.ExtruderManager import ExtruderManager
|
||||||
from cura.Settings.ExtruderStack import ExtruderStack
|
from cura.Settings.ExtruderStack import ExtruderStack
|
||||||
from cura.Settings.GlobalStack import GlobalStack
|
from cura.Settings.GlobalStack import GlobalStack
|
||||||
@ -665,6 +666,9 @@ class ThreeMFWorkspaceReader(WorkspaceReader):
|
|||||||
Logger.log("e", "Resolve strategy of %s for machine is not supported",
|
Logger.log("e", "Resolve strategy of %s for machine is not supported",
|
||||||
self._resolve_strategies["machine"])
|
self._resolve_strategies["machine"])
|
||||||
|
|
||||||
|
# Create a new definition_changes container if it was empty
|
||||||
|
if stack.definitionChanges == self._container_registry.getEmptyInstanceContainer():
|
||||||
|
stack.setDefinitionChanges(CuraStackBuilder.createDefinitionChangesContainer(stack, stack._id + "_settings"))
|
||||||
global_stack = stack
|
global_stack = stack
|
||||||
Job.yieldThread()
|
Job.yieldThread()
|
||||||
except:
|
except:
|
||||||
@ -674,8 +678,18 @@ class ThreeMFWorkspaceReader(WorkspaceReader):
|
|||||||
self._container_registry.removeContainer(container.getId())
|
self._container_registry.removeContainer(container.getId())
|
||||||
return
|
return
|
||||||
|
|
||||||
|
#
|
||||||
|
# Use the number of extruders from the global stack instead of the number of extruder stacks this project file
|
||||||
|
# contains. The Custom FDM Printer can have multiple extruders, but the actual number of extruders in used is
|
||||||
|
# defined in the global stack.
|
||||||
|
# Because for single-extrusion machines, there won't be an extruder stack, so relying on the the extruder count
|
||||||
|
# in the global stack can avoid problems in those cases.
|
||||||
|
#
|
||||||
|
extruder_count_from_global_stack = global_stack.getProperty("machine_extruder_count", "value")
|
||||||
|
|
||||||
# --
|
# --
|
||||||
# load extruder stack files
|
# load extruder stack files
|
||||||
|
if extruder_count_from_global_stack > 1:
|
||||||
try:
|
try:
|
||||||
for extruder_stack_file in extruder_stack_files:
|
for extruder_stack_file in extruder_stack_files:
|
||||||
container_id = self._stripFileToId(extruder_stack_file)
|
container_id = self._stripFileToId(extruder_stack_file)
|
||||||
@ -712,6 +726,10 @@ class ThreeMFWorkspaceReader(WorkspaceReader):
|
|||||||
else:
|
else:
|
||||||
Logger.log("w", "Unknown resolve strategy: %s", self._resolve_strategies["machine"])
|
Logger.log("w", "Unknown resolve strategy: %s", self._resolve_strategies["machine"])
|
||||||
|
|
||||||
|
# Create a new definition_changes container if it was empty
|
||||||
|
if stack.definitionChanges == self._container_registry.getEmptyInstanceContainer():
|
||||||
|
stack.setDefinitionChanges(CuraStackBuilder.createDefinitionChangesContainer(stack, stack._id + "_settings"))
|
||||||
|
|
||||||
extruder_stacks.append(stack)
|
extruder_stacks.append(stack)
|
||||||
except:
|
except:
|
||||||
Logger.logException("w", "We failed to serialize the stack. Trying to clean up.")
|
Logger.logException("w", "We failed to serialize the stack. Trying to clean up.")
|
||||||
@ -823,9 +841,6 @@ class ThreeMFWorkspaceReader(WorkspaceReader):
|
|||||||
if extruder_stacks:
|
if extruder_stacks:
|
||||||
for stack in extruder_stacks:
|
for stack in extruder_stacks:
|
||||||
ExtruderManager.getInstance().registerExtruder(stack, global_stack.getId())
|
ExtruderManager.getInstance().registerExtruder(stack, global_stack.getId())
|
||||||
else:
|
|
||||||
# Machine has no extruders, but it needs to be registered with the extruder manager.
|
|
||||||
ExtruderManager.getInstance().registerExtruder(None, global_stack.getId())
|
|
||||||
|
|
||||||
Logger.log("d", "Workspace loading is notifying rest of the code of changes...")
|
Logger.log("d", "Workspace loading is notifying rest of the code of changes...")
|
||||||
|
|
||||||
|
@ -2,11 +2,9 @@ from UM.Workspace.WorkspaceWriter import WorkspaceWriter
|
|||||||
from UM.Application import Application
|
from UM.Application import Application
|
||||||
from UM.Preferences import Preferences
|
from UM.Preferences import Preferences
|
||||||
from UM.Settings.ContainerRegistry import ContainerRegistry
|
from UM.Settings.ContainerRegistry import ContainerRegistry
|
||||||
from UM.Settings.ContainerStack import ContainerStack
|
|
||||||
from cura.Settings.ExtruderManager import ExtruderManager
|
from cura.Settings.ExtruderManager import ExtruderManager
|
||||||
import zipfile
|
import zipfile
|
||||||
from io import StringIO
|
from io import StringIO
|
||||||
import copy
|
|
||||||
import configparser
|
import configparser
|
||||||
|
|
||||||
|
|
||||||
|
@ -76,6 +76,9 @@ class SliceInfo(Extension):
|
|||||||
data["active_machine"] = {"definition_id": global_container_stack.definition.getId(), "manufacturer": global_container_stack.definition.getMetaData().get("manufacturer","")}
|
data["active_machine"] = {"definition_id": global_container_stack.definition.getId(), "manufacturer": global_container_stack.definition.getMetaData().get("manufacturer","")}
|
||||||
|
|
||||||
data["extruders"] = []
|
data["extruders"] = []
|
||||||
|
extruder_count = len(global_container_stack.extruders)
|
||||||
|
extruders = []
|
||||||
|
if extruder_count > 1:
|
||||||
extruders = list(ExtruderManager.getInstance().getMachineExtruders(global_container_stack.getId()))
|
extruders = list(ExtruderManager.getInstance().getMachineExtruders(global_container_stack.getId()))
|
||||||
extruders = sorted(extruders, key = lambda extruder: extruder.getMetaDataEntry("position"))
|
extruders = sorted(extruders, key = lambda extruder: extruder.getMetaDataEntry("position"))
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user