Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/prusa3d/PrusaSlicer.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authortamasmeszaros <meszaros.q@gmail.com>2019-05-07 14:06:15 +0300
committertamasmeszaros <meszaros.q@gmail.com>2019-05-07 14:06:15 +0300
commitc03a202e20641cc373f44ba8dc1996b62d8c3775 (patch)
treeb8e0bf6e4e471ca1aab3847e4f814d6e12c6545c /sandboxes
parent806dc34421b607059b70b222f3ad3a445d8f79da (diff)
Prevent degenerate triangles in pad.
Diffstat (limited to 'sandboxes')
-rw-r--r--sandboxes/slabasebed/slabasebed.cpp48
1 files changed, 29 insertions, 19 deletions
diff --git a/sandboxes/slabasebed/slabasebed.cpp b/sandboxes/slabasebed/slabasebed.cpp
index 323741609..0c34eb9f5 100644
--- a/sandboxes/slabasebed/slabasebed.cpp
+++ b/sandboxes/slabasebed/slabasebed.cpp
@@ -4,6 +4,7 @@
#include <libslic3r/libslic3r.h>
#include <libslic3r/TriangleMesh.hpp>
+#include <libslic3r/Tesselate.hpp>
#include <libslic3r/SLA/SLABasePool.hpp>
#include <libslic3r/SLA/SLABoilerPlate.hpp>
#include <libnest2d/tools/benchmark.h>
@@ -14,7 +15,9 @@ const std::string USAGE_STR = {
namespace Slic3r { namespace sla {
-Contour3D convert(const Polygons& triangles, coord_t z, bool dir);
+Contour3D create_base_pool(const ExPolygons &ground_layer,
+ const PoolConfig& cfg = PoolConfig());
+
Contour3D walls(const Polygon& floor_plate, const Polygon& ceiling,
double floor_z_mm, double ceiling_z_mm,
double offset_difference_mm, ThrowOnCancel thr);
@@ -47,31 +50,38 @@ int main(const int argc, const char *argv[]) {
if(ground_slice.empty()) return EXIT_FAILURE;
- ExPolygon bottom_plate = ground_slice.front();
- ExPolygon top_plate = bottom_plate;
- sla::offset(top_plate, coord_t(3.0/SCALING_FACTOR));
- sla::offset(bottom_plate, coord_t(1.0/SCALING_FACTOR));
+// ExPolygon bottom_plate = ground_slice.front();
+// ExPolygon top_plate = bottom_plate;
+// sla::offset(top_plate, coord_t(3.0/SCALING_FACTOR));
+// sla::offset(bottom_plate, coord_t(1.0/SCALING_FACTOR));
bench.start();
- Polygons top_plate_triangles, bottom_plate_triangles;
- top_plate.triangulate_p2t(&top_plate_triangles);
- bottom_plate.triangulate_p2t(&bottom_plate_triangles);
-
- auto top_plate_mesh = sla::convert(top_plate_triangles, coord_t(3.0/SCALING_FACTOR), false);
- auto bottom_plate_mesh = sla::convert(bottom_plate_triangles, 0, true);
-
- mesh.merge(bottom_plate_mesh);
- mesh.merge(top_plate_mesh);
-
- sla::Contour3D w = sla::walls(bottom_plate.contour, top_plate.contour, 0, 3, 2.0, [](){});
-
- mesh.merge(w);
-// sla::create_base_pool(ground_slice, basepool);
+// TriangleMesh pool;
+ sla::PoolConfig cfg;
+ cfg.min_wall_height_mm = 0;
+ cfg.edge_radius_mm = 0.2;
+ mesh = sla::create_base_pool(ground_slice, cfg);
+
+// mesh.merge(triangulate_expolygon_3d(top_plate, 3.0, false));
+// mesh.merge(triangulate_expolygon_3d(bottom_plate, 0.0, true));
+// mesh = sla::walls(bottom_plate.contour, top_plate.contour, 0, 3, 2.0, [](){});
+
bench.stop();
cout << "Base pool creation time: " << std::setprecision(10)
<< bench.getElapsedSec() << " seconds." << endl;
+
+// auto point = []()
+ for(auto& trind : mesh.indices) {
+ Vec3d p0 = mesh.points[size_t(trind[0])];
+ Vec3d p1 = mesh.points[size_t(trind[1])];
+ Vec3d p2 = mesh.points[size_t(trind[2])];
+ Vec3d p01 = p1 - p0;
+ Vec3d p02 = p2 - p0;
+ auto a = p01.cross(p02).norm() / 2.0;
+ if(std::abs(a) < 1e-6) std::cout << "degenerate triangle" << std::endl;
+ }
// basepool.write_ascii("out.stl");