Fix of previous commit: Mixed up ClipperLib::pftPositive and pftNonZero
This commit is contained in:
parent
73e0099c55
commit
9aa520baf3
5 changed files with 6 additions and 6 deletions
|
@ -487,7 +487,7 @@ Slic3r::Polygons union_(const Slic3r::Polygons &subject, const Slic3r::Polygons
|
||||||
{ return _clipper(ClipperLib::ctUnion, ClipperUtils::PolygonsProvider(subject), ClipperUtils::PolygonsProvider(subject2), ApplySafetyOffset::No); }
|
{ return _clipper(ClipperLib::ctUnion, ClipperUtils::PolygonsProvider(subject), ClipperUtils::PolygonsProvider(subject2), ApplySafetyOffset::No); }
|
||||||
|
|
||||||
template <typename TSubject, typename TClip>
|
template <typename TSubject, typename TClip>
|
||||||
static ExPolygons _clipper_ex(ClipperLib::ClipType clipType, TSubject &&subject, TClip &&clip, ApplySafetyOffset do_safety_offset, ClipperLib::PolyFillType fill_type = ClipperLib::pftPositive)
|
static ExPolygons _clipper_ex(ClipperLib::ClipType clipType, TSubject &&subject, TClip &&clip, ApplySafetyOffset do_safety_offset, ClipperLib::PolyFillType fill_type = ClipperLib::pftNonZero)
|
||||||
{ return PolyTreeToExPolygons(_clipper_do_polytree2(clipType, std::forward<TSubject>(subject), std::forward<TClip>(clip), fill_type, do_safety_offset)); }
|
{ return PolyTreeToExPolygons(_clipper_do_polytree2(clipType, std::forward<TSubject>(subject), std::forward<TClip>(clip), fill_type, do_safety_offset)); }
|
||||||
|
|
||||||
Slic3r::ExPolygons diff_ex(const Slic3r::Polygons &subject, const Slic3r::Polygons &clip, ApplySafetyOffset do_safety_offset)
|
Slic3r::ExPolygons diff_ex(const Slic3r::Polygons &subject, const Slic3r::Polygons &clip, ApplySafetyOffset do_safety_offset)
|
||||||
|
|
|
@ -357,7 +357,7 @@ Slic3r::Polygons union_(const Slic3r::Polygons &subject);
|
||||||
Slic3r::Polygons union_(const Slic3r::ExPolygons &subject);
|
Slic3r::Polygons union_(const Slic3r::ExPolygons &subject);
|
||||||
Slic3r::Polygons union_(const Slic3r::Polygons &subject, const Slic3r::Polygons &subject2);
|
Slic3r::Polygons union_(const Slic3r::Polygons &subject, const Slic3r::Polygons &subject2);
|
||||||
// May be used to "heal" unusual models (3DLabPrints etc.) by providing fill_type (pftEvenOdd, pftNonZero, pftPositive, pftNegative).
|
// May be used to "heal" unusual models (3DLabPrints etc.) by providing fill_type (pftEvenOdd, pftNonZero, pftPositive, pftNegative).
|
||||||
Slic3r::ExPolygons union_ex(const Slic3r::Polygons &subject, ClipperLib::PolyFillType fill_type = ClipperLib::pftPositive);
|
Slic3r::ExPolygons union_ex(const Slic3r::Polygons &subject, ClipperLib::PolyFillType fill_type = ClipperLib::pftNonZero);
|
||||||
Slic3r::ExPolygons union_ex(const Slic3r::ExPolygons &subject);
|
Slic3r::ExPolygons union_ex(const Slic3r::ExPolygons &subject);
|
||||||
Slic3r::ExPolygons union_ex(const Slic3r::Surfaces &subject);
|
Slic3r::ExPolygons union_ex(const Slic3r::Surfaces &subject);
|
||||||
|
|
||||||
|
|
|
@ -71,7 +71,7 @@ enum class IroningType {
|
||||||
|
|
||||||
enum class SlicingMode
|
enum class SlicingMode
|
||||||
{
|
{
|
||||||
// Regular, applying ClipperLib::pftPositive rule when creating ExPolygons.
|
// Regular, applying ClipperLib::pftNonZero rule when creating ExPolygons.
|
||||||
Regular,
|
Regular,
|
||||||
// Compatible with 3DLabPrint models, applying ClipperLib::pftEvenOdd rule when creating ExPolygons.
|
// Compatible with 3DLabPrint models, applying ClipperLib::pftEvenOdd rule when creating ExPolygons.
|
||||||
EvenOdd,
|
EvenOdd,
|
||||||
|
|
|
@ -1179,7 +1179,7 @@ std::vector<ExPolygons> slice_mesh_ex(
|
||||||
Slic3r::make_expolygons(
|
Slic3r::make_expolygons(
|
||||||
layers_p[layer_id], params.closing_radius, params.extra_offset,
|
layers_p[layer_id], params.closing_radius, params.extra_offset,
|
||||||
this_mode == MeshSlicingParams::SlicingMode::EvenOdd ? ClipperLib::pftEvenOdd :
|
this_mode == MeshSlicingParams::SlicingMode::EvenOdd ? ClipperLib::pftEvenOdd :
|
||||||
this_mode == MeshSlicingParams::SlicingMode::PositiveLargestContour ? ClipperLib::pftNonZero : ClipperLib::pftPositive,
|
this_mode == MeshSlicingParams::SlicingMode::PositiveLargestContour ? ClipperLib::pftPositive : ClipperLib::pftNonZero,
|
||||||
&expolygons);
|
&expolygons);
|
||||||
//FIXME simplify
|
//FIXME simplify
|
||||||
if (this_mode == MeshSlicingParams::SlicingMode::PositiveLargestContour)
|
if (this_mode == MeshSlicingParams::SlicingMode::PositiveLargestContour)
|
||||||
|
|
|
@ -12,13 +12,13 @@ struct MeshSlicingParams
|
||||||
{
|
{
|
||||||
enum class SlicingMode : uint32_t {
|
enum class SlicingMode : uint32_t {
|
||||||
// Regular slicing, maintain all contours and their orientation.
|
// Regular slicing, maintain all contours and their orientation.
|
||||||
// slice_mesh_ex() applies ClipperLib::pftPositive rule to the result of slice_mesh().
|
// slice_mesh_ex() applies ClipperLib::pftNonZero rule to the result of slice_mesh().
|
||||||
Regular,
|
Regular,
|
||||||
// For slicing 3DLabPrints plane models (aka to be compatible with S3D default strategy).
|
// For slicing 3DLabPrints plane models (aka to be compatible with S3D default strategy).
|
||||||
// slice_mesh_ex() applies ClipperLib::pftEvenOdd rule. slice_mesh() slices EvenOdd as Regular.
|
// slice_mesh_ex() applies ClipperLib::pftEvenOdd rule. slice_mesh() slices EvenOdd as Regular.
|
||||||
EvenOdd,
|
EvenOdd,
|
||||||
// Maintain all contours, orient all contours CCW.
|
// Maintain all contours, orient all contours CCW.
|
||||||
// slice_mesh_ex() applies ClipperLib::pftPositive rule, thus holes will be closed.
|
// slice_mesh_ex() applies ClipperLib::pftNonZero rule, thus holes will be closed.
|
||||||
Positive,
|
Positive,
|
||||||
// Orient all contours CCW and keep only the contour with the largest area.
|
// Orient all contours CCW and keep only the contour with the largest area.
|
||||||
// This mode is useful for slicing complex objects in vase mode.
|
// This mode is useful for slicing complex objects in vase mode.
|
||||||
|
|
Loading…
Reference in a new issue