206 Commits

Author SHA1 Message Date
enricoturri1966
7a82429cf6 SPE-1682 - Toolpaths conflicts detection, 1st installment
Succesfully enhanced and integrated into PrusaSlicer from BambuStudio:

d43c7d5c92

d72b4c1bfe

87eb0f3665

b5b7264e99

Code taken from BambuStudio is embedded into tech ENABLE_BAMBUSTUDIO_TOOLPATHS_CONFLICTS_DETECTION

Changes to adapt the code to PrusaSlicer is embedded into tech ENABLE_BAMBUSTUDIO_TOOLPATHS_CONFLICTS_DETECTION_MOD

Co-authored-by: manch1n <miaoxin.chen@bambulab.com>

Co-authored-by: miaoxin <miaoxin.chen@bambulab.com>

Co-authored-by: lane.wei <lane.wei@bambulab.com>
2023-05-31 13:34:02 +02:00
Lukas Matena
8431595db8 Allow multiple warnings to be emitted from Print::validate 2023-05-26 12:44:46 +02:00
enricoturri1966
6974962dd0 Avoid updating and sending to gpu sequential print clearance contours at every frame. Cache them instead and update only their transforms.
Fixed conflicts after cherry-picking e99ee946afbaf6e6db9413ccacdd03233c4743d1
2023-05-15 08:39:46 +02:00
enricoturri1966
77da892927 Added cache for sequential printing clearance contours into class Print to avoid calculate them twice when needed.
-Fixed conflicts after cherry-picking 056d7035737265e04ea2848d967fad32b5cf24f5
2023-05-15 08:21:57 +02:00
enricoturri1966
35195dc03e Revert "Merge remote-tracking branch 'origin/et_outofbed_optimization'"
This reverts commit a430aa41bac56875476dddb20c1b2a99b3a15833, reversing
changes made to a42d8571367d825a454e993a1f4e56883d3d3629.
2023-05-12 14:09:16 +02:00
enricoturri1966
653d7bc678 Merge branch 'master' of https://github.com/Prusa-Development/PrusaSlicerPrivate into et_outofbed_optimization 2023-05-11 11:40:50 +02:00
Vojtech Bubnik
9cde96993e Reworked the ClipperLib / Polygon types to use
the tbb::scallable_allocator to better scale on multiple threads.
2023-04-20 11:31:44 +02:00
enricoturri1966
99f3a3d54f SPE-1649 - Fixed crash in G-code post processor calculating the preheat / cooldown positions 2023-04-19 12:55:21 +02:00
enricoturri1966
ed1e29e7a7 Fixed conflicts after merge with master 2023-04-11 09:28:54 +02:00
tamasmeszaros
048e05af7e Merge branch 'tm_arrange_skirt_brim_SPE-1465' 2023-03-29 11:06:19 +02:00
Lukas Matena
571b133791 Wipe tower: stabilization cone 2023-03-23 12:44:42 +01:00
tamasmeszaros
3c5ecd4a8f FFF arrange minding skirt and brim distances
many thanks to @individ-divided and @jschuh
2023-03-23 10:24:56 +01:00
enricoturri1966
e7f1130ece Merge branch 'master' of https://github.com/Prusa-Development/PrusaSlicerPrivate into et_sequential 2023-03-15 09:44:31 +01:00
PavelMikus
12f1cd0bc0 added semi support for lightning infill 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
enricoturri1966
e99ee946af Avoid updating and sending to gpu sequential print clearance contours at every frame. Cache them instead and update only their transforms. 2023-03-14 08:21:38 +01:00
enricoturri1966
056d703573 Added cache for sequential printing clearance contours into class Print to avoid calculate them twice when needed. 2023-02-16 10:18:40 +01:00
Pavel Mikus
66a4b5b82a Refactored stability alert step from object step into print step,
implemented stability issues grouping based on number of issues and objects,
maximum of single warning message emitted
2023-01-29 20:11:50 +01:00
PavelMikus
05c4e759cf Move checkbox for support alerts into AppConfig preferences.
Separate Alerts into new print object step so that not warnings are thrown for autopaint.
finally fix -1 access int SupportSpotGenerator bridge detection
2023-01-27 15:00:10 +01:00
Vojtech Bubnik
661463645b Background processing: The milestone state machine was extended
with canceled / invalidated states.
Print / PrintObject infrastructure was extended with a cleanup()
callback, which may check for the new State::Canceled / State::Invalid
states of a particular milestone and turn it to State::Fresh
while releasing data of that particular milestone which is no more valid.

Also fixed a bug in 31fbfa56de70bf8093cea5fe56c73b0e6fa017c3
where the PrintObject shared data invalidation condition was flipped.
2023-01-16 10:14:46 +01:00
PavelMikus
d20f880124 local issues support generator fix 2023-01-11 17:15:11 +01:00
Vojtech Bubnik
31fbfa56de Follow-up to c3fec7b34934b44cef9334160d30cb02e36444f1
WIP: Invalidating shared support spots in Print::apply()
The background slicing background was modified to call Print::cleanup()
any time any data of any print step or print object step could become
invalid. Cleaning up such invalid data will reduce memory footprint.
2023-01-11 16:01:37 +01:00
Vojtech Bubnik
c3fec7b349 WIP: Invalidating shared support spots in Print::apply() 2023-01-11 14:47:50 +01:00
Pavel Mikus
a57e2a22f6 fixed bug with instancing 2022-12-13 13:13:31 +01:00
PavelMikus
49b68b936c refactored support spot generator to store data in the shared PrintObjectRegions struct, automatic coloring moved to frontend.
There are still issues with multiple instances
2022-12-13 13:13:31 +01:00
Pavel Mikuš
633ce8aa21
Pm jps path finding (#8)
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
2ced762948 Integrating a C++20 like span library
https://github.com/tcbrindle/span

Replacing a homebrew const pointer wrapper const correctness helper
with the C++20 like span library.

One day when we switch to C++20 we will just use the C++20 spans instead.
2022-10-19 16:27:15 +02:00
Vojtech Bubnik
24f671e924 Little clean-up of ConstVectorOfPtrsAdaptor to be more vector like. 2022-10-19 16:27:15 +02:00
PavelMikus
eaffb14921 Improved stability supports - now accounts for base convex hull, decreases area of points if too close. 2022-08-22 11:01:58 +02:00
PavelMikus
adf39805bc work in progress:
hooked in new step: posSupportableIssuesSearch
created layout of the processing
2022-08-22 11:01:57 +02:00
Lukas Matena
bce2b148f4 Merged 2.5.0-beta1 into master (NO CONFLICTS FIXED) 2022-08-15 13:41:40 +02:00
Merill
72aba9a5be
Little fix: back() isn't front() 2022-07-28 03:02:29 +02:00
Lukáš Hejl
bbb7e839a0 Fixed various issues in the ported Lightning infill.
Added export to SVG for TreeNode.
Also was finalized integration of Lightning infill and Lightning infill was enabled.
2022-06-01 21:35:58 +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
Lukáš Hejl
0c4df47bd0 Fixed various issues in the ported Lightning infill.
Added export to SVG for TreeNode.
Also was finalized integration of Lightning infill and Lightning infill was enabled.
2022-03-16 23:37:05 +01:00
Lukáš Hejl
dd3964c8c3 Added deallocation of SupportLayers (PrintObject::m_support_layers) into the PrintObject destructor and fixed memory leak in modulate_extrusion_by_overlapping_layers(). 2022-02-05 13:27:54 +01:00
Lukáš Hejl
e711cb50d0 Added deallocation of Layers (PrintObject::m_layers) into the PrintObject destructor. 2022-01-28 14:43:10 +01:00
Vojtech Bubnik
a591d9e9fe Implemented new placeholders for output file name:
1) "initial_filament_type", "printing_filament_types" - really useful
   for multi-material prints

the two other are not so useful, they may become useful once
the output file name template will support not yet defined
vector variables:
2) "initial_tool", "initial_extruder" - zero based index of first extruder
3) "num_printing_extruders" - number of printing extruders.

Fixes Filename incorrect when exporting G-Code with MMU. Always refers filament type in extruder 1 #5300
Fixes Export Filename nicht richtig #7673
Fixes wrong filename - always Filament in from the first extruder #7684
2022-01-10 17:57:03 +01:00
Vojtech Bubnik
cc44089440 New BuildVolume class was created, which detects build volume type (rectangular,
circular, convex, concave) and performs efficient collision detection agains these build
volumes. As of now, collision detection is performed against a convex
hull of a concave build volume for efficency.

GCodeProcessor::Result renamed out of GCodeProcessor to GCodeProcessorResult,
so it could be forward declared.

Plater newly exports BuildVolume, not Bed3D. Bed3D is a rendering class,
while BuildVolume is a purely geometric class.

Reduced usage of global wxGetApp, the Bed3D is passed as a parameter
to View3D/Preview/GLCanvas.

Convex hull code was extracted from Geometry.cpp/hpp to Geometry/ConvexHulll.cpp,hpp.
New test inside_convex_polygon().
New efficent point inside polygon test: Decompose convex hull
to bottom / top parts and use the decomposition to detect point inside
a convex polygon in O(log n). decompose_convex_polygon_top_bottom(),
inside_convex_polygon().

New Circle constructing functions: circle_ransac() and circle_taubin_newton().

New polygon_is_convex() test with unit tests.
2021-11-16 10:15:51 +01:00
Vojtech Bubnik
a6f4b9b71f Snug supports: Extrude interface layers 45 degrees from the base layer,
flip direction of the infill layer with each interface layer.
Unfortunately the flipping of support interface directions may not work
reliably due to base support layer heights growing at different rate
from the interface layers.
2021-10-14 13:56:04 +02:00
Lukas Matena
16562a2e77 Do not print brim when object has raft, it is not supported and makes no sense 2021-08-24 12:43:56 +02:00
Vojtech Bubnik
04d6b17c57 Fix of Some FDM supports fail to generate due to wrongly-translated enforcer polygons. #6739
Thanks @n8bot for finding the bug.
Also removed some dead code in MM segmentation.
2021-08-10 09:41:28 +02:00
Lukáš Hejl
742a373c1f Added invalidation of the sliced object when gap-fill enabled/disabled if the object is painted using the multi-material painting gizmo.
Filtering of unprintable regions in multi-material segmentation depends on if gap-fill is enabled or not. So sliced object is invalidated when gap-fill was enabled/disabled by option "gap_fill_enabled" or by changing "gap_fill_speed" to force recomputation of the multi-material segmentation.
2021-08-03 13:03:06 +02:00
enricoturri1966
c61785f775 Tech ENABLE_SEQUENTIAL_LIMITS set as default 2021-07-20 12:05:15 +02:00
Lukas Matena
63566a92b3 Merged psSkirt and psBrim 2021-07-14 16:02:04 +02:00
Vojtech Bubnik
0d70a2be69 Renamed create_face_neighbors_index() to its_face_edge_ids().
Renamed its_create_neighbors_index() / its_create_neighbors_index_par() to its_face_neighbors() / its_face_neighbors_par().
New variant of its_face_edge_ids() to create edge IDs from face neighbors.
Fixed some incorrect use of _NDEBUG, it should be NDEBUG.
PrintObject::slice_support_volumes() returns newly Polygons, which are cheaper than ExPolygons.
Updated SeamPlacer and SupportMaterial to use regions defined as Polygons, not ExPolygons.
TriangleSelector::get_facets_strict() returning a patch with T-joints retriangulated.
New slice_mesh_slabs() - slicing projections of a triangle patch into top / bottom layers of slices, for MMU top / bottom segmentation.
TriangleMeshSlicer - use 64 mutexes instead of one when scattering sliced triangles into layers. This makes a big difference on modern many core desktop computers.
When applying MM segmented regions to input regions, the split regions are now re-merged with 10x higher positive offset epsilon to avoid creating gaps.
When testing for existence of paint-on supports or seam, use a more efficient has_facets() test, which does not deserialize into the expensive TriangleSelector tree structure.
GLIndexedVertexArray newly uses Eigen::AlignedBox<float, 3> for efficiency instead of our double based BoundingBoxf3.
Improved MMU painting refresh speed by optimizing generation of the vertex buffers.
Refactored MMU segmentation - projection of painted surfaces from top / bottom.
	1) Parallelized.
	2) Using the new slice_mesh_slabs() instead of projecting one triangle by the other and merging them with Clipper.
2021-06-20 15:21:12 +02:00
Vojtech Bubnik
033d9f3a5e Merge remote-tracking branch 'remotes/origin/master' into vb_print_regions 2021-05-31 14:05:53 +02:00
Lukáš Hejl
726a48383f Cleaned up of 0a6490bab94af5da310d35fcf2d926e9e5371e83 2021-05-28 17:36:56 +02:00
Lukáš Hejl
0a6490bab9 Added cancellation to MMU segmentation. 2021-05-28 05:57:32 +02:00
Vojtech Bubnik
818cb703ed Refactored the ModelVolume bounding box to Eigen::AlignedBox<float>,
separated splitting of LayerRegions by MMU segmentation to its own
function.
2021-05-27 16:12:34 +02:00