Commit graph

439 commits

Author SHA1 Message Date
Vojtech Bubnik
7309c729e0 Reworked "only_retract_when_crossing_perimeters" feature, which
was terribly slow:
Introduced RetractWhenCrossingPerimeters.cpp,hpp
AABBTreeIndirect traverse template was extended to support early exit.
2022-12-06 11:45:05 +01:00
Vojtech Bubnik
423503a6c5 Follow-up to 3713f09a8e
30fbdd1235
Fixed duplication of infills.
2022-11-22 09:27:11 +01:00
Vojtech Bubnik
a98467f661 Merge remote-tracking branch 'remotes/origin/master' into vb_treesupports 2022-11-18 13:26:48 +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
f1c0c61895 Refactored Point / MultiPoint / Polyline / Polygon:
1) Removed virtual methods. There was not really need for them.
2) Some of the virtual methods were using conversion to Lines, which
   was unnecessary and expensive.
3) Removed some nearest element search methods from Point.
2022-11-14 19:01:17 +01:00
Pavel Mikuš
633ce8aa21
Pm jps path finding ()
New step - estimation of curling on both the model and the support extrusions.
Improvements in curled filament estimation algortihm
Implementation of Jump Point Search algorithm 
Use of JPS algorithm to avoid curled extrusions during travel moves in Gcode export
2022-11-09 13:33:58 +01:00
Vojtech Bubnik
28f8997dd3 Follow-up to f24b4e86a9:
Fixed compilation on OSX
Fixed incorrect clear of LayerIslands.
2022-11-07 17:26:48 +01:00
Vojtech Bubnik
f24b4e86a9 Follow-up to f342bfae4e
as GCC did not like what MSVC was able to swallow.
2022-11-07 16:30:11 +01:00
Vojtech Bubnik
f342bfae4e Improved const correctness of ToolOrdering. 2022-11-07 16:00:13 +01:00
Vojtech Bubnik
3cdacd700c Merged with master 2022-11-07 14:51:07 +01:00
Vojtech Bubnik
8858651bf4 WIP Refactoring of Layers: Reworked G-code export to make use
of Layer->LayerSlice->LayerIsland hierarchy. This should improve
tool path ordering of multiple parts within the same object .

Some shells tests rewritten from Perl to C++.

FIXME: Gap fill extrusions are currently not handled by the initial
G-code preview!
2022-11-07 14:47:43 +01:00
Lukáš Hejl
411535ecdf Fixed undefined behavior (dereferencing std::unique_ptr pointing to nullptr) in the G-Code processing pipeline. 2022-11-07 10:09:49 +01: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
Vojtech Bubnik
9bc69efde6 Configuration of TBB work pool threads executed from the background
slicing process:
1) "C" locales are always enforced.
2) OSX Quality of Service level is set to make sure the slicing
  runs on fat cores on Apple Silicon if some fat cores are available.
2022-09-27 18:12:27 +02:00
Lukas Matena
d7a34f7e40 Merge branch 'master_250' 2022-08-30 16:31:07 +02:00
Vojtech Bubnik
7e77048593 Removed shiny profiler. The Shiny profiler was only working on MSVC
and nowadays the sampling profiler inside Visual Studio is better.
2022-08-24 16:32:01 +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
Vojtech Bubnik
c03085a1f6 Performance improvement in G-code export for support material
in suppression of retracts when traveling over support regions.
2022-08-18 10:45:18 +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
Vojtech Bubnik
1d41ffdd7d When placing seam, never produce segments shorter than 1.5um. 2022-06-28 10:30:04 +02:00
Lukáš Hejl
9c07218d82 Reworked pressure equalizer and GCode processing pipeline to make pressure equalizer always returns one whole layer at once.
Now pressure equalizer is returning one layer back (the previous layer).

GCode produced by pressure equalizer now has the same number of decimal places as non-processed GCode.

Pressure equalizer was disabled for external perimeters and gap-fill.
2022-06-10 10:54:35 +02:00
Lukáš Hejl
0463518dc3 Attempted to reenable the old pressure equalizer and fix its issues. 2022-06-09 21:07:41 +02:00
Vojtech Bubnik
0b6c65ee60 G-code thumbnails in other than PNG format: Fixing Perl unit tests. 2022-06-09 09:58:13 +02:00
Vojtech Bubnik
8ed6d1b466 WIP: Implemented support for QOI G-code thumbnail format as requested
by the RepRapFirmware team due to their low RAM budget for decompression.
Bundled the QOI image compression library.
2022-06-08 21:12:00 +02:00
PavelMikus
b5b39195f4 Added throw_if_canceled callback to all slower sections 2022-06-07 11:12:48 +02:00
PavelMikus
d59d8eebde Full occlusion guided seam placer backport 2022-06-07 11:12:48 +02:00
Lukáš Hejl
792caae0ca Follow-up of a47446574e - Disable tbb::task_scheduler_observer in TBBLocalesSetter destructor.
The base class wasn't disabling observing when tbb::task_scheduler_observer was destructed, which leads to undefined behavior.
2022-06-02 12:36:19 +02:00
Lukáš Hejl
6bdaf0eaec Follow-up of a47446574e - Disable tbb::task_scheduler_observer in TBBLocalesSetter destructor.
The base class wasn't disabling observing when tbb::task_scheduler_observer was destructed, which leads to undefined behavior.
2022-06-02 12:13:45 +02:00
Lukáš Hejl
2b87601239 Sets locales before any thread start participating in the GCode processing pipeline.
Locales should be set once per any participating threads in tbb::parallel_pipeline.
It should fix the issue with appearing comma instead of the decimal point in generated Gcode.
2022-06-02 09:28:09 +02:00
Lukas Matena
70fa8ef29d Enforce first layer on experimental wipe tower () 2022-06-02 09:28:09 +02:00
Lukáš Hejl
a47446574e Sets locales before any thread start participating in the GCode processing pipeline.
Locales should be set once per any participating threads in tbb::parallel_pipeline.
It should fix the issue with appearing comma instead of the decimal point in generated Gcode.
2022-06-01 21:18:52 +02:00
Vojtech Bubnik
576c167bd5 Ported "avoid crossing perimeters" and bridging unit tests from Perl
to C++.
Further reduced Perl bindings.
Got rid of the ExPolygonCollection wrapper, replaced with ExPolygons.
2022-05-04 18:21:08 +02:00
Vojtech Bubnik
f5709345ad GCode export: Replaced std::strings in G-code comments with string_views.
Seam placer: Detecting perimeter by the pointer and size of the
comment_perimeter string_view, only placing seams for perimeters.
2022-04-25 12:42:51 +02:00
Vojtech Bubnik
7d02647ebf Removed various Point::ccw() and Point::ccw_angle() methods, they were
provided for Perl bindings and their semantic was confusing.
Implemented free function angle() to measure angle between two vectors.
Reworked Polygon::convex/concave_points(), changed the meaning of their
angle threshold parameter.
Removed some unused methods from Perl bindings and tests.
Reworked the "wipe inside at the external perimeter" function
after Point::ccw_angle() was removed.
2022-04-25 12:42:51 +02:00
PavelMikus
177a1fd54a finalize integration into GCode.cpp export functions, remove unused
edge grids
2022-04-25 12:42:51 +02:00
PavelMikus
2274965079 alignment from best candidate 2022-04-25 12:42:51 +02:00
PavelMikus
356ed93ad7 Raft layers cause SeamPlacer crash - fix 2022-04-25 12:42:51 +02:00
PavelMikus
53e9bb3ebf integration of enforcers and blockers 2022-04-25 12:42:51 +02:00
PavelMikus
55e0f2dd83 refactoring raycaster, gathering only hitpoints and their normals. 2022-04-25 12:42:51 +02:00
Lukas Matena
3934b1dbed Remove repeated spaces from the wipe tower gcode () 2022-03-30 09:25:36 +02:00
Lukas Matena
684733af52 Enforce first layer on experimental wipe tower () 2022-03-30 09:25:31 +02:00
Vojtech Bubnik
60d7564942 FFF background slicing for a single object only:
Generalized the "enabled milestone" from SLA
to both SLA and FFF.
Merged the "milestone enabled" flag into the milestone status.
Fixed some potential threading issues in SLAPrint::finalize()
when resetting the "milestone enabled" flags.
2022-03-29 11:19:50 +02:00
Lukas Matena
68ca42abbf Merge branch 'stable' 2022-03-10 12:29:17 +01:00
Vojtech Bubnik
97fb6d22dd Follow-up to 8aefe3fc90
Suppress the G-code find / replace substitutions for the non-G-code
    sections (comment blocks) at the start and at the end of the G-code file.
This commit extends the suppressed blocks for G-code find / replace
to placeholders for initial / final M73 commands and over the trailing
G-code comments.
Fixes gcode substitution: replacing comments removes initial and final M73 commands
2022-02-25 12:20:33 +01:00
Lukas Matena
e058f794d9 Merge branch 'stable' 2022-02-24 13:05:05 +01:00
Lukas Matena
0a280be8d0 Placeholder parser fixes 2022-02-23 13:44:26 +01:00
Vojtech Bubnik
8aefe3fc90 Fix of gcode_substitutions will cause errors in prusaslicer_config dump at the end of gcode
Suppress the G-code find / replace substitutions for the non-G-code
sections (comment blocks) at the start and at the end of the G-code file.
2022-02-21 11:04:43 +01:00
Vojtech Bubnik
5ed364910b Follow-up to 199dc121a5
Quantization of G-code export to achieve more precise extrusion
    width control.
Fix of wiping.
2022-02-09 15:30:11 +01:00
Vojtech Bubnik
199dc121a5 Quantization of G-code export to achieve more precise extrusion
width control.
2022-02-07 15:33:34 +01:00