D6: Moved decorator to cura

This commit is contained in:
Victor Larchenko 2016-12-09 15:26:37 +06:00 committed by Youness Alaoui
parent 3605403314
commit 620a3891da
5 changed files with 54 additions and 34 deletions

View file

@ -28,6 +28,7 @@ from UM.Operations.GroupedOperation import GroupedOperation
from UM.Operations.SetTransformOperation import SetTransformOperation
from UM.Operations.TranslateOperation import TranslateOperation
from cura.SetParentOperation import SetParentOperation
from cura.SliceableObjectDecorator import SliceableObjectDecorator
from UM.Settings.SettingDefinition import SettingDefinition, DefinitionPropertyType
from UM.Settings.ContainerRegistry import ContainerRegistry
@ -1088,6 +1089,16 @@ class CuraApplication(QtApplication):
extension = os.path.splitext(filename)[1]
if extension.lower() in self._non_sliceable_extensions:
self.changeLayerViewSignal.emit()
sliceable_decorator = SliceableObjectDecorator()
sliceable_decorator.setBlockSlicing(True)
sliceable_decorator.setSliceable(False)
node.addDecorator(sliceable_decorator)
else:
sliceable_decorator = SliceableObjectDecorator()
sliceable_decorator.setBlockSlicing(False)
sliceable_decorator.setSliceable(True)
node.addDecorator(sliceable_decorator)
scene = self.getController().getScene()

View file

@ -0,0 +1,21 @@
from UM.Scene.SceneNodeDecorator import SceneNodeDecorator
## Simple decorator to indicate a scene node is sliceable or not.
class SliceableObjectDecorator(SceneNodeDecorator):
def __init__(self):
super().__init__()
self._sliceable = True
self._block_slicing = False
def isSliceable(self):
return self._sliceable
def setSliceable(self, sliceable):
self._sliceable = sliceable
def shouldBlockSlicing(self):
return self._block_slicing
def setBlockSlicing(self, block_slicing):
self._block_slicing = block_slicing

View file

@ -1,23 +1,23 @@
# Copyright (c) 2015 Ultimaker B.V.
# Cura is released under the terms of the AGPLv3 or higher.
from UM.Mesh.MeshReader import MeshReader
from UM.Mesh.MeshBuilder import MeshBuilder
import math
import os.path
import zipfile
from UM.Job import Job
from UM.Logger import Logger
from UM.Math.Matrix import Matrix
from UM.Math.Vector import Vector
from UM.Scene.SceneNode import SceneNode
from UM.Mesh.MeshBuilder import MeshBuilder
from UM.Mesh.MeshReader import MeshReader
from UM.Scene.GroupDecorator import GroupDecorator
import UM.Application
from UM.Job import Job
from cura.Settings.SettingOverrideDecorator import SettingOverrideDecorator
from UM.Application import Application
from cura.Settings.ExtruderManager import ExtruderManager
from cura.QualityManager import QualityManager
from UM.Scene.SliceableObjectDecorator import SliceableObjectDecorator
import os.path
import zipfile
from UM.Scene.SceneNode import SceneNode
try:
import xml.etree.cElementTree as ET
@ -235,8 +235,6 @@ class ThreeMFReader(MeshReader):
except Exception as e:
Logger.log("e", "An exception occurred in 3mf reader: %s", e)
sliceable_decorator = SliceableObjectDecorator()
result.addDecorator(sliceable_decorator)
return result
## Create a scale vector based on a unit string.

View file

@ -1,25 +1,22 @@
# Copyright (c) 2016 Aleph Objects, Inc.
# Cura is released under the terms of the AGPLv3 or higher.
from UM.Mesh.MeshReader import MeshReader
import os
from UM.Scene.SceneNode import SceneNode
from UM.Scene.Iterator.DepthFirstIterator import DepthFirstIterator
from UM.Math.Vector import Vector
from UM.Math.AxisAlignedBox import AxisAlignedBox
from UM.Application import Application
from UM.Message import Message
from UM.Logger import Logger
from UM.Backend.Backend import BackendState
from UM.Math.AxisAlignedBox import AxisAlignedBox
from UM.Math.Vector import Vector
from UM.Mesh.MeshReader import MeshReader
from UM.Message import Message
from UM.Scene.SceneNode import SceneNode
from UM.i18n import i18nCatalog
catalog = i18nCatalog("cura")
from cura import LayerDataBuilder
from cura import LayerDataDecorator
from cura.LayerPolygon import LayerPolygon
from UM.Scene.SliceableObjectDecorator import SliceableObjectDecorator
from cura.SliceableObjectDecorator import SliceableObjectDecorator
import numpy
import math
@ -263,12 +260,6 @@ class GCodeReader(MeshReader):
decorator = LayerDataDecorator.LayerDataDecorator()
decorator.setLayerData(layer_mesh)
scene_node.addDecorator(decorator)
sliceable_decorator = SliceableObjectDecorator()
sliceable_decorator.setBlockSlicing(True)
sliceable_decorator.setSliceable(False)
scene_node.addDecorator(sliceable_decorator)
Application.getInstance().getController().getScene().gcode_list = glist
Logger.log("d", "Finished parsing %s" % file_name)

View file

@ -1,16 +1,17 @@
# Contributed by Seva Alekseyev <sevaa@nih.gov> with National Institutes of Health, 2016
# Cura is released under the terms of the AGPLv3 or higher.
from UM.Mesh.MeshReader import MeshReader
from UM.Mesh.MeshBuilder import MeshBuilder
from math import pi, sin, cos, sqrt
import numpy
from UM.Job import Job
from UM.Logger import Logger
from UM.Math.Matrix import Matrix
from UM.Math.Vector import Vector
from UM.Mesh.MeshBuilder import MeshBuilder
from UM.Mesh.MeshReader import MeshReader
from UM.Scene.SceneNode import SceneNode
from UM.Job import Job
from math import pi, sin, cos, sqrt
import numpy
from UM.Scene.SliceableObjectDecorator import SliceableObjectDecorator
try:
import xml.etree.cElementTree as ET
@ -97,8 +98,6 @@ class X3DReader(MeshReader):
Logger.logException("e", "Exception in X3D reader")
return None
sliceable_decorator = SliceableObjectDecorator()
node.addDecorator(sliceable_decorator)
return node
# ------------------------- XML tree traversal