diff options
author | Kostas Karmas <konskarm@gmail.com> | 2020-04-28 18:45:55 +0300 |
---|---|---|
committer | Kostas Karmas <konskarm@gmail.com> | 2020-04-28 18:45:55 +0300 |
commit | e4a6fe954db0ba2e6806637251b8795cf9cf59c4 (patch) | |
tree | 868fb06b6fa928c50c991557a6e06d8f9a37177d /cura/UI | |
parent | 05e92b953acc4358f987dc368de7598e925c5b2e (diff) | |
parent | 9e68bcb7a066b8fbdc96826e20bebd0a9913acf6 (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.py | 44 |
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 }) |