mirror of
https://github.com/Ultimaker/Cura.git
synced 2025-07-07 23:17:32 -06:00
Receive time estimates per feature
This commit is contained in:
parent
eb52e4fb7e
commit
f15aa66751
3 changed files with 52 additions and 13 deletions
|
@ -111,12 +111,14 @@ class PrintInformation(QObject):
|
||||||
def materialCosts(self):
|
def materialCosts(self):
|
||||||
return self._material_costs
|
return self._material_costs
|
||||||
|
|
||||||
def _onPrintDurationMessage(self, total_time, material_amounts):
|
def _onPrintDurationMessage(self, time_per_feature, material_amounts):
|
||||||
if total_time != total_time: # Check for NaN. Engine can sometimes give us weird values.
|
total_time = 0
|
||||||
Logger.log("w", "Received NaN for print duration message")
|
for feature, time in time_per_feature.items():
|
||||||
self._current_print_time.setDuration(0)
|
if time != time: # Check for NaN. Engine can sometimes give us weird values.
|
||||||
else:
|
Logger.log("w", "Received NaN for print duration message")
|
||||||
self._current_print_time.setDuration(total_time)
|
continue
|
||||||
|
total_time += time
|
||||||
|
self._current_print_time.setDuration(total_time)
|
||||||
|
|
||||||
self.currentPrintTimeChanged.emit()
|
self.currentPrintTimeChanged.emit()
|
||||||
|
|
||||||
|
|
|
@ -90,9 +90,21 @@ message GCodeLayer {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
message PrintTimeMaterialEstimates { // The print time for the whole print and material estimates for the extruder
|
message PrintTimeMaterialEstimates { // The print time for each feature and material estimates for the extruder
|
||||||
float time = 1; // Total time estimate
|
// Time estimate in each feature
|
||||||
repeated MaterialEstimates materialEstimates = 2; // materialEstimates data
|
float time_none = 1;
|
||||||
|
float time_inset_0 = 2;
|
||||||
|
float time_inset_x = 3;
|
||||||
|
float time_skin = 4;
|
||||||
|
float time_support = 5;
|
||||||
|
float time_skirt = 6;
|
||||||
|
float time_infill = 7;
|
||||||
|
float time_support_infill = 8;
|
||||||
|
float time_travel = 9;
|
||||||
|
float time_retract = 10;
|
||||||
|
float time_support_interface = 11;
|
||||||
|
|
||||||
|
repeated MaterialEstimates materialEstimates = 12; // materialEstimates data
|
||||||
}
|
}
|
||||||
|
|
||||||
message MaterialEstimates {
|
message MaterialEstimates {
|
||||||
|
|
|
@ -187,7 +187,19 @@ class CuraEngineBackend(QObject, Backend):
|
||||||
Logger.log("w", "Slice unnecessary, nothing has changed that needs reslicing.")
|
Logger.log("w", "Slice unnecessary, nothing has changed that needs reslicing.")
|
||||||
return
|
return
|
||||||
|
|
||||||
self.printDurationMessage.emit(0, [0])
|
self.printDurationMessage.emit({
|
||||||
|
"none": 0,
|
||||||
|
"inset_0": 0,
|
||||||
|
"inset_x": 0,
|
||||||
|
"skin": 0,
|
||||||
|
"support": 0,
|
||||||
|
"skirt": 0,
|
||||||
|
"infill": 0,
|
||||||
|
"support_infill": 0,
|
||||||
|
"travel": 0,
|
||||||
|
"retract": 0,
|
||||||
|
"support_interface": 0
|
||||||
|
}, [0])
|
||||||
|
|
||||||
self._stored_layer_data = []
|
self._stored_layer_data = []
|
||||||
self._stored_optimized_layer_data = []
|
self._stored_optimized_layer_data = []
|
||||||
|
@ -475,13 +487,26 @@ class CuraEngineBackend(QObject, Backend):
|
||||||
|
|
||||||
## Called when a print time message is received from the engine.
|
## Called when a print time message is received from the engine.
|
||||||
#
|
#
|
||||||
# \param message The protobuff message containing the print time and
|
# \param message The protobuf message containing the print time per feature and
|
||||||
# material amount per extruder
|
# material amount per extruder
|
||||||
def _onPrintTimeMaterialEstimates(self, message):
|
def _onPrintTimeMaterialEstimates(self, message):
|
||||||
material_amounts = []
|
material_amounts = []
|
||||||
for index in range(message.repeatedMessageCount("materialEstimates")):
|
for index in range(message.repeatedMessageCount("materialEstimates")):
|
||||||
material_amounts.append(message.getRepeatedMessage("materialEstimates", index).material_amount)
|
material_amounts.append(message.getRepeatedMessage("materialEstimates", index).material_amount)
|
||||||
self.printDurationMessage.emit(message.time, material_amounts)
|
feature_times = {
|
||||||
|
"none": message.time_none,
|
||||||
|
"inset_0": message.time_inset_0,
|
||||||
|
"inset_x": message.time_inset_x,
|
||||||
|
"skin": message.time_skin,
|
||||||
|
"support": message.time_support,
|
||||||
|
"skirt": message.time_skirt,
|
||||||
|
"infill": message.time_infill,
|
||||||
|
"support_infill": message.time_support_infill,
|
||||||
|
"travel": message.time_travel,
|
||||||
|
"retract": message.time_retract,
|
||||||
|
"support_interface": message.time_support_interface
|
||||||
|
}
|
||||||
|
self.printDurationMessage.emit(feature_times, material_amounts)
|
||||||
|
|
||||||
## Creates a new socket connection.
|
## Creates a new socket connection.
|
||||||
def _createSocket(self):
|
def _createSocket(self):
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue