virtual printer: Track F and flow/feedrate factors
This commit is contained in:
parent
0a9475661f
commit
4a67762ead
2 changed files with 27 additions and 15 deletions
|
|
@ -59,15 +59,17 @@ class VirtualPrinter(object):
|
|||
self.lastTempAt = time.time()
|
||||
self.bedTemp = 1.0
|
||||
self.bedTargetTemp = 1.0
|
||||
self.speeds = settings().get(["devel", "virtualPrinter", "movementSpeed"])
|
||||
|
||||
self._relative = True
|
||||
self._lastX = 0.0
|
||||
self._lastY = 0.0
|
||||
self._lastZ = 0.0
|
||||
self._lastE = 0.0
|
||||
self._lastF = 200
|
||||
|
||||
self._unitModifier = 1
|
||||
self._feedrate_multiplier = 100
|
||||
self._flowrate_multiplier = 100
|
||||
|
||||
self._virtualSd = settings().getBaseFolder("virtualSd")
|
||||
self._sdCardReady = True
|
||||
|
|
@ -383,6 +385,12 @@ class VirtualPrinter(object):
|
|||
if self._echoOnM117:
|
||||
self._send("echo:%s" % re.search("M117\s+(.*)", data).group(1))
|
||||
|
||||
def _gcode_M220(self, data):
|
||||
self._feedrate_multiplier = float(re.search('S([0-9]+)', data).group(1))
|
||||
|
||||
def _gcode_M221(self, data):
|
||||
self._flowrate_multiplier = float(re.search('S([0-9]+)', data).group(1))
|
||||
|
||||
def _gcode_M400(self, data):
|
||||
self.buffered.join()
|
||||
|
||||
|
|
@ -696,15 +704,25 @@ class VirtualPrinter(object):
|
|||
matchY = re.search("Y([0-9.]+)", line)
|
||||
matchZ = re.search("Z([0-9.]+)", line)
|
||||
matchE = re.search("E([0-9.]+)", line)
|
||||
matchF = re.search("F([0-9.]+)", line)
|
||||
|
||||
duration = 0
|
||||
if matchF is not None:
|
||||
try:
|
||||
self._lastF = float(matchF.group(1))
|
||||
except:
|
||||
pass
|
||||
|
||||
speedXYZ = self._lastF * (self._feedrate_multiplier / 100.0)
|
||||
speedE = self._lastF * (self._flowrate_multiplier / 100.0)
|
||||
|
||||
if matchX is not None:
|
||||
try:
|
||||
x = float(matchX.group(1))
|
||||
if self._relative or self._lastX is None:
|
||||
duration = max(duration, x * self._unitModifier / float(self.speeds["x"]) * 60.0)
|
||||
duration = max(duration, x * self._unitModifier / speedXYZ * 60.0)
|
||||
else:
|
||||
duration = max(duration, (x - self._lastX) * self._unitModifier / float(self.speeds["x"]) * 60.0)
|
||||
duration = max(duration, (x - self._lastX) * self._unitModifier / speedXYZ * 60.0)
|
||||
|
||||
if self._relative and self._lastX is not None:
|
||||
self._lastX += x
|
||||
|
|
@ -716,9 +734,9 @@ class VirtualPrinter(object):
|
|||
try:
|
||||
y = float(matchY.group(1))
|
||||
if self._relative or self._lastY is None:
|
||||
duration = max(duration, y * self._unitModifier / float(self.speeds["y"]) * 60.0)
|
||||
duration = max(duration, y * self._unitModifier / speedXYZ * 60.0)
|
||||
else:
|
||||
duration = max(duration, (y - self._lastY) * self._unitModifier / float(self.speeds["y"]) * 60.0)
|
||||
duration = max(duration, (y - self._lastY) * self._unitModifier / speedXYZ * 60.0)
|
||||
|
||||
if self._relative and self._lastY is not None:
|
||||
self._lastY += y
|
||||
|
|
@ -730,9 +748,9 @@ class VirtualPrinter(object):
|
|||
try:
|
||||
z = float(matchZ.group(1))
|
||||
if self._relative or self._lastZ is None:
|
||||
duration = max(duration, z * self._unitModifier / float(self.speeds["z"]) * 60.0)
|
||||
duration = max(duration, z * self._unitModifier / speedXYZ * 60.0)
|
||||
else:
|
||||
duration = max(duration, (z - self._lastZ) * self._unitModifier / float(self.speeds["z"]) * 60.0)
|
||||
duration = max(duration, (z - self._lastZ) * self._unitModifier / speedXYZ * 60.0)
|
||||
|
||||
if self._relative and self._lastZ is not None:
|
||||
self._lastZ += z
|
||||
|
|
@ -744,9 +762,9 @@ class VirtualPrinter(object):
|
|||
try:
|
||||
e = float(matchE.group(1))
|
||||
if self._relative or self._lastE is None:
|
||||
duration = max(duration, e * self._unitModifier / float(self.speeds["e"]) * 60.0)
|
||||
duration = max(duration, e * self._unitModifier / speedE * 60.0)
|
||||
else:
|
||||
duration = max(duration, (e - self._lastE) * self._unitModifier / float(self.speeds["e"]) * 60.0)
|
||||
duration = max(duration, (e - self._lastE) * self._unitModifier / speedE * 60.0)
|
||||
|
||||
if self._relative and self._lastE is not None:
|
||||
self._lastE += e
|
||||
|
|
|
|||
|
|
@ -332,12 +332,6 @@ default_settings = {
|
|||
"numExtruders": 1,
|
||||
"includeCurrentToolInTemps": True,
|
||||
"includeFilenameInOpened": True,
|
||||
"movementSpeed": {
|
||||
"x": 6000,
|
||||
"y": 6000,
|
||||
"z": 200,
|
||||
"e": 300
|
||||
},
|
||||
"hasBed": True,
|
||||
"repetierStyleTargetTemperature": False,
|
||||
"repetierStyleResends": False,
|
||||
|
|
|
|||
Loading…
Reference in a new issue