mirror of
https://github.com/Ultimaker/Cura.git
synced 2025-08-07 22:13:58 -06:00
Merge branch '3.2' of github.com:Ultimaker/Cura into 3.2
This commit is contained in:
commit
74e9bf051c
4 changed files with 35 additions and 13 deletions
|
@ -24,6 +24,7 @@ from cura.Settings.ExtruderStack import ExtruderStack
|
|||
from cura.Settings.GlobalStack import GlobalStack
|
||||
from cura.Settings.CuraContainerStack import _ContainerIndexes
|
||||
from cura.QualityManager import QualityManager
|
||||
from cura.CuraApplication import CuraApplication
|
||||
|
||||
from configparser import ConfigParser
|
||||
import zipfile
|
||||
|
@ -750,8 +751,16 @@ class ThreeMFWorkspaceReader(WorkspaceReader):
|
|||
# If not extruder stacks were saved in the project file (pre 3.1) create one manually
|
||||
# We re-use the container registry's addExtruderStackForSingleExtrusionMachine method for this
|
||||
if not extruder_stacks:
|
||||
stack = self._container_registry.addExtruderStackForSingleExtrusionMachine(global_stack, "fdmextruder")
|
||||
if self._resolve_strategies["machine"] == "new":
|
||||
stack = self._container_registry.addExtruderStackForSingleExtrusionMachine(global_stack, "fdmextruder")
|
||||
else:
|
||||
stack = global_stack.extruders.get("0")
|
||||
if not stack:
|
||||
# this should not happen
|
||||
Logger.log("e", "Cannot find any extruder in an existing global stack [%s].", global_stack.getId())
|
||||
if stack:
|
||||
if global_stack.quality.getId() in ("empty", "empty_quality"):
|
||||
stack.quality = empty_quality_container
|
||||
if self._resolve_strategies["machine"] == "override":
|
||||
# in case the extruder is newly created (for a single-extrusion machine), we need to override
|
||||
# the existing extruder stack.
|
||||
|
@ -991,6 +1000,9 @@ class ThreeMFWorkspaceReader(WorkspaceReader):
|
|||
for stack in extruder_stacks:
|
||||
stack.setNextStack(global_stack)
|
||||
stack.containersChanged.emit(stack.getTop())
|
||||
else:
|
||||
if quality_has_been_changed:
|
||||
CuraApplication.getInstance().getMachineManager().activeQualityChanged.emit()
|
||||
|
||||
# Actually change the active machine.
|
||||
Application.getInstance().setGlobalContainerStack(global_stack)
|
||||
|
@ -1040,13 +1052,13 @@ class ThreeMFWorkspaceReader(WorkspaceReader):
|
|||
# find the old material ID
|
||||
old_material_id_in_stack = stack.material.getId()
|
||||
best_matching_old_material_id = None
|
||||
best_matching_old_meterial_prefix_length = -1
|
||||
best_matching_old_material_prefix_length = -1
|
||||
for old_parent_material_id in old_new_material_dict:
|
||||
if len(old_parent_material_id) < best_matching_old_meterial_prefix_length:
|
||||
if len(old_parent_material_id) < best_matching_old_material_prefix_length:
|
||||
continue
|
||||
if len(old_parent_material_id) <= len(old_material_id_in_stack):
|
||||
if old_parent_material_id == old_material_id_in_stack[0:len(old_parent_material_id)]:
|
||||
best_matching_old_meterial_prefix_length = len(old_parent_material_id)
|
||||
best_matching_old_material_prefix_length = len(old_parent_material_id)
|
||||
best_matching_old_material_id = old_parent_material_id
|
||||
|
||||
if best_matching_old_material_id is None:
|
||||
|
|
|
@ -426,6 +426,13 @@ class CuraEngineBackend(QObject, Backend):
|
|||
if not isinstance(source, SceneNode):
|
||||
return
|
||||
|
||||
# This case checks if the source node is a node that contains a GCode. In this case the
|
||||
# cached layer data is removed so the previous data is not rendered - CURA-4821
|
||||
if source.callDecoration("isBlockSlicing") and source.callDecoration("getLayerData"):
|
||||
if self._stored_optimized_layer_data:
|
||||
print(self._stored_optimized_layer_data)
|
||||
del self._stored_optimized_layer_data[source.callDecoration("getBuildPlateNumber")]
|
||||
|
||||
build_plate_changed = set()
|
||||
source_build_plate_number = source.callDecoration("getBuildPlateNumber")
|
||||
if source == self._scene.getRoot():
|
||||
|
|
|
@ -286,7 +286,10 @@ class NetworkClusterPrinterOutputDevice(NetworkPrinterOutputDevice.NetworkPrinte
|
|||
gcode_list = getattr(Application.getInstance().getController().getScene(), "gcode_dict")[output_build_plate_number]
|
||||
if not gcode_list: # Empty build plate
|
||||
Logger.log("d", "Skipping empty job (build plate number %d).", output_build_plate_number)
|
||||
return self.sendPrintJob()
|
||||
if self._job_list:
|
||||
return self.sendPrintJob()
|
||||
else:
|
||||
return
|
||||
|
||||
self._send_gcode_start = time.time()
|
||||
Logger.log("d", "Sending print job [%s] to host, build plate [%s]..." % (file_name, output_build_plate_number))
|
||||
|
|
|
@ -1168,6 +1168,14 @@
|
|||
"limit_to_extruder": "wall_0_extruder_nr",
|
||||
"settable_per_mesh": true
|
||||
},
|
||||
"optimize_wall_printing_order":
|
||||
{
|
||||
"label": "Optimize Wall Printing Order",
|
||||
"description": "Optimize the order in which walls are printed so as to reduce the number of retractions and the distance travelled. Most parts will benefit from this being enabled but some may actually take longer so please compare the print time estimates with and without optimization.",
|
||||
"type": "bool",
|
||||
"default_value": false,
|
||||
"settable_per_mesh": true
|
||||
},
|
||||
"outer_inset_first":
|
||||
{
|
||||
"label": "Outer Before Inner Walls",
|
||||
|
@ -5338,14 +5346,6 @@
|
|||
"description": "experimental!",
|
||||
"children":
|
||||
{
|
||||
"optimize_wall_printing_order":
|
||||
{
|
||||
"label": "Optimize Wall Printing Order",
|
||||
"description": "Optimize the order in which walls are printed so as to reduce the number of retractions and the distance travelled. Most parts will benefit from this being enabled but some may actually take longer so please compare the print time estimates with and without optimization.",
|
||||
"type": "bool",
|
||||
"default_value": false,
|
||||
"settable_per_mesh": true
|
||||
},
|
||||
"support_skip_some_zags":
|
||||
{
|
||||
"label": "Break Up Support In Chunks",
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue