10 Commits

Author SHA1 Message Date
Lukáš Hejl
225d52b084 Generalize the implementation of the Douglas Peucker algorithm to allow using a custom predicate to decide if points between the anchor and the floater should be removed. 2024-11-08 10:13:34 +01:00
Martin Šach
aa6132ebb6 Scarf seam implementation. 2024-09-26 14:43:09 +02:00
Martin Šach
2cac8c2c37 Fix includes 2024-09-17 11:21:29 +02:00
Martin Šach
ef2a64032a Perfrom seam placing on geometry only for SeamAligned, otherwise use extrusions 2024-08-16 14:02:46 +02:00
Martin Šach
919740fb3e Apply fix includes. 2024-07-08 15:37:02 +02:00
Martin Šach
21116995d7 Refactor CMake and improve #includes.
* 1. Remove all global include_directories.
* 2. Move 3d party dependencies from src to budled deps if possible.
* Unify and enforce one way of including headers:
    e.g. #include "libslic3r/GCode.hpp" vs #include "GCode.hpp"
    (always use the "libslic3r/GCode.hpp" option).
* Make all dependencies (also header only) a cmake target.
2024-07-08 15:36:46 +02:00
Martin Šach
f6396f59e9 Refactor seams - due to new rear implementation shells are now only required for aligned seams. 2024-06-14 14:55:50 +02:00
Martin Šach
3543f8c738 Remove seam 'visit forward' assert and rename it to better convey what the function does. 2024-05-30 10:47:18 +02:00
Martin Šach
9a1dcc4720 Handle special seam case of just 2 or 3 perimeters.
If there are only 2 or 3 perimeters on a layer, exactly two of them are
external and just one of them is a hole, then the seams should be
choosen next to each other on the external perimeters.
2024-05-06 10:28:16 +02:00
Martin Šach
e60b8b1193 Seam placement improvements.
Previously there was an algirithm that was fitting a curve through
the resulting seam points. This worked for smooth models, but was
failing for some very basic cases (such as a cylinder).

The new algorithm builds on the previously implemented visibility
algirithm but does not do the curve fitting anymore.

Now the code is more separated for the four seam placement
options (rear, random, aligned, nearest).

Nearest and random are handled as one would expect.
Aligned is handled in a more "brute force" manner
(trying multiple seams and picking the best one)
and rear smartly switches between two modes
(center straight line projection and max y).
2024-05-06 10:11:32 +02:00