92 Commits

Author SHA1 Message Date
Lukáš Hejl
ceb13b1faa SPE-2405: Add Zig Zag infill that is rectilinear infill but with a consistent pattern between layers.
This Zig Zag infill is inspired by the Zig Zag infill in Cura.
2024-09-05 16:14:18 +02:00
Martin Šach
0bf8a9b1c5 Fix includes 2024-08-14 00:04:11 +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
2b667ffb6b Add two parameters for infill speed limiting.
One for infills that cross itself and one for the others.
2024-06-18 08:01:25 +02:00
Lukáš Hejl
d6136a34e3 SPE-2301: Add a new option that makes a printer print loops clockwise instead of counterclockwise. 2024-06-03 18:24:03 +02:00
Lukáš Hejl
f4d3886c63 SPE-1865: Don't insert an empty ExtrusionEntityCollection because it causes a crash.
The approach to fixing the crash in 649c1083576b6bf3e0038016e16fa9ecd691cfb9 wasn't correct and prevented sorting extrusions, as reported in SPE-2007.
2023-11-09 15:12:12 +01:00
Lukáš Hejl
32c779090f Revert "SPE-1865: Fixed crash caused by inserting empty ExtrusionEntityCollection."
This reverts commit 649c1083576b6bf3e0038016e16fa9ecd691cfb9.
2023-11-09 15:12:12 +01:00
Lukáš Hejl
649c108357 SPE-1865: Fixed crash caused by inserting empty ExtrusionEntityCollection. 2023-09-11 10:26:46 +02:00
Vojtech Bubnik
8dad25efc4 Merge branch 'master' into master_262 2023-09-04 14:44:32 +02:00
ps_copyright
f32859c302 final copyright headers 2023-09-01 14:49:07 +02:00
Vojtech Bubnik
19062b4d5f ArcWelder path interpolation based on the work by Brad Hochgesang @FormerLurker.
WIP GCode/SmoothPath.cpp,hpp cache for interpolating extrusion path with arches.
Removed Perl test t/geometry.t, replaced with C++ tests.
Refactored ExtrusionEntity and derived classes to hold extrusion attributes in new ExtrusionFlow/ExtrusionAttributes classes.
Reworked path ordering in G-code export to never copy polylines, but to work with a new "flipped" attribute.
Reworked G-code export to interpolate extrusion paths with smooth paths and to extrude those smooth paths.
New parameters: arc_fitting, arc_fitting_tolerance
Renamed GCode class to GCodeGenerator
Moved GCodeWriter.cpp/hpp to GCode/
Moved Wipe from from GCode.cpp,hpp to GCode/Wipe.cpp,hpp
Moved WipeTowerIntegration from GCode.cpp,hpp to GCode/WipeTowerIntegration.cpp,hpp
New variant of douglas_peucker() to simplify range of iterators in place.
Refactored wipe in general and wipe on perimeters / hiding seams.

WIP: Convert estimate_speed_from_extrusion_quality() and its application to smooth paths.
WIP: Cooling buffer to process G2G3, disable arc fitting for filters that cannot process it.
2023-07-13 11:54:42 +02:00
Lukas Matena
fde4aa55c3 Another fix related to subtracting raft layers 2023-06-09 11:11:58 +02:00
Lukas Matena
fd4ecb8db8 Follow-up to previous commit:
We also need to revert this part of 12f1cd0.
2023-06-09 11:11:58 +02:00
Lukas Matena
f044a111f1 Revert "Fix of #9399 Thick layers + thick raft + lightning infill = crash"
This reverts commit 402affb03521d0dbc159f98c24a5964edc23715b.
2023-06-09 11:11:58 +02:00
Vojtech Bubnik
ebecf81bf2 Fixed some more compilation warnings 2023-05-25 13:04:32 +02:00
Pavel
a42d857136 fix comment to reflect the current state 2023-05-12 11:29:50 +02:00
PavelMikus
93fb77c711 initial implementation 2023-05-12 11:29:50 +02:00
PavelMikus
12f1cd0bc0 added semi support for lightning infill 2023-03-14 12:08:28 +01:00
PavelMikus
76209d89ff Fixed lighting infill crash.
TODO filtering of small ensuring regions
2023-03-14 12:08:28 +01:00
PavelMikus
d223eef38d Do not generate other than sparse infill lines
Split jobs if candidates bounding boxes do not overlap - otherwise it can become completely linearized and very slow
Improve formatting
2023-03-14 12:08:28 +01:00
PavelMikus
f8e7d1b01c core implemented, now fixing the issues 2023-03-14 12:08:28 +01:00
PavelMikus
f4e44f9750 rework of bridiging over sparse infill in progress 2023-03-14 12:08:28 +01:00
PavelMikus
0c524208b6 Fix debug build, remove fragments after removal of BoundedRectilinear fill type 2023-03-03 09:58:47 +01:00
PavelMikus
92f8ed6d6b Merge remote-tracking branch 'origin/master' into pm_anchor_bridges_on_sparse_infill 2023-03-02 16:57:10 +01:00
Vojtech Bubnik
00cc73f65f Raft improvements:
1) Object 1st layer fill direction is locked if printing on raft.
2) Object fill direction is referenced to object layer ignoring
   the raft layers, thus the fill direction depends no more
   on number of raft layers.
2) Raft contact perpendicular to object 1st layer fill direction.
3) Raft interface / contact layers are produced with alternating
   directions.
2023-03-02 15:17:05 +01:00
PavelMikus
e4910381b4 optimize the brdige over infill by extractng only the sparse infill lines from previous layer 2023-02-24 16:47:07 +01:00
PavelMikus
3e8501624a Merge remote-tracking branch 'origin/vb_ensurovani' into pm_anchor_bridges_on_sparse_infill 2023-02-17 15:44:14 +01:00
PavelMikus
6521b72274 Fix problems with adaptive infills, but the anchoring itself is not used on them
Fix briding angles for octagram and hilberts curve
2023-02-17 15:38:57 +01:00
Vojtech Bubnik
001358cbba Merge remote-tracking branch 'remotes/origin/master' into vb_ensurovani 2023-02-02 09:53:14 +01:00
Vojtech Bubnik
f7f763300e Experiment: Added a rectilinear monotonic infill without perimeter
connection lines for top / bottom infill patterns.
Co-authored-by: lane.wei <lane.wei@bambulab.com>
2023-01-20 15:22:19 +01:00
Vojtech Bubnik
402affb035 Fix of #9399 Thick layers + thick raft + lightning infill = crash
FillLightning::Filler infill wrapper was not aware of the fact
that Layer::id() returns layer index that includes raft layers.
This is newly handled by the FillLightning::Filler wrapper.
2023-01-17 14:58:07 +01:00
Vojtech Bubnik
5991850db1 WIP Extending the expressivity of ExtrusionRole
Co-authored-by: supermerill <merill@free.fr>
Based on the unfinished idea of @supermerill, defining ExtrusionRole
as a bit mask of ExtrusionRoleModifier.
Because the ExtrusionRole was used for both ExtrusionEntity and
G-code export / G-code viewer, the original ExtrusionRole had to be split
to ExtrusionRole and GCodeExtrusionRole to support bitmask attributes
for the former while keeing a low number of ordinary values for the latter.
2023-01-16 10:14:46 +01:00
Vojtech Bubnik
a7a54f9386 Experiment: Added a rectilinear monotonic infill without perimeter
connection lines for top / bottom infill patterns.
Co-authored-by: lane.wei <lane.wei@bambulab.com>
2023-01-06 18:31:48 +01:00
Lukáš Hejl
1268856f6a Renamed FillBoundedRectilinear to FillEnsuring and moved to separated files. 2023-01-06 09:22:15 +01:00
Vojtech Bubnik
60f6766aab Apply FillBoundedRectilinear on narrow internal solid infills
to reduce zig-zag movements of the print head on overhangs.
Always use thick bridges on internal bridges.
Co-authored-by: lane.wei <lane.wei@bambulab.com>
2023-01-03 17:42:10 +01:00
Vojtech Bubnik
e6d10fc747 Fixed crash on reslicing after infill invalidation.
The crash was introduced with sorting the extrusions into islands.
2022-11-28 10:07:22 +01:00
Vojtech Bubnik
423503a6c5 Follow-up to 3713f09a8e461435d66cb375ddd41fb5f22bf7ef
30fbdd123525e1ea04d4af7593efc20a4b223147
Fixed duplication of infills.
2022-11-22 09:27:11 +01:00
Vojtech Bubnik
70b1b4dfbf Fixed extrusion of gap fill of classic perimeter generator
after recent refactoring / sorting of extrusions into LayerIslands.
2022-11-16 15:27:17 +01:00
Vojtech Bubnik
386cfae546 WIP Refactoring of Layers: Sorting of infill extrusions into LayerIslands.
FIXME: Gap fill extrusions are currently not handled!
2022-11-02 17:20:23 +01:00
Vojtech Bubnik
237e56c7ce Follow-up to ee626eb65a1a41ec7fd3e00f7b39d048c2795516
Refactored PerimeterGenerator for functional style, better constness
with the goal of calling PerimeterGenerator::process_xxx()
for each surface at once to collect its fill expolygons.
2022-10-27 13:04:52 +02:00
Vojtech Bubnik
ee626eb65a WIP: Layers split into islands, islands overlapping in Z interconnected
into a graph with links to the layer above / below.

In addition:
Members of LayerRegion were made private, public interface const only.
this->m_xxx replaced with just m_xxx
SurfacesPtr was made a vector of const pointers.
2022-10-26 18:41:39 +02:00
Lukas Matena
d7a34f7e40 Merge branch 'master_250' 2022-08-30 16:31:07 +02:00
Lukáš Hejl
952a6c882c Fixed an issue that the wipe was shorter when it was located where extrusion width was changing. 2022-08-18 17:00:28 +02:00
Lukas Matena
bce2b148f4 Merged 2.5.0-beta1 into master (NO CONFLICTS FIXED) 2022-08-15 13:41:40 +02:00
Lukáš Hejl
c9ddf7315e Replaced parameters wall_add_middle_threshold and wall_split_middle_threshold with automatic computation based on extrusion width.
That allows computed better values in cases when the extrusion width of the first layer or for the infill differs from the extrusion width for perimeters.

Parameters min_feature_size and wall_transition_length now can be set in percentages, and then they will be calculated based on nozzle size. Old profiles with default values are forced to replace old default values with new default values in percentages.
2022-08-08 10:21:55 +02:00
Lukas Matena
62e59a4526 Fixing conflicts part 1:
fixed simple conflicts
2022-06-29 16:43:29 +02:00
Lukas Matena
b61714bb3e Merge branch 'master_250' (NO CONFLICTS FIXED):
CONFLICT (content): Merge conflict in resources/profiles/PrusaResearch.idx
CONFLICT (content): Merge conflict in resources/profiles/PrusaResearch.ini
CONFLICT (content): Merge conflict in src/libslic3r/CMakeLists.txt
CONFLICT (content): Merge conflict in src/libslic3r/Fill/Fill.cpp
CONFLICT (content): Merge conflict in src/libslic3r/GCode.cpp
CONFLICT (content): Merge conflict in src/libslic3r/GCode.hpp
CONFLICT (content): Merge conflict in src/libslic3r/GCode/GCodeProcessor.cpp
CONFLICT (content): Merge conflict in src/libslic3r/GCode/GCodeProcessor.hpp
CONFLICT (content): Merge conflict in src/libslic3r/GCode/SeamPlacer.cpp
CONFLICT (content): Merge conflict in src/libslic3r/GCode/SeamPlacer.hpp
CONFLICT (add/add): Merge conflict in src/libslic3r/Geometry/Curves.hpp
CONFLICT (content): Merge conflict in src/libslic3r/PerimeterGenerator.cpp
CONFLICT (content): Merge conflict in src/libslic3r/Point.hpp
CONFLICT (content): Merge conflict in src/libslic3r/PrintConfig.hpp
CONFLICT (content): Merge conflict in src/slic3r/GUI/ConfigWizard.cpp
CONFLICT (content): Merge conflict in src/slic3r/GUI/GCodeViewer.cpp
CONFLICT (content): Merge conflict in src/slic3r/GUI/GLCanvas3D.cpp
CONFLICT (content): Merge conflict in src/slic3r/GUI/GUI_App.cpp
CONFLICT (content): Merge conflict in src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp
CONFLICT (content): Merge conflict in src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp
CONFLICT (content): Merge conflict in src/slic3r/Utils/FixModelByWin10.cpp
CONFLICT (modify/delete): t/perimeters.t deleted in HEAD and modified in master_250.  Version master_250 of t/perimeters.t left in tree.
CONFLICT (content): Merge conflict in tests/fff_print/CMakeLists.txt
CONFLICT (content): Merge conflict in tests/fff_print/test_fill.cpp
CONFLICT (content): Merge conflict in version.inc
CONFLICT (modify/delete): xs/xsp/PerimeterGenerator.xsp deleted in HEAD and modified in master_250.  Version master_250 of xs/xsp/PerimeterGenerator.xsp left in tree.
2022-06-29 14:37:14 +02:00
Lukáš Hejl
c76c497234 Renamed slicing engine to perimeter generator and slightly rearrangement of Arachne parameters. 2022-06-01 21:43:00 +02:00
Lukáš Hejl
454e6496ce Added concentric infill generated using Arachne. 2022-06-01 21:41:39 +02:00