Commit Graph
100 Commits
Author SHA1 Message Date
Lukáš Hejl 08a826d237 Added a missing includes 2021-03-12 10:30:06 +01:00
Lukáš Hejl a53de51b22 Fix of 8f293f0cb5
When was set use_external_mp_once to true then after first calling the avoid crossing perimeters this flag was reset which cases that on the second call of the avoid crossing perimeters the travel move didn't process as external.
2021-02-25 23:30:22 +01:00
Lukáš Hejl 77d007c484 Fixed calculation of a distance from begin of a contour in the avoid crossing perimeters.
The total length of a contour was incorrectly computed, which could cause the longest detour was selected instead of the shortest one in some cases.
2021-02-23 20:56:36 +01:00
Lukáš Hejl dc576b0511 Fixed inner offset in the avoid crossing perimeters.
Minimum contour width was used incorrectly, which could lead to breaking contour to more disconnected polygons.
2021-02-23 20:43:34 +01:00
Lukáš Hejl e123dfa8a4 Fixed wrong orientation of infill and gap-fill extrusion.
When an island contains exactly one infill ExtrusionEntity, this extrusion was oriented to maximize travel distance from the end of the previous extrusion of perimeters instead of minimizing it.
2021-02-23 20:07:40 +01:00
Lukáš Hejl 8f293f0cb5 Fixed unnecessary travels after calling the avoid crossing perimeters when the wipe is enabled.
When the avoid crossing perimeters was enabled, and the wipe was enabled, there were unnecessary travels in the opposite direction than the wipe travel.
2021-02-18 14:41:56 +01:00
Lukáš Hejl 81878a6f79 Fix of #5537 - GUI_App::post_init could be in some cases called before GUI_App::init_openg when GCode viewer is used.
The solution adds a status flag to GUI_App::init_openg and ensures that GUI_App::post_init isn't called before initialization in GUI_App::init_openg is done.
2020-12-22 12:28:00 +01:00
Lukáš Hejl dc2e7aeb4e Fixed wrong generation of Adaptive Cubic and Support Cubic infill when infill extrusion width is set in percent. 2020-12-21 14:14:06 +01:00
Lukáš Hejl 181642b85b Fix of #5528 - Request re-slicing when bottom_solid_layers changes and spiral_vase is enabled. 2020-12-21 09:15:33 +01:00
Lukáš Hejl 80251e0cf9 Fixed of unintentional disabling of wipe even in cases when avoid crossing perimeters weren't applied due to exceeding the maximum detour length. 2020-12-16 13:17:09 +01:00
Lukáš Hejl d59f345fbb Fix of #5443 - Assigned input file path for ModelVolume also for AMF archives 2020-12-15 14:18:11 +01:00
Lukáš Hejl e62f014049 Corrected side text for avoid crossing perimeters max detour 2020-12-15 14:03:52 +01:00
Lukáš Hejl 161fb86c43 Fixed percentages in avoid crossing perimeters max detour 2020-12-15 13:49:35 +01:00
Lukáš Hejl 0ca337ac7a Apply avoid crossing perimeters also for supports. 2020-12-15 06:46:44 +01:00
Lukáš Hejl bb2eecb42c Fix of #4060 - Add check for the case that all ranges of a volume do not contain any Z. 2020-12-09 07:28:18 +01:00
Lukáš Hejl 0ad135ff93 Fix of #4732 - In spiral vase mode, use the number of layers instead of the value of bottom solid layers if a printed object has a smaller number of layers than the value of bottom solid layers. 2020-12-09 07:21:14 +01:00
Lukáš Hejl 4c35250531 Fix of #5004 - Disable retract on layer change also for filament overrides. 2020-12-09 07:16:01 +01:00
Lukáš Hejl 98055de28c External paths avoid crossing perimeters of holes 2020-12-03 09:43:21 +01:00
Lukáš Hejl f25e5c0ec6 Merge remote-tracking branch 'origin/master' into lh_avoid_crossing_perimeters 2020-12-01 14:31:22 +01:00
Lukáš Hejl f0616b0736 Fixed return value of liang_barsky_line_clipping 2020-12-01 14:28:27 +01:00
Lukáš Hejl f917b83706 Fixed compiler warnings 2020-11-29 17:29:11 +01:00
Lukáš Hejl 87879034f6 Merge remote-tracking branch 'origin/master' into lh_avoid_crossing_perimeters
# Conflicts:
#	src/libslic3r/MotionPlanner.cpp
#	src/libslic3r/libslic3r.h
2020-11-29 17:27:23 +01:00
Lukáš Hejl dd97eaa812 Fixed case when lslices in Layer is empty 2020-11-29 17:26:02 +01:00
Lukáš Hejl f16e8f1a72 Fixed uninitialized variable in ElephantFootCompensation 2020-11-29 14:00:34 +01:00
Lukáš Hejl 55c282d85d Revamp of implementation of the avoid crossing perimeters algorithm.
The strategy for the avoid crossing perimeters algorithm has been redesigned. But external travels (travel between objects or supports) have not been solved yet. For these travels is used a direct path between two points.
Much of the code has been reworked, which leads to significant speedup compared to the previous implementation.
Also, several potential bugs have been fixed.
2020-11-29 13:58:36 +01:00
Lukáš Hejl f394d26f83 Added missing includes to fix build on gcc 9 2020-11-20 15:19:49 +01:00
Lukáš Hejl 606db666fc Fix missing include 2020-11-20 14:22:24 +01:00
Lukáš Hejl 49ce613be7 Enable previous heuristics which was disabled by mistake 2020-11-16 14:37:42 +01:00
Lukáš Hejl c702b3b71d Add heuristics for removing unnecessary detours 2020-11-16 14:22:32 +01:00
Lukáš Hejl 9936b8e34e Add missing includes 2020-11-16 14:22:32 +01:00
Lukáš Hejl 3db66af716 Fix another compiler warning 2020-11-16 14:22:32 +01:00
Lukáš Hejl 266e6dee5d Fix compiler warnings 2020-11-16 14:22:32 +01:00
Lukáš Hejl c00c7eaed3 Rework of outer borders to reduce unnecessary detours along the border.
The resulting path now contains all intersection with borders, which allows eliminating more unnecessary detours and more simplify the path.
2020-11-16 14:22:32 +01:00
Lukáš Hejl ef9de07740 Disabling wipe for avoid crossing perimeters 2020-11-16 14:22:32 +01:00
Lukáš Hejl 7f94e9fa59 Fixed perimeters crossing when supports are printed. 2020-11-16 14:22:32 +01:00
Lukáš Hejl 2afeea5b6f Fixed division by zero when the layer is empty 2020-11-16 14:22:32 +01:00
Lukáš Hejl 3e98e2a4bd Fixed avoiding of other printed objects, again
Calling std::move on itself causes that the first polygon is empty, which results in disabling this feature on Linux.
This was fixed before, but I accidentally reverted it when AvoidCrossingPerimeters was moved to separate file.
2020-11-16 14:22:32 +01:00
Lukáš Hejl 8adf02a289 Moved AvoidCrossingPerimeters to separate file 2020-11-16 14:22:32 +01:00
Lukáš Hejl 20916e2362 Disable filed with max detour length when avoid crossing perimeters is disabled 2020-11-16 14:22:32 +01:00
Lukáš Hejl 4288be0e06 Fixed a case when the intersection is one of the endpoints of the line 2020-11-16 14:22:32 +01:00
Lukáš Hejl c828a5d6e9 Added the possibility to set the maximum length of the detour 2020-11-16 14:22:32 +01:00
Lukáš Hejl c16aad7e0b Reworked the algorithm for avoid crossing perimeters for multiple objects 2020-11-16 14:21:36 +01:00
Lukáš Hejl 69658a57d8 Fixed crossing perimeters in some cases 2020-11-16 14:21:36 +01:00
Lukáš Hejl 556c212f9d Fixed crossing perimeters when option "Wipe while retracting" is enabled 2020-11-16 14:21:36 +01:00
Lukáš Hejl 39e3358af5 Avoid crossing perimeters bugfix 2020-11-16 14:21:36 +01:00
Lukáš Hejl a4fc435f75 Clear generated boundaries from previous layer 2020-11-16 14:21:36 +01:00
Lukáš Hejl 5c073d0ddb Improved documentation of avoid crossing perimeters algorithm. 2020-11-16 14:21:36 +01:00
Lukáš Hejl 46bae74e48 Finalization of avoid crossing perimeters algorithm
EdgeGrid::Grid is used to find the intersection of a path with a polygon.
Simplification of find path.
Calculation of boundaries that not be crossed.
2020-11-16 14:21:36 +01:00
Lukáš Hejl 074406647a Fixed bug when algorithm stuck in a loop 2020-11-16 14:21:36 +01:00
Lukáš Hejl 6573bc15a5 Selection of shortest path around polygon boundary 2020-11-16 14:21:36 +01:00
Lukáš Hejl 7a4ba7d131 A simple algorithm to follow the boundary of polygons 2020-11-16 14:21:36 +01:00
Lukáš Hejl 958acad85b Fix another compiler warnings 2020-10-12 00:17:17 +02:00
Lukáš Hejl caafcf43b0 Fix compiler warning and fix a bug in connecting infill using hooks 2020-10-11 23:31:59 +02:00
Lukáš Hejl b8d574093d Small rework of connecting infill with perimeters using hooks
Hooks are preferably generated in the direction of printed perimeters.
Small refactoring of the algorithm. Some parts of the algorithm are better documented.
2020-10-11 15:45:50 +02:00
Lukáš Hejl de242f48cb Refactoring of the adaptive infill using hooks 2020-10-11 03:46:11 +02:00
Lukáš Hejl cd2881e14e Orient hooks in the direction of the adjacent extrusion line 2020-10-10 22:38:22 +02:00
Lukáš Hejl 53975eeaa3 Rework of hooks adding 2020-10-10 22:25:51 +02:00
Lukáš Hejl 0b4733f656 The length of the hook is derived from spacing 2020-10-10 21:34:04 +02:00
Lukáš Hejl 6ed25f6e1c Fixed avoiding of other printed objects
Calling std::move on itself causes that the first polygon is empty, which results in disabling this feature
2020-10-06 13:19:39 +02:00
Lukáš Hejl 7a9aec2b0b Connect infill with perimeters using hooks 2020-10-02 11:15:55 +02:00
Lukáš Hejl 1a8a5984ad Connect lines in the adaptive infill using hooks 2020-10-02 04:18:44 +02:00
Lukáš Hejl 0b0709b3d8 Fix crash in adaptive infill when an extrusion line width is zero.
When an extrusion line width is set to zero, then an extrusion line width is calculated from nozzle diameter.
2020-09-25 09:54:27 +02:00
Lukáš Hejl 50a6680dcd Merge branch 'lh_adaptive_support_infill_fix' 2020-09-10 23:12:32 +02:00
Lukáš Hejl 137e7a0712 Fix compiler warnings and failing compilation on macOS 2020-09-10 22:57:58 +02:00
Lukáš Hejl 7ef5def077 Fix typo in function build_octree 2020-09-10 22:38:37 +02:00
Lukáš Hejl e9a325c9ca Fix rotation in support cubic infill 2020-09-10 22:30:49 +02:00
Lukáš Hejl 40a7a44495 Merge branch 'master' of https://github.com/prusa3d/PrusaSlicer 2020-09-10 17:02:54 +02:00
Lukáš Hejl cf838a47c4 Merge branch 'lh_adaptive_support_infill' 2020-09-10 17:01:56 +02:00
Lukáš Hejl f49144a9ef Move support cubic infill to separate class.
Support infill is enabled in the GUI.
2020-09-10 16:53:08 +02:00
Lukáš Hejl 8fb9b290b2 A prototype of adaptive support infill 2020-09-10 14:55:48 +02:00
Lukáš Hejl 680b1b9809 Construct octree based on inserted points 2020-09-10 14:52:26 +02:00
Lukáš Hejl c261624999 A simple version of adaptive cubic support, for testing purposes 2020-09-10 14:52:26 +02:00
Lukáš Hejl e55d184a7d Fix missing initialization in TriangleMesh constructor 2020-09-10 14:52:26 +02:00
Lukáš Hejl 70cb67430c Move rotation from building octree to infill generating 2020-09-10 14:52:21 +02:00
Lukáš Hejl e28b29699b Merge branch 'lh_adaptive_infill' 2020-09-09 14:42:03 +02:00
Lukáš Hejl 5e9399247c Check if exist any boundary polyline 2020-09-09 14:40:14 +02:00
Lukáš Hejl 5633526ecf Enable changing adaptive infill density for different objects 2020-09-09 14:40:14 +02:00
Lukáš Hejl aca212c5bc Octree representation rework 2020-09-09 14:40:14 +02:00
Lukáš Hejl acedb66cdc Change to using raw_mesh instead of mesh 2020-09-09 14:40:14 +02:00
Lukáš Hejl 000987451a Fix bug in lines merging 2020-09-09 14:40:14 +02:00
Lukáš Hejl 03e103fcc8 Connect infill to perimeters 2020-09-09 14:40:14 +02:00
Lukáš Hejl 398d429ce1 Code cleanup 2020-09-09 14:40:14 +02:00
Lukáš Hejl d09ac41d2c Octree's first cube depends on model size. 2020-09-09 14:40:14 +02:00
Lukáš Hejl 2debffc496 Fix tests which expect make_fills without arguments 2020-09-09 14:40:14 +02:00
Lukáš Hejl 33121b705a Change in passing octree struct 2020-09-09 14:40:08 +02:00
Lukáš Hejl 9eeb5e4364 Fix wrong data type 2020-09-09 14:37:20 +02:00
Lukáš Hejl 65ba40f044 Fix crash on inconsistent input 2020-09-09 14:37:20 +02:00
Lukáš Hejl 867681ae56 Fix discontinuous extrusion lines for adaptive infill 2020-09-09 14:37:20 +02:00
Lukáš Hejl 14a7fbc9f7 Switch to smart pointers 2020-09-09 14:37:17 +02:00
Lukáš Hejl c0d21bd2b4 Polylines merging 2020-09-09 14:34:04 +02:00
Lukáš Hejl c311b84b21 Add function for check existence of triangle in define radius 2020-09-09 14:34:04 +02:00
Lukáš Hejl 9f049b2619 Generating polylines from octree 2020-09-09 14:34:04 +02:00
Lukáš Hejl 34f38c4a79 Building octree based on distance from mesh 2020-09-09 14:34:04 +02:00
Lukáš Hejl 0d26df3cf6 Preparation for new infill 2020-09-09 14:34:04 +02:00
Lukáš Hejl 97e62be902 Check if exist any boundary polyline 2020-09-07 09:14:06 +02:00
Lukáš Hejl 6c01d537e4 Enable changing adaptive infill density for different objects 2020-09-03 23:15:46 +02:00
Lukáš Hejl ce18b824ad Octree representation rework 2020-09-03 19:21:55 +02:00
Lukáš Hejl c2af265df8 Change to using raw_mesh instead of mesh 2020-09-03 16:08:40 +02:00
Lukáš Hejl 184cb7afd9 Fix bug in lines merging 2020-09-03 14:28:25 +02:00
Lukáš Hejl 353c65fa4c Connect infill to perimeters 2020-09-03 13:05:28 +02:00