mirror of
https://github.com/Ultimaker/Cura.git
synced 2025-07-07 06:57:28 -06:00
Merge branch 'feature_objectlist_improvements' of https://github.com/fieldOfView/Cura
This commit is contained in:
commit
9e68bcb7a0
5 changed files with 295 additions and 35 deletions
|
@ -1,4 +1,4 @@
|
|||
# Copyright (c) 2019 Ultimaker B.V.
|
||||
# Copyright (c) 2020 Ultimaker B.V.
|
||||
# Cura is released under the terms of the LGPLv3 or higher.
|
||||
from UM.Logger import Logger
|
||||
import re
|
||||
|
@ -38,6 +38,9 @@ class ObjectsModel(ListModel):
|
|||
OutsideAreaRole = Qt.UserRole + 3
|
||||
BuilplateNumberRole = Qt.UserRole + 4
|
||||
NodeRole = Qt.UserRole + 5
|
||||
PerObjectSettingsCountRole = Qt.UserRole + 6
|
||||
MeshTypeRole = Qt.UserRole + 7
|
||||
ExtruderNumberRole = Qt.UserRole + 8
|
||||
|
||||
def __init__(self, parent = None) -> None:
|
||||
super().__init__(parent)
|
||||
|
@ -46,6 +49,9 @@ class ObjectsModel(ListModel):
|
|||
self.addRoleName(self.SelectedRole, "selected")
|
||||
self.addRoleName(self.OutsideAreaRole, "outside_build_area")
|
||||
self.addRoleName(self.BuilplateNumberRole, "buildplate_number")
|
||||
self.addRoleName(self.ExtruderNumberRole, "extruder_number")
|
||||
self.addRoleName(self.PerObjectSettingsCountRole, "per_object_settings_count")
|
||||
self.addRoleName(self.MeshTypeRole, "mesh_type")
|
||||
self.addRoleName(self.NodeRole, "node")
|
||||
|
||||
Application.getInstance().getController().getScene().sceneChanged.connect(self._updateSceneDelayed)
|
||||
|
@ -172,11 +178,47 @@ class ObjectsModel(ListModel):
|
|||
|
||||
node_build_plate_number = node.callDecoration("getBuildPlateNumber")
|
||||
|
||||
node_mesh_type = ""
|
||||
per_object_settings_count = 0
|
||||
|
||||
per_object_stack = node.callDecoration("getStack")
|
||||
if per_object_stack:
|
||||
per_object_settings_count = per_object_stack.getTop().getNumInstances()
|
||||
|
||||
for mesh_type in ["anti_overhang_mesh", "infill_mesh", "cutting_mesh", "support_mesh"]:
|
||||
if per_object_stack.getProperty(mesh_type, "value"):
|
||||
node_mesh_type = mesh_type
|
||||
per_object_settings_count -= 1 # do not count this mesh type setting
|
||||
break
|
||||
|
||||
if per_object_settings_count > 0:
|
||||
if node_mesh_type == "support_mesh":
|
||||
# support meshes only allow support settings
|
||||
per_object_settings_count = 0
|
||||
for key in per_object_stack.getTop().getAllKeys():
|
||||
if per_object_stack.getTop().getInstance(key).definition.isAncestor("support"):
|
||||
per_object_settings_count += 1
|
||||
elif node_mesh_type == "anti_overhang_mesh":
|
||||
# anti overhang meshes ignore per model settings
|
||||
per_object_settings_count = 0
|
||||
|
||||
extruder_position = node.callDecoration("getActiveExtruderPosition")
|
||||
if extruder_position is None:
|
||||
extruder_number = -1
|
||||
else:
|
||||
extruder_number = int(extruder_position)
|
||||
if node_mesh_type == "anti_overhang_mesh" or node.callDecoration("isGroup"):
|
||||
# for anti overhang meshes and groups the extruder nr is irrelevant
|
||||
extruder_number = -1
|
||||
|
||||
nodes.append({
|
||||
"name": node.getName(),
|
||||
"selected": Selection.isSelected(node),
|
||||
"outside_build_area": is_outside_build_area,
|
||||
"buildplate_number": node_build_plate_number,
|
||||
"extruder_number": extruder_number,
|
||||
"per_object_settings_count": per_object_settings_count,
|
||||
"mesh_type": node_mesh_type,
|
||||
"node": node
|
||||
})
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue