Reworked pad creation algorithm with new parameters:

* brim size
* force pad around object everywhere
This commit is contained in:
tamasmeszaros
2019-09-24 15:15:49 +02:00
parent 9d775d0a43
commit e675a5d5c6
27 changed files with 1410 additions and 1448 deletions

View File

@@ -9,7 +9,6 @@
#include "SLACommon.hpp"
namespace Slic3r {
// Needed types from Point.hpp
@@ -85,6 +84,11 @@ struct SupportConfig {
// The shortest distance between a pillar base perimeter from the model
// body. This is only useful when elevation is set to zero.
double pillar_base_safety_distance_mm = 0.5;
double head_fullwidth() const {
return 2 * head_front_radius_mm + head_width_mm +
2 * head_back_radius_mm - head_penetration_mm;
}
// /////////////////////////////////////////////////////////////////////////
// Compile time configuration values (candidates for runtime)
@@ -104,7 +108,7 @@ struct SupportConfig {
static const unsigned max_bridges_on_pillar;
};
struct PoolConfig;
struct PadConfig;
/// A Control structure for the support calculation. Consists of the status
/// indicator callback and the stop condition predicate.
@@ -124,17 +128,6 @@ struct Controller {
std::function<void(void)> cancelfn = [](){};
};
using PointSet = Eigen::MatrixXd;
//EigenMesh3D to_eigenmesh(const TriangleMesh& m);
// needed for find best rotation
//EigenMesh3D to_eigenmesh(const ModelObject& model);
// Simple conversion of 'vector of points' to an Eigen matrix
//PointSet to_point_set(const std::vector<sla::SupportPoint>&);
/* ************************************************************************** */
/// The class containing mesh data for the generated supports.
@@ -174,6 +167,9 @@ public:
SLASupportTree(const SLASupportTree&) = delete;
SLASupportTree& operator=(const SLASupportTree&) = delete;
SLASupportTree(SLASupportTree &&o);
SLASupportTree &operator=(SLASupportTree &&o);
~SLASupportTree();
@@ -192,7 +188,7 @@ public:
/// Otherwise, the modelbase will be unified with the base plate calculated
/// from the supports.
const TriangleMesh& add_pad(const ExPolygons& modelbase,
const PoolConfig& pcfg) const;
const PadConfig& pcfg) const;
/// Get the pad geometry
const TriangleMesh& get_pad() const;