self._gcodeVBOs = []
if ready:
self.printButton.setProgressBar(None)
- cost = self._slicer.getFilamentCost()
- if cost is not None:
- self.printButton.setBottomText('%s\n%s\n%s' % (self._slicer.getPrintTime(), self._slicer.getFilamentAmount(), cost))
- else:
- self.printButton.setBottomText('%s\n%s' % (self._slicer.getPrintTime(), self._slicer.getFilamentAmount()))
+ text = '%s' % (self._slicer.getPrintTime())
+ for e in xrange(0, int(profile.getMachineSetting('extruder_amount'))):
+ amount = self._slicer.getFilamentAmount(e)
+ if amount is None:
+ continue
+ text += '\n%s' % (amount)
+ cost = self._slicer.getFilamentCost(e)
+ if cost is not None:
+ text += '\n%s' % (cost)
+ self.printButton.setBottomText(text)
self._gcode = gcodeInterpreter.gcode()
self._gcodeFilename = self._slicer.getGCodeFilename()
else:
self._objCount = 0
self._sliceLog = []
self._printTimeSeconds = None
- self._filamentMM = None
+ self._filamentMM = [0.0, 0.0]
self._modelHash = None
self._id = 0
def getID(self):
return self._id
- def getFilamentWeight(self):
+ def getFilamentWeight(self, e=0):
#Calculates the weight of the filament in kg
radius = float(profile.getProfileSetting('filament_diameter')) / 2
- volumeM3 = (self._filamentMM * (math.pi * radius * radius)) / (1000*1000*1000)
+ volumeM3 = (self._filamentMM[e] * (math.pi * radius * radius)) / (1000*1000*1000)
return volumeM3 * profile.getPreferenceFloat('filament_physical_density')
- def getFilamentCost(self):
+ def getFilamentCost(self, e=0):
cost_kg = profile.getPreferenceFloat('filament_cost_kg')
cost_meter = profile.getPreferenceFloat('filament_cost_meter')
if cost_kg > 0.0 and cost_meter > 0.0:
- return "%.2f / %.2f" % (self.getFilamentWeight() * cost_kg, self._filamentMM / 1000.0 * cost_meter)
+ return "%.2f / %.2f" % (self.getFilamentWeight(e) * cost_kg, self._filamentMM[e] / 1000.0 * cost_meter)
elif cost_kg > 0.0:
- return "%.2f" % (self.getFilamentWeight() * cost_kg)
+ return "%.2f" % (self.getFilamentWeight(e) * cost_kg)
elif cost_meter > 0.0:
- return "%.2f" % (self._filamentMM / 1000.0 * cost_meter)
+ return "%.2f" % (self._filamentMM[e] / 1000.0 * cost_meter)
return None
def getPrintTime(self):
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)
- def getFilamentAmount(self):
- return '%0.2f meter %0.0f gram' % (float(self._filamentMM) / 1000.0, self.getFilamentWeight() * 1000.0)
+ 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)
def runSlicer(self, scene):
extruderCount = 1
self._callback(0.0, False)
self._sliceLog = []
self._printTimeSeconds = None
- self._filamentMM = None
+ self._filamentMM = [0.0, 0.0]
line = self._process.stdout.readline()
objectNr = 0
elif line.startswith('Print time:'):
self._printTimeSeconds = int(line.split(':')[1].strip())
elif line.startswith('Filament:'):
- self._filamentMM = int(line.split(':')[1].strip())
+ self._filamentMM[0] = int(line.split(':')[1].strip())
if profile.getMachineSetting('gcode_flavor') == 'UltiGCode':
radius = profile.getProfileSettingFloat('filament_diameter') / 2.0
- self._filamentMM /= (math.pi * radius * radius)
+ self._filamentMM[0] /= (math.pi * radius * radius)
+ elif line.startswith('Filament2:'):
+ self._filamentMM[1] = int(line.split(':')[1].strip())
+ if profile.getMachineSetting('gcode_flavor') == 'UltiGCode':
+ radius = profile.getProfileSettingFloat('filament_diameter') / 2.0
+ self._filamentMM[1] /= (math.pi * radius * radius)
else:
self._sliceLog.append(line.strip())
line = self._process.stdout.readline()