Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/Ultimaker/Cura.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/cura/UI
diff options
context:
space:
mode:
authorKostas Karmas <konskarm@gmail.com>2020-04-28 18:45:55 +0300
committerKostas Karmas <konskarm@gmail.com>2020-04-28 18:45:55 +0300
commite4a6fe954db0ba2e6806637251b8795cf9cf59c4 (patch)
tree868fb06b6fa928c50c991557a6e06d8f9a37177d /cura/UI
parent05e92b953acc4358f987dc368de7598e925c5b2e (diff)
parent9e68bcb7a066b8fbdc96826e20bebd0a9913acf6 (diff)
Merge branch 'master' into CURA-7022_Add_cloud_printer_within_add_a_connected_printer
Diffstat (limited to 'cura/UI')
-rw-r--r--cura/UI/ObjectsModel.py44
1 files changed, 43 insertions, 1 deletions
diff --git a/cura/UI/ObjectsModel.py b/cura/UI/ObjectsModel.py
index 6378ebcd1b..659732e895 100644
--- a/cura/UI/ObjectsModel.py
+++ b/cura/UI/ObjectsModel.py
@@ -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
})