From 321b5893b86bbc5cdc2dfd9c72676a6b0c1ca425 Mon Sep 17 00:00:00 2001 From: Joseph Lenox Date: Mon, 16 Jul 2018 17:11:15 -0500 Subject: [PATCH] Moved constructor to cpp file --- xs/src/libslic3r/PrintGCode.cpp | 31 ++++++++++++++++++++++++++++--- xs/src/libslic3r/PrintGCode.hpp | 11 ++--------- 2 files changed, 30 insertions(+), 12 deletions(-) diff --git a/xs/src/libslic3r/PrintGCode.cpp b/xs/src/libslic3r/PrintGCode.cpp index 0d72cb0b3..d7d02d77a 100644 --- a/xs/src/libslic3r/PrintGCode.cpp +++ b/xs/src/libslic3r/PrintGCode.cpp @@ -129,10 +129,10 @@ PrintGCode::output() if (include_start_extruder_temp) this->_print_first_layer_temperature(0); // Apply gcode math to start and end gcode -// fh << apply_math(gcodegen.placeholder_parser->process(config.start_gcode.value)); + fh << apply_math(gcodegen.placeholder_parser->process(config.start_gcode.value)); for(const auto& start_gcode : config.start_filament_gcode.values) { -// fh << apply_math(gcodegen.placeholder_parser->process(start_gcode)); + fh << apply_math(gcodegen.placeholder_parser->process(start_gcode)); } if (include_start_extruder_temp) this->_print_first_layer_temperature(1); @@ -143,12 +143,12 @@ PrintGCode::output() // initialize motion planner for object-to-object travel moves if (config.avoid_crossing_perimeters.getBool()) { - auto distance_from_objects {scale_(1)}; // compute the offsetted convex hull for each object and repeat it for each copy Polygons islands_p {}; for (auto object : this->objects) { Polygons polygons {}; + // Add polygons that aren't just thin walls. for (auto layer : object->layers) { const auto& slice {ExPolygons(layer->slices)}; std::for_each(slice.cbegin(), slice.cend(), [&polygons] (const ExPolygon& a) { polygons.emplace_back(a.contour); }); @@ -207,5 +207,30 @@ PrintGCode::_print_first_layer_temperature(bool wait) } } +PrintGCode::PrintGCode(Slic3r::Print& print, std::ostream& _fh) : + _print(print), + config(print.config), + _gcodegen(Slic3r::GCode()), + objects(print.objects), + fh(_fh), + _cooling_buffer(Slic3r::CoolingBuffer(this->_gcodegen)), + _spiral_vase(Slic3r::SpiralVase(this->config)) +{ + size_t layer_count {0}; + if (config.complete_objects) { + layer_count = std::accumulate(objects.cbegin(), objects.cend(), layer_count, [](const size_t& ret, const PrintObject* obj){ return ret + (obj->copies().size() * obj->total_layer_count()); }); + } else { + layer_count = std::accumulate(objects.cbegin(), objects.cend(), layer_count, [](const size_t& ret, const PrintObject* obj){ return ret + obj->total_layer_count(); }); + } + _gcodegen.placeholder_parser = &(print.placeholder_parser); // initialize + _gcodegen.layer_count = layer_count; + _gcodegen.enable_cooling_markers = true; + _gcodegen.apply_print_config(config); + std::cerr << "Setting " << print.extruders().size() << "\n"; + + auto extruders {print.extruders()}; + _gcodegen.set_extruders(extruders.cbegin(), extruders.cend()); +} + } // namespace Slic3r #endif //SLIC3RXS diff --git a/xs/src/libslic3r/PrintGCode.hpp b/xs/src/libslic3r/PrintGCode.hpp index 4204a8e21..046e80dda 100644 --- a/xs/src/libslic3r/PrintGCode.hpp +++ b/xs/src/libslic3r/PrintGCode.hpp @@ -17,15 +17,8 @@ namespace Slic3r { class PrintGCode { public: - PrintGCode(Slic3r::Print& print, std::ostream& _fh) : - _print(print), - config(print.config), - _gcodegen(Slic3r::GCode()), - objects(print.objects), - fh(_fh), - _cooling_buffer(Slic3r::CoolingBuffer(this->_gcodegen)), - _spiral_vase(Slic3r::SpiralVase(this->config)) - { }; + /// Constructor. + PrintGCode(Slic3r::Print& print, std::ostream& _fh); /// Perform the export. export is a reserved name in C++, so changed to output void output();