mirror of
https://github.com/Ultimaker/Cura.git
synced 2025-07-08 23:46:22 -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 UM.i18n import i18nCatalog
|
||||||
|
|
||||||
from . import LayerData
|
from . import LayerData
|
||||||
|
from . import LayerDataDecorator
|
||||||
|
|
||||||
import numpy
|
import numpy
|
||||||
import struct
|
import struct
|
||||||
|
@ -36,7 +37,8 @@ class ProcessSlicedObjectListJob(Job):
|
||||||
## Put all nodes in a dict identified by ID
|
## Put all nodes in a dict identified by ID
|
||||||
for node in DepthFirstIterator(self._scene.getRoot()):
|
for node in DepthFirstIterator(self._scene.getRoot()):
|
||||||
if type(node) is SceneNode and node.getMeshData():
|
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)
|
self._scene.getRoot().removeChild(node)
|
||||||
else:
|
else:
|
||||||
objectIdMap[id(node)] = node
|
objectIdMap[id(node)] = node
|
||||||
|
@ -83,14 +85,18 @@ class ProcessSlicedObjectListJob(Job):
|
||||||
|
|
||||||
# We are done processing all the layers we got from the engine, now create a mesh out of the data
|
# We are done processing all the layers we got from the engine, now create a mesh out of the data
|
||||||
layerData.build()
|
layerData.build()
|
||||||
mesh.layerData = layerData
|
|
||||||
|
|
||||||
if self._progress:
|
if self._progress:
|
||||||
self._progress.setProgress(100)
|
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.setMeshData(mesh)
|
||||||
new_node.setParent(self._scene.getRoot())
|
new_node.setParent(self._scene.getRoot())
|
||||||
|
|
||||||
view = Application.getInstance().getController().getActiveView()
|
view = Application.getInstance().getController().getActiveView()
|
||||||
if view.getPluginId() == "LayerView":
|
if view.getPluginId() == "LayerView":
|
||||||
view.resetLayerData()
|
view.resetLayerData()
|
||||||
|
|
|
@ -68,10 +68,8 @@ class LayerView(View):
|
||||||
if node.getMeshData() and node.isVisible():
|
if node.getMeshData() and node.isVisible():
|
||||||
if Selection.isSelected(node):
|
if Selection.isSelected(node):
|
||||||
renderer.queueNode(node, material = self._selection_material, transparent = True)
|
renderer.queueNode(node, material = self._selection_material, transparent = True)
|
||||||
|
layer_data = node.callDecoration("getLayerData")
|
||||||
try:
|
if not layer_data:
|
||||||
layer_data = node.getMeshData().layerData
|
|
||||||
except AttributeError:
|
|
||||||
continue
|
continue
|
||||||
|
|
||||||
# Render all layers below a certain number as line mesh instead of vertices.
|
# 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()):
|
for node in DepthFirstIterator(scene.getRoot()):
|
||||||
if not node.render(renderer):
|
if not node.render(renderer):
|
||||||
if node.getMeshData() and node.isVisible():
|
if node.getMeshData() and node.isVisible():
|
||||||
try:
|
|
||||||
layer_data = node.getMeshData().layerData
|
layer_data = node.callDecoration("getLayerData")
|
||||||
except AttributeError:
|
if not layer_data:
|
||||||
continue
|
continue
|
||||||
|
|
||||||
if new_max_layers < len(layer_data.getLayers()):
|
if new_max_layers < len(layer_data.getLayers()):
|
||||||
new_max_layers = len(layer_data.getLayers()) - 1
|
new_max_layers = len(layer_data.getLayers()) - 1
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue