Commit Graph

316 Commits

Author SHA1 Message Date
Vojtech Bubnik
b67ad6434d Follow-up to 9cde96993e
use tbb::scallable_allocator for Polygons and ExPolygon::holes
to better scale on multiple threads
2023-04-20 14:30:52 +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
Vojtech Bubnik
c2baa9ad4f PlaceholderParser: Throw if valid or invalid UTF-8 sequence
is encountered inside a code block.
2023-04-06 13:30:29 +02:00
Vojtech Bubnik
030cfaf4b3 Fix of SPE-1630 crash when referencing an invalid variable name
using the old placeholder parser syntax.
Also implemented unescaping of \r\n\"\\ in string syntax.
2023-04-06 10:40:20 +02:00
Lukáš Hejl
9ed97abdb0 Fix of #10034 (SPE-1608): Fixed crash inside Arachne caused by degenerated Voronoi diagram.
Boost Voronoi diagram produced degenerated Voronoi diagram. This Voronoi diagram was detected by our method for detection of those types of degeneration. But rotation by PI / 6 wasn't able to fix it.
So now, when the Voronoi diagram is still degenerated after the first rotation, then we try another rotation by different angles to fix the degenerated Voronoi diagram.
2023-03-29 14:38:22 +02:00
Vojtech Bubnik
f591c2503a PlaceholderParser: changed the syntax of if inside a {} block to
{if condition then block elsif}
The "then" keyword is now mandatory.
On the other hand, "then" keyword must NOT be used using old syntax:
{if condition}...{endif}
2023-03-27 15:36:14 +02:00
Vojtech Bubnik
a53070f5e6 PlaceholderParser: Simpler if / elsif / else / endif syntax.
{if cond1}{expr1}{elsif cond2}{expr2}{else}{expr3}{endif}
could be written as
{if cond1;expr1;elsif cond2;expr2;else;expr3;endif}
the first semicolon after else is not manadtory, thus the following is valid
{if cond1;expr1;elsif cond2;expr2;else expr3;endif}
each expression could be also empty or contain multiple expressions:
{if cond1;elsif cond2;else endif}
2023-03-24 16:35:53 +01:00
Vojtech Bubnik
5b115b7972 PlaceholderParser: Implemented skipping of inactive if / else / endif
and ternary operator branches, thus missing variables or addressing
outside of the variable range in an inactive branch will not trigger
an error.
2023-03-24 13:55:58 +01:00
Vojtech Bubnik
9cb50e6586 PlaceholderParser: added size() and empty() functions over vector variables. 2023-03-23 17:51:37 +01:00
Vojtech Bubnik
929a0eba2c PlaceholderParser: replaced the new "array" operator with "repeat",
simplified the parser a bit more.
2023-03-23 17:08:56 +01:00
Vojtech Bubnik
c28585ab7f WIP PlaceholderParser: Support for local and global variables.
Implements #4048 #7196

Syntax:

(global|local) variable_name =
	(scalar_expression|vector_variable|array_expr|initializer_list)

array_expr := array(repeat, value)
initializer_list := (value, value, value, ...)

The type of the newly created variable is defined by the type
of the right hand side intitializer.

Newly declared variable must not override an existing variable.
Variable may be assigned with global|local expression, but its type
must not be changed.

Newly the assignment operator also accepts the same right hand expressions
as the global|local variable definition.
2023-03-22 17:46:57 +01:00
Vojtech Bubnik
963ca415d4 PlaceholderParser: new interpolate_table() "function"
interpolate_table(x, (x0, y0), (x1, y1), (x2, y2), ...)
interpolates a table at position x.
2023-03-22 17:46:57 +01:00
Vojtech Bubnik
7afabcde95 PlaceholderParser: Implemented one_of() matching function:
1st parameter is the text to match against,
the rest of the parameters are pattern to be matched:
either strings, then the match is exact,
or regex enclosed in //
or regex string starting with ~

For example
one_of("a", "a", "b")
	finds a in "a", "b"
one_of("abc", /.*a.*/)
	matches "abc" using regular expression /.*a.*/
2023-03-20 15:55:18 +01:00
Vojtech Bubnik
b9d8fe7118 WIP: PlaceholderParser support for writable output variables. 2023-03-20 07:48:38 +01:00
Vojtech Bubnik
65ab83d6a9 Fix of Build failed with CGAL 5.5: UserVisitor’ {aka ‘struct priv::Visitor’}
has no member named ‘start_filtering_intersections’
Fixes #9582
Co-authored-by: @hexane360
2023-03-03 13:07:41 +01:00
PavelMikus
5b0c270b30 Merge remote-tracking branch 'origin/master' into pm_anchor_bridges_on_sparse_infill 2023-03-01 16:45:26 +01:00
Vojtech Bubnik
55533397f9 PlaceholderPareser: new is_null() function to test whether a variable
has a "nil" value or not.
Implements SPE-1539
2023-02-28 18:30:04 +01:00
Vojtech Bubnik
001358cbba Merge remote-tracking branch 'remotes/origin/master' into vb_ensurovani 2023-02-02 09:53:14 +01:00
Filip Sykala - NTB T15p
1a33a31a9f Comment visualization in test 2023-01-26 16:42:41 +01:00
Filip Sykala - NTB T15p
f2803c4ae1 Move unused implementation behinde macro 2023-01-26 12:00:36 +01:00
Filip Sykala - NTB T15p
badbe9ddba Remove spikes from glyph shape 2023-01-26 08:04:44 +01:00
Filip Sykala - NTB T15p
8f09c3ac82 WIP: Create another approach to heal shape BUT it is not working 2023-01-20 17:33:53 +01:00
Lukáš Hejl
3bf6714d52 Added several test cases for degenerated Voronoi diagrams extracted from #8446, #8846 and #9357. 2023-01-11 22:18:00 +01:00
Lukáš Hejl
424ef02d8a Added a test case for a missing part of a model cased by WallToolPaths::simplifyToolPaths that was reported in #8849. 2023-01-11 21:42:07 +01:00
Lukáš Hejl
6b16eb5068 Added a test case for missing infill that is probably caused by PolylineStitcher, which produced an open polyline. 2023-01-09 13:02:04 +01:00
Vojtech Bubnik
f5662458a2 Removed polygon simplification "hole in square" unit test,
simplification of CW contours is no more enabled by assert.
2023-01-04 13:38:59 +01:00
Vojtech Bubnik
1a5533d571 PlaceholderParser:
1) Implemented access to coEnum values, they are returned as strings.
2) Fixed some possible memory leaks.
3) Fixed some possible union type punning issues.
2023-01-04 13:38:18 +01:00
Vojtech Bubnik
f828cba5f0 Merge remote-tracking branch 'remotes/origin/master' into vb_ensurovani 2023-01-02 13:19:48 +01:00
Vojtech Bubnik
fde0d68c40 WIP Reworking of "ensure vertical wall thickness".
1) Flipped the order of "discover_vertical_shells" and "process_external_surfaces",
   now the external surfaces are expanded after "discover_vertical_shells"
   aka "ensure vertical wall thickness" is solved.
2) Reworked LayerRegion::process_external_surfaces() to only expand into
   "ensure vertical wall thickness" regions, also the expansion is done
   in small steps to avoid overflowing into neighbor regions.

also:
Utility functions reserve_more(), reserve_power_of_2(), reserve_more_power_of_2()
Various SurfaceCollecion::filter_xxx() modified to accept an initializer list of surface types.
New bridges detector refactored to accept overhang boundaries.
BoundingBoxWrapper was moved from RetractCrossingPerimeters to AABBTreeIndirect.
2023-01-02 13:19:27 +01:00
Filip Sykala - NTB T15p
1896dd5761 Disable italic font check for RaspberryPi(aka linux) 2022-12-21 09:02:10 +01:00
Vojtech Bubnik
11c0e567a6 WIP "ensure verticall wall thickness" rework:
1) New region expansion code to propagate wave from a boundary
   of a region inside of it.
2) get_extents() extended with a template attribute to work with
   zero area data sets.
3) ClipperZUtils.hpp for handling Clipper operation with Z coordinate
   (for source contour identification)
2022-12-20 09:09:10 +01:00
Filip Sykala - NTB T15p
043c4c5e90 Fix for RPI build 2022-12-15 13:20:28 +01:00
Filip Sykala - NTB T15p
47ca06e53e Merge branch 'master' into fs_emboss 2022-12-05 15:21:04 +01:00
enricoturri1966
6f18f8f784 Tech ENABLE_RAYCAST_PICKING set as default 2022-12-05 10:24:30 +01:00
Filip Sykala - NTB T15p
d5fedd928c Merge branch 'master' into fs_emboss
# Conflicts:
#	src/libslic3r/Point.hpp
2022-11-29 15:11:53 +01:00
Filip Sykala - NTB T15p
b1f9d50aad Rename function: collect_duplications -> collect_duplicates
more english correct name
2022-11-29 13:52:47 +01:00
Vojtech Bubnik
9a682a10cb Merge remote-tracking branch 'remotes/origin/fs_emboss' 2022-11-28 17:46:12 +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
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
Vojtech Bubnik
db3f696888 Fixed ExPolygon::overlaps(), which was not commutative.
Wrote unit tests for Clipper polyline clipping operations.
Rewrote ExPolygon unit tests from Perl to C++.
2022-11-15 15:32:16 +01:00
Filip Sykala - NTB T15p
c052ff403a Merge branch 'master' into fs_emboss 2022-11-09 14:07:26 +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
Filip Sykala - NTB T15p
c77f8373bd Merge branch 'master' into fs_emboss
# Conflicts:
#	src/libslic3r/Technologies.hpp
#	src/slic3r/GUI/GLCanvas3D.cpp
#	src/slic3r/GUI/Gizmos/GLGizmosManager.cpp
#	src/slic3r/GUI/Plater.cpp
#	src/slic3r/GUI/Selection.hpp
2022-11-07 15:44:33 +01:00
Filip Sykala - NTB T15p
8343e81053 Fix test
+ Comment debug output
+ Add was_canceled in cut surface
2022-10-12 19:26:45 +02:00
Filip Sykala - NTB T15p
3fa3ea0bb4 Projection text for cut surface is made with double preccission 2022-10-12 16:17:38 +02:00
Lukas Matena
05e2a831f4 Added some unit tests (SurfaceMesh) 2022-10-12 08:40:34 +02:00
Filip Sykala - NTB T15p
8511b280bf Heal shape with points close to line
(after conversion to floating point it is on the other side of line)
ExPolygons indexing (fixed)
2022-10-11 13:35:52 +02:00
Filip Sykala - NTB T15p
e340fa6abe Merge branch 'master' into fs_emboss
# Conflicts:
#	src/libslic3r/AABBTreeLines.hpp
#	src/libslic3r/ExPolygon.hpp
#	tests/libslic3r/test_aabbindirect.cpp
2022-10-05 15:14:54 +02:00
Pavel Mikus
e02aed31d2 Added new query to AABBTree: all primitives (triangles/lines) within radius 2022-10-05 14:51:32 +02:00
Filip Sykala - NTB T15p
0e3b7cae12 Merge branch 'master' into fs_emboss
# Conflicts:
#	src/libslic3r/Technologies.hpp
#	src/slic3r/GUI/GLCanvas3D.cpp
2022-09-29 18:47:21 +02:00