Fixes the following error:
[ 19%] Built target imgui
/<<PKGBUILDDIR>>/src/libslic3r/MeshBoolean.cpp: In instantiation of ‘indexed_triangle_set Slic3r::MeshBoolean::cgal::cgal_to_indexed_triangle_set(const _Mesh&) [with _Mesh = CGAL::Surface_mesh<CGAL::Point_3<CGAL::Epick> >]’:
/<<PKGBUILDDIR>>/src/libslic3r/MeshBoolean.cpp:185:53: required from here
/<<PKGBUILDDIR>>/src/libslic3r/MeshBoolean.cpp:151:5: error: cannot bind non-const lvalue reference of type ‘CGAL::SM_Vertex_index&’ to an rvalue of type ‘boost::iterators::detail::iterator_facade_base<CGAL::Surface_mesh<CGAL::Point_3<CGAL::Epick> >::Index_iterator<CGAL::SM_Vertex_index>, CGAL::SM_Vertex_index, std::random_access_iterator_tag, CGAL::SM_Vertex_index, long int, false, false>::reference’ {aka ‘CGAL::SM_Vertex_index’}
151 | for (auto &vi : vertices) {
| ^~~
/<<PKGBUILDDIR>>/src/libslic3r/MeshBoolean.cpp:156:5: error: cannot bind non-const lvalue reference of type ‘CGAL::SM_Face_index&’ to an rvalue of type ‘boost::iterators::detail::iterator_facade_base<CGAL::Surface_mesh<CGAL::Point_3<CGAL::Epick> >::Index_iterator<CGAL::SM_Face_index>, CGAL::SM_Face_index, std::random_access_iterator_tag, CGAL::SM_Face_index, long int, false, false>::reference’ {aka ‘CGAL::SM_Face_index’}
156 | for (auto &face : faces) {
| ^~~
make[3]: *** [src/libslic3r/CMakeFiles/libslic3r_cgal.dir/build.make:121: src/libslic3r/CMakeFiles/libslic3r_cgal.dir/MeshBoolean.cpp.o] Error 1
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.
1) All slicer's exceptions are now derived from Slic3r::Exception.
2) New exceptions are defined for slicing errors.
3) Exceptions are propagated to the Plater to show.
It remains to modify the slicing back-end to throw the new SlicingError
exceptions instead of std::runtime_error and to show the other exceptions
by a message dialog instead of a notification.