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.SetTransformOperation import SetTransformOperation
from UM.Operations.TranslateOperation import TranslateOperation from UM.Operations.TranslateOperation import TranslateOperation
from cura.SetParentOperation import SetParentOperation from cura.SetParentOperation import SetParentOperation
from cura.SliceableObjectDecorator import SliceableObjectDecorator
from UM.Settings.SettingDefinition import SettingDefinition, DefinitionPropertyType from UM.Settings.SettingDefinition import SettingDefinition, DefinitionPropertyType
from UM.Settings.ContainerRegistry import ContainerRegistry from UM.Settings.ContainerRegistry import ContainerRegistry
@ -1088,6 +1089,16 @@ class CuraApplication(QtApplication):
extension = os.path.splitext(filename)[1] extension = os.path.splitext(filename)[1]
if extension.lower() in self._non_sliceable_extensions: if extension.lower() in self._non_sliceable_extensions:
self.changeLayerViewSignal.emit() 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() 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. # Copyright (c) 2015 Ultimaker B.V.
# Cura is released under the terms of the AGPLv3 or higher. # Cura is released under the terms of the AGPLv3 or higher.
from UM.Mesh.MeshReader import MeshReader import math
from UM.Mesh.MeshBuilder import MeshBuilder import os.path
import zipfile
from UM.Job import Job
from UM.Logger import Logger from UM.Logger import Logger
from UM.Math.Matrix import Matrix from UM.Math.Matrix import Matrix
from UM.Math.Vector import Vector 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 from UM.Scene.GroupDecorator import GroupDecorator
import UM.Application import UM.Application
from UM.Job import Job
from cura.Settings.SettingOverrideDecorator import SettingOverrideDecorator from cura.Settings.SettingOverrideDecorator import SettingOverrideDecorator
from UM.Application import Application from UM.Application import Application
from cura.Settings.ExtruderManager import ExtruderManager from cura.Settings.ExtruderManager import ExtruderManager
from cura.QualityManager import QualityManager from cura.QualityManager import QualityManager
from UM.Scene.SliceableObjectDecorator import SliceableObjectDecorator from UM.Scene.SceneNode import SceneNode
import os.path
import zipfile
try: try:
import xml.etree.cElementTree as ET import xml.etree.cElementTree as ET
@ -235,8 +235,6 @@ class ThreeMFReader(MeshReader):
except Exception as e: except Exception as e:
Logger.log("e", "An exception occurred in 3mf reader: %s", e) Logger.log("e", "An exception occurred in 3mf reader: %s", e)
sliceable_decorator = SliceableObjectDecorator()
result.addDecorator(sliceable_decorator)
return result return result
## Create a scale vector based on a unit string. ## Create a scale vector based on a unit string.

View file

@ -1,25 +1,22 @@
# Copyright (c) 2016 Aleph Objects, Inc. # Copyright (c) 2016 Aleph Objects, Inc.
# Cura is released under the terms of the AGPLv3 or higher. # 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.Application import Application
from UM.Message import Message
from UM.Logger import Logger 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 from UM.i18n import i18nCatalog
catalog = i18nCatalog("cura") catalog = i18nCatalog("cura")
from cura import LayerDataBuilder from cura import LayerDataBuilder
from cura import LayerDataDecorator from cura import LayerDataDecorator
from cura.LayerPolygon import LayerPolygon from cura.LayerPolygon import LayerPolygon
from UM.Scene.SliceableObjectDecorator import SliceableObjectDecorator from cura.SliceableObjectDecorator import SliceableObjectDecorator
import numpy import numpy
import math import math
@ -263,12 +260,6 @@ class GCodeReader(MeshReader):
decorator = LayerDataDecorator.LayerDataDecorator() decorator = LayerDataDecorator.LayerDataDecorator()
decorator.setLayerData(layer_mesh) decorator.setLayerData(layer_mesh)
scene_node.addDecorator(decorator) 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 Application.getInstance().getController().getScene().gcode_list = glist
Logger.log("d", "Finished parsing %s" % file_name) 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 # Contributed by Seva Alekseyev <sevaa@nih.gov> with National Institutes of Health, 2016
# Cura is released under the terms of the AGPLv3 or higher. # Cura is released under the terms of the AGPLv3 or higher.
from UM.Mesh.MeshReader import MeshReader from math import pi, sin, cos, sqrt
from UM.Mesh.MeshBuilder import MeshBuilder
import numpy
from UM.Job import Job
from UM.Logger import Logger from UM.Logger import Logger
from UM.Math.Matrix import Matrix from UM.Math.Matrix import Matrix
from UM.Math.Vector import Vector 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.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: try:
import xml.etree.cElementTree as ET import xml.etree.cElementTree as ET
@ -97,8 +98,6 @@ class X3DReader(MeshReader):
Logger.logException("e", "Exception in X3D reader") Logger.logException("e", "Exception in X3D reader")
return None return None
sliceable_decorator = SliceableObjectDecorator()
node.addDecorator(sliceable_decorator)
return node return node
# ------------------------- XML tree traversal # ------------------------- XML tree traversal