From e6203c0f0a1d4e9f46e903e4aa7ae497a6757fe6 Mon Sep 17 00:00:00 2001 From: Joseph Lenox Date: Mon, 16 Jul 2018 22:28:20 -0500 Subject: [PATCH] Fixed verification Also started stubbing out process_layer (applying configs, etc) --- src/test/libslic3r/test_printgcode.cpp | 4 +++- src/test/test_data.cpp | 1 - xs/src/libslic3r/Print.cpp | 4 ++-- xs/src/libslic3r/PrintGCode.cpp | 14 ++++++++++++-- xs/src/libslic3r/PrintGCode.hpp | 5 +++-- 5 files changed, 20 insertions(+), 8 deletions(-) diff --git a/src/test/libslic3r/test_printgcode.cpp b/src/test/libslic3r/test_printgcode.cpp index cd6214c80..5c554d209 100644 --- a/src/test/libslic3r/test_printgcode.cpp +++ b/src/test/libslic3r/test_printgcode.cpp @@ -38,8 +38,10 @@ SCENARIO( "PrintGCode basic functionality", "[!mayfail]") { REQUIRE(exported.find("G21 ; set units to millimeters") != std::string::npos); } - THEN("Config options emitted.") { + THEN("Config options emitted for print config, default region config, default object config") { + REQUIRE(exported.find("; first_layer_temperature") != std::string::npos); REQUIRE(exported.find("; layer_height") != std::string::npos); + REQUIRE(exported.find("; fill_density") != std::string::npos); } } WHEN("the output is executed with support material") { diff --git a/src/test/test_data.cpp b/src/test/test_data.cpp index 1cc52b79b..cac02515d 100644 --- a/src/test/test_data.cpp +++ b/src/test/test_data.cpp @@ -231,7 +231,6 @@ Slic3r::Test::Print init_print(std::tuple cube, config_ptr _config) void gcode(std::stringstream& gcode, Slic3r::Test::Print& _print) { Slic3r::Print& print {_print.print()}; - print.process(); print.export_gcode(gcode, true); } diff --git a/xs/src/libslic3r/Print.cpp b/xs/src/libslic3r/Print.cpp index ef00d8fe2..631b80cdf 100644 --- a/xs/src/libslic3r/Print.cpp +++ b/xs/src/libslic3r/Print.cpp @@ -99,8 +99,8 @@ Print::process() { if (this->status_cb != nullptr) this->status_cb(70, "Infilling layers"); - for(auto obj : this->objects) { obj->_infill(); } - for(auto obj : this->objects) { obj->generate_support_material(); } + for(auto& obj : this->objects) { obj->_infill(); } + for(auto& obj : this->objects) { obj->generate_support_material(); } this->make_skirt(); this->make_brim(); // must follow make_skirt diff --git a/xs/src/libslic3r/PrintGCode.cpp b/xs/src/libslic3r/PrintGCode.cpp index ca08633c2..fd6a6f874 100644 --- a/xs/src/libslic3r/PrintGCode.cpp +++ b/xs/src/libslic3r/PrintGCode.cpp @@ -273,8 +273,8 @@ PrintGCode::output() // print config _print_config(print.config); -// _print_config(print.default_object_config); -// _print_config(print.default_region_config); + _print_config(print.default_object_config); + _print_config(print.default_region_config); } std::string @@ -286,6 +286,15 @@ PrintGCode::filter(const std::string& in, bool wait) void PrintGCode::process_layer(size_t idx, const Layer* layer, const Points& copies) { + std::string gcode {""}; + auto& gcodegen {this->_gcodegen}; + + const auto& obj {*(layer->object())}; + gcodegen.config.apply(obj.config, true); + + + + fh << this->filter(gcode); } void @@ -313,6 +322,7 @@ PrintGCode::_print_config(const ConfigBase& config) fh << "; " << key << " = " << config.serialize(key) << "\n"; } } + PrintGCode::PrintGCode(Slic3r::Print& print, std::ostream& _fh) : _print(print), config(print.config), diff --git a/xs/src/libslic3r/PrintGCode.hpp b/xs/src/libslic3r/PrintGCode.hpp index bfb164b6f..f831f303f 100644 --- a/xs/src/libslic3r/PrintGCode.hpp +++ b/xs/src/libslic3r/PrintGCode.hpp @@ -26,10 +26,10 @@ public: /// Process an individual output for export. Writes to the ostream. void process_layer(size_t idx, const Layer* layer, const Points& copies); - void flush_filters() { fh << this->filter(this->_cooling_buffer.flush(), 1); } + void flush_filters() { fh << this->filter(this->_cooling_buffer.flush(), true); } /// Applies various filters, if enabled. - std::string filter(const std::string& in, bool wait); + std::string filter(const std::string& in, bool wait = false); private: @@ -57,6 +57,7 @@ private: void _print_first_layer_temperature(bool wait); void _print_off_temperature(bool wait); + /// Utility function to print config options as gcode comments void _print_config(const ConfigBase& config);