mirror of
https://github.com/OrcaSlicer/OrcaSlicer.git
synced 2026-10-07 15:51:08 +00:00
Merge Main into Belt Printer
Merge origin/main (00429da739) into belt-printer.
Conflicts resolved:
- src/CMakeLists.txt: keep both wxInspector workarounds.
- GCodeProcessor.cpp: keep the belt compare_pos / z_for_height lines.
- PrintObjectSlice.cpp: the belt bbox-Z guard also covers main's
printable_region_ids bookkeeping.
- TreeSupport.cpp: the belt-floor check runs before main's PendingNode
queueing.
- Tab.hpp: keep the belt fields, drop the removed upload description
fields.
- tests/libslic3r/CMakeLists.txt: keep both test files.
Also included:
- eSUN PLA belt presets declare their own filament_id (OFkrxQC4) and
scripts/filament_id_snapshot.json is regenerated, as main's filament_id
check requires.
- Custom.json version bumped to 02.04.00.05 so the belt entries reach
existing installs.
- Fix the ambiguous WithinRel call in the belt apron width test, which
otherwise breaks the fff_print build.
This commit is contained in:
@@ -339,11 +339,16 @@ static std::vector<std::vector<ExPolygons>> slices_to_regions(
|
||||
}
|
||||
int idx_first_printable_region = -1;
|
||||
bool complex = false;
|
||||
std::vector<int> printable_region_ids;
|
||||
for (int idx_region = 0; idx_region < int(layer_range.volume_regions.size()); ++ idx_region) {
|
||||
const PrintObjectRegions::VolumeRegion ®ion = layer_range.volume_regions[idx_region];
|
||||
if (!bbox_z_in_layer_frame || (region.bbox->min().z() <= z && region.bbox->max().z() >= z)) {
|
||||
if (idx_first_printable_region == -1 && region.model_volume->is_model_part())
|
||||
if (region.model_volume->is_model_part())
|
||||
printable_region_ids.push_back(idx_region);
|
||||
|
||||
if (idx_first_printable_region == -1 && region.model_volume->is_model_part()) {
|
||||
idx_first_printable_region = idx_region;
|
||||
}
|
||||
else if (idx_first_printable_region != -1) {
|
||||
// Test for overlap with some other region.
|
||||
for (int idx_region2 = idx_first_printable_region; idx_region2 < idx_region; ++ idx_region2) {
|
||||
@@ -361,8 +366,10 @@ static std::vector<std::vector<ExPolygons>> slices_to_regions(
|
||||
if (complex)
|
||||
zs_complex.push_back({ z_idx, z });
|
||||
else if (idx_first_printable_region >= 0) {
|
||||
const PrintObjectRegions::VolumeRegion ®ion = layer_range.volume_regions[idx_first_printable_region];
|
||||
slices_by_region[region.region->print_object_region_id()][z_idx] = std::move(volume_slices_find_by_id(volume_slices, region.model_volume->id()).slices[z_idx]);
|
||||
for (int printable_region_id : printable_region_ids) {
|
||||
const PrintObjectRegions::VolumeRegion ®ion = layer_range.volume_regions[printable_region_id];
|
||||
append(slices_by_region[region.region->print_object_region_id()][z_idx], std::move(volume_slices_find_by_id(volume_slices, region.model_volume->id()).slices[z_idx]));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -564,7 +571,7 @@ bool groupingVolumes(std::vector<VolumeSlices> objSliceByVolume, std::vector<gro
|
||||
}
|
||||
|
||||
tbb::parallel_for(tbb::blocked_range<int>(0, osvIndex.size()),
|
||||
[&osvIndex, &objSliceByVolume, &offsetValue, &resolution](const tbb::blocked_range<int>& range) {
|
||||
[&osvIndex, &objSliceByVolume, &resolution](const tbb::blocked_range<int>& range) {
|
||||
for (auto k = range.begin(); k != range.end(); ++k) {
|
||||
for (ExPolygon& poly_ex : objSliceByVolume[osvIndex[k][0]].slices[osvIndex[k][1]])
|
||||
poly_ex.douglas_peucker(resolution);
|
||||
@@ -572,7 +579,7 @@ bool groupingVolumes(std::vector<VolumeSlices> objSliceByVolume, std::vector<gro
|
||||
});
|
||||
|
||||
tbb::parallel_for(tbb::blocked_range<int>(0, osvIndex.size()),
|
||||
[&osvIndex, &objSliceByVolume,&offsetValue, &resolution](const tbb::blocked_range<int>& range) {
|
||||
[&osvIndex, &objSliceByVolume,&offsetValue](const tbb::blocked_range<int>& range) {
|
||||
for (auto k = range.begin(); k != range.end(); ++k) {
|
||||
objSliceByVolume[osvIndex[k][0]].slices[osvIndex[k][1]] = offset_ex(objSliceByVolume[osvIndex[k][0]].slices[osvIndex[k][1]], offsetValue);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user