mirror of
https://github.com/Ultimaker/Cura.git
synced 2025-07-09 07:56:22 -06:00
Speed up the objects model
It was using a few expensive calls that had already been cached. CURA-7106
This commit is contained in:
parent
46076bf21d
commit
737a9faa5f
2 changed files with 22 additions and 6 deletions
|
@ -49,6 +49,7 @@ class SettingOverrideDecorator(SceneNodeDecorator):
|
||||||
self._is_support_mesh = False
|
self._is_support_mesh = False
|
||||||
self._is_cutting_mesh = False
|
self._is_cutting_mesh = False
|
||||||
self._is_infill_mesh = False
|
self._is_infill_mesh = False
|
||||||
|
self._is_anti_overhang_mesh = False
|
||||||
|
|
||||||
self._stack.propertyChanged.connect(self._onSettingChanged)
|
self._stack.propertyChanged.connect(self._onSettingChanged)
|
||||||
|
|
||||||
|
@ -126,6 +127,12 @@ class SettingOverrideDecorator(SceneNodeDecorator):
|
||||||
def isInfillMesh(self):
|
def isInfillMesh(self):
|
||||||
return self._is_infill_mesh
|
return self._is_infill_mesh
|
||||||
|
|
||||||
|
def isAntiOverhangMesh(self):
|
||||||
|
return self._is_anti_overhang_mesh
|
||||||
|
|
||||||
|
def _evaluateAntiOverhangMesh(self):
|
||||||
|
return bool(self._stack.userChanges.getProperty("anti_overhang_mesh", "value"))
|
||||||
|
|
||||||
def _evaluateIsCuttingMesh(self):
|
def _evaluateIsCuttingMesh(self):
|
||||||
return bool(self._stack.userChanges.getProperty("cutting_mesh", "value"))
|
return bool(self._stack.userChanges.getProperty("cutting_mesh", "value"))
|
||||||
|
|
||||||
|
@ -154,7 +161,9 @@ class SettingOverrideDecorator(SceneNodeDecorator):
|
||||||
self._is_non_printing_mesh = self._evaluateIsNonPrintingMesh()
|
self._is_non_printing_mesh = self._evaluateIsNonPrintingMesh()
|
||||||
self._is_non_thumbnail_visible_mesh = self._evaluateIsNonThumbnailVisibleMesh()
|
self._is_non_thumbnail_visible_mesh = self._evaluateIsNonThumbnailVisibleMesh()
|
||||||
|
|
||||||
if setting_key == "support_mesh":
|
if setting_key == "anti_overhang_mesh":
|
||||||
|
self._is_anti_overhang_mesh = self._evaluateAntiOverhangMesh()
|
||||||
|
elif setting_key == "support_mesh":
|
||||||
self._is_support_mesh = self._evaluateIsSupportMesh()
|
self._is_support_mesh = self._evaluateIsSupportMesh()
|
||||||
elif setting_key == "cutting_mesh":
|
elif setting_key == "cutting_mesh":
|
||||||
self._is_cutting_mesh = self._evaluateIsCuttingMesh()
|
self._is_cutting_mesh = self._evaluateIsCuttingMesh()
|
||||||
|
|
|
@ -185,11 +185,18 @@ class ObjectsModel(ListModel):
|
||||||
if per_object_stack:
|
if per_object_stack:
|
||||||
per_object_settings_count = per_object_stack.getTop().getNumInstances()
|
per_object_settings_count = per_object_stack.getTop().getNumInstances()
|
||||||
|
|
||||||
for mesh_type in ["anti_overhang_mesh", "infill_mesh", "cutting_mesh", "support_mesh"]:
|
if node.callDecoration("isAntiOverhangMesh"):
|
||||||
if per_object_stack.getProperty(mesh_type, "value"):
|
node_mesh_type = "anti_overhang_mesh"
|
||||||
node_mesh_type = mesh_type
|
per_object_settings_count -= 1 # do not count this mesh type setting
|
||||||
per_object_settings_count -= 1 # do not count this mesh type setting
|
elif node.callDecoration("isSupportMesh"):
|
||||||
break
|
node_mesh_type = "support_mesh"
|
||||||
|
per_object_settings_count -= 1 # do not count this mesh type setting
|
||||||
|
elif node.callDecoration("isCuttingMesh"):
|
||||||
|
node_mesh_type = "cutting_mesh"
|
||||||
|
per_object_settings_count -= 1 # do not count this mesh type setting
|
||||||
|
elif node.callDecoration("isInfillMesh"):
|
||||||
|
node_mesh_type = "infill_mesh"
|
||||||
|
per_object_settings_count -= 1 # do not count this mesh type setting
|
||||||
|
|
||||||
if per_object_settings_count > 0:
|
if per_object_settings_count > 0:
|
||||||
if node_mesh_type == "support_mesh":
|
if node_mesh_type == "support_mesh":
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue