Commit bbae212b authored by D1plo1d's avatar D1plo1d

Adding a fast gcode replacement for prontserve since it doesn't use or need gcode's functionality

parent c317d3e2
...@@ -155,11 +155,10 @@ class GCode(object): ...@@ -155,11 +155,10 @@ class GCode(object):
depth = None depth = None
height = None height = None
def __init__(self,data, preprocess = True): def __init__(self,data):
self.lines = [Line(l2) for l2 in self.lines = [Line(l2) for l2 in
(l.strip() for l in data) (l.strip() for l in data)
if l2] if l2]
if preprocess == True:
self._preprocess_lines() self._preprocess_lines()
self.filament_length = self._preprocess_extrusion() self.filament_length = self._preprocess_extrusion()
self._create_layers() self._create_layers()
......
...@@ -402,6 +402,48 @@ class EventEmitter(object): ...@@ -402,6 +402,48 @@ class EventEmitter(object):
continue continue
# Fast GCode. Because the GCode class is slow.
# -------------------------------------------------
class PyLine(object):
__slots__ = ('x','y','z','e','f','i','j',
'raw', 'command', 'is_move',
'relative','relative_e',
'current_x', 'current_y', 'current_z', 'extruding', 'current_tool',
'gcview_end_vertex')
def __init__(self, l):
self.raw = l
def __getattr__(self, name):
return None
try:
from printrun import gcoder_line
Line = gcoder_line.GLine
except ImportError:
Line = PyLine
class FastGCode(object):
def __init__(self,data):
self.lines = [Line(l2) for l2 in
(l.strip() for l in data)
if l2]
self.all_layers = [self.lines]
def __len__(self):
return len(self.lines)
def __iter__(self):
return self.lines.__iter__()
def idxs(self, index):
print len(self.lines)
print index
return (0, index)
# Prontserve: Server-specific functionality # Prontserve: Server-specific functionality
# ------------------------------------------------- # -------------------------------------------------
...@@ -594,7 +636,7 @@ class Prontserve(pronsole.pronsole, EventEmitter): ...@@ -594,7 +636,7 @@ class Prontserve(pronsole.pronsole, EventEmitter):
print "Starting the next print job" print "Starting the next print job"
self.current_job = self.jobs.list.pop(0) self.current_job = self.jobs.list.pop(0)
lines = self.current_job['body'].split("\n") lines = self.current_job['body'].split("\n")
gc = gcoder.GCode(lines, preprocess=False) gc = FastGCode(lines)
self.p.startprint(gc) self.p.startprint(gc)
self.p.paused = False self.p.paused = False
self.fire("job_started", self.jobs.sanitize(self.current_job)) self.fire("job_started", self.jobs.sanitize(self.current_job))
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment