Skip to content

Instantly share code, notes, and snippets.

@RaD
Last active August 29, 2015 14:17
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save RaD/a7781195aabfc376ea79 to your computer and use it in GitHub Desktop.
Save RaD/a7781195aabfc376ea79 to your computer and use it in GitHub Desktop.
Backport filament weight/price/length from Cura version 15.02.1 to 14.12.1.
--- sliceEngine.py 2015-03-23 21:36:07.000000000 +0300
+++ sliceEngine.p 2015-03-28 23:33:43.000000000 +0300
@@ -89,16 +89,22 @@
def getPrintTime(self):
if self._printTimeSeconds is None:
return ''
- if int(self._printTimeSeconds / 60 / 60) < 1:
- return _('%d minutes') % (int(self._printTimeSeconds / 60) % 60)
- if int(self._printTimeSeconds / 60 / 60) == 1:
- return _('%d hour %d minutes') % (int(self._printTimeSeconds / 60 / 60), int(self._printTimeSeconds / 60) % 60)
- return _('%d hours %d minutes') % (int(self._printTimeSeconds / 60 / 60), int(self._printTimeSeconds / 60) % 60)
+ hours = int(self._printTimeSeconds / 60 / 60)
+ minutes = int(self._printTimeSeconds / 60) % 60
+ if hours < 1:
+ return '{} minutes'.format(minutes)
+ if hours == 1:
+ return '{} hour {} minutes'.format(hours, minutes)
+ return '{} hours {} minutes'.format(hours, minutes)
def getFilamentAmount(self, e=0):
if self._filamentMM[e] == 0.0:
return None
- return _('%0.2f meter %0.0f gram') % (float(self._filamentMM[e]) / 1000.0, self.getFilamentWeight(e) * 1000.0)
+ return _('{:.2f} meter {:.1f} gram'.format(float(self._filamentMM[e]) / 1000.0,
+ self.getFilamentWeight(e) * 1000.0))
+
+ def getFilamentAmountMeters(self, e=0):
+ return float(self._filamentMM[e]) / 1000.0
def getLog(self):
return self._engineLog
@@ -118,10 +124,17 @@
def setHash(self, hash):
self._modelHash = hash
+ def addReplaceTag(self, key, value):
+ self._replaceInfo[key] = value
+
+ def applyReplaceTags(self):
+ for k, v in self._replaceInfo.items():
+ self._gcodeData.replaceAtStart(k, str(v))
+
def setFinished(self, result):
if result:
for k, v in self._replaceInfo.items():
- self._gcodeData.replaceAtStart(k, v)
+ self._gcodeData.replaceAtStart(k, str(v))
self._finished = result
def isFinished(self):
@@ -265,6 +278,7 @@
def cleanup(self):
self.abortEngine()
+ self.wait()
self._serversocket.close()
def abortEngine(self):
@@ -396,11 +410,16 @@
returnCode = self._process.wait()
logThread.join()
if returnCode == 0:
- self._result.setFinished(True)
+ self._result.addReplaceTag('#P_TIME#', self._result.getPrintTime())
+ self._result.addReplaceTag('#F_AMNT#', self._result.getFilamentAmountMeters(0))
+ self._result.addReplaceTag('#F_WGHT#', math.floor(self._result.getFilamentWeight(0) * 1000.0))
+ self._result.addReplaceTag('#F_COST#', self._result.getFilamentCost(0))
+ self._result.applyReplaceTags()
plugin_error = pluginInfo.runPostProcessingPlugins(self._result)
if plugin_error is not None:
print plugin_error
self._result.addLog(plugin_error)
+ self._result.setFinished(True)
self._callback(1.0)
else:
for line in self._result.getLog():
@@ -444,7 +463,7 @@
radius = profile.getProfileSettingFloat('filament_diameter') / 2.0
self._result._filamentMM[1] /= (math.pi * radius * radius)
elif line.startswith('Replace:'):
- self._result._replaceInfo[line.split(':')[1].strip()] = line.split(':')[2].strip()
+ self._result.addReplaceTag(line.split(':')[1].strip(), line.split(':')[2].strip())
else:
self._result.addLog(line)
line = stderr.readline()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment