mirror of
https://git.mirrors.martin98.com/https://github.com/Ultimaker/Cura
synced 2025-04-21 21:29:41 +08:00
Don't crash if CuraStackBuilder failed to create a stack
If it failed to create a global stack, the extruder_stack_dict variable would not be defined, and Cura crashes. It may fail to create a stack because of an indexerror in a malformed project file. Fixes Sentry issue CURA-137.
This commit is contained in:
parent
ba0efb82bc
commit
fc6ea28352
@ -758,21 +758,22 @@ class ThreeMFWorkspaceReader(WorkspaceReader):
|
|||||||
Job.yieldThread()
|
Job.yieldThread()
|
||||||
QCoreApplication.processEvents() # Ensure that the GUI does not freeze.
|
QCoreApplication.processEvents() # Ensure that the GUI does not freeze.
|
||||||
|
|
||||||
# Handle quality changes if any
|
if global_stack:
|
||||||
self._processQualityChanges(global_stack)
|
# Handle quality changes if any
|
||||||
|
self._processQualityChanges(global_stack)
|
||||||
|
|
||||||
# Prepare the machine
|
# Prepare the machine
|
||||||
self._applyChangesToMachine(global_stack, extruder_stack_dict)
|
self._applyChangesToMachine(global_stack, extruder_stack_dict)
|
||||||
|
|
||||||
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...")
|
||||||
# Actually change the active machine.
|
# Actually change the active machine.
|
||||||
#
|
#
|
||||||
# This is scheduled for later is because it depends on the Variant/Material/Qualitiy Managers to have the latest
|
# This is scheduled for later is because it depends on the Variant/Material/Qualitiy Managers to have the latest
|
||||||
# data, but those managers will only update upon a container/container metadata changed signal. Because this
|
# data, but those managers will only update upon a container/container metadata changed signal. Because this
|
||||||
# function is running on the main thread (Qt thread), although those "changed" signals have been emitted, but
|
# function is running on the main thread (Qt thread), although those "changed" signals have been emitted, but
|
||||||
# they won't take effect until this function is done.
|
# they won't take effect until this function is done.
|
||||||
# To solve this, we schedule _updateActiveMachine() for later so it will have the latest data.
|
# To solve this, we schedule _updateActiveMachine() for later so it will have the latest data.
|
||||||
self._updateActiveMachine(global_stack)
|
self._updateActiveMachine(global_stack)
|
||||||
|
|
||||||
# Load all the nodes / mesh data of the workspace
|
# Load all the nodes / mesh data of the workspace
|
||||||
nodes = self._3mf_mesh_reader.read(file_name)
|
nodes = self._3mf_mesh_reader.read(file_name)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user