mirror of
https://github.com/SoftFever/OrcaSlicer.git
synced 2025-07-22 22:24:01 -06:00
Integrate external purge estimates (eg Blobifier) to the filament consumption UI (#7508)
Integrate external purge estimates to the filament consumption UI
This commit is contained in:
parent
5e576887c8
commit
508d0e6334
2 changed files with 21 additions and 0 deletions
|
@ -98,6 +98,8 @@ const std::vector<std::string> GCodeProcessor::Reserved_Tags_compatible = {
|
||||||
const std::string GCodeProcessor::Flush_Start_Tag = " FLUSH_START";
|
const std::string GCodeProcessor::Flush_Start_Tag = " FLUSH_START";
|
||||||
const std::string GCodeProcessor::Flush_End_Tag = " FLUSH_END";
|
const std::string GCodeProcessor::Flush_End_Tag = " FLUSH_END";
|
||||||
|
|
||||||
|
//Orca: External device purge tag
|
||||||
|
const std::string GCodeProcessor::External_Purge_Tag = " EXTERNAL_PURGE";
|
||||||
|
|
||||||
const float GCodeProcessor::Wipe_Width = 0.05f;
|
const float GCodeProcessor::Wipe_Width = 0.05f;
|
||||||
const float GCodeProcessor::Wipe_Height = 0.05f;
|
const float GCodeProcessor::Wipe_Height = 0.05f;
|
||||||
|
@ -2289,6 +2291,24 @@ void GCodeProcessor::process_tags(const std::string_view comment, bool producers
|
||||||
m_flushing = false;
|
m_flushing = false;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Orca: Integrate filament consumption for purging performed to an external device and controlled via macros
|
||||||
|
// (eg. Happy Hare) in the filament consumption stats.
|
||||||
|
if (boost::starts_with(comment, GCodeProcessor::External_Purge_Tag)) {
|
||||||
|
std::regex numberRegex(R"(\d+\.\d+)");
|
||||||
|
std::smatch match;
|
||||||
|
std::string line(comment);
|
||||||
|
if (std::regex_search(line, match, numberRegex)) {
|
||||||
|
float filament_diameter = (static_cast<size_t>(m_extruder_id) < m_result.filament_diameters.size()) ? m_result.filament_diameters[m_extruder_id] : m_result.filament_diameters.back();
|
||||||
|
float filament_radius = 0.5f * filament_diameter;
|
||||||
|
float area_filament_cross_section = static_cast<float>(M_PI) * sqr(filament_radius);
|
||||||
|
|
||||||
|
float dE = std::stof(match.str());
|
||||||
|
float volume_extruded_filament = area_filament_cross_section * dE;
|
||||||
|
m_used_filaments.update_flush_per_filament(m_extruder_id, volume_extruded_filament);
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (!producers_enabled || m_producer == EProducer::OrcaSlicer) {
|
if (!producers_enabled || m_producer == EProducer::OrcaSlicer) {
|
||||||
// height tag
|
// height tag
|
||||||
|
|
|
@ -272,6 +272,7 @@ class Print;
|
||||||
static const std::vector<std::string> Reserved_Tags_compatible;
|
static const std::vector<std::string> Reserved_Tags_compatible;
|
||||||
static const std::string Flush_Start_Tag;
|
static const std::string Flush_Start_Tag;
|
||||||
static const std::string Flush_End_Tag;
|
static const std::string Flush_End_Tag;
|
||||||
|
static const std::string External_Purge_Tag;
|
||||||
public:
|
public:
|
||||||
enum class ETags : unsigned char
|
enum class ETags : unsigned char
|
||||||
{
|
{
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue