Commit Graph

122 Commits

Author SHA1 Message Date
Vojtech Bubnik
c7d91198b8 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
9b646f3e42 truncate model name 2021-07-21 08:34:43 +02:00
Filip Sykala
68fe5c3630 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
a364ef3d6a Add simplification GUI 2021-07-19 09:17:50 +02:00
Filip Sykala
9623744a5b Merge branch 'master' into fs_QuadricEdgeCollapse 2021-07-09 14:14:54 +02:00
Vojtech Bubnik
e2969291bb 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
eeaab9f73b 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
94111f5d85 Merge branch 'master' into fs_QuadricEdgeCollapse 2021-07-09 13:40:58 +02:00
Vojtech Bubnik
0f9b2e20bf 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
e9cb528198 FIX Simplify test 2021-07-09 10:31:05 +02:00
Filip Sykala
c5890b9b67 Add throw_on_cancel and statusfn into QEC 2021-07-09 09:09:52 +02:00
Filip Sykala
e58d6c98a3 Extend test with checking simplified model distance to original model 2021-07-08 08:33:06 +02:00
Filip Sykala
0b9f9f0062 Merge branch 'master' into fs_QuadricEdgeCollapse 2021-07-07 16:52:10 +02:00
Vojtech Bubnik
c5304750d9 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
8dbc7c57d6 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
429aff468a Add quadric edge collapse 2021-06-22 09:21:16 +02:00
tamasmeszaros
04331beb33 Add new (winner) neighbor index based on measurements 2021-06-08 10:34:32 +02:00
tamasmeszaros
2227d0f1ad Added measuring sandbox for neighbors index creation 2021-06-08 10:34:32 +02:00
tamasmeszaros
1ee724e7ed Corrected mesh split implementation 2021-06-08 10:28:23 +02:00
tamasmeszaros
0ecba516a3 Get rid of Contour3D 2021-06-08 10:28:23 +02:00
tamasmeszaros
c451fc94ba Refactored hollowing backend to use indexed_triangle_mesh 2021-06-08 10:28:23 +02:00
Lukas Matena
c4f422bbd9 Fixed tests and windows build 2021-05-24 12:20:29 +02:00
enricoturri1966
0cdd866199 Code cleanup 2021-05-24 10:03:48 +02:00
enricoturri1966
a59811736a 3rd attempt to fix unit test for 2D convex hull of sinking object on RasperryPi 2021-05-24 08:54:08 +02:00
enricoturri1966
4acd20de9d Another attempt to fix unit test for 2D convex hull of sinking object on RasperryPi 2021-05-21 15:37:25 +02:00
enricoturri1966
57189517f4 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
83bbf5b56f Attempt to fix unit test for 2D convex hull of sinking object on RasperryPi 2021-05-21 10:14:13 +02:00
enricoturri1966
38115f181a Added unit test for calculation of 2D convex hull of sinking object 2021-05-20 12:53:47 +02:00
Vojtech Bubnik
39e17fd6b9 TriangleMeshSlicer: Got rid of admesh! 2021-05-18 15:05:30 +02:00
Vojtech Bubnik
499d8405e9 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
be3068564b Fixed Polygon::centroid()
Ported Polygon unit tests from Perl to C++.
2021-05-07 11:42:21 +02:00
Vojtech Bubnik
23b9a66197 Removing offset2 from Perl bindings and other minor cleanup. 2021-05-06 14:29:20 +02:00
Vojtech Bubnik
f191b4611d 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
7a3ddb3de5 Merge branch 'tm_vb_clipper_eigen' 2021-04-23 11:44:25 +02:00
Vojtech Bubnik
17a63f974e Fixing unit tests 2021-04-21 15:31:06 +02:00
Vojtech Bubnik
6007f7ee49 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
7045fe9555 Fix of 7bd412a2ca 2021-04-05 20:32:41 +02:00
Lukáš Hejl
dee6b11167 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
85a5a2925f Fixing some compilation warnings 2021-03-15 10:36:03 +01:00
Vojtech Bubnik
d46942b11a Fixing unit tests. 2021-03-15 09:55:56 +01:00
tamasmeszaros
2afca521be Clean up hollowing test
Needs rethinking anyway
2021-03-08 17:38:10 +01:00
tamasmeszaros
f827e15f81 Group hollowing result (including grid) into one struct 2021-03-08 17:38:10 +01:00
Vojtech Bubnik
006a84e995 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
02702e6122 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
831f47f4f8 Fixing some compiler warnings on Linux 2021-02-08 11:58:03 +01:00
Vojtech Bubnik
1ac322fe80 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
a6d023429d Fixed some more GCC warnings 2021-01-29 15:17:03 +01:00
Vojtech Bubnik
e3afd0082d 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
e87e859baa 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
0af0ba0e36 Fixed unit tests broken with 3502f256fa 2020-10-29 12:39:03 +01:00