Commit Graph

549 Commits

Author SHA1 Message Date
PavelMikus
68d0f2da2b Improve bridge over infill filtering, fix tests 2023-04-06 15:54:16 +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
PavelMikus
0eb2a2cf04 Disable "infill only where needed" option
Note: only commented out for now.
2023-03-27 13:27:57 +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
e46891fa8c PlaceholderParser: Fixed compilation issues, added integration test
with FDM slicing process.
2023-03-23 09:23:20 +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
tamasmeszaros
1154f51aab Fix failing libnest2d tests
Fix the test itself
2023-03-13 13:52:21 +01:00
PavelMikus
de09af23b7 Fix/Disable some tests after Removal of ensure vertical shell thickness option 2023-03-03 18:15:21 +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
Lukas Matena
c909391e86 Fix a failing test (which is now obsolete) 2023-01-27 12:04:55 +01:00
Filip Sykala - NTB T15p
1a33a31a9f Comment visualization in test 2023-01-26 16:42:41 +01:00
Filip Sykala - NTB T15p
94982c758d Merge branch 'master' into fs_fix_for_Allura_script_font 2023-01-26 12:01:12 +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
Lukas Matena
98fea2f6ee Wipe tower: use GCode::set_extruder, allow ooze prevention:
this removes duplicated code and fixes toolchange retraction
The ooze prevention part needs further work, now it does not
work as advertised (the tall skirt)
2023-01-26 07:28:37 +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
tamasmeszaros
76d0e11699 Merge branch 'master' into et_tm_sla_volumes_6-SPE-1285 2023-01-18 16:40:12 +01:00
tamasmeszaros
c79a46e6cb Remove unnecessary stuff 2023-01-18 09:26:28 +01:00
tamasmeszaros
dfea5e5633 prepare new test data 2023-01-18 09:26:28 +01:00
tamasmeszaros
02b06f0107 try 2 phase optimization with auglag and inequalities 2023-01-18 09:26:28 +01:00
tamasmeszaros
0f34dfbeac Trying 2 phase optimization for pillar route search 2023-01-18 09:26:28 +01:00
tamasmeszaros
cdac790163 Try to fix pillar route search 2023-01-18 09:26:28 +01:00
tamasmeszaros
3d6bb38dd4 Fix failing tests 2023-01-18 09:26:28 +01:00
tamasmeszaros
2cd6a20254 Move merge point search out of pointcloud to support tree utils 2023-01-18 09:26:28 +01:00
tamasmeszaros
0bbd50eaa0 Bugfixes and new tests for pillar search 2023-01-18 09:26:28 +01:00
tamasmeszaros
a20659fc2d New ground route search implemented
Working gap avoidance for zero elevation
2023-01-18 09:26:28 +01:00
tamasmeszaros
963e8e6585 Revert util functions of DefaultSupportTree to original
To not break DefautlSupportTree
2023-01-18 09:26:28 +01:00
tamasmeszaros
1e9bd28714 Upgrade support tree route search functions, add tests 2023-01-18 09:26:28 +01:00
tamasmeszaros
57bdd8df6f Merge branch 'master' into et_tm_sla_volumes_6-SPE-1285 2023-01-17 14:48:37 +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
tamasmeszaros
fc9b7ed59c Merge branch 'master' into et_tm_sla_volumes_6-SPE-1285 2023-01-13 11:02:06 +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