Postpone seam picking for spNearest configuration to the place_seam method.

This commit is contained in:
PavelMikus 2022-04-13 15:00:18 +02:00
parent 83f3ca27dc
commit 137fa35238

View File

@ -1308,24 +1308,26 @@ void SeamPlacer::init(const Print &print) {
BOOST_LOG_TRIVIAL(debug) BOOST_LOG_TRIVIAL(debug)
<< "SeamPlacer: calculate_overhangs and layer embdedding: end"; << "SeamPlacer: calculate_overhangs and layer embdedding: end";
BOOST_LOG_TRIVIAL(debug) if (configured_seam_preference != spNearest) { // For spNearest, the seam is picked in the place_seam method with actual nozzle position information
<< "SeamPlacer: pick_seam_point : start"; BOOST_LOG_TRIVIAL(debug)
//pick seam point << "SeamPlacer: pick_seam_point : start";
std::vector<PrintObjectSeamData::LayerSeams> &layers = m_seam_per_object[po].layers; //pick seam point
tbb::parallel_for(tbb::blocked_range<size_t>(0, layers.size()), std::vector<PrintObjectSeamData::LayerSeams> &layers = m_seam_per_object[po].layers;
[&layers, configured_seam_preference, comparator](tbb::blocked_range<size_t> r) { tbb::parallel_for(tbb::blocked_range<size_t>(0, layers.size()),
for (size_t layer_idx = r.begin(); layer_idx < r.end(); ++layer_idx) { [&layers, configured_seam_preference, comparator](tbb::blocked_range<size_t> r) {
std::vector<SeamCandidate> &layer_perimeter_points = layers[layer_idx].points; for (size_t layer_idx = r.begin(); layer_idx < r.end(); ++layer_idx) {
for (size_t current = 0; current < layer_perimeter_points.size(); std::vector<SeamCandidate> &layer_perimeter_points = layers[layer_idx].points;
current = layer_perimeter_points[current].perimeter.end_index + 1) for (size_t current = 0; current < layer_perimeter_points.size();
if (configured_seam_preference == spRandom) current = layer_perimeter_points[current].perimeter.end_index + 1)
pick_random_seam_point(layer_perimeter_points, current); if (configured_seam_preference == spRandom)
else pick_random_seam_point(layer_perimeter_points, current);
pick_seam_point(layer_perimeter_points, current, comparator); else
} pick_seam_point(layer_perimeter_points, current, comparator);
}); }
BOOST_LOG_TRIVIAL(debug) });
<< "SeamPlacer: pick_seam_point : end"; BOOST_LOG_TRIVIAL(debug)
<< "SeamPlacer: pick_seam_point : end";
}
if (configured_seam_preference == spAligned) { if (configured_seam_preference == spAligned) {
BOOST_LOG_TRIVIAL(debug) BOOST_LOG_TRIVIAL(debug)