495 Commits

Author SHA1 Message Date
Lukáš Hejl
dc00f0bf98 Modified variable offset in the avoid crossing perimeters to not cause scars on thin objects (#7699).
Previously, the minimum contour width was chosen too conservative and, on some thin objects, only allowed minimal (or non) offset. This could result in travels being planned along the outer perimeter.

Now, the minimum contour width is chosen much smaller at the start and tested if the variable offset wasn't failed (the outer contour broke up into more parts, more or fewer holes, etc.).
If any problem is detected, the variable offset is recalculated with a larger minimum contour width.
2022-01-14 00:59:25 +01:00
Vojtech Bubnik
4ebfe58352 Merge branch 'master' of https://github.com/Prusa3D/PrusaSlicer 2022-01-10 15:24:27 +01:00
Vojtech Bubnik
07d0484e32 Fix of Empty G1 before starting bridging perimeter #7714 2022-01-10 15:24:19 +01:00
Lukas Matena
b3726f1f88 Fixed RRF time estimate,
so it does not use  min feedrate limits from previously selected printer (RRF itself does not support them)
2022-01-10 12:52:21 +01:00
n8bot
bfb721f302 Add compatibility for Machine Limits and RRF (PR #7347) 2022-01-10 12:52:21 +01:00
enricoturri1966
7ed80e0a8d Tech ENABLE_SPIRAL_VASE_LAYERS - 1st installment - Per-layer preview for spiral vase mode 2022-01-06 11:43:05 +01:00
Lukáš Hejl
285e2a32a2 Fixed issues in inner_offset() in the avoid crossing perimeters that caused in some cases travels to follow the first perimeter instead of the second one. 2021-12-16 08:57:04 +01:00
Lukáš Hejl
729ffc9dd6 Fixed that external travels led inside holes (around the perimeter) instead of inside the model when the avoid crossing perimeters was enabled.
Caused by changed behaviour of offset/expand functions when called on CW polygons (holes) after 7ff76d07684858fd937ef2f5d863f105a10f798e. When it is called expand on CW polygons (holes), they shrunk instead of expanded.
2021-12-16 08:56:29 +01:00
Lukáš Hejl
08402abf2b Used double instead of float for computing distance between two polygon vertices in precompute_polygon_distances() in the avoid crossing perimeters.
Using a float instead of a double caused accumulation of error in the calculated distance, which in rare cases triggered an assert in get_shortest_direction().
2021-12-14 14:49:00 +01:00
Lukas Matena
e9b9c48cae Fixed rear seam option, which was not always respected,
the problem was originally introduced in b8c898b, recent
seam changes probably made it more visible
2021-12-08 16:18:54 +01:00
Lukáš Hejl
7f951c2df8 Fixed an issue that travels could lead through a hole when the avoid crossing perimeters was enabled at the same with "External perimeter first" or "Detect thin walls". 2021-12-02 09:35:20 +01:00
Vojtech Bubnik
a89020abd7 Trying to fix compilation issues due to _() macro being used by mpl. 2021-11-30 18:06:01 +01:00
Vojtech Bubnik
f51162f238 Improved G-code post processor error reporting in case the G-code
post processor did not edit the G-code in place.
2021-11-30 14:16:04 +01:00
enricoturri1966
ef059404b3 Tech ENABLE_FIX_SUPERSLICER_GCODE_IMPORT set as default 2021-11-30 12:01:22 +01:00
enricoturri1966
a3874a410f Tech ENABLE_FIX_PREVIEW_OPTIONS_Z set as default 2021-11-30 10:55:00 +01:00
enricoturri1966
9af9b9b35d Tech ENABLE_OUT_OF_BED_DETECTION_IMPROVEMENTS set as default 2021-11-16 12:39:54 +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
4e9f906848 Cooling buffer used to remove F word from G1 Fxxx lines if the feed rate
did not change compared to the preceding value creating empty "G1" lines.
The empty "G1" lines are now removed.
Improves Features fail with extra G1 moves when above a certain layer height and Detect Thin Walls is enabled #5176
Improves Thin wall detection causes miniature loops to be added, and emits empty G1 commands #3058
2021-11-02 12:11:53 +01:00
enricoturri1966
19387186a5 #7110 - Fixed calculation of estimated times for layers 2021-10-25 12:31:19 +02:00
Lukas Matena
19eb984d72 SeamPlacer: one more heuristic to get rid of long travels 2021-10-22 13:16:08 +02:00
Lukas Matena
59502e7861 Seam placement improvements 2021-10-22 13:16:08 +02:00
enricoturri1966
2c0815f537 Fixed conflicts after merge with master and ported changes into gouraud shaders to gouraud_mod shaders 2021-10-19 11:27:11 +02:00
Vojtech Bubnik
32ebfa66e9 Fix of M106 on every new layer #7094
after parallelization of CoolingBuffer:
Remember the last fan speed emitted at the previous layer.
2021-10-18 14:56:02 +02:00
Lukáš Hejl
4d47e9a184 Allow travels processed by the avoid crossing perimeters move further away from the outer perimeter. 2021-10-18 12:51:20 +02:00
Vojtech Bubnik
1ca24f0bd0 Fixed visualization of G-code in G-code viewer after 07e7e115901c80f282b06ea6b86bc56b28e1a02b
Fix of prusa-gcodeviewer changes modification time of the viewed gcode file #7005
2021-10-15 14:31:57 +02:00
enricoturri1966
7be17d89e6 Fixed conflicts after merge with master 2021-10-14 10:48:46 +02:00
Vojtech Bubnik
7ff76d0768 New ClipperUtils functions: opening(), closing() as an alternative
for offset2() with clear meaning.
New ClipperUtils functions: expand(), shrink() as an alternative
for offset() with clear meaning.
All offset values for the new functions are positive.

Various offsetting ClipperUtils (offset, offset2, offset2_ex) working
over Polygons were marked as unsafe, sometimes producing invalid output
if called for more than one polygon. These functions were reworked
to offset polygons one by one. The new functions working over Polygons
shall work the same way as the old safe ones working over ExPolygons,
but working with Polygons shall be computationally more efficient.

Improvements in FDM support generator:
1) For both grid and snug supports: Don't filter out supports for which
   the contacts are completely reduced by support / object XY separation.
2) Rounding / merging of supports using the closing radius parameter is
   now smoother, it does not produce sharp corners.
3) Snug supports: When calculating support interfaces, expand the projected
   support contact areas to produce wider, printable and more stable interfaces.
4) Don't reduce support interfaces for snug supports for steep overhangs,
   that would normally not need them. Snug supports often produce very
   narrow support interface regions and turning them off makes the support
   interfaces disappear.
2021-10-14 09:11:31 +02:00
enricoturri1966
405a7e84d6 Fix in seams detection (restore detection after wiping) 2021-10-13 11:13:31 +02:00
enricoturri1966
8befc43739 Seams detection now takes in account for overhang perimeters 2021-10-12 12:03:34 +02:00
enricoturri1966
19572068a5 Revert of e28ebf9386c5e9482b1c5859adbf6860aedb6f85 2021-10-12 11:49:51 +02:00
enricoturri1966
e28ebf9386 Removed threshold to detect seams to be shown in preview 2021-10-12 09:53:23 +02:00
enricoturri1966
4ff13a5d63 Tech ENABLE_OUT_OF_BED_DETECTION_IMPROVEMENTS - Reworked detection of collision with printbed. The detection uses now different algorithms in dependence of the printbed type (rectangular, circular, convex) to improve performance. 2021-10-06 13:47:54 +02:00
enricoturri1966
0b78e009b4 #7050 - GCodeProcessor: Fixed processing of gcode lines M109 2021-10-04 09:02:03 +02:00
Lukas Matena
4ca2401b69 Several minor improvements and fixed warnings 2021-10-01 14:31:22 +02:00
enricoturri1966
2483a9f036 Added missing include 2021-09-27 13:02:56 +02:00
enricoturri1966
8ecdea152f Follow-up of 721e396edcb81ed0dd767d9162531b3848eb4e7f - Same fix applied to GCodeProcessor::process_G28() and GCodeProcessor::process_M402() 2021-09-27 12:08:26 +02:00
enricoturri1966
721e396edc #7016 - Fixed GCodeProcessor::process_M132() 2021-09-27 11:35:58 +02:00
enricoturri1966
7ca9024fca #7008 - GCodeViewer - Fixed loading of gcodes generated by SuperSlicer 2021-09-27 11:22:36 +02:00
Vojtech Bubnik
07e7e11590 Fix of prusa-gcodeviewer changes modification time of the viewed gcode file #7005
This is a regression wrt. PrusaSlicer 2.4.0-alpha1 due to the G-code
processing optimization and parallelization.
Related to GCode Viewer changes files modified date in windows #5079
2021-09-27 10:02:54 +02:00
Vojtech Bubnik
ac7674b85a Fixed visualization of G-code lines in G-code viewer (3D view).
Improved speed of parsing external G-code.
2021-09-21 15:30:37 +02:00
Vojtech Bubnik
8a2a9dba2f Eradicated admesh from TriangleMesh:
TriangleMesh newly only holds indexed_triangle_set and
TriangleMeshStats. TriangleMeshStats contains an excerpt of stl_stats.
TriangleMeshStats are updated when initializing with indexed_triangle_set.

Admesh triangle mesh fixing is newly only used when loading an STL.
AMF / 3MF / OBJ file formats are already indexed triangle sets, thus
they are no more converted to admesh stl_file format, nor fixed
through admesh repair machinery. When importing AMF / 3MF / OBJ files,
volume is calculated and if negative, all faces are flipped. Also
a bounding box and number of open edges is calculated.

Implemented its_number_of_patches(), its_num_open_edges()
Optimized its_split(), its_is_splittable() using a visitor pattern.

Reworked QHull integration into TriangleMesh:
    1) Face normals were not right.
    2) Indexed triangle set is newly emitted instead of duplicating
       vertices for each face.

Fixed cut_mesh(): Orient the triangulated faces correctly.
2021-09-20 17:12:22 +02:00
enricoturri1966
0b1e716e22 Tech ENABLE_RETRACT_ACCELERATION set as default 2021-09-17 08:21:25 +02:00
enricoturri1966
d52ee52098 Tech ENABLE_FIX_IMPORTING_COLOR_PRINT_VIEW_INTO_GCODEVIEWER set as default 2021-09-14 15:05:33 +02:00
Vojtech Bubnik
dc4b783e9e Pimping up SpiralVase code, fix of 03b60486840f32e32dc54103dc3051f94e79b35a 2021-09-10 12:10:00 +02:00
Vojtech Bubnik
03b6048684 Follow-up to beee18f22991e369b1722a43bbcb692fa0d68af0
WIP to G-code export parallelization through pipelining:
Decoupled CoolingBuffer from GCode / GCodeWriter, ready to be
pipelined on a different thread.
2021-09-10 11:43:59 +02:00
enricoturri1966
8701dd0c76 Merge branch 'master' of https://github.com/prusa3d/PrusaSlicer into et_fix_options_z 2021-09-09 10:34:47 +02:00
enricoturri1966
fe8e2ae0d1 ENABLE_GCODE_VIEWER_STATISTICS - Fixed calculation of time required by GCodeProcessor 2021-09-09 09:35:58 +02:00
enricoturri1966
d3382b666f Fixed build on MAC 2021-09-08 15:47:27 +02:00
Vojtech Bubnik
beee18f229 Follow-up to b5a007a683124ec3b01b61e892ed8eb39c034248
WIP to G-code export parallelization through pipelining:
GCodeProcessor is called during the G-code export,
the G-code is no more reopened and re-read, but it is pipelined
from the G-code generator.
2021-09-08 15:06:12 +02:00
enricoturri1966
6f678c09d1 Tech ENABLE_FIX_PREVIEW_OPTIONS_Z - Enable fixing the z position of seams (and other options) in preview 2021-09-08 14:30:40 +02:00