def __init__(self, acceleration, ht=0.2): self.curX = 0 self.curY = 0 self.curZ = 0 self.curE = 0 self.sourceLine = None self.gObject = gobject() self.currentLayer = layer(0, 0) self.currentHeight = 0 self.curTool = 0 self.currentSegment = segment(0, self.curTool) self.currentSegmentType = 0 self.recordPoint((0, 0), 0, ST_MOVE, 0, 0, 0, 0, 0) self.minERate = [999.9, 999.0, 999.0, 999.0] self.maxERate = [0.0, 0.0, 0.0, 0.0] self.maxTool = 0 self.totalE = [0.0, 0.0, 0.0, 0.0] self.layerE = [0.0, 0.0, 0.0, 0.0] self.layerHt = ht self.ew = 0.56 self.layerTimes = [] self.layerTime = 0 self.totalTime = 0.0 self.minBedTemp = 999.0 self.maxBedTemp = 0.0 self.minHETemp = [999.0, 999.0, 999.0, 999.0] self.maxHETemp = [0, 0, 0, 0] self.speed = 0 self.relative = False self.relativeE = False self.lastSpeed = 0.0 self.lastDx = 0.0 self.lastDy = 0.0 self.acceleration = acceleration self.dispatch = { "G0": self.moveFast, "G1": self.moveSlow, "G4": self.dwell, "G20": self.setInches, "G21": self.setMillimeters, "G28": self.home, "G90": self.setAbsolute, "G91": self.setRelative, "G92": self.axisReset, "M82": self.setAbsoluteE, "M83": self.setRelativeE, "M140": self.tempBed, "M190": self.tempBed, "M104": self.tempHE, "M109": self.tempHE, }
def recordPoint(self, p, ht, st, sourceLine, eBefore, eUsed, lineWidth, speed): if ht != self.currentHeight: self.currentLayer.addSegment(self.currentSegment) self.gObject.addLayer(self.currentLayer) self.layerTimes.append(self.layerTime) self.layerTime = 0 self.currentLayer = layer(ht, eBefore) self.currentHeight = ht self.currentSegment = segment(st, self.curTool) self.currentSegmentType = st self.currentSegment.addPoint(p, sourceLine, eUsed, lineWidth, speed) elif st != self.currentSegmentType: self.currentLayer.addSegment(self.currentSegment) self.currentSegment = segment(st, self.curTool) self.currentSegmentType = st self.currentSegment.addPoint(p, sourceLine, eUsed, lineWidth, speed) else: self.currentSegment.addPoint(p, sourceLine, eUsed, lineWidth, speed)
def execute(self, cmd, parms, sourceLine): self.sourceLine = sourceLine if cmd in self.dispatch.keys(): return self.dispatch[cmd](parms, sourceLine) elif cmd.startswith("T"): nt = int(cmd.strip()[1:]) if nt > 0 and nt < 4: if nt != self.curTool: self.currentLayer.addSegment(self.currentSegment) self.curTool = nt self.currentSegment = segment(self.currentSegmentType, self.curTool) if self.curTool > self.maxTool: self.maxTool = self.curTool return 0 else: return 0