From 6adf52be1f624b14553f1df2c31facbd4b9b3b03 Mon Sep 17 00:00:00 2001 From: daid303 Date: Thu, 28 Feb 2013 09:48:10 +0100 Subject: [PATCH] Slow the GCode layers while loading instead of first loading the full GCode file. --- Cura/gui/preview3d.py | 23 ++++++++++++++--------- Cura/gui/util/opengl.py | 1 + 2 files changed, 15 insertions(+), 9 deletions(-) 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 -- 2.30.2