Commit Graph

162 Commits

Author SHA1 Message Date
4809689dcb Merge remote-tracking branch 'remotes/origin/lh_multi_material_segmentation' into vb_print_regions 2021-05-26 15:23:35 +02:00
f28ac7839d FDM backend refactoring: Return PrintRegion by reference, not by pointer.
Added PrintRegion hashing.
2021-05-05 18:13:58 +02:00
ef85b428ab WIP: Moving ownership of PrintRegions to PrintObjects. 2021-05-05 16:21:55 +02:00
9314856372 Fixing unit tests. 2021-05-05 13:19:01 +02:00
e9aaea38eb Fix of safety_offset() after ClipperUtils refactoring.
Fixes Solid infill where there should be none #6482
Also the safety offsetting was revised to be enabled only where needed,
the "do safety offset" is now easy to discover by
a new ApplySafetyOffset::Yes enum, and safety offset over union, which
is better done by offset() / offset_ex() has been replaced with
new union_safety_offset() / union_safety_offset_ex() functions, which
better convey their meaning and which could be better optimized than
union() with the safety offset applied.
2021-05-05 12:16:47 +02:00
a192525c2d Fixed alignment of sparse infill over multiple layers of the same region,
which was broken with 68666de521b1cb15e41ac6728c0e8d3b4b0d4ed0
"Reworked the "new" bridging to respect the bridge_flow_ratio
by maintaining extrusion spacing, but modifying the extrusion width
and / or height."
2021-05-04 18:27:53 +02:00
f191b4611d Further rework of ClipperUtils: Replaced many to_polygons() /
to_expolygons() calls with templated ClipperUtils variants to avoid
memory allocation and copying.
2021-05-03 11:39:53 +02:00
96a7a52715 Clipper optimization:
1) Removed the already commented-out scaling / unscaling when doing
   "safe offsetting"
2) Removed some of the "safe offsetting" at calls where it never was used.
3) Reworked Clipper & ClipperUtils to pass Polygons / ExPolygons / Surfaces
   as input parameters without conversion to ClipperLib::Paths. This
   should save a lot of memory allocation and copying.
4) Reworked conversions from ClipperLib::Paths & PolyTree to Polygons /
   ExPolygons to use the move operator to avoid many unnecessary allocations.
5) Reworked some "union with safe ofsetting" to "offset_ex", which should
   be cheaper.
2021-04-30 11:49:57 +02:00
3ae74a5ca8 1) New methods PrintObject::num_regions() and ::has_region() to make
the code more readable and to highlight where PrintObject::region_volumes
   are actually set and consumed.
2) Replaced Slic3r::clamp() with std::clamp(). They differ in the order
   of their parameters, thus hopefully no new bugs were introduced.
3) Some refactoring of MultiMaterialSegmentation for efficiency.
2021-04-22 11:41:26 +02:00
ab405b5b65 Eliminate warnings caused by changes to aid new libslic3r backend 2021-04-21 16:02:31 +02:00
a1a50fe096 Marked the unsafe ClipperUtils offset functions with CLIPPERUTILS_UNSAFE_OFFSET
Replaced some of the unsafe offset functions with safe variants.
Please test the
1) print bed from STL function
2) concentric infill
2021-04-13 13:28:37 +02:00
c0434121f5 New FDM support sparse infill zig-zag algorithm.
Fixed some old support and infill issues.

Fixes support problem #4295
Fixes Parts of interface layer extends beyond supports and cannot be printed
Fixes support missing under horizontal overhang #6058
Fixes Slicer double-traces small sections of Rectilinear Supports, causes
Fixes plastic buildup and nozzle crashes #4951
Fixes Add "Angle Interface layers" #2969
2021-04-08 15:29:40 +02:00
7aaf497380 Reworked the "new" bridging to respect the bridge_flow_ratio
by maintaining extrusion spacing, but modifying the extrusion width
and / or height.
2021-03-15 09:55:56 +01:00
784e3c45b5 WIP: Refactored bridging flow from normal flow, new config value
'thick_bridges' to switch between the Slic3r vs. S3D/Cura/Ideamaker
way of printing 1st object layer over supports.
Simplified the PresetHints.
2021-03-15 09:55:56 +01:00
eb070f698f Reduction of dead code in FDM infill. 2021-02-11 12:24:10 +01:00
982dec9b31 Make clang happy about the indentation 2021-02-11 12:06:12 +01:00
11015f29c8 Experimental: Switching all solid infills from Rectilinear to Monotonic
for regions with Monotonic top infill type.
This should likely implement Monotonic of last layer before ironing #4939
2021-02-11 11:15:14 +01:00
77f7f39a90 Fix of unnecessary splitting of solid fill surfaces.
This is a regression issue introduced in PrusaSlicer 2.3.0 with
the configurable anchoring.
2021-02-11 10:42:05 +01:00
4e581807be Trying to fix the remaining OSX warnings 2021-02-10 19:07:09 +01:00
bf90548516 Squashed commit of the following:
commit 61b3ca0b4b4a0b4cfbbc706ede94ef7ccec4c91f
Author: Vojtech Bubnik <bubnikv@gmail.com>
Date:   Wed Feb 10 15:42:27 2021 +0100

    Fix of fuzzy skin

commit d971ed51a5bb65e8bdfd326bc41b9d7ab2e20834
Author: Vojtech Bubnik <bubnikv@gmail.com>
Date:   Wed Feb 10 14:12:51 2021 +0100

    CMake adjustment of MINIMUM_BOOST_VERSION

commit 5d8aa2c59ecf7e32456f2e43e07dedc7d24eb21c
Author: Vojtech Bubnik <bubnikv@gmail.com>
Date:   Wed Feb 10 14:12:33 2021 +0100

    Fix of debug compilation after warning removal.

commit 5e339b3078f0c9d75b6fac28ed3c295ae9fbbef5
Author: Vojtech Bubnik <bubnikv@gmail.com>
Date:   Wed Feb 10 14:11:34 2021 +0100

    Fuzzy Skin changes:
    1) Moved the parameters to region
    2) Removed experimental code.
    3) Allowed fuzzyfication of both outer perimeter and holes.
2021-02-10 16:02:43 +01:00
01e55d990e Yet another clang compiler warning suppressed. 2021-02-09 20:04:11 +01:00
96014b3bb4 Fix of the previous commit (fixing warnings) 2021-02-09 19:46:09 +01:00
e40485fc8a Fixed some clang warnings 2021-02-09 19:23:58 +01:00
1d13fca90e Finishing the "Iron all surfaces" feature.
Fixes Ironing all solid surface does not seem to work #5703
2021-02-09 18:49:33 +01:00
301ac20fa1 Fixing Clang warnings 2 2021-02-08 17:52:29 +01:00
0e014bc4ca EdgeGrid refactoring to support both open and closed contours.
Squashed commit of the following:

commit 4e13a8fe19abcc9aae39a9bc4c7953a743196504
Merge: 6ae766409 6f89da1f3
Author: Vojtech Bubnik <bubnikv@gmail.com>
Date:   Fri Feb 5 11:19:35 2021 +0100

    Merge remote-tracking branch 'remotes/origin/master' into vb_edgegrid_open_lines

commit 6ae76640942269993c942861f0444088843e3fa1
Author: Vojtech Bubnik <bubnikv@gmail.com>
Date:   Fri Feb 5 11:14:48 2021 +0100

    EdgeGrid enhancement to accept both the open and closed lines.

commit 36a5efcd558bd5fd5f46b5f561387a2c73221553
Author: Vojtech Bubnik <bubnikv@gmail.com>
Date:   Fri Feb 5 10:52:14 2021 +0100

    EdgeGrid improvements: Documentation, one bug fix after recent refactoring.

commit 6f89da1f39
Author: tamasmeszaros <meszaros.q@gmail.com>
Date:   Thu Feb 4 20:31:50 2021 +0100

    Disable libicu for boost-regex

    Should have been disabled from the beginning

commit ffc77b1a72a0be9b5622fd33defeebb24bf07b34
Author: Vojtech Bubnik <bubnikv@gmail.com>
Date:   Thu Feb 4 18:40:33 2021 +0100

    EdgeGrid: Annotated those methods that do not work with open contours.

commit 8039a645b4bf0c46c99b90a9c34e7189d7442f86
Author: Vojtech Bubnik <bubnikv@gmail.com>
Date:   Thu Feb 4 18:28:21 2021 +0100

    Refactoring of EdgeGrid structure to support both closed and open lines.
2021-02-05 11:21:04 +01:00
a6d023429d Fixed some more GCC warnings 2021-01-29 15:17:03 +01:00
f7e26b5655 Fixing GCC warnings 2 2021-01-29 10:46:52 +01:00
c870aeb578 Fixing GCC warnings 1 2021-01-29 10:46:33 +01:00
de7b15c3b0 Slight improvement in Hilbert infill by using constexpr 2021-01-15 09:34:50 +01:00
f79054580f Fixed numerical issue with the new algorithm to connect infill lines
with perimeters:
1) Increased accuracy of the contour length parametrization from
   float to double, as double should capture the difference of
   32bit coord_t with full accuracy (or at least very close).
2) The algorithm to insert the T-joint points into the infill perimeter
   contour was improved to avoid inserting duplicate points.
2021-01-06 12:18:05 +01:00
9d187c06e6 Fixing the infill order for concentric infill to outside-in.
Relies to:
Concentric Fill Start Point - New Feature Request #4948
Feature Request: Archimedean Chords - Option to define direction of travel (Inside-Out or Outside-In) #5214
2021-01-06 11:05:32 +01:00
5525455bfd Fix of Adaptive cubic infill weird behavior #5633
Enabling reordering of infill paths for Support Cubic and Adaptive Cubic
infill types.
2021-01-04 15:42:23 +01:00
6c459418d6 Fixed wrong generation of Adaptive Cubic and Support Cubic infill when infill extrusion width is set in percent. 2020-12-21 14:14:06 +01:00
4a7269bd0c Merge of Fix proposal for crash on rectilinear #5399 2020-12-08 08:45:16 +01:00
82d69e44cf Gyroid infill: Lowered the threshold to drop infill line segments. 2020-11-25 14:56:11 +01:00
6a8f8c37c7 Fix of Monotonic infill leaves gaps in top infill where rectilinear does not #5259
and Chyba nebo vlastnost výplně Monotonic? #5225
2020-11-25 14:56:11 +01:00
db97a97116 Fix of [2.3.0-alpha4] Crash - several models cause crash when slicing #5208
Fixed some issues in internal anchors of the Adaptive Cubic infill.
The ugly and dangerous implicit casting operators in Line, MultiPoint,
Polyline and Polygon were made explicit.
2020-11-24 16:01:08 +01:00
e611ca1460 Merge of https://github.com/prusa3d/PrusaSlicer/pull/2856
Add aligned rectilinear infill functionality by @m-schubert
Implements [Feature Request] Aligned rectilinear infill #1938
2020-11-21 14:10:17 +01:00
c32a2c0dab Fixed crash in reworked infill anchoring due to numeric issues.
Added some more asserts to EdgeGrid.
2020-11-20 18:47:06 +01:00
b8e02ec498 Added missing includes to fix build on gcc 9 2020-11-20 15:19:49 +01:00
a0b1680f4c Anchoring of sparse infills can now be disabled. 2020-11-20 13:36:58 +01:00
73c10c6ddb fix of OSX build: workaround of non-standard std::optional 2020-11-16 13:44:15 +01:00
68bd7159a6 Fillers: Renamed Rectilinear2 to Rectilinear. 2020-11-16 13:24:57 +01:00
ce42c420b2 Renamed FillRectilinear.cpp,h to FillLine.cpp,h 2020-11-16 13:17:18 +01:00
6ac40c470b Fixing compilation issues. 2020-11-16 13:11:58 +01:00
9c07db8ee0 Fills:
1) New algorithm for connecting along the perimeters is now applied
   to Honeycomb, Hilbert and similar planar filling curves.
2) The old expensive path chaining is not applied if the new algorithm
   to connect along the perimeter lines is called afterwards.
2020-11-16 12:51:51 +01:00
d0c6e25f2f Fillers: Removal of old FillRectilinear, using of "override" instead
of "virtual" where applicable.
2020-11-16 11:16:44 +01:00
dc25f3900f Reworked connection of infill lines to perimeter lines.
Added a new "infill_anchor" parameter.
2020-11-16 10:54:00 +01:00
7d7620353e FillAdaptive:
1) More accurate trimming of an anchor with another infill line
   or by another anchor line.
2) Trimming of very short infill lines, which are not anchored,
   by another infill lines.
2020-11-11 16:49:11 +01:00