Commit Graph

166 Commits

Author SHA1 Message Date
Vojtech Bubnik
af9c7c967f Implementing a new switch for the shape of support towers:
expanded to a grid (the old way) vs.
snug (like the upstream Slic3r, Cura or Ideamaker).

Snug supports suffered from the degeneracies when merging overhang islands
over a large number of layers when projecting the support towers down.
We borrowed the idea & a bit of code from Cura by simplifying the support
polygons by closing the concave cracks, see the smooth_outward() function
and the MutablePolygon class.

Fixes Support problems with models with hole in the walls. #555
Fixes Support in the Air #740
Fixes [Bug] Supports generated beyond bed edges (X<0 and X>250) and where none are needed. #902
Fixes Unable to remove support material/can't change support "inflation distance" #2708
Fixes FR: support inflation and support conform to boundary #4783
Fixes Support blocker not working on this model #1346
Fixes Unnecessary support material #1993
Fixes support blocker enforcer issue #6240
2021-03-23 11:06:45 +01:00
Vojtech Bubnik
73b88e6ce0 Splitting FDM support gap to top / bottom, introducing
support_material_bottom_contact_distance
Fixing Crash in support generation after fcb714c (repro attached) #6195
2021-03-15 09:55:57 +01:00
Vojtech Bubnik
00db3dc419 WIP: Splitting the number of top / bottom support interface layers.
If the new support_material_bottom_interface_layers is left at default -1,
then support_material_interface_layers is used for both top and bottom
interface layers.
If support_material_interface_layers == 0, then neither top nor bottom
interface layers are being extruded.
2021-03-15 09:55:56 +01:00
Vojtech Bubnik
f01f02154c 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
Vojtech Bubnik
ceea9de8b8 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
Lukas Matena
abd5a9a46e Add a notification when custom support enforcers are not used due to supports being off
It is now emitted from Print::validate and has a hyperlink to enable supports
2021-03-04 09:35:22 +01:00
Vojtech Bubnik
43c05d35ea Fix of crash when using raft with modified Shape-Box with height 0.5mm #5652
Reworked skirt generator to only generate skirt at non-empty layers
(layers that actually extruder object or support) and to respect minimum
layer height. Skirt generator stops at the first layer where those both
conditions cannot be met.
2021-02-25 12:18:11 +01:00
Vojtech Bubnik
61a5b43ac3 Fix of Add option to change support interface pattern #1197
New config field for switching the support interface pattern between
default (rectilinear for non-soluble interface, concentric for soluble interface),
explicit rectilinear and explicit concentric.

Also the config layer was reworked a bit to reduce some switch statements
on ConfigOptionEnum<> templates.
2021-02-24 15:59:18 +01:00
Vojtech Bubnik
aee136cedd Squash merge of pull request Raft enhancements #6003
thanks @nemart69
2021-02-24 11:59:22 +01:00
Vojtech Bubnik
fcb714cd24 Added a single perimeter to the first layer of support or raft.
Fixes [Request] Add optional perimeter to raft #756
Fixes First support layer does not stick to bed #2101

New parameters raft_first_layer_density and raft_first_layer_expansion
to influence the 1st layer of raft or support.
Fixes Allow to disable raft under support structures. #3772
Fixes raft is larger than necessary #2568
Fixes Supports on the build plate should have a solid bottom interface for better adhesion #1165

Changed the 1st layer infill to rectilinear even for soluble materials.
Fixes first layer of support for multi filament support oddly spaced #1445
Fixes Full Soluble Materials interfacing into Models + Soluble material noise on Bed #684
2021-02-24 08:48:40 +01:00
Vojtech Bubnik
d2c46025c7 Fix of Enforce support for first N layers has no effect #470 2021-02-23 15:31:21 +01:00
Vojtech Bubnik
055d2321e7 Trimming support base layer with brim.
Fixes Brim destroyed by support aka. Enable supports on top of brim #1156
Fixes Brim Priority/Support on Brim #713
Fixes Phantom Support columns interfere with brim #3396
Fixes false generation of brim when supports are used #3395

This is a work in progress, as the brim generator currently produces
different brim areas from what the support generator expects.
2021-02-23 14:43:47 +01:00
Vojtech Bubnik
8ba230db9f Fix of Paint on support ignores some paints. #5948
When projecting the horizontal or nearly horizontal support enforcers or blockers
into object layers, the projection may fall on a layer above or below the layer
where it should in case the nearly horizontal support enforcer or blocker
triangles are intersecting the slicing plane of one of the object layers.
Due to numerical issues, projection of the support blocker or
enforcer triangles may not fall to the same side of the slicing plane
as when slicing the object. To make the projection robust, horizontal triangles
are newly projected to both the layer below and above if they are close
to the object slicing plane.
2021-02-23 12:30:15 +01:00
Lukas Matena
1904b7b904 Bugfix: custom seam did not work for triangles that were exactly vertical
The projection algorithm was originally made for custom supports, so vertical triangles
were not interesting. They are for seam. Instead of rewriting the algorithm and risking
more bugs, the edge case is detected and the triangle is tilted slightly.
2021-02-22 16:26:16 +01:00
Vojtech Bubnik
7f95b280f0 FDM synchronization of front end with back end:
Fixed unnecessary invalidation of already calculated perimeters
if the infill density changes.
Fixed a race condition in invalidation of FDM regions.
2021-02-11 12:03:29 +01:00
Vojtech Bubnik
6555b32f5c 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
Ilya
f639c08caf
Added separate checkbox for gap filling (#5999)
* in dev

* moved to Advanced menu
2021-02-10 16:01:40 +01:00
Vojtech Bubnik
770d8b5d08 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
Lukas Matena
1834ebe981 Fixing Clang warnings 3 2021-02-08 17:52:29 +01:00
Vojtech Bubnik
cbee82dc95 Fix of "infill percentage not changing #5993"
Fix of aa4c018cd5
Infill is a percent, which is a number from 0 to 100, not from 0 to 1.
2021-02-08 11:39:42 +01:00
Vojtech Bubnik
aa4c018cd5 Fix of Slicing hangs when Infill Percentage set very low #5910
When passing a PrintRegionConfig to the slicing back end, zero an infill
density if it is already nearly zero. This avoids an ugly division by
zero in the infill code and it also makes clear to the back end that
we don't want an infill.
2021-02-05 17:58:55 +01:00
Vojtech Bubnik
73c9f939e0 Squash merge of lh_brim_rework,
brim separated to Brim.cpp,hpp
Refactored accessors to PrintObjectPtrs, PrintRegionPtrs, LayerPtrs,
SupportLayerPtrs for const correctness.
2021-02-03 15:12:53 +01:00
Vojtech Bubnik
9c5dd358ab Fix of #4654 #5122 #5668 #5811 #5895
Fixing model import of models with nearly degenerate triangles, which
degenerate after transformation (translation or rotation).

There was certainly a bug in PrusaSlicer, however this bug was triggered
mostly by the ASCII STL files generated by OpenSCAD, likely due to insufficient
number of decimal digits when saving an ASCII STL, see
[openscad/openscad] STL export should contain single precision floats (#2651)
2021-01-28 19:00:01 +01:00
Vojtech Bubnik
4f161607c7 Follow-up on dcec1fa74:
Commented out fuzzy_skin_shape for now, the parameter may be used
in the future, but for now we don't want the parameter to be stored
into configuration files.
2021-01-27 09:58:42 +01:00
Vojtech Bubnik
4620402ab4 WIP: Initial Fuzzy Skin implementaiton #2010
Based on pull request Experimental fuzzy skin mode #4611 by @etet100
and on CuraEngine implementation of perimeter fuzzyfication
void FffPolygonGenerator::processFuzzyWalls(SliceMeshStorage& mesh)
2021-01-26 09:29:34 +01:00
Vojtech Bubnik
5a1a41096b Fix of a crash when slicing an object producing no layers and
elphant foot compensation is enabled.
2021-01-11 12:20:50 +01:00
Lukáš Hejl
181642b85b Fix of #5528 - Request re-slicing when bottom_solid_layers changes and spiral_vase is enabled. 2020-12-21 09:15:33 +01:00
Lukas Matena
8f3baeb1c9 Fix of #5410 (Ironing untick/tick bug)
This is a follow-up of commit b1b7a5a which fixed several similar bugs
2020-12-18 12:44:24 +01:00
Lukáš Hejl
0ca337ac7a Apply avoid crossing perimeters also for supports. 2020-12-15 06:46:44 +01:00
Vojtech Bubnik
a2959ec944 Fix of re-slicing with multiple regions.
This is a fix of a bug, which was in Slic3r forever, where raw slices
were not cached, but recalculated from classified regions, where
merging the regions did not produce the original contour reliably.
Fixes [2.3.0-beta2] Odd bad slicing related to infill (?) percentage #5407
2020-12-11 12:21:07 +01:00
Vojtech Bubnik
364300055e Fix of spiral vase mode with holes in the bottom: Holes in the bottom layers
(non-spiral vase layers) were being closed.
Fixes Bad slicing in vase mode (unexpected bridge and solid infill layers) #3326
Fixes Model with holes in the base does not slice properly in "Vase Mode" #5359
2020-12-09 14:54:26 +01:00
Lukáš Hejl
bb2eecb42c Fix of #4060 - Add check for the case that all ranges of a volume do not contain any Z. 2020-12-09 07:28:18 +01:00
Lukáš Hejl
0ad135ff93 Fix of #4732 - In spiral vase mode, use the number of layers instead of the value of bottom solid layers if a printed object has a smaller number of layers than the value of bottom solid layers. 2020-12-09 07:21:14 +01:00
Lukas Matena
22f93a34a8 Fix horrible complexity of custom seam lookup (#5067)
- polygons are offset individually
- custom areas are kept separately for each PrintObject
- AABB tree is used to get logN lookup complexity
2020-11-27 10:09:20 +01:00
Vojtech Bubnik
62bdc192d8 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
Vojtech Bubnik
4280fdb5f2 Reworked connection of infill lines to perimeter lines.
Added a new "infill_anchor" parameter.
2020-11-16 10:54:00 +01:00
Vojtech Bubnik
9a4376ddc6 Fix of previous commit 2020-10-22 17:54:32 +02:00
Vojtech Bubnik
b1b7a5ad1b Fix of ironing invalidation. Fixes
Ironing flag ignored on infill rotate #4937
Ironing does not take effect when you change Top Fill Pattern. #4900
Ironing layer not shown in preview when settings are changed #4510
2020-10-22 17:36:51 +02:00
Vojtech Bubnik
6531061d09 Support for naming slicer own threads for debugging.
The following threads are named with this commit:
slic3r_main, slic3r_BackgroundSlicingProcess,
slic3r_tbbpool_xx_yy where xx is a one based index of the TTB thread
and yy is the platform thread ID.
2020-10-22 13:54:15 +02:00
Vojtech Bubnik
95af708171 Removed m_ prefix from public member variables. 2020-10-09 13:09:21 +02:00
Vojtech Bubnik
7fbdda9080 Renamed monotonous infill to monotonic. 2020-10-05 16:38:28 +02:00
Vojtech Bubnik
e0b0a2cdcf Fix of previous commit. 2020-09-24 20:32:52 +02:00
Vojtech Bubnik
7a799be426 DynamicPrintConfig::normalize() renamed to normalize_fdm(),
optimization of Print::apply()
2020-09-24 19:03:33 +02:00
Vojtech Bubnik
54976e29bb New class ModelConfig wrapping DynamicPrintConfig and a timestamp
to help with detecting "not changed" event when taking
Undo/Redo snapshot or synchronizing with the back-end.

Converted layer height profile and supports / seam painted areas
to the same timestamp controlled structure.
2020-09-24 15:34:13 +02:00
Vojtech Bubnik
230dbb7394 Adaptive Cubic infill:
1) Fixed a wrong offset when extracting infill lines from the octree.
2) Added a variant for testing triangle in a bounding sphere
   when buildind the octree. Currently not used as the box test
   is more tight.
3) "Bridging infill" regions are now triangulated and used to densify
   the octree as well to support the bridging infill correctly.
2020-09-22 08:53:45 +02:00
Vojtech Bubnik
7e756b20e6 Adaptive infill: Reshuffled the namespaces. 2020-09-18 10:53:50 +02:00
Vojtech Bubnik
37c5fe9923 Refactoring of adaptive cubic / support cubic:
1) Octree is built directly from the triangle mesh by checking
   overlap of a triangle with an octree cell. This shall produce
   a tighter octree with less dense cells.
2) The same method is used for both the adaptive / support cubic infill,
   where for the support cubic infill the non-overhang triangles are
   ignored.
The AABB tree is no more used.
3) Optimized extraction of continuous infill lines in O(1) instead of O(n^2)
2020-09-17 18:39:28 +02:00
Vojtech Bubnik
1eadb6a1a9 Replaced some of Slic3r::RuntimeError exceptions with Slic3r::SlicingError.
Only Slic3r::SlicingError are now displayed by a notification, other
exceptions are shown by a pop-up dialog.
2020-09-14 18:03:22 +02:00
Vojtech Bubnik
067cde85f1 WIP Refactoring of exceptions:
1) All slicer's exceptions are now derived from Slic3r::Exception.
2) New exceptions are defined for slicing errors.
3) Exceptions are propagated to the Plater to show.
It remains to modify the slicing back-end to throw the new SlicingError
exceptions instead of std::runtime_error and to show the other exceptions
by a message dialog instead of a notification.
2020-09-14 18:03:22 +02:00
Lukáš Hejl
137e7a0712 Fix compiler warnings and failing compilation on macOS 2020-09-10 22:57:58 +02:00