mirror of
https://github.com/Ultimaker/Cura.git
synced 2025-07-08 07:27:29 -06:00
LayerData now works by using decorators
This commit is contained in:
parent
89b175bc5c
commit
c6f5ceaf56
3 changed files with 28 additions and 11 deletions
12
plugins/CuraEngineBackend/LayerDataDecorator.py
Normal file
12
plugins/CuraEngineBackend/LayerDataDecorator.py
Normal file
|
@ -0,0 +1,12 @@
|
|||
from UM.Scene.SceneNodeDecorator import SceneNodeDecorator
|
||||
|
||||
class LayerDataDecorator(SceneNodeDecorator):
|
||||
def __init__(self):
|
||||
super().__init__()
|
||||
self._layer_data = None
|
||||
|
||||
def getLayerData(self):
|
||||
return self._layer_data
|
||||
|
||||
def setLayerData(self, layer_data):
|
||||
self._layer_data = layer_data
|
|
@ -11,6 +11,7 @@ from UM.Message import Message
|
|||
from UM.i18n import i18nCatalog
|
||||
|
||||
from . import LayerData
|
||||
from . import LayerDataDecorator
|
||||
|
||||
import numpy
|
||||
import struct
|
||||
|
@ -36,7 +37,8 @@ class ProcessSlicedObjectListJob(Job):
|
|||
## Put all nodes in a dict identified by ID
|
||||
for node in DepthFirstIterator(self._scene.getRoot()):
|
||||
if type(node) is SceneNode and node.getMeshData():
|
||||
if hasattr(node.getMeshData(), "layerData"):
|
||||
if node.callDecoration("getLayerData"):
|
||||
#if hasattr(node.getMeshData(), "layerData"):
|
||||
self._scene.getRoot().removeChild(node)
|
||||
else:
|
||||
objectIdMap[id(node)] = node
|
||||
|
@ -83,11 +85,15 @@ class ProcessSlicedObjectListJob(Job):
|
|||
|
||||
# We are done processing all the layers we got from the engine, now create a mesh out of the data
|
||||
layerData.build()
|
||||
mesh.layerData = layerData
|
||||
|
||||
if self._progress:
|
||||
self._progress.setProgress(100)
|
||||
|
||||
#Add layerdata decorator to scene node to indicate that the node has layerdata
|
||||
decorator = LayerDataDecorator.LayerDataDecorator()
|
||||
decorator.setLayerData(layerData)
|
||||
new_node.addDecorator(decorator)
|
||||
|
||||
new_node.setMeshData(mesh)
|
||||
new_node.setParent(self._scene.getRoot())
|
||||
|
||||
|
|
|
@ -68,10 +68,8 @@ class LayerView(View):
|
|||
if node.getMeshData() and node.isVisible():
|
||||
if Selection.isSelected(node):
|
||||
renderer.queueNode(node, material = self._selection_material, transparent = True)
|
||||
|
||||
try:
|
||||
layer_data = node.getMeshData().layerData
|
||||
except AttributeError:
|
||||
layer_data = node.callDecoration("getLayerData")
|
||||
if not layer_data:
|
||||
continue
|
||||
|
||||
# Render all layers below a certain number as line mesh instead of vertices.
|
||||
|
@ -133,10 +131,11 @@ class LayerView(View):
|
|||
for node in DepthFirstIterator(scene.getRoot()):
|
||||
if not node.render(renderer):
|
||||
if node.getMeshData() and node.isVisible():
|
||||
try:
|
||||
layer_data = node.getMeshData().layerData
|
||||
except AttributeError:
|
||||
|
||||
layer_data = node.callDecoration("getLayerData")
|
||||
if not layer_data:
|
||||
continue
|
||||
|
||||
if new_max_layers < len(layer_data.getLayers()):
|
||||
new_max_layers = len(layer_data.getLayers()) - 1
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue