mirror of
https://github.com/Ultimaker/Cura.git
synced 2025-07-06 22:47:29 -06:00
Also search through groups when figuring out the extruders of the selection
Contributes to CURA-3609
This commit is contained in:
parent
b4c557679c
commit
86d3cbadca
1 changed files with 15 additions and 0 deletions
|
@ -9,6 +9,7 @@ from UM.Logger import Logger
|
||||||
from UM.Scene.Iterator.DepthFirstIterator import DepthFirstIterator
|
from UM.Scene.Iterator.DepthFirstIterator import DepthFirstIterator
|
||||||
from UM.Scene.SceneNode import SceneNode
|
from UM.Scene.SceneNode import SceneNode
|
||||||
from UM.Scene.Selection import Selection
|
from UM.Scene.Selection import Selection
|
||||||
|
from UM.Scene.Iterator.BreadthFirstIterator import BreadthFirstIterator
|
||||||
from UM.Settings.ContainerRegistry import ContainerRegistry #Finding containers by ID.
|
from UM.Settings.ContainerRegistry import ContainerRegistry #Finding containers by ID.
|
||||||
from UM.Settings.InstanceContainer import InstanceContainer
|
from UM.Settings.InstanceContainer import InstanceContainer
|
||||||
from UM.Settings.SettingFunction import SettingFunction
|
from UM.Settings.SettingFunction import SettingFunction
|
||||||
|
@ -129,7 +130,21 @@ class ExtruderManager(QObject):
|
||||||
def selectedObjectExtruders(self) -> List[str]:
|
def selectedObjectExtruders(self) -> List[str]:
|
||||||
if not self._selected_object_extruders:
|
if not self._selected_object_extruders:
|
||||||
object_extruders = set()
|
object_extruders = set()
|
||||||
|
|
||||||
|
# First, build a list of the actual selected objects (including children of groups, excluding group nodes)
|
||||||
|
selected_nodes = []
|
||||||
for node in Selection.getAllSelectedObjects():
|
for node in Selection.getAllSelectedObjects():
|
||||||
|
if node.callDecoration("isGroup"):
|
||||||
|
for grouped_node in BreadthFirstIterator(node):
|
||||||
|
if grouped_node.callDecoration("isGroup"):
|
||||||
|
continue
|
||||||
|
|
||||||
|
selected_nodes.append(grouped_node)
|
||||||
|
else:
|
||||||
|
selected_nodes.append(node)
|
||||||
|
|
||||||
|
# Then, figure out which nodes are used by those selected nodes.
|
||||||
|
for node in selected_nodes:
|
||||||
extruder = node.callDecoration("getActiveExtruder")
|
extruder = node.callDecoration("getActiveExtruder")
|
||||||
if extruder:
|
if extruder:
|
||||||
object_extruders.add(extruder)
|
object_extruders.add(extruder)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue