PavelMikus
2b1bd627d7
Extra perimeters - minimal change, reduce touch distance in order to improve path sorting
...
Object stability warning - relfect the state, recommend brim only when it makes sense, and brim is not enabled yet.
2023-02-06 17:06:28 +01:00
PavelMikus
5de05294db
Fix extra perimters overlap with infill, there was unecessary additional extrusion
...
issue: Extra perimeters on overhangs #9604
2023-02-06 11:43:33 +01:00
Pavel Mikus
79d5a38928
Create validation error when both avoid crossing curled overhangs and avoid crossing perimeters are both enabled together
...
Update of the previous fix of extra perimeters - do not allow changing the direction of the paths after they have been sorted
2023-02-03 15:25:21 +01:00
PavelMikus
06e602afd3
\#9480 Fix weird path connections in Extra Perimeters when gap fill is applied
...
\#9513 \#9489 Fix crash when brim is used - the expansion of very small drops may result in empty polygon, which the support spot generator did not reflect
Fix crashes of stability alert checker, when empty print object was passed to it
2023-02-02 14:46:48 +01:00
Vojtech Bubnik
ca0c83d914
The new ExtrusionRole implementation newly supports both "Bridging"
...
and "External" attributes at the same time.
PerimeterGenerator was updated to make use of it and set "External"
attribute for overhang perimeters.
2023-01-16 14:39:57 +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
PavelMikus
9ccb413c02
Extra perimeters fix
2023-01-11 17:15:11 +01:00
Pavel Mikus
50425627b7
Fix etra perimeters overhang filtering based on the testing models
2023-01-11 17:15:11 +01:00
Pavel Mikus
72a25e7ad0
use new extrusion quality estimator function in support spot generator; fix issue with local support points and incorrect distance sign;
2023-01-11 17:15:11 +01:00
PavelMikus
24e9807387
Greatly improve performance of extra perimeters on overhangs, fix gap fill on extra perimeters, mark as Experimental
2022-12-14 16:07:16 +01:00
Vojtech Bubnik
7f6f63db0f
Fixed asserts in connecting islands and in perimeter overhangs
...
due to self intersections in clipped clipping rectangle.
2022-12-08 13:05:47 +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
fe51f77839
Improvements in performance of Medial Axis algorithm.
...
Fixes Slicing slows or hangs on "Generating Permiters 20%" cpu load is at 100% #8164
Fixes Slicing hangs on generating perimeters with thing:3565827 (30g) #3259
2022-11-16 12:03:31 +01:00
Pavel Mikuš
294839eb24
Improve performance of extra perimeters on overhangs ( #9 )
...
Use polygons instead of ExPolygons
remove unnecessary unions of expensive areas
Smoothen the anchors via opening and closing
2022-11-16 11:33:00 +01:00
Vojtech Bubnik
1307fbf2f6
Fixed performance issues of PerimeterGenerator with
...
extremely detailed chain fabric models, for example
Fabric_of_Thyme_2.0_23x23
2022-11-15 18:28:56 +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š
06fbab12fe
Pm overhang extra perimeters ( #7 )
...
Implementation of extra perimeters on steep overhangs/flat unsupported parts
Also contains:
Principal components computation over polygon area
New fast bridge direction estimation which minimizes amount of unanchored bridge endpoints
2022-11-09 10:38:36 +01:00
Vojtech Bubnik
409fae6183
WIP Refactoring of Layers: LayerIslands filled in with perimeter
...
extrusions, gap fill extrusions and fill regions.
2022-11-02 12:59:31 +01:00
Vojtech Bubnik
d041fa6c0c
Refactored PerimeterGenerator to output out_fill_surfaces as ExPolygons,
...
not SurfaceCollection.
Reworked combineinfill.t, 07_extrusionpath.t, 08_extrusionloop.t to c++.
Removed Layer / ExtrusionPath / ExtrusionLoop / ExtrusionEntityCollection
from Perl bindings.
2022-10-27 19:08:43 +02: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
Lukáš Hejl
8a69612fe1
Fix of #8793 : Visible vertical "seam" on fuzzy skin on the place where extrusion begins.
2022-09-02 19:52:44 +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
Lukáš Hejl
e838acdcd1
Added a lot of debugging outputs (SVG) into SkeletalTrapezoidation.
2022-08-12 09:48:34 +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
Lukáš Hejl
decfa80bfd
Test case for issue when Arachne produce closed ExtrusionLine that have different the first and the last point.
2022-07-22 08:33:27 +02:00
Lukáš Hejl
e14da6224a
Fixed an issue when an open perimeter containing part of an overhang perimeter was split into two parts and wasn't extruded as continuous extrusion.
2022-07-22 08:33:27 +02:00
Lukáš Hejl
2a865919a0
Prevented gap fill and Arachne from creating tiny gaps in extrusions in specific cases.
2022-07-22 08:33:27 +02:00
Lukáš Hejl
e2e1272003
Fix of #8455 - Fixed the incorrect computation of the threshold for grouping ExtrusionPaths with the same extrusion width in thick_polyline_to_extrusion_paths() that was affecting Arachne and gap fill.
...
The previous behavior didn't merge two ExtrusionPaths with the same extrusion width, and it also could merge two ExtrusionPaths with different widths, which was unintentional, and it could also possibly create visible artifacts in some cases.
Because simplification of ExtrusionLoop in GCode::extrude_loop is working on ExtrusionPath and not on whole ExtrusionLoop, so previous incorrect behavior was preventing simplification and removing small extrusions like in #8455 .
2022-07-14 09:10:22 +02:00
Lukáš Hejl
d02a0ec1b2
Fix of #8447 - Zero spacing when Clipper Z-coordinate (line width) equaled zero because the resulting path after clipping had vertices from a clipping polygon (which has Z-coordinate equal to zero).
2022-07-11 11:31:59 +02:00
Lukáš Hejl
a09cf52798
Fixed that fuzzy skin hadn't connected endpoints of extrusion when Arachne was used.
2022-06-21 12:35:56 +02:00
Lukáš Hejl
1622208249
Fixed infill polygons filtering.
2022-06-16 14:01:56 +02:00
Lukáš Hejl
f34c1f14da
Fixed the orientation of ExtrusionLoops when Arachne is used.
2022-06-15 23:28:11 +02:00
Lukáš Hejl
3fba411d17
Follow-up of 18124b07a213f7ea5c420e9d2cdb52d893e80ed1 - Forgot to remove code for debugging.
2022-06-10 12:12:26 +02:00
Lukáš Hejl
18124b07a2
Fixed a crash when Arachne returns extrusion with zero-length (just two same endpoints).
2022-06-10 11:46:46 +02:00
Lukáš Hejl
3d9b13a5e3
Added fuzzy skin for Arachne.
2022-06-09 11:23:41 +02:00
Lukáš Hejl
357dbb4686
Fixed the flow of bridging perimeters for Arachne.
2022-06-09 11:23:41 +02:00
Lukáš Hejl
dc2789a0e8
Added computation of bridging perimeters for Arachne.
2022-06-09 11:23:41 +02:00
Lukáš Hejl
d107c47b0a
Fixed infill polygons filtering for Arachne to mimic filtering in the classic perimeter generator.
2022-06-01 21:43:01 +02:00
Lukáš Hejl
e631ac171a
Fixed a crash when the number of perimeters is set to zero with Arachne.
2022-06-01 21:43:01 +02:00
Lukáš Hejl
454e6496ce
Added concentric infill generated using Arachne.
2022-06-01 21:41:39 +02:00
Lukáš Hejl
9896721bc8
Fixed crash when Arachne produced empty output.
2022-06-01 21:40:15 +02:00
Lukáš Hejl
d868261399
Updated the default values for wall_add_middle_threshold and wall_split_middle_threshold, which should decrease the number of missing tiny islands.
2022-06-01 21:40:15 +02:00
Lukáš Hejl
7e52650430
Fixed extrusion width calculation.
2022-06-01 21:40:15 +02:00
Lukáš Hejl
8616758354
Added greedy sort for ExtrusionLine in the perimeter generator.
2022-06-01 21:40:15 +02:00
Lukáš Hejl
3610afd393
Updated Arachne with Cura master.
2022-06-01 21:40:15 +02:00
Lukáš Hejl
324e889d5e
Fixed inconsistent extrusion width between layers when it is used Arachne.
2022-06-01 21:40:15 +02:00
Lukáš Hejl
adf2d21c67
Allowed "Slicing engine" and all Arachne parameters to be settable per object.
2022-06-01 21:40:15 +02:00
Lukáš Hejl
556e2b71cc
Initial port of Arachne from Cura.
2022-06-01 21:40:13 +02:00
Lukáš Hejl
4015a83acb
Added a possibility into thick_polyline_to_extrusion_paths() to separately set tolerance for merging two following lines based on a difference between lines width.
2022-06-01 21:39:23 +02:00