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:
Diffstat (limited to 'src/libslic3r/SLA/SupportTree.hpp')
-rw-r--r--src/libslic3r/SLA/SupportTree.hpp38
1 files changed, 23 insertions, 15 deletions
diff --git a/src/libslic3r/SLA/SupportTree.hpp b/src/libslic3r/SLA/SupportTree.hpp
index c6255aa2f..4be90161d 100644
--- a/src/libslic3r/SLA/SupportTree.hpp
+++ b/src/libslic3r/SLA/SupportTree.hpp
@@ -5,9 +5,8 @@
#include <memory>
#include <Eigen/Geometry>
-#include <libslic3r/SLA/Common.hpp>
#include <libslic3r/SLA/Pad.hpp>
-#include <libslic3r/SLA/EigenMesh3D.hpp>
+#include <libslic3r/SLA/IndexedMesh.hpp>
#include <libslic3r/SLA/SupportPoint.hpp>
#include <libslic3r/SLA/JobController.hpp>
@@ -32,7 +31,7 @@ enum class PillarConnectionMode
dynamic
};
-struct SupportConfig
+struct SupportTreeConfig
{
bool enabled = true;
@@ -45,6 +44,8 @@ struct SupportConfig
// Radius of the back side of the 3d arrow.
double head_back_radius_mm = 0.5;
+ double head_fallback_radius_mm = 0.25;
+
// Width in mm from the back sphere center to the front sphere center.
double head_width_mm = 1.0;
@@ -95,36 +96,43 @@ struct SupportConfig
// /////////////////////////////////////////////////////////////////////////
// The max Z angle for a normal at which it will get completely ignored.
- static const double normal_cutoff_angle;
+ static const double constexpr normal_cutoff_angle = 150.0 * M_PI / 180.0;
// The shortest distance of any support structure from the model surface
- static const double safety_distance_mm;
+ static const double constexpr safety_distance_mm = 0.5;
- static const double max_solo_pillar_height_mm;
- static const double max_dual_pillar_height_mm;
- static const double optimizer_rel_score_diff;
- static const unsigned optimizer_max_iterations;
- static const unsigned pillar_cascade_neighbors;
+ static const double constexpr max_solo_pillar_height_mm = 15.0;
+ static const double constexpr max_dual_pillar_height_mm = 35.0;
+ static const double constexpr optimizer_rel_score_diff = 1e-6;
+ static const unsigned constexpr optimizer_max_iterations = 1000;
+ static const unsigned constexpr pillar_cascade_neighbors = 3;
};
+// TODO: Part of future refactor
+//class SupportConfig {
+// std::optional<SupportTreeConfig> tree_cfg {std::in_place_t{}}; // fill up
+// std::optional<PadConfig> pad_cfg;
+//};
+
enum class MeshType { Support, Pad };
struct SupportableMesh
{
- EigenMesh3D emesh;
+ IndexedMesh emesh;
SupportPoints pts;
- SupportConfig cfg;
+ SupportTreeConfig cfg;
+ PadConfig pad_cfg;
explicit SupportableMesh(const TriangleMesh & trmsh,
const SupportPoints &sp,
- const SupportConfig &c)
+ const SupportTreeConfig &c)
: emesh{trmsh}, pts{sp}, cfg{c}
{}
- explicit SupportableMesh(const EigenMesh3D &em,
+ explicit SupportableMesh(const IndexedMesh &em,
const SupportPoints &sp,
- const SupportConfig &c)
+ const SupportTreeConfig &c)
: emesh{em}, pts{sp}, cfg{c}
{}
};