Parallelized PrintObject::_slice(), make_slices() code.

This commit is contained in:
bubnikv 2017-03-08 10:37:47 +01:00
parent 1e6cf0cd98
commit 73439b7acb

View file

@ -1133,7 +1133,10 @@ void PrintObject::_slice()
end: end:
; ;
for (size_t layer_id = 0; layer_id < layers.size(); ++ layer_id) { tbb::parallel_for(
tbb::blocked_range<size_t>(0, this->layers.size()),
[this](const tbb::blocked_range<size_t>& range) {
for (size_t layer_id = range.begin(); layer_id < range.end(); ++ layer_id) {
Layer *layer = this->layers[layer_id]; Layer *layer = this->layers[layer_id];
// Apply size compensation and perform clipping of multi-part objects. // Apply size compensation and perform clipping of multi-part objects.
float delta = float(scale_(this->config.xy_size_compensation.value)); float delta = float(scale_(this->config.xy_size_compensation.value));
@ -1166,6 +1169,7 @@ end:
// Merge all regions' slices to get islands, chain them by a shortest path. // Merge all regions' slices to get islands, chain them by a shortest path.
layer->make_slices(); layer->make_slices();
} }
});
} }
std::vector<ExPolygons> PrintObject::_slice_region(size_t region_id, const std::vector<float> &z, bool modifier) std::vector<ExPolygons> PrintObject::_slice_region(size_t region_id, const std::vector<float> &z, bool modifier)