D6: Refactoring

This commit is contained in:
Victor Larchenko 2016-12-06 16:57:17 +06:00 committed by Youness Alaoui
parent 60eb83d920
commit ba372f69a7
3 changed files with 41 additions and 45 deletions

View file

@ -20,6 +20,7 @@ from UM.Scene.Selection import Selection
from UM.Scene.GroupDecorator import GroupDecorator
from UM.Settings.Validator import Validator
from UM.Message import Message
from UM.i18n import i18nCatalog
from UM.Operations.AddSceneNodeOperation import AddSceneNodeOperation
from UM.Operations.RemoveSceneNodeOperation import RemoveSceneNodeOperation
@ -32,9 +33,6 @@ from UM.Settings.SettingDefinition import SettingDefinition, DefinitionPropertyT
from UM.Settings.ContainerRegistry import ContainerRegistry
from UM.Settings.SettingFunction import SettingFunction
from UM.i18n import i18nCatalog
catalog = i18nCatalog("cura")
from . import PlatformPhysics
from . import BuildVolume
from . import CameraAnimation
@ -608,15 +606,16 @@ class CuraApplication(QtApplication):
if other_bb is not None:
scene_bounding_box = scene_bounding_box + node.getBoundingBox()
if not should_pause:
self.getBackend().continueSlicing()
self.setHideSettings(False)
if self.getPrintInformation():
self.getPrintInformation().setPreSliced(False)
else:
print_information = self.getPrintInformation()
if should_pause:
self.getBackend().pauseSlicing()
self.setHideSettings(True)
self.getPrintInformation().setPreSliced(True)
print_information.setPreSliced(True)
else:
self.getBackend().continueSlicing()
self.setHideSettings(False)
if print_information:
print_information.setPreSliced(False)
if not scene_bounding_box:
scene_bounding_box = AxisAlignedBox.Null

View file

@ -116,7 +116,6 @@ class CuraEngineBackend(Backend):
self.backendQuit.connect(self._onBackendQuit)
self.backendConnected.connect(self._onBackendConnected)
self.backendStateChange.connect(self._onBackendStateChanged)
# When a tool operation is in progress, don't slice. So we need to listen for tool operations.
Application.getInstance().getController().toolOperationStarted.connect(self._onToolOperationStarted)
@ -188,22 +187,16 @@ class CuraEngineBackend(Backend):
self._start_slice_job.start()
self._start_slice_job.finished.connect(self._onStartSliceCompleted)
_last_state = BackendState.NotStarted
def pauseSlicing(self):
self.close()
self._pause_slicing = True
self.backendStateChange.emit(BackendState.SlicingDisabled)
def continueSlicing(self):
if self._last_state == BackendState.SlicingDisabled:
self.backendStateChange.emit(BackendState.NotStarted)
def _onBackendStateChanged(self, state):
self._last_state = state
if state == BackendState.SlicingDisabled:
self._pause_slicing = True
else:
if self._pause_slicing:
self._pause_slicing = False
self.backendStateChange.emit(BackendState.NotStarted)
## Terminate the engine process.
def _terminate(self):

View file

@ -47,12 +47,13 @@ class GCodeReader(MeshReader):
@staticmethod
def _getValue(line, code):
n = line.find(code) + len(code)
if n < 1:
n = line.find(code)
if n < 0:
return None
n += len(code)
pattern = re.compile("[;\s]")
match = pattern.search(line, n)
m = match.start() if math is not None else -1
m = match.start() if match is not None else -1
try:
if m < 0:
return line[n:]
@ -91,7 +92,7 @@ class GCodeReader(MeshReader):
return False
try:
self._layer_data_builder.addLayer(self._layer)
self._layer_data_builder.setLayerHeight(self._layer, path[0][1])
self._layer_data_builder.setLayerHeight(self._layer, path[0][2])
self._layer_data_builder.setLayerThickness(self._layer, math.fabs(current_z - self._prev_z))
this_layer = self._layer_data_builder.getLayer(self._layer)
except ValueError:
@ -120,7 +121,8 @@ class GCodeReader(MeshReader):
def _gCode0(self, position, params, path):
x, y, z, e = position
xp, yp, zp, ep = params
x, y = xp if xp is not None else x, yp if yp is not None else y
x = xp if xp is not None else x
y = yp if yp is not None else y
z_changed = False
if zp is not None:
if z != zp:
@ -142,39 +144,37 @@ class GCodeReader(MeshReader):
path.clear()
else:
path.clear()
return x, y, z, e
return (x, y, z, e)
def _gCode28(self, position, params, path):
x, y, z, e = position
xp, yp, zp, ep = params
return xp if xp is not None else x,\
yp if yp is not None else y,\
0,\
e
return (xp if xp is not None else x,
yp if yp is not None else y,
0,
e)
def _gCode92(self, position, params, path):
x, y, z, e = position
xp, yp, zp, ep = params
return xp if xp is not None else x,\
yp if yp is not None else y,\
zp if zp is not None else z,\
ep if ep is not None else e
return (xp if xp is not None else x,
yp if yp is not None else y,
zp if zp is not None else z,
ep if ep is not None else e)
_g_code_map = {0: _gCode0, 1: _gCode0, 28: _gCode28, 92: _gCode92}
_gCode1 = _gCode0
def _processGCode(self, G, line, position, path):
func = self._g_code_map.get(G, None)
func = getattr(self, "_gCode%s" % G, None)
x = self._getFloat(line, "X")
y = self._getFloat(line, "Y")
z = self._getFloat(line, "Z")
e = self._getFloat(line, "E")
if x is not None and x < 0:
self._center_is_zero = True
if y is not None and y < 0:
self._center_is_zero = True
if func is not None:
if (x is not None and x < 0) or (y is not None and y < 0):
self._center_is_zero = True
params = (x, y, z, e)
return func(self, position, params, path)
return func(position, params, path)
return position
def _processTCode(self, T, line, position, path):
@ -186,6 +186,8 @@ class GCodeReader(MeshReader):
else:
path.clear()
_type_keyword = ";TYPE:"
def read(self, file_name):
Logger.log("d", "Preparing to load %s" % file_name)
self._cancelled = False
@ -194,7 +196,7 @@ class GCodeReader(MeshReader):
scene_node.getBoundingBox = self._getNullBoundingBox # Manually set bounding box, because mesh doesn't have mesh data
glist = []
Application.getInstance().getController().getScene().gcode_list = glist
Logger.log("d", "Opening file %s" % file_name)
@ -209,7 +211,7 @@ class GCodeReader(MeshReader):
self._clearValues()
self._message = Message(catalog.i18nc("@info:status", "Parsing GCODE"), lifetime=0)
self._message = Message(catalog.i18nc("@info:status", "Parsing G-code"), lifetime=0)
self._message.setProgress(0)
self._message.show()
@ -227,8 +229,8 @@ class GCodeReader(MeshReader):
self._message.setProgress(math.floor(current_line / file_lines * 100))
if len(line) == 0:
continue
if line.find(";TYPE:") == 0:
type = line[6:].strip()
if line.find(self._type_keyword) == 0:
type = line[len(self._type_keyword):].strip()
if type == "WALL-INNER":
self._layer_type = LayerPolygon.InsetXType
elif type == "WALL-OUTER":
@ -266,6 +268,8 @@ class GCodeReader(MeshReader):
sliceable_decorator.setSliceable(False)
scene_node.addDecorator(sliceable_decorator)
Application.getInstance().getController().getScene().gcode_list = glist
Logger.log("d", "Finished parsing %s" % file_name)
self._message.hide()