mirror of
https://git.mirrors.martin98.com/https://github.com/Ultimaker/Cura
synced 2025-04-22 21:59:37 +08:00
Merge remote-tracking branch 'origin/4.1'
This commit is contained in:
commit
d21c0a4ca9
@ -334,25 +334,29 @@ class StartSliceJob(Job):
|
|||||||
|
|
||||||
return result
|
return result
|
||||||
|
|
||||||
|
def _cacheAllExtruderSettings(self):
|
||||||
|
global_stack = cast(ContainerStack, CuraApplication.getInstance().getGlobalContainerStack())
|
||||||
|
|
||||||
|
# NB: keys must be strings for the string formatter
|
||||||
|
self._all_extruders_settings = {
|
||||||
|
"-1": self._buildReplacementTokens(global_stack)
|
||||||
|
}
|
||||||
|
for extruder_stack in ExtruderManager.getInstance().getActiveExtruderStacks():
|
||||||
|
extruder_nr = extruder_stack.getProperty("extruder_nr", "value")
|
||||||
|
self._all_extruders_settings[str(extruder_nr)] = self._buildReplacementTokens(extruder_stack)
|
||||||
|
|
||||||
## Replace setting tokens in a piece of g-code.
|
## Replace setting tokens in a piece of g-code.
|
||||||
# \param value A piece of g-code to replace tokens in.
|
# \param value A piece of g-code to replace tokens in.
|
||||||
# \param default_extruder_nr Stack nr to use when no stack nr is specified, defaults to the global stack
|
# \param default_extruder_nr Stack nr to use when no stack nr is specified, defaults to the global stack
|
||||||
def _expandGcodeTokens(self, value: str, default_extruder_nr: int = -1) -> str:
|
def _expandGcodeTokens(self, value: str, default_extruder_nr: int = -1) -> str:
|
||||||
if not self._all_extruders_settings:
|
if not self._all_extruders_settings:
|
||||||
global_stack = cast(ContainerStack, CuraApplication.getInstance().getGlobalContainerStack())
|
self._cacheAllExtruderSettings()
|
||||||
|
|
||||||
# NB: keys must be strings for the string formatter
|
|
||||||
self._all_extruders_settings = {
|
|
||||||
"-1": self._buildReplacementTokens(global_stack)
|
|
||||||
}
|
|
||||||
|
|
||||||
for extruder_stack in ExtruderManager.getInstance().getActiveExtruderStacks():
|
|
||||||
extruder_nr = extruder_stack.getProperty("extruder_nr", "value")
|
|
||||||
self._all_extruders_settings[str(extruder_nr)] = self._buildReplacementTokens(extruder_stack)
|
|
||||||
|
|
||||||
try:
|
try:
|
||||||
# any setting can be used as a token
|
# any setting can be used as a token
|
||||||
fmt = GcodeStartEndFormatter(default_extruder_nr = default_extruder_nr)
|
fmt = GcodeStartEndFormatter(default_extruder_nr = default_extruder_nr)
|
||||||
|
if self._all_extruders_settings is None:
|
||||||
|
return ""
|
||||||
settings = self._all_extruders_settings.copy()
|
settings = self._all_extruders_settings.copy()
|
||||||
settings["default_extruder_nr"] = default_extruder_nr
|
settings["default_extruder_nr"] = default_extruder_nr
|
||||||
return str(fmt.format(value, **settings))
|
return str(fmt.format(value, **settings))
|
||||||
@ -364,8 +368,14 @@ class StartSliceJob(Job):
|
|||||||
def _buildExtruderMessage(self, stack: ContainerStack) -> None:
|
def _buildExtruderMessage(self, stack: ContainerStack) -> None:
|
||||||
message = self._slice_message.addRepeatedMessage("extruders")
|
message = self._slice_message.addRepeatedMessage("extruders")
|
||||||
message.id = int(stack.getMetaDataEntry("position"))
|
message.id = int(stack.getMetaDataEntry("position"))
|
||||||
|
if not self._all_extruders_settings:
|
||||||
|
self._cacheAllExtruderSettings()
|
||||||
|
|
||||||
settings = self._buildReplacementTokens(stack)
|
if self._all_extruders_settings is None:
|
||||||
|
return
|
||||||
|
|
||||||
|
extruder_nr = stack.getProperty("extruder_nr", "value")
|
||||||
|
settings = self._all_extruders_settings[str(extruder_nr)].copy()
|
||||||
|
|
||||||
# Also send the material GUID. This is a setting in fdmprinter, but we have no interface for it.
|
# Also send the material GUID. This is a setting in fdmprinter, but we have no interface for it.
|
||||||
settings["material_guid"] = stack.material.getMetaDataEntry("GUID", "")
|
settings["material_guid"] = stack.material.getMetaDataEntry("GUID", "")
|
||||||
@ -389,7 +399,13 @@ class StartSliceJob(Job):
|
|||||||
# The settings are taken from the global stack. This does not include any
|
# The settings are taken from the global stack. This does not include any
|
||||||
# per-extruder settings or per-object settings.
|
# per-extruder settings or per-object settings.
|
||||||
def _buildGlobalSettingsMessage(self, stack: ContainerStack) -> None:
|
def _buildGlobalSettingsMessage(self, stack: ContainerStack) -> None:
|
||||||
settings = self._buildReplacementTokens(stack)
|
if not self._all_extruders_settings:
|
||||||
|
self._cacheAllExtruderSettings()
|
||||||
|
|
||||||
|
if self._all_extruders_settings is None:
|
||||||
|
return
|
||||||
|
|
||||||
|
settings = self._all_extruders_settings["-1"].copy()
|
||||||
|
|
||||||
# Pre-compute material material_bed_temp_prepend and material_print_temp_prepend
|
# Pre-compute material material_bed_temp_prepend and material_print_temp_prepend
|
||||||
start_gcode = settings["machine_start_gcode"]
|
start_gcode = settings["machine_start_gcode"]
|
||||||
|
Loading…
x
Reference in New Issue
Block a user