Commit Graph

284 Commits

Author SHA1 Message Date
Filip Sykala
0d724ad646 Fix test to be runable on other computers. 2022-03-07 11:40:23 +01:00
Filip Sykala
a000d12361 Change test to use font from resources 2022-03-02 14:31:56 +01:00
Filip Sykala
18d269506a add index of font inside of collection to FontProp(font property) + serialization/deserialization (3mf + appConfig)
separate glyph cache from FontFile
2022-02-28 18:32:50 +01:00
Filip Sykala
ca79932d30 Reduce test to use only STB calls 2022-02-23 13:55:27 +01:00
Filip Sykala
482e510d7f Add temporary test for win/mac 2022-02-23 13:29:26 +01:00
Filip Sykala
faa63f3182 Merge branch 'master' into fs_emboss
# Conflicts:
#	src/libslic3r/Format/3mf.cpp
2022-02-10 14:04:02 +01:00
tamasmeszaros
72da90d28f WIP
wip
2022-02-03 16:10:03 +01:00
Filip Sykala
3f58cf73af Fix for:
../tests/libslic3r/test_emboss.cpp:200:38: error: 'directory_iterator' is unavailable: introduced in macOS 10.15
../tests/libslic3r/test_emboss.cpp:200:57: error: 'path' is unavailable: introduced in macOS 10.15
2022-02-03 13:12:14 +01:00
Filip Sykala
546009a8e9 Fix Mac build 2022-02-03 12:45:39 +01:00
Filip Sykala
e783086689 Remove Simplify from tests 2022-02-03 10:25:06 +01:00
Filip Sykala
a50d93cd66 Merge branch 'master' into fs_emboss
# Conflicts:
#	src/libslic3r/Geometry.cpp
#	src/slic3r/GUI/Gizmos/GLGizmoBase.cpp
#	src/slic3r/GUI/Gizmos/GLGizmoMove.cpp
#	src/slic3r/GUI/Gizmos/GLGizmoMove.hpp
#	src/slic3r/GUI/Gizmos/GLGizmoRotate.cpp
#	src/slic3r/GUI/Gizmos/GLGizmoRotate.hpp
#	src/slic3r/GUI/Gizmos/GLGizmoScale.cpp
#	src/slic3r/GUI/Gizmos/GLGizmoScale.hpp
#	src/slic3r/GUI/Gizmos/GLGizmoSimplify.cpp
#	src/slic3r/GUI/ImGuiWrapper.cpp
#	src/slic3r/GUI/ImGuiWrapper.hpp
#	src/slic3r/GUI/Selection.cpp
#	tests/slic3rutils/slic3r_jobs_tests.cpp
2022-02-02 15:27:25 +01:00
Filip Sykala
af69a4f2de create emboss text mesh on same place as update
fix:
Un Itelic redraw
../src/slic3r/Utils/WxFontUtils.hpp:49:77: error: non-const lvalue reference to type 'shared_ptr<...>' cannot bind to a temporary of type 'shared_ptr<...>'
../src/slic3r/Utils/WxFontUtils.hpp:55:75: error: non-const lvalue reference to type 'shared_ptr<...>' cannot bind to a temporary of type 'shared_ptr<...>'
2022-01-31 13:17:24 +01:00
enricoturri1966
c07a848257 Follow-up of 6201dad245 - Fixed test_color.cpp 2022-01-14 08:26:13 +01:00
Filip Sykala
4ec4bafe19 Create Emboss::Font as unique ptr not optional
Reason: Job need pointer on font until finished
2022-01-06 16:12:15 +01:00
Filip Sykala
b1b8eee3c9 add is italic check for font file 2022-01-06 11:29:16 +01:00
enricoturri1966
ab99a7865f Fixed build of test_color.cpp on non-Windows OSs 2021-12-22 11:31:35 +01:00
enricoturri1966
cd4094743e Tech ENABLE_COLOR_CLASSES - 1st installment -> Introduction of classes ColorRGB and ColorRGBA to unify color data definition and manipulation 2021-12-22 10:45:35 +01:00
Filip Sykala
88523bceb6 Merge branch 'master' into fs_emboss 2021-12-13 10:52:04 +01:00
Vojtech Bubnik
d6bb8eead9 Fixed 3mf unit tests to pass on ARM 64bit 2021-12-06 14:20:52 +01:00
Filip Sykala
d698df2c31 Merge branch 'master' into fs_emboss
# Conflicts:
#	src/slic3r/GUI/GUI_App.cpp
#	tests/libslic3r/test_indexed_triangle_set.cpp
2021-12-01 14:35:42 +01:00
Vojtech Bubnik
5fd279cbc8 Fixing clang compiler warnings 2021-11-30 10:50:27 +01:00
Filip Sykala
eba68f9a9e Merge branch 'master' into fs_emboss
# Conflicts:
#	src/slic3r/GUI/GUI_ObjectList.cpp
#	src/slic3r/GUI/Gizmos/GLGizmoSimplify.cpp
#	src/slic3r/GUI/ImGuiWrapper.hpp
2021-11-23 09:09:09 +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
Filip Sykala
d3dd025833 Draw text convex hull 2021-11-04 12:41:53 +01:00
Filip Sykala
9749dcb959 extend qec tests 2021-11-03 09:56:06 +01:00
Filip Sykala
f9bdde5603 Remove SimplifyMesh 2021-11-02 14:23:49 +01:00
Vojtech Bubnik
d78a5acba9 Numerical improvements to Welzel minimum enclosing circle algorithm 2021-10-30 11:18:36 +02:00
Vojtech Bubnik
3216448bbc PlaceholderParser: implemented round(), digits() and zdigits() macros.
round() rounds to an integer.
This is a popular request, for example #3472

digits(value, num_digits, num_decimals) rounds to num_digits and
	num_decimals, left filled with spaces.
digits(value, num_digits) the same as digits(value, num_digits, 0)
    Neither decimal separator nor any decimals after decimal separator
    are emitted.
zdigits(...) is the same as digits(...) only left filled with zeros.
If the result does not fit num_digits, the result is never trimmed.
2021-10-29 13:36:26 +02:00
Vojtech Bubnik
cf7b6fb19a Extracted MedialAxis code from Geometry.cpp/hpp, moved to its own
files to Geometry/
Moved other Voronoi files to Geometry/
2021-10-27 16:03:04 +02:00
Vojtech Bubnik
497905406b New code for minimum enclosing circle by randomized Welzl algorithm.
Split the circle code from Geometry.cpp/hpp to Geometry/Circle.cpp,hpp
2021-10-27 15:12:29 +02:00
Filip Sykala
b5a075ce4a Merge branch 'master' into fs_emboss 2021-10-26 18:58:38 +02:00
Vojtech Bubnik
743b99d22c Unit tests to the new optimized implementation of
Line::parallel_to() a Line::perpendicular_to().
2021-10-25 12:03:44 +02:00
Vojtech Bubnik
be236eda85 Renamed Geometry::intersect() to Geometry::convex_polygons_intersect()
to convey its true meaning.
2021-10-23 15:29:18 +02:00
Filip Sykala
ae5f594e1e Merge branch 'master' into fs_emboss 2021-10-21 19:43:05 +02:00
Filip Sykala
323b12fbee Change 3mf XML store/load text - NOT back compatible 2021-10-21 15:34:41 +02:00
tamasmeszaros
5f19539df5 Obvious fixes to stupid warnings 2021-10-21 09:55:12 +02:00
Filip Sykala
7f848b0603 fix test 2021-10-21 08:36:38 +02:00
Filip Sykala
b04bd6a8ad Temporary Skip test 2021-10-20 16:52:11 +02:00
Filip Sykala
6c8f754186 Merge branch 'master' into fs_emboss
# Conflicts:
#	src/slic3r/GUI/3DScene.cpp
2021-10-19 13:40:19 +02:00
Filip Sykala
e8f7f3245f Refactoring tests 2021-10-19 13:34:26 +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
Filip Sykala
3bd9fc07d2 Merge branch 'master' into fs_emboss
# Conflicts:
#	src/libslic3r/Format/3mf.cpp
#	src/slic3r/GUI/Gizmos/GLGizmoSimplify.hpp
2021-10-07 08:28:17 +02:00
tamasmeszaros
4cc1b2740d Don't report intersection if two polygons are only touching. 2021-10-04 14:16:13 +02:00
tamasmeszaros
9fce0ce3a6 Fix compile issues and overlapping polygon fails 2021-10-01 18:27:37 +02:00
Lukas Matena
476b48ed11 Revert "Merge branch 'tm_convex_intersect_rotcalip'"
This reverts commit 627d8bcaef, reversing
changes made to 66d4462724.

The change breaks build on mac
2021-09-30 16:49:00 +02:00
tamasmeszaros
234f062ad4 Fast convex polygon intersection test with rotating calipers 2021-09-30 15:49:12 +02:00
Vojtech Bubnik
6c37955d75 Moved a commented out test for DynamicPrintConfig serialization
/ deserialization into a living unit test.
2021-09-24 11:32:15 +02:00
Filip Sykala
7a3b220f0a Clean up 2021-09-22 12:11:05 +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
Filip Sykala
2b0408cc24 Using ExPolygons instead of polygons to represents shape of letters(text) 2021-09-17 23:07:17 +02:00
Filip Sykala
7df893177c Merge branch 'master' into fs_emboss
# Conflicts:
#	src/slic3r/GUI/Gizmos/GLGizmoSimplify.cpp
2021-09-14 09:50:19 +02:00
Vojtech Bubnik
ec976cbe05 Fixed unit tests after cab71073a1 2021-09-13 15:45:33 +02:00
Filip Sykala
9d52ceee44 Choose font by wxWidgetDialog 2021-09-09 19:36:51 +02:00
Filip Sykala
84488ba6df Enumerate fonts 2021-09-03 12:22:44 +02:00
Filip Sykala
d45ab1c484 Fix trouble case test 2021-09-02 11:17:07 +02:00
Filip Sykala
25feacfd95 FIX Creation of non volume place in mode during simplification 2021-09-01 19:15:16 +02:00
Filip Sykala
028f04f8a1 Triangulation of polygons respects its area
- remove its_filtration
Move Flatness out of Font
2021-09-01 11:21:05 +02:00
Filip Sykala
026ad24b64 Convert text to mesh 2021-08-30 22:57:14 +02:00
Filip Sykala
e33c665876 Partial emboss 2021-08-30 10:51:58 +02:00
Filip Sykala
c04856e049 Extend simplify test to chack distance of each triangle center and each vertices. Both simplify to origin and vice versa 2021-08-16 18:04:38 +02:00
Filip Sykala
b90ca142a5 Merge branch 'master' into fs_QuadricEdgeCollapse 2021-08-16 11:56:56 +02:00
Vojtech Bubnik
965c2f2c55 Improved error reporting when importing various configuration files:
1) Slic3r::RuntimeError was replaced with ConfigurationError,
   all exceptions thrown by the configuration layer are derived
   from ConfigurationError.
2) When parsing configuration files, ConfigurationError is catched and
   rethrown extended with the file name being parsed.
2021-08-13 13:37:24 +02:00
Filip Sykala
ef5c94f90a Fix: prevent degeneration of model during simplification 2021-08-06 15:11:20 +02:00
Filip Sykala
6bcc576b5f truncate model name 2021-07-21 08:34:43 +02:00
Filip Sykala
25a4887075 QEC: When collapsing edge flip normal than check other edges in triangle
Quadric is calculated with double precission of normal
Fix calculation of normal for changed triangles
2021-07-19 15:46:41 +02:00
Filip Sykala
af526c54f4 Add simplification GUI 2021-07-19 09:17:50 +02:00
Filip Sykala
aca93a7ced Merge branch 'master' into fs_QuadricEdgeCollapse 2021-07-09 14:14:54 +02:00
Vojtech Bubnik
3a9857e493 Our friendly GCC does not consider std::pair<int, int> trivially
copiable either, while everybody else does. Shame on GCC.
2021-07-09 14:05:30 +02:00
Vojtech Bubnik
d8a0b11157 GCC does not consider std::pair<std::pair<...>, ...> to be trivially
copiable, thus fixing the unit tests with a custom trivially
copyable type.
2021-07-09 13:58:54 +02:00
Filip Sykala
b2238834fb Merge branch 'master' into fs_QuadricEdgeCollapse 2021-07-09 13:40:58 +02:00
Vojtech Bubnik
e4fd6a828f 1) Fixed a significant bug in MutablePriorityQueue when setting
the indices allowing rescheduling of values in the middle of the queue.
2) Implemented a cache friendly variant - MutableSkipHeapPriorityQueue
   based on
   https://playfulprogramming.blogspot.com/2015/08/cache-optimizing-priority-queue.html
   https://github.com/rollbear/prio_queue/blob/master/prio_queue.hpp
2021-07-09 12:53:29 +02:00
Filip Sykala
2c0b89e4a7 FIX Simplify test 2021-07-09 10:31:05 +02:00
Filip Sykala
e26bffadd8 Add throw_on_cancel and statusfn into QEC 2021-07-09 09:09:52 +02:00
Filip Sykala
35a906139e Extend test with checking simplified model distance to original model 2021-07-08 08:33:06 +02:00
Filip Sykala
ed9152d004 Merge branch 'master' into fs_QuadricEdgeCollapse 2021-07-07 16:52:10 +02:00
Vojtech Bubnik
0f3cabb5d9 Support for forward compatibility of configurations, user and system
config bundles, project files (3MFs, AMFs). When loading these files,
the caller may decide whether to substitute some of the configuration
values the current PrusaSlicer version does not understand with
some reasonable default value, and whether to report it. If substitution
is disabled, an exception is being thrown as before this commit.
If substitution is enabled, list of substitutions is returned by the
API to be presented to the user. This allows us to introduce for example
new firmware flavor key in PrusaSlicer 2.4 while letting PrusaSlicer
2.3.2 to fall back to some default and to report it to the user.

When slicing from command line, substutions are performed by default
and reported into the console, however substitutions may be either
disabled or made silent with the new "config-compatibility" command
line option.

Substitute enums and bools only.  Allow booleans to be parsed as
    true: "1", "enabled", "on" case insensitive
    false: "0", "disabled", "off" case insensitive
This will allow us in the future for example to switch the draft_shield
boolean to an enum with the following values: "disabled" / "enabled" / "limited".

Added "enum_bitmask.hpp" - support for type safe sets of options.
See for example PresetBundle::load_configbundle(...
LoadConfigBundleAttributes flags) for an example of intended usage.

WIP: GUI for reporting the list of config substitutions needs to be
implemented by @YuSanka.
2021-06-27 16:57:05 +02:00
Filip Sykala
7c13cfa1d9 Add test checking diference in volume before/after simplification
FIX warnings
..\src\libslic3r\QuadricEdgeCollapse.cpp(173): warning C4056: overflow in floating-point constant arithmetic
..\src\libslic3r\QuadricEdgeCollapse.cpp(232): warning C4056: overflow in floating-point constant arithmetic
2021-06-22 09:41:38 +02:00
Filip Sykala
e3cdeda673 Add quadric edge collapse 2021-06-22 09:21:16 +02:00
tamasmeszaros
c4507842a0 Add new (winner) neighbor index based on measurements 2021-06-08 10:34:32 +02:00
tamasmeszaros
c8be2cdceb Added measuring sandbox for neighbors index creation 2021-06-08 10:34:32 +02:00
tamasmeszaros
c542e6e14b Corrected mesh split implementation 2021-06-08 10:28:23 +02:00
tamasmeszaros
8fdb0fddc0 Get rid of Contour3D 2021-06-08 10:28:23 +02:00
tamasmeszaros
e6f97358bc Refactored hollowing backend to use indexed_triangle_mesh 2021-06-08 10:28:23 +02:00
Lukas Matena
6b6b086948 Fixed tests and windows build 2021-05-24 12:20:29 +02:00
enricoturri1966
9da87d8e0f Code cleanup 2021-05-24 10:03:48 +02:00
enricoturri1966
ca9fad002c 3rd attempt to fix unit test for 2D convex hull of sinking object on RasperryPi 2021-05-24 08:54:08 +02:00
enricoturri1966
dfa85c2c37 Another attempt to fix unit test for 2D convex hull of sinking object on RasperryPi 2021-05-21 15:37:25 +02:00
enricoturri1966
49f29e8353 Added debug output to help fixing unit test for 2D convex hull of sinking object on RasperryPi 2021-05-21 11:56:10 +02:00
enricoturri1966
90be278d98 Attempt to fix unit test for 2D convex hull of sinking object on RasperryPi 2021-05-21 10:14:13 +02:00
enricoturri1966
f0ef5e409d Added unit test for calculation of 2D convex hull of sinking object 2021-05-20 12:53:47 +02:00
Vojtech Bubnik
70b4915f9c TriangleMeshSlicer: Got rid of admesh! 2021-05-18 15:05:30 +02:00
Vojtech Bubnik
308d6b7809 WIP: Reworked slicing
1) Slicing code moved to TriangleMeshSlicer.cpp,hpp from TriangleMesh.cpp,hpp
2) Refactored to use as little as possible of admesh.
2021-05-17 20:25:59 +02:00
Vojtech Bubnik
52b3c655ff Fixed Polygon::centroid()
Ported Polygon unit tests from Perl to C++.
2021-05-07 11:42:21 +02:00
Vojtech Bubnik
f16d4953be Removing offset2 from Perl bindings and other minor cleanup. 2021-05-06 14:29:20 +02:00
Vojtech Bubnik
09a80d954c Further rework of ClipperUtils: Replaced many to_polygons() /
to_expolygons() calls with templated ClipperUtils variants to avoid
memory allocation and copying.
2021-05-03 11:39:53 +02:00
Vojtech Bubnik
9f4e9da5c6 Merge branch 'tm_vb_clipper_eigen' 2021-04-23 11:44:25 +02:00
Vojtech Bubnik
542d95a593 Fixing unit tests 2021-04-21 15:31:06 +02:00
Vojtech Bubnik
7112ac61b6 Replacing ClipperLib::IntPoint with Eigen point as a first step to
make the ClipperLib paths and polygons compatible with Slic3r paths
and polygons without conversions and memory allocations.
2021-04-14 09:22:51 +02:00
Lukáš Hejl
dd4b26ba25 Fix of 7bd412a2ca 2021-04-05 20:32:41 +02:00
Lukáš Hejl
7bd412a2ca A few test cases for Voronoi diagrams.
A few test cases collected from multi-material segmentation. All new test cases are suppressed not to fail a building process.
2021-04-05 16:47:00 +02:00
Vojtech Bubnik
ba5e8860cb Fixing some compilation warnings 2021-03-15 10:36:03 +01:00
Vojtech Bubnik
8e27e355c2 Fixing unit tests. 2021-03-15 09:55:56 +01:00
tamasmeszaros
33d6655f26 Clean up hollowing test
Needs rethinking anyway
2021-03-08 17:38:10 +01:00
tamasmeszaros
82954ba715 Group hollowing result (including grid) into one struct 2021-03-08 17:38:10 +01:00
Vojtech Bubnik
5f5de1c812 Follow-up to 5276bd98d7:
WIP: MutablePolygon - linked list based polygon implementation
allowing rapid insertion and removal of points.
WIP: porting smooth_outward() from Cura.
2021-03-03 15:04:26 +01:00
Vojtech Bubnik
5276bd98d7 WIP: MutablePolygon - linked list based polygon implementation
allowing rapid insertion and removal of points.
WIP: porting smooth_outward() from Cura.
2021-03-01 18:41:46 +01:00
Vojtech Bubnik
5449e6c549 Fixing some compiler warnings on Linux 2021-02-08 11:58:03 +01:00
Vojtech Bubnik
a116914fce WIP VoronoiOffset: Squash merge of vb_voronoi_offset
Working contour offsetting,
skeleton_edges_rough() to detect "important" skeleton edges.
Radius of an inscribed circle along the "important" skeleton edges
changes slowly, therefore these "important" skeleton edges signify
oblong regions possibly needing a gap fill.
2021-01-29 16:34:22 +01:00
Lukas Matena
dc4bdad84a Fixed some more GCC warnings 2021-01-29 15:17:03 +01:00
Vojtech Bubnik
aa6ddfec85 Added functions to export raw image data to PNG for debugging purposes.
Renamed PNGRead.cpp/hpp to PNGReadWrite.cpp,hpp
EdgeGrid: Resurrected debugging output to PNG.
2020-11-26 09:01:44 +01:00
Vojtech Bubnik
239d588c5d 1) Implemented anchoring of infill lines to perimeters with length
limited anchors, while before a full perimeter segment was always
   taken if possible.
2) Adapted the line infills (grid, stars, triangles, cubic) to 1).
   This also solves a long standing issue of these infills producing
   anchors for each sweep direction independently, thus possibly
   overlapping and overextruding, which was quite detrimental
   in narrow areas.
3) Refactored cubic adaptive infill anchroing algorithm
   for performance and clarity.
2020-11-05 17:32:40 +01:00
Vojtech Bubnik
3cfccf1a5a Fixed unit tests broken with 3502f256fa 2020-10-29 12:39:03 +01:00
tamasmeszaros
c10ff4f503 fixing optimizer and concurrency::reduce 2020-09-10 14:03:30 +02:00
tamasmeszaros
1560e15ed9 Add missing includes for win 2020-08-27 23:14:42 +02:00
tamasmeszaros
2bcd36d155 PNG image read with libpng 2020-08-27 23:14:42 +02:00
Vojtech Bubnik
851ebc7991 fix of previous commit, missing include 2020-06-16 14:00:25 +02:00
Vojtech Bubnik
b101a8e266 Fixes of the offset curves from Voronoi diagram.
The offset curve extractor is already quite usable,
though singular cases are still not covered yet
when the offset curve intersects or nearly intersects
a Voronoi vertex.

Removal of the PRINTF_ZU "%zu" Visual Studio printf compatibility macro.
Fixes of a contours self intersection test for collinear segments.
SVG exporter now exports white background, so that the GNOME Eye viewer is usable.
2020-06-16 13:15:48 +02:00
Vojtech Bubnik
1c95ceaeaa Reworked algorithm for Voronoi Offset curve extraction.
Now the algorithm is very different from the OpenVoronoi implementation
and hopefully it is now correct (save numerical issues, which will be
a big PITA).
2020-06-11 16:11:02 +02:00
Vojtech Bubnik
6f4d24ab95 WIP: Generating offset curves with properly rounded corners from
a Voronoi diagram. Curve extraction is based on the OpenVoronoi implementation.
2020-06-04 13:50:09 +02:00
Vojtech Bubnik
6f92538c20 BoundingBox support for Lines,
BoundingBox constructor will no more throw for empty vector of points.

GMP allowed for Vojtech's fork of boost::polygon Voronoi implementation.

Added libslic3r tests for boost::polygon Voronoi. All Voronoi issues
ever reported on the Internet are captured by the tests. Two issues
reported (the two test cases) are real issues which may influence
PrusaSlicer negatively, namely

https://github.com/boostorg/polygon/issues/43
2020-05-28 15:53:53 +02:00
Vojtech Bubnik
2b8f655020 WIP AABBIndirect: Documentation, polishing. 2020-05-22 09:29:21 +02:00
Vojtech Bubnik
eeb9590d28 WIP: own AABBTreeIndirect, builds up the tree 4x quicker than libigl. 2020-05-22 09:29:21 +02:00
tamasmeszaros
2a8c485b32 suppress unnecessary test output in release mode 2020-04-28 21:11:54 +02:00
tamasmeszaros
217477a9ff SLA archive import with miniz, marching square bugfixes
Fix compilation on Windows


Fix array subscript out of range error in MarchingSquares


Fix normals of mesh constructed from slices


Improve performance of mesh construction from slices
2020-04-23 19:12:07 +02:00
tamasmeszaros
247fca6d55 Initial version of sl1 import with sla::Raster refactor. 2020-04-23 19:05:32 +02:00
bubnikv
c27297f6cc 64bit coord_t
Vec3i as a vertex index to TriangleMesh constructor
2020-03-25 14:35:41 +01:00
tamasmeszaros
f4f236e82e Added test for libcurl https handling disabled on build server.
Linux docker image does not expose port 80
2020-03-06 15:18:14 +01:00
tamasmeszaros
6deb6a776d Do EFC for the first faded layers of SLA, interpolate efc parameters
Compensated slices have negative orientation...


Move efc to common params


Fix elefant foot compensation reversed contours


Remove redundant assertions and don't apply absolute correction if zero
2020-02-18 17:39:36 +01:00
Enrico Turri
904263d231 ENABLE_CONFIGURABLE_PATHS_EXPORT_TO_3MF_AND_AMF set as default 2020-02-13 11:25:34 +01:00
tamasmeszaros
2d86e3cc4d fix failing test due to missing cgal dlls 2020-02-05 18:22:17 +01:00
tamasmeszaros
bd76c345f2 Handle CGAL exceptions and add tests for mesh boolean operations
Add conversion to exact predicates exact construction kernel format for consecutive booleans (experiments)
2020-02-05 17:40:05 +01:00
bubnikv
059bdb4711 Implemented handling of complex ConfigOptionFloatOrPercent chains
by the PlaceholderParser.

Namely, all the options with the "ratio_over" reference are now handled
correctly by the PlaceholderParser with the exception
of the "first_layer_extrusion_width", which overrides speed of extrusions
by their respective extrusion type.

Also the various extrusion widths (extrusion_width, first_layer_extrusion_width,
external_perimeter_extrusion_width etc.) produce the same numbers
as if ran through the back-end, with the assumption of not overriding
layer height by the variable layer height editing tool or layer height
modifiers.
2020-02-04 15:27:38 +01:00
tamasmeszaros
0c4797e92e use vsnprintf instead of snprintf in string_printf function
Also, revert to old location: Utils.hpp and utils.cpp
2020-02-03 16:00:53 +01:00
tamasmeszaros
b45e95877e Merge branch 'master' into lm_tm_hollowing 2020-01-23 17:43:18 +01:00
tamasmeszaros
f8a5796ca5 add mesh simplification.
SPE-1072 
Working but flipped normals with the interior.
Testing on treefrog passed
Oversampling for hollowed mesh should not be less than 3x
Flip back normals after simplify and remove redundant test code.
2020-01-23 10:58:18 +01:00
bubnikv
094cef26d4 Fix of the new PlaceholderParser int() conversion.
Fixes https://github.com/prusa3d/PrusaSlicer/pull/3271
Also some old errors (typos, UBs) were fixed.
2020-01-21 17:12:06 +01:00
Lukas Matena
63b0eec5a9 Merge branch 'master' into lm_tm_hollowing 2020-01-21 13:00:07 +01:00
bubnikv
05ea01bdcc Ported PlaceholderParser unit tests to C++. 2020-01-21 12:10:09 +01:00
tamasmeszaros
858e936e52 Fix incorrect filename case in test_3mf 2020-01-21 11:10:34 +01:00
tamasmeszaros
6cfad6848f Fix incorrect filename case in test_3mf 2020-01-20 11:20:18 +01:00
Enrico Turri
abd432e7a8 Configurable paths export (fullpath or not) to 3mf and amf 2020-01-08 11:11:38 +01:00
Lukas Matena
0551411c48 Merge branch 'master' into lm_tm_hollowing 2020-01-06 12:41:29 +01:00
Enrico Turri
8fd753ab27 Follow-up of c790e2ff7c -> Fixed include 2020-01-06 12:31:35 +01:00
Enrico Turri
c790e2ff7c Added unit test for checking geometry after save+load to 3mf cycle 2020-01-06 12:10:57 +01:00
Lukas Matena
b3f15b1c98 Merge branch 'master' into lm_tm_hollowing 2019-12-20 10:33:53 +01:00
tamasmeszaros
42ffc4e3c5 Fix polytree traversal.
Put back old traverse_pt and union_pt_chained
2019-12-19 11:27:19 +01:00
Lukas Matena
537260494d Merge branch 'master' into lm_tm_hollowing 2019-12-12 11:37:33 +01:00
tamasmeszaros
5be66a52c0 add drain hole 3mf export and import 2019-12-06 15:47:58 +01:00
bubnikv
4cff569b62 Improvements of infill path planning:
Implementation of 2-opt pairwise exchange iterative improvement
algorithm with an extension to a chain of segments, where
the chain of segments may get flipped during the exchange operation.
The 2-opt exchange algorithm may be quite slow.
2019-11-22 15:33:20 +01:00
tamasmeszaros
7011c58faa Merge branch 'master' into lm_tm_hollowing 2019-11-18 17:50:56 +01:00