mirror of
https://git.mirrors.martin98.com/https://github.com/Ultimaker/Cura
synced 2025-08-12 11:59:02 +08:00
Fix remove all nodes for loaded gcode
Fixes the problem caused in UM commit 69057b48a1fc3df7c5c6f3e754a3beb285a94678
This commit is contained in:
parent
669fb39f40
commit
ea8b7ebd02
@ -1821,3 +1821,40 @@ class CuraApplication(QtApplication):
|
|||||||
return main_window.height()
|
return main_window.height()
|
||||||
else:
|
else:
|
||||||
return 0
|
return 0
|
||||||
|
|
||||||
|
@pyqtSlot()
|
||||||
|
def deleteAll(self, only_selectable: bool = True) -> None:
|
||||||
|
super().deleteAll(only_selectable = only_selectable)
|
||||||
|
|
||||||
|
# Also remove nodes with LayerData
|
||||||
|
self._removeNodesWithLayerData(only_selectable = only_selectable)
|
||||||
|
|
||||||
|
def _removeNodesWithLayerData(self, only_selectable: bool = True) -> None:
|
||||||
|
Logger.log("i", "Clearing scene")
|
||||||
|
nodes = []
|
||||||
|
for node in DepthFirstIterator(self.getController().getScene().getRoot()):
|
||||||
|
if not isinstance(node, SceneNode):
|
||||||
|
continue
|
||||||
|
if not node.isEnabled():
|
||||||
|
continue
|
||||||
|
if (not node.getMeshData() and not node.callDecoration("getLayerData")) and not node.callDecoration("isGroup"):
|
||||||
|
continue # Node that doesnt have a mesh and is not a group.
|
||||||
|
if only_selectable and not node.isSelectable():
|
||||||
|
continue # Only remove nodes that are selectable.
|
||||||
|
if not node.callDecoration("isSliceable") and not node.callDecoration("getLayerData") and not node.callDecoration("isGroup"):
|
||||||
|
continue # Grouped nodes don't need resetting as their parent (the group) is resetted)
|
||||||
|
nodes.append(node)
|
||||||
|
if nodes:
|
||||||
|
from UM.Operations.GroupedOperation import GroupedOperation
|
||||||
|
op = GroupedOperation()
|
||||||
|
|
||||||
|
for node in nodes:
|
||||||
|
from UM.Operations.RemoveSceneNodeOperation import RemoveSceneNodeOperation
|
||||||
|
op.addOperation(RemoveSceneNodeOperation(node))
|
||||||
|
|
||||||
|
# Reset the print information
|
||||||
|
self.getController().getScene().sceneChanged.emit(node)
|
||||||
|
|
||||||
|
op.push()
|
||||||
|
from UM.Scene.Selection import Selection
|
||||||
|
Selection.clear()
|
||||||
|
Loading…
x
Reference in New Issue
Block a user