mirror of
https://github.com/SoftFever/OrcaSlicer.git
synced 2025-07-26 16:13:58 -06:00
Brim separation from object, follow up to 82373334bc
1) Changed the name of the variable "brim_offset" to "brim_separation" for clarity. 2) Added legacy conversion after loading an old 3MF that does not define then new "brim_separation" variable: The "brim_separation" is being filled in with the "elefant_foot_compensation" value to produce equal brim separation to the old PrusaSlicer that saved that 3MF file.
This commit is contained in:
parent
4cc729b312
commit
5f26bfd397
12 changed files with 46 additions and 31 deletions
|
@ -2810,22 +2810,22 @@ PrintObjectSupportMaterial::MyLayersPtr PrintObjectSupportMaterial::generate_raf
|
|||
Polygons brim;
|
||||
if (object.has_brim()) {
|
||||
// Calculate the area covered by the brim.
|
||||
const BrimType brim_type = object.config().brim_type;
|
||||
const bool brim_outer = brim_type == btOuterOnly || brim_type == btOuterAndInner;
|
||||
const bool brim_inner = brim_type == btInnerOnly || brim_type == btOuterAndInner;
|
||||
const auto brim_offset = scaled<float>(object.config().brim_offset.value + object.config().brim_width.value);
|
||||
const BrimType brim_type = object.config().brim_type;
|
||||
const bool brim_outer = brim_type == btOuterOnly || brim_type == btOuterAndInner;
|
||||
const bool brim_inner = brim_type == btInnerOnly || brim_type == btOuterAndInner;
|
||||
const auto brim_separation = scaled<float>(object.config().brim_separation.value + object.config().brim_width.value);
|
||||
for (const ExPolygon &ex : object.layers().front()->lslices) {
|
||||
if (brim_outer && brim_inner)
|
||||
polygons_append(brim, offset(ex, brim_offset));
|
||||
polygons_append(brim, offset(ex, brim_separation));
|
||||
else {
|
||||
if (brim_outer)
|
||||
polygons_append(brim, offset(ex.contour, brim_offset, ClipperLib::jtRound, float(scale_(0.1))));
|
||||
polygons_append(brim, offset(ex.contour, brim_separation, ClipperLib::jtRound, float(scale_(0.1))));
|
||||
else
|
||||
brim.emplace_back(ex.contour);
|
||||
if (brim_inner) {
|
||||
Polygons holes = ex.holes;
|
||||
polygons_reverse(holes);
|
||||
holes = offset(holes, - brim_offset, ClipperLib::jtRound, float(scale_(0.1)));
|
||||
holes = offset(holes, - brim_separation, ClipperLib::jtRound, float(scale_(0.1)));
|
||||
polygons_reverse(holes);
|
||||
polygons_append(brim, std::move(holes));
|
||||
} else
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue