diff --git a/src/libslic3r/GCode.cpp b/src/libslic3r/GCode.cpp index cf3d2022dc..5b33c6e34c 100644 --- a/src/libslic3r/GCode.cpp +++ b/src/libslic3r/GCode.cpp @@ -570,9 +570,6 @@ GCodeGenerator::GCodeGenerator(const Print* print) : m_volumetric_speed(0), m_last_extrusion_role(GCodeExtrusionRole::None), m_last_width(0.0f), -#if ENABLE_GCODE_VIEWER_DATA_CHECKING - m_last_mm3_per_mm(0.0), -#endif // ENABLE_GCODE_VIEWER_DATA_CHECKING m_brim_done(false), m_second_layer_things_done(false), m_silent_time_estimator_enabled(false), @@ -961,9 +958,6 @@ void GCodeGenerator::_do_export(Print& print, GCodeOutputStream &file, Thumbnail m_last_layer_z = 0.f; m_max_layer_z = 0.f; m_last_width = 0.f; -#if ENABLE_GCODE_VIEWER_DATA_CHECKING - m_last_mm3_per_mm = 0.; -#endif // ENABLE_GCODE_VIEWER_DATA_CHECKING // How many times will be change_layer() called?gcode.cpp // change_layer() in turn increments the progress bar status. @@ -3269,14 +3263,6 @@ std::string GCodeGenerator::_extrude( + float_to_string_decimal_point(m_last_width) + "\n"; } -#if ENABLE_GCODE_VIEWER_DATA_CHECKING - if (last_was_wipe_tower || (m_last_mm3_per_mm != path_attr.mm3_per_mm)) { - m_last_mm3_per_mm = path_attr.mm3_per_mm; - gcode += std::string(";") + GCodeProcessor::Mm3_Per_Mm_Tag - + float_to_string_decimal_point(m_last_mm3_per_mm) + "\n"; - } -#endif // ENABLE_GCODE_VIEWER_DATA_CHECKING - if (last_was_wipe_tower || std::abs(m_last_height - path_attr.height) > EPSILON) { m_last_height = path_attr.height; diff --git a/src/libslic3r/GCode.hpp b/src/libslic3r/GCode.hpp index 97b3695859..3f09295297 100644 --- a/src/libslic3r/GCode.hpp +++ b/src/libslic3r/GCode.hpp @@ -419,9 +419,6 @@ private: float m_last_layer_z{ 0.0f }; float m_max_layer_z{ 0.0f }; float m_last_width{ 0.0f }; -#if ENABLE_GCODE_VIEWER_DATA_CHECKING - double m_last_mm3_per_mm; -#endif // ENABLE_GCODE_VIEWER_DATA_CHECKING std::optional m_previous_layer_last_position; std::optional m_previous_layer_last_position_before_wipe; diff --git a/src/libslic3r/GCode/GCodeProcessor.cpp b/src/libslic3r/GCode/GCodeProcessor.cpp index 3b256034a7..5c9489144f 100644 --- a/src/libslic3r/GCode/GCodeProcessor.cpp +++ b/src/libslic3r/GCode/GCodeProcessor.cpp @@ -84,10 +84,6 @@ bgcode::binarize::BinarizerConfig GCodeProcessor::s_binarizer_config{ bgcode::core::EChecksumType::CRC32 }; -#if ENABLE_GCODE_VIEWER_DATA_CHECKING -const std::string GCodeProcessor::Mm3_Per_Mm_Tag = "MM3_PER_MM:"; -#endif // ENABLE_GCODE_VIEWER_DATA_CHECKING - static void set_option_value(ConfigOptionFloats& option, size_t id, float value) { if (id < option.values.size()) @@ -1073,12 +1069,6 @@ void GCodeProcessor::reset() m_kissslicer_toolchange_time_correction = 0.0f; m_single_extruder_multi_material = false; - -#if ENABLE_GCODE_VIEWER_DATA_CHECKING - m_mm3_per_mm_compare.reset(); - m_height_compare.reset(); - m_width_compare.reset(); -#endif // ENABLE_GCODE_VIEWER_DATA_CHECKING } static inline const char* skip_whitespaces(const char *begin, const char *end) { @@ -1364,13 +1354,6 @@ void GCodeProcessor::finalize(bool perform_post_process) update_estimated_statistics(); -#if ENABLE_GCODE_VIEWER_DATA_CHECKING - std::cout << "\n"; - m_mm3_per_mm_compare.output(); - m_height_compare.output(); - m_width_compare.output(); -#endif // ENABLE_GCODE_VIEWER_DATA_CHECKING - if (perform_post_process) post_process(); } @@ -1988,15 +1971,6 @@ void GCodeProcessor::process_tags(const std::string_view comment, bool producers ++m_layer_id; return; } - -#if ENABLE_GCODE_VIEWER_DATA_CHECKING - // mm3_per_mm print tag - if (boost::starts_with(comment, Mm3_Per_Mm_Tag)) { - if (! parse_number(comment.substr(Mm3_Per_Mm_Tag.size()), m_mm3_per_mm_compare.last_tag_value)) - BOOST_LOG_TRIVIAL(error) << "GCodeProcessor encountered an invalid value for Mm3_Per_Mm (" << comment << ")."; - return; - } -#endif // ENABLE_GCODE_VIEWER_DATA_CHECKING } bool GCodeProcessor::process_producers_tags(const std::string_view comment) @@ -2619,9 +2593,6 @@ void GCodeProcessor::process_G1(const std::array, 4>& axes // volume extruded filament / tool displacement = area toolpath cross section m_mm3_per_mm = area_toolpath_cross_section; -#if ENABLE_GCODE_VIEWER_DATA_CHECKING - m_mm3_per_mm_compare.update(area_toolpath_cross_section, m_extrusion_role); -#endif // ENABLE_GCODE_VIEWER_DATA_CHECKING if (m_forced_height > 0.0f) // use height coming from the gcode tags @@ -2646,10 +2617,6 @@ void GCodeProcessor::process_G1(const std::array, 4>& axes m_extruded_last_z = m_end_position[Z]; m_options_z_corrector.update(m_height); -#if ENABLE_GCODE_VIEWER_DATA_CHECKING - m_height_compare.update(m_height, m_extrusion_role); -#endif // ENABLE_GCODE_VIEWER_DATA_CHECKING - if (m_forced_width > 0.0f) // use width coming from the gcode tags m_width = m_forced_width; @@ -2668,10 +2635,6 @@ void GCodeProcessor::process_G1(const std::array, 4>& axes // clamp width to avoid artifacts which may arise from wrong values of m_height m_width = std::min(m_width, std::max(2.0f, 4.0f * m_height)); - -#if ENABLE_GCODE_VIEWER_DATA_CHECKING - m_width_compare.update(m_width, m_extrusion_role); -#endif // ENABLE_GCODE_VIEWER_DATA_CHECKING } // time estimate section diff --git a/src/libslic3r/GCode/GCodeProcessor.hpp b/src/libslic3r/GCode/GCodeProcessor.hpp index e8327b10c5..509f516880 100644 --- a/src/libslic3r/GCode/GCodeProcessor.hpp +++ b/src/libslic3r/GCode/GCodeProcessor.hpp @@ -202,10 +202,6 @@ namespace Slic3r { static const float Wipe_Width; static const float Wipe_Height; -#if ENABLE_GCODE_VIEWER_DATA_CHECKING - static const std::string Mm3_Per_Mm_Tag; -#endif // ENABLE_GCODE_VIEWER_DATA_CHECKING - private: using AxisCoords = std::array; using ExtruderColors = std::vector; @@ -483,74 +479,6 @@ namespace Slic3r { } }; -#if ENABLE_GCODE_VIEWER_DATA_CHECKING - struct DataChecker - { - struct Error - { - float value; - float tag_value; - GCodeExtrusionRole role; - }; - - std::string type; - float threshold{ 0.01f }; - float last_tag_value{ 0.0f }; - unsigned int count{ 0 }; - std::vector errors; - - DataChecker(const std::string& type, float threshold) - : type(type), threshold(threshold) - {} - - void update(float value, GCodeExtrusionRole role) { - if (role != GCodeExtrusionRole::Custom) { - ++count; - if (last_tag_value != 0.0f) { - if (std::abs(value - last_tag_value) / last_tag_value > threshold) - errors.push_back({ value, last_tag_value, role }); - } - } - } - - void reset() { last_tag_value = 0.0f; errors.clear(); count = 0; } - - std::pair get_min() const { - float delta_min = FLT_MAX; - float perc_min = 0.0f; - for (const Error& e : errors) { - if (delta_min > e.value - e.tag_value) { - delta_min = e.value - e.tag_value; - perc_min = 100.0f * delta_min / e.tag_value; - } - } - return { delta_min, perc_min }; - } - - std::pair get_max() const { - float delta_max = -FLT_MAX; - float perc_max = 0.0f; - for (const Error& e : errors) { - if (delta_max < e.value - e.tag_value) { - delta_max = e.value - e.tag_value; - perc_max = 100.0f * delta_max / e.tag_value; - } - } - return { delta_max, perc_max }; - } - - void output() const { - if (!errors.empty()) { - std::cout << type << ":\n"; - std::cout << "Errors: " << errors.size() << " (" << 100.0f * float(errors.size()) / float(count) << "%)\n"; - auto [min, perc_min] = get_min(); - auto [max, perc_max] = get_max(); - std::cout << "min: " << min << "(" << perc_min << "%) - max: " << max << "(" << perc_max << "%)\n"; - } - } - }; -#endif // ENABLE_GCODE_VIEWER_DATA_CHECKING - static bgcode::binarize::BinarizerConfig& get_binarizer_config() { return s_binarizer_config; } private: @@ -639,12 +567,6 @@ namespace Slic3r { GCodeProcessorResult m_result; static unsigned int s_result_id; -#if ENABLE_GCODE_VIEWER_DATA_CHECKING - DataChecker m_mm3_per_mm_compare{ "mm3_per_mm", 0.01f }; - DataChecker m_height_compare{ "height", 0.01f }; - DataChecker m_width_compare{ "width", 0.01f }; -#endif // ENABLE_GCODE_VIEWER_DATA_CHECKING - public: GCodeProcessor(); diff --git a/src/libslic3r/GCode/WipeTower.cpp b/src/libslic3r/GCode/WipeTower.cpp index a19371ac89..ab1ac3bc5c 100644 --- a/src/libslic3r/GCode/WipeTower.cpp +++ b/src/libslic3r/GCode/WipeTower.cpp @@ -40,12 +40,9 @@ public: m_extrusion_flow(0.f), m_preview_suppressed(false), m_elapsed_time(0.f), -#if ENABLE_GCODE_VIEWER_DATA_CHECKING - m_default_analyzer_line_width(line_width), -#endif // ENABLE_GCODE_VIEWER_DATA_CHECKING - m_gcode_flavor(flavor), - m_filpar(filament_parameters) - { + m_gcode_flavor(flavor), + m_filpar(filament_parameters) + { // adds tag for analyzer: std::ostringstream str; str << ";" << GCodeProcessor::reserved_tag(GCodeProcessor::ETags::Height) << m_layer_height << "\n"; // don't rely on GCodeAnalyzer knowing the layer height - it knows nothing at priming @@ -62,18 +59,6 @@ public: return *this; } -#if ENABLE_GCODE_VIEWER_DATA_CHECKING - WipeTowerWriter& change_analyzer_mm3_per_mm(float len, float e) { - static const float area = float(M_PI) * 1.75f * 1.75f / 4.f; - float mm3_per_mm = (len == 0.f ? 0.f : area * e / len); - // adds tag for processor: - std::stringstream str; - str << ";" << GCodeProcessor::Mm3_Per_Mm_Tag << mm3_per_mm << "\n"; - m_gcode += str.str(); - return *this; - } -#endif // ENABLE_GCODE_VIEWER_DATA_CHECKING - WipeTowerWriter& set_initial_position(const Vec2f &pos, float width = 0.f, float depth = 0.f, float internal_angle = 0.f) { m_wipe_tower_width = width; m_wipe_tower_depth = depth; @@ -112,13 +97,8 @@ public: // Suppress / resume G-code preview in Slic3r. Slic3r will have difficulty to differentiate the various // filament loading and cooling moves from normal extrusion moves. Therefore the writer // is asked to suppres output of some lines, which look like extrusions. -#if ENABLE_GCODE_VIEWER_DATA_CHECKING - WipeTowerWriter& suppress_preview() { change_analyzer_line_width(0.f); m_preview_suppressed = true; return *this; } - WipeTowerWriter& resume_preview() { change_analyzer_line_width(m_default_analyzer_line_width); m_preview_suppressed = false; return *this; } -#else WipeTowerWriter& suppress_preview() { m_preview_suppressed = true; return *this; } - WipeTowerWriter& resume_preview() { m_preview_suppressed = false; return *this; } -#endif // ENABLE_GCODE_VIEWER_DATA_CHECKING + WipeTowerWriter& resume_preview() { m_preview_suppressed = false; return *this; } WipeTowerWriter& feedrate(float f) { @@ -157,12 +137,9 @@ public: Vec2f rot(this->rotate(Vec2f(x,y))); // this is where we want to go if (! m_preview_suppressed && e > 0.f && len > 0.f) { -#if ENABLE_GCODE_VIEWER_DATA_CHECKING - change_analyzer_mm3_per_mm(len, e); -#endif // ENABLE_GCODE_VIEWER_DATA_CHECKING - // Width of a squished extrusion, corrected for the roundings of the squished extrusions. + // Width of a squished extrusion, corrected for the roundings of the squished extrusions. // This is left zero if it is a travel move. - float width = e * m_filpar[0].filament_area / (len * m_layer_height); + float width = e * m_filpar[0].filament_area / (len * m_layer_height); // Correct for the roundings of a squished extrusion. width += m_layer_height * float(1. - M_PI / 4.); if (m_extrusions.empty() || m_extrusions.back().pos != rotated_current_pos) @@ -452,9 +429,6 @@ private: float m_wipe_tower_depth = 0.f; unsigned m_last_fan_speed = 0; int current_temp = -1; -#if ENABLE_GCODE_VIEWER_DATA_CHECKING - const float m_default_analyzer_line_width; -#endif // ENABLE_GCODE_VIEWER_DATA_CHECKING float m_used_filament_length = 0.f; GCodeFlavor m_gcode_flavor; const std::vector& m_filpar; diff --git a/src/libslic3r/Technologies.hpp b/src/libslic3r/Technologies.hpp index 946096b522..3eb5687b11 100644 --- a/src/libslic3r/Technologies.hpp +++ b/src/libslic3r/Technologies.hpp @@ -24,8 +24,6 @@ #define DISABLE_INSTANCES_SYNCH 0 // Use wxDataViewRender instead of wxDataViewCustomRenderer #define ENABLE_NONCUSTOM_DATA_VIEW_RENDERING 0 -// Enable G-Code viewer comparison between toolpaths height and width detected from gcode and calculated at gcode generation -#define ENABLE_GCODE_VIEWER_DATA_CHECKING 0 // Enable project dirty state manager debug window #define ENABLE_PROJECT_DIRTY_STATE_DEBUG_WINDOW 0 // Disable using instanced models to render options in gcode preview @@ -61,7 +59,7 @@ #define ENABLE_BINARIZED_GCODE_DEBUG_WINDOW 0 // Enable imgui debug dialog for new gcode viewer (using libvgcode) -#define ENABLE_NEW_GCODE_VIEWER_DEBUG 0 +#define ENABLE_NEW_GCODE_VIEWER_DEBUG 1 // Enable extension of tool position imgui dialog to show actual speed profile #define ENABLE_ACTUAL_SPEED_DEBUG 1