mirror of
https://git.mirrors.martin98.com/https://github.com/prusa3d/PrusaSlicer.git
synced 2025-08-14 03:25:53 +08:00
Added new printer metadata for binary gcode files
This commit is contained in:
parent
7b9982bcfe
commit
6b1dc90075
@ -1157,16 +1157,62 @@ void GCode::_do_export(Print& print, GCodeOutputStream &file, ThumbnailsGenerato
|
|||||||
for (size_t i = 0; i < print.config().filament_type.values.size(); ++i) {
|
for (size_t i = 0; i < print.config().filament_type.values.size(); ++i) {
|
||||||
filament_types_str += print.config().filament_type.values[i];
|
filament_types_str += print.config().filament_type.values[i];
|
||||||
if (i < print.config().filament_type.values.size() - 1)
|
if (i < print.config().filament_type.values.size() - 1)
|
||||||
filament_types_str += ", ";
|
filament_types_str += ";";
|
||||||
}
|
}
|
||||||
binary_data.printer_metadata.raw_data.emplace_back("filament_type", filament_types_str); // duplicated into config data
|
binary_data.printer_metadata.raw_data.emplace_back("filament_type", filament_types_str); // duplicated into config data
|
||||||
std::string nozzle_diameters_str;
|
|
||||||
char buf[1024];
|
char buf[1024];
|
||||||
|
std::string nozzle_diameters_str;
|
||||||
for (size_t i = 0; i < print.config().nozzle_diameter.values.size(); ++i) {
|
for (size_t i = 0; i < print.config().nozzle_diameter.values.size(); ++i) {
|
||||||
sprintf(buf, i < print.config().nozzle_diameter.values.size() - 1 ? "%.2lf, " : "%.2lf", print.config().nozzle_diameter.values[i]);
|
sprintf(buf, i < print.config().nozzle_diameter.values.size() - 1 ? "%.2g," : "%.2g", print.config().nozzle_diameter.values[i]);
|
||||||
nozzle_diameters_str += buf;
|
nozzle_diameters_str += buf;
|
||||||
}
|
}
|
||||||
binary_data.printer_metadata.raw_data.emplace_back("nozzle_diameter", nozzle_diameters_str); // duplicated into config data
|
binary_data.printer_metadata.raw_data.emplace_back("nozzle_diameter", nozzle_diameters_str); // duplicated into config data
|
||||||
|
std::string bed_temperatures_str;
|
||||||
|
for (size_t i = 0; i < print.config().bed_temperature.values.size(); ++i) {
|
||||||
|
sprintf(buf, i < print.config().bed_temperature.values.size() - 1 ? "%d," : "%d", print.config().bed_temperature.values[i]);
|
||||||
|
bed_temperatures_str += buf;
|
||||||
|
}
|
||||||
|
binary_data.printer_metadata.raw_data.emplace_back("bed_temperature", bed_temperatures_str); // duplicated into config data
|
||||||
|
|
||||||
|
const DynamicPrintConfig& cfg = print.full_print_config();
|
||||||
|
if (auto opt = cfg.option("brim_width"); opt != nullptr) {
|
||||||
|
sprintf(buf, "%.2g", dynamic_cast<const ConfigOptionFloat*>(opt)->value);
|
||||||
|
binary_data.printer_metadata.raw_data.emplace_back("brim_width", buf); // duplicated into config data
|
||||||
|
}
|
||||||
|
if (auto opt = cfg.option("fill_density"); opt != nullptr) {
|
||||||
|
sprintf(buf, "%.2g%%", dynamic_cast<const ConfigOptionPercent*>(opt)->value);
|
||||||
|
binary_data.printer_metadata.raw_data.emplace_back("fill_density", buf); // duplicated into config data
|
||||||
|
}
|
||||||
|
if (auto opt = cfg.option("layer_height"); opt != nullptr) {
|
||||||
|
sprintf(buf, "%.2g", dynamic_cast<const ConfigOptionFloat*>(opt)->value);
|
||||||
|
binary_data.printer_metadata.raw_data.emplace_back("layer_height", buf); // duplicated into config data
|
||||||
|
}
|
||||||
|
if (auto opt = cfg.option("temperature"); opt != nullptr) {
|
||||||
|
auto values = dynamic_cast<const ConfigOptionInts*>(opt)->values;
|
||||||
|
std::string temperatures_str;
|
||||||
|
for (size_t i = 0; i < values.size(); ++i) {
|
||||||
|
sprintf(buf, i < values.size() - 1 ? "%d," : "%d", values[i]);
|
||||||
|
temperatures_str += buf;
|
||||||
|
}
|
||||||
|
binary_data.printer_metadata.raw_data.emplace_back("temperature", temperatures_str); // duplicated into config data
|
||||||
|
}
|
||||||
|
if (auto opt = cfg.option("ironing"); opt != nullptr)
|
||||||
|
binary_data.printer_metadata.raw_data.emplace_back("ironing", dynamic_cast<const ConfigOptionBool*>(opt)->value ? "1" : "0"); // duplicated into config data
|
||||||
|
if (auto opt = cfg.option("support_material"); opt != nullptr)
|
||||||
|
binary_data.printer_metadata.raw_data.emplace_back("support_material", dynamic_cast<const ConfigOptionBool*>(opt)->value ? "1" : "0"); // duplicated into config data
|
||||||
|
if (auto opt = cfg.option("extruder_colour"); opt != nullptr) {
|
||||||
|
auto values = dynamic_cast<const ConfigOptionStrings*>(opt)->values;
|
||||||
|
std::string extruder_colours_str;
|
||||||
|
if (values.size() == 1 && values.front().empty())
|
||||||
|
extruder_colours_str = "\"\"";
|
||||||
|
else {
|
||||||
|
for (size_t i = 0; i < values.size(); ++i) {
|
||||||
|
sprintf(buf, i < values.size() - 1 ? "%s;" : "%s", values[i].c_str());
|
||||||
|
extruder_colours_str += buf;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
binary_data.printer_metadata.raw_data.emplace_back("extruder_colour", extruder_colours_str); // duplicated into config data
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// modifies m_silent_time_estimator_enabled
|
// modifies m_silent_time_estimator_enabled
|
||||||
@ -1613,7 +1659,10 @@ void GCode::_do_export(Print& print, GCodeOutputStream &file, ThumbnailsGenerato
|
|||||||
if (export_to_binary_gcode) {
|
if (export_to_binary_gcode) {
|
||||||
bgcode::binarize::BinaryData& binary_data = m_processor.get_binary_data();
|
bgcode::binarize::BinaryData& binary_data = m_processor.get_binary_data();
|
||||||
if (print.m_print_statistics.total_toolchanges > 0)
|
if (print.m_print_statistics.total_toolchanges > 0)
|
||||||
binary_data.print_metadata.raw_data.push_back({ "total toolchanges", std::to_string(print.m_print_statistics.total_toolchanges) });
|
binary_data.print_metadata.raw_data.emplace_back("total toolchanges", std::to_string(print.m_print_statistics.total_toolchanges));
|
||||||
|
char buf[1024];
|
||||||
|
sprintf(buf, "%.2lf", m_max_layer_z);
|
||||||
|
binary_data.printer_metadata.raw_data.emplace_back("max_layer_z", buf);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
#else
|
#else
|
||||||
|
@ -3686,15 +3686,17 @@ void GCodeProcessor::post_process()
|
|||||||
|
|
||||||
// update binary data
|
// update binary data
|
||||||
bgcode::binarize::BinaryData& binary_data = m_binarizer.get_binary_data();
|
bgcode::binarize::BinaryData& binary_data = m_binarizer.get_binary_data();
|
||||||
binary_data.print_metadata.raw_data.push_back({ PrintStatistics::FilamentUsedMm, stringify(filament_mm) });
|
binary_data.print_metadata.raw_data.emplace_back(PrintStatistics::FilamentUsedMm, stringify(filament_mm));
|
||||||
binary_data.print_metadata.raw_data.push_back({ PrintStatistics::FilamentUsedCm3, stringify(filament_cm3) });
|
binary_data.print_metadata.raw_data.emplace_back(PrintStatistics::FilamentUsedCm3, stringify(filament_cm3));
|
||||||
binary_data.print_metadata.raw_data.push_back({ PrintStatistics::FilamentUsedG, stringify(filament_g) });
|
binary_data.print_metadata.raw_data.emplace_back(PrintStatistics::FilamentUsedG, stringify(filament_g));
|
||||||
binary_data.print_metadata.raw_data.push_back({ PrintStatistics::FilamentCost, stringify(filament_cost) });
|
binary_data.print_metadata.raw_data.emplace_back(PrintStatistics::FilamentCost, stringify(filament_cost));
|
||||||
binary_data.print_metadata.raw_data.push_back({ PrintStatistics::TotalFilamentUsedG, stringify({ filament_total_g }) });
|
binary_data.print_metadata.raw_data.emplace_back(PrintStatistics::TotalFilamentUsedG, stringify({ filament_total_g }));
|
||||||
binary_data.print_metadata.raw_data.push_back({ PrintStatistics::TotalFilamentCost, stringify({ filament_total_cost }) });
|
binary_data.print_metadata.raw_data.emplace_back(PrintStatistics::TotalFilamentCost, stringify({ filament_total_cost }));
|
||||||
|
|
||||||
binary_data.printer_metadata.raw_data.push_back({ PrintStatistics::FilamentUsedMm, stringify(filament_mm) }); // duplicated into print metadata
|
binary_data.printer_metadata.raw_data.emplace_back(PrintStatistics::FilamentUsedMm, stringify(filament_mm)); // duplicated into print metadata
|
||||||
binary_data.printer_metadata.raw_data.push_back({ PrintStatistics::FilamentUsedG, stringify(filament_g) }); // duplicated into print metadata
|
binary_data.printer_metadata.raw_data.emplace_back(PrintStatistics::FilamentUsedG, stringify(filament_g)); // duplicated into print metadata
|
||||||
|
binary_data.printer_metadata.raw_data.emplace_back(PrintStatistics::FilamentCost, stringify(filament_cost)); // duplicated into print metadata
|
||||||
|
binary_data.printer_metadata.raw_data.emplace_back(PrintStatistics::FilamentUsedCm3, stringify(filament_cm3)); // duplicated into print metadata
|
||||||
|
|
||||||
for (size_t i = 0; i < static_cast<size_t>(PrintEstimatedStatistics::ETimeMode::Count); ++i) {
|
for (size_t i = 0; i < static_cast<size_t>(PrintEstimatedStatistics::ETimeMode::Count); ++i) {
|
||||||
const TimeMachine& machine = m_time_processor.machines[i];
|
const TimeMachine& machine = m_time_processor.machines[i];
|
||||||
@ -3702,10 +3704,10 @@ void GCodeProcessor::post_process()
|
|||||||
if (mode == PrintEstimatedStatistics::ETimeMode::Normal || machine.enabled) {
|
if (mode == PrintEstimatedStatistics::ETimeMode::Normal || machine.enabled) {
|
||||||
char buf[128];
|
char buf[128];
|
||||||
sprintf(buf, "(%s mode)", (mode == PrintEstimatedStatistics::ETimeMode::Normal) ? "normal" : "silent");
|
sprintf(buf, "(%s mode)", (mode == PrintEstimatedStatistics::ETimeMode::Normal) ? "normal" : "silent");
|
||||||
binary_data.print_metadata.raw_data.push_back({ "estimated printing time " + std::string(buf), get_time_dhms(machine.time) });
|
binary_data.print_metadata.raw_data.emplace_back("estimated printing time " + std::string(buf), get_time_dhms(machine.time));
|
||||||
binary_data.print_metadata.raw_data.push_back({ "estimated first layer printing time " + std::string(buf), get_time_dhms(machine.layers_time.empty() ? 0.f : machine.layers_time.front()) });
|
binary_data.print_metadata.raw_data.emplace_back("estimated first layer printing time " + std::string(buf), get_time_dhms(machine.layers_time.empty() ? 0.f : machine.layers_time.front()));
|
||||||
|
|
||||||
binary_data.printer_metadata.raw_data.push_back({ "estimated printing time " + std::string(buf), get_time_dhms(machine.time) });
|
binary_data.printer_metadata.raw_data.emplace_back("estimated printing time " + std::string(buf), get_time_dhms(machine.time));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user