From: daid303 Date: Thu, 28 Feb 2013 08:48:10 +0000 (+0100) Subject: Slow the GCode layers while loading instead of first loading the full GCode file. X-Git-Tag: 13.03~40 X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=commitdiff_plain;h=6adf52be1f624b14553f1df2c31facbd4b9b3b03;p=cura.git Slow the GCode layers while loading instead of first loading the full GCode file. --- diff --git a/Cura/gui/preview3d.py b/Cura/gui/preview3d.py index 046f70c9..e19876df 100644 --- a/Cura/gui/preview3d.py +++ b/Cura/gui/preview3d.py @@ -392,12 +392,10 @@ class previewPanel(wx.Panel): if os.path.isfile(self.gcodeFilename) and self.gcodeFileTime != os.stat(self.gcodeFilename).st_mtime: self.gcodeFileTime = os.stat(self.gcodeFilename).st_mtime - gcode = gcodeInterpreter.gcode() - gcode.progressCallback = self.loadProgress - gcode.load(self.gcodeFilename) - self.gcodeDirty = False - self.gcode = gcode self.gcodeDirty = True + self.gcode = gcodeInterpreter.gcode() + self.gcode.progressCallback = self.loadProgress + self.gcode.load(self.gcodeFilename) errorList = [] for line in open(self.gcodeFilename, "rt"): @@ -415,6 +413,11 @@ class previewPanel(wx.Panel): wx.CallAfter(self.checkReloadFileTimer.Start, 1000) def loadProgress(self, progress): + if self.layerSelect.getValue() == self.layerSelect.getMaxValue(): + self.layerSelect.setRange(1, len(self.gcode.layerList) - 1) + self.layerSelect.setValue(self.layerSelect.getMaxValue()) + else: + self.layerSelect.setRange(1, len(self.gcode.layerList) - 1) return self.abortLoading def OnResetAll(self, e = None): @@ -660,10 +663,12 @@ class PreviewGLCanvas(openglGui.glGuiPanel): self.gcodeDisplayListMade = 0 if self.gcodeDisplayListMade < len(self.parent.gcode.layerList): - glNewList(self.gcodeDisplayList + self.gcodeDisplayListMade, GL_COMPILE) - opengl.DrawGCodeLayer(self.parent.gcode.layerList[self.gcodeDisplayListMade]) - glEndList() - self.gcodeDisplayListMade += 1 + gcodeGenStartTime = time.time() + while time.time() - gcodeGenStartTime < 0.1 and self.gcodeDisplayListMade < len(self.parent.gcode.layerList): + glNewList(self.gcodeDisplayList + self.gcodeDisplayListMade, GL_COMPILE) + opengl.DrawGCodeLayer(self.parent.gcode.layerList[self.gcodeDisplayListMade]) + glEndList() + self.gcodeDisplayListMade += 1 wx.CallAfter(self.Refresh) glPushMatrix() diff --git a/Cura/gui/util/opengl.py b/Cura/gui/util/opengl.py index 87d85080..17621e18 100644 --- a/Cura/gui/util/opengl.py +++ b/Cura/gui/util/opengl.py @@ -4,6 +4,7 @@ from __future__ import absolute_import import math import numpy import wx +import time from Cura.util import meshLoader from Cura.util import util3d