Commit Graph

111 Commits

Author SHA1 Message Date
d4bd54c416 AdaptiveInfill:
1) Shortening the anchor lines when touching another infill line
   to avoid over extrusion.
2) Reduction of the Intersection structure complexity by referencing
   the source lines.
2020-11-10 15:54:32 +01:00
4aba12499c Improvement of AdaptiveFill:
1) Merging of collinear infill lines separated by a thin gap created
   by trimming with the boundary polygon.
2) Sorting of the T-joints separately to the left / right of the common
   line.
3) Trimming self intersections of the anchor lines.
4) Dropping of very short segments, not anchoring short segments.
2020-11-10 13:56:12 +01:00
4976ef1194 Fix of the previous Adaptive Cubic infill refactoring
plus couple of fixes of the old logic.
2020-11-06 16:24:15 +01:00
66601320b8 Adaptive Cubic infill with anchors: Trimming anchors with not only
with a neighbor T-joint line, but also with other crossing lines.
2020-11-06 08:56:53 +01:00
e87e859baa 1) Implemented anchoring of infill lines to perimeters with length
limited anchors, while before a full perimeter segment was always
   taken if possible.
2) Adapted the line infills (grid, stars, triangles, cubic) to 1).
   This also solves a long standing issue of these infills producing
   anchors for each sweep direction independently, thus possibly
   overlapping and overextruding, which was quite detrimental
   in narrow areas.
3) Refactored cubic adaptive infill anchroing algorithm
   for performance and clarity.
2020-11-05 17:32:40 +01:00
9ec5a13381 Merge remote-tracking branch 'remotes/origin/master' into lh_adaptive_infill_hooks 2020-11-03 15:07:38 +01:00
c1d72c89c6 Optimized for reduced memory allocation and clarity. 2020-10-29 11:37:28 +01:00
e771eeee83 Removed FillRectilinear3, it was a dead end. 2020-10-28 13:33:22 +01:00
6e25c2db9d Fixed crash in monotonous infill due to some unexpected pinching
of the inner contour at a single vertical infill line without
pinching the outer contour.
2020-10-27 09:38:51 +01:00
3252f3cdc6 Renamed Line::offset to extend
Don't use unscaled constants! What if the scaling constant changes
in the future?
2020-10-20 09:17:26 +02:00
5b3d1139e2 Fix another compiler warnings 2020-10-12 00:17:17 +02:00
9f83aa4dac Fix compiler warning and fix a bug in connecting infill using hooks 2020-10-11 23:31:59 +02:00
d9ba05fc51 Small rework of connecting infill with perimeters using hooks
Hooks are preferably generated in the direction of printed perimeters.
Small refactoring of the algorithm. Some parts of the algorithm are better documented.
2020-10-11 15:45:50 +02:00
a84ce15326 Refactoring of the adaptive infill using hooks 2020-10-11 03:46:11 +02:00
d1355d0f8d Orient hooks in the direction of the adjacent extrusion line 2020-10-10 22:38:22 +02:00
caecc9283e Rework of hooks adding 2020-10-10 22:25:51 +02:00
fe181fef03 The length of the hook is derived from spacing 2020-10-10 21:34:04 +02:00
05d388483c Renamed monotonous infill to monotonic. 2020-10-05 16:38:28 +02:00
bc857cbc76 Connect infill with perimeters using hooks 2020-10-02 11:15:55 +02:00
6394055ace Connect lines in the adaptive infill using hooks 2020-10-02 04:18:44 +02:00
4b02e888ee Fix crash in adaptive infill when an extrusion line width is zero.
When an extrusion line width is set to zero, then an extrusion line width is calculated from nozzle diameter.
2020-09-25 09:54:27 +02:00
56e6d10a86 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
876e5bc897 Fixed crash in Adaptive Cubic infill if just a single line was extracted.
New function to chain lines, however not used by the Adaptive Cubic infill.
2020-09-21 11:10:57 +02:00
2992c71798 Fix build on Linux 2020-09-18 13:37:37 +02:00
0d4308538b Adaptive infill:
Fixing compilation on Linux,
WIP: Better chainining of infill lines.
2020-09-18 13:35:35 +02:00
1e9a3cab55 Adaptive infill: Reshuffled the namespaces. 2020-09-18 10:53:50 +02:00
b3e936bda3 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
c814c16e4a 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
f58ee46687 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
fc3b470ded Add missing forward declarations 2020-09-11 16:51:05 +02:00
693aac1f3f Fix compiler warnings and failing compilation on macOS 2020-09-10 22:57:58 +02:00
7a37279307 Fix typo in function build_octree 2020-09-10 22:38:37 +02:00
bfe47c1af0 Fix rotation in support cubic infill 2020-09-10 22:30:49 +02:00
dc698c2bb1 Move support cubic infill to separate class.
Support infill is enabled in the GUI.
2020-09-10 16:53:08 +02:00
dfd1351c9a A prototype of adaptive support infill 2020-09-10 14:55:48 +02:00
dd2fe22f05 Construct octree based on inserted points 2020-09-10 14:52:26 +02:00
e4c32a85de A simple version of adaptive cubic support, for testing purposes 2020-09-10 14:52:26 +02:00
bddca650a9 Move rotation from building octree to infill generating 2020-09-10 14:52:21 +02:00
b7ebee01aa Refactoring of adaptive cubic infill:
Don't create an octree for the infill if it is not needed.
2020-09-09 15:55:06 +02:00
3ddeac598a Check if exist any boundary polyline 2020-09-07 09:14:06 +02:00
1c0a4aaa9b Octree representation rework 2020-09-03 19:21:55 +02:00
1e73ab0202 Fix bug in lines merging 2020-09-03 14:28:25 +02:00
e245c7e787 Connect infill to perimeters 2020-09-03 13:05:28 +02:00
f0a8f736e3 Code cleanup 2020-09-03 11:56:41 +02:00
fb7cf3dc48 Octree's first cube depends on model size. 2020-09-03 08:04:05 +02:00
f43b8b1c0f Change in passing octree struct 2020-09-02 22:53:10 +02:00
7363156063 Fix crash on inconsistent input 2020-08-30 20:38:07 +02:00
49830f2212 Fix discontinuous extrusion lines for adaptive infill 2020-08-27 13:04:53 +02:00
87244c6b81 Switch to smart pointers 2020-08-27 07:28:43 +02:00
f014afb08c Polylines merging 2020-08-27 01:59:35 +02:00