Added parameter for pillar connection mode

This commit is contained in:
tamasmeszaros 2019-01-09 12:21:43 +01:00
parent 41d189a355
commit 1947925263
10 changed files with 69 additions and 1 deletions

View file

@ -1249,8 +1249,13 @@ bool SLASupportTree::generate(const PointSet &points,
if(chkd >= bridge_distance) {
result.add_bridge(sj, ej, pillar.r);
auto pcm = cfg.pillar_connection_mode;
// double bridging: (crosses)
if(pillar_dist > 2*cfg.base_radius_mm) {
if( pcm == PillarConnectionMode::cross ||
(pcm == PillarConnectionMode::dynamic &&
pillar_dist > 2*cfg.base_radius_mm))
{
// If the columns are close together, no need to
// double bridge them
Vec3d bsj(ej(X), ej(Y), sj(Z));

View file

@ -28,6 +28,12 @@ using SlicedSupports = std::vector<SliceLayer>;
namespace sla {
enum class PillarConnectionMode {
zigzag,
cross,
dynamic
};
struct SupportConfig {
// Radius in mm of the pointing side of the head.
double head_front_radius_mm = 0.2;
@ -46,6 +52,9 @@ struct SupportConfig {
// headless pillars will have half of this value.
double headless_pillar_radius_mm = 0.4;
// How to connect pillars
PillarConnectionMode pillar_connection_mode = PillarConnectionMode::dynamic;
// TODO: unimplemented at the moment. This coefficient will have an impact
// when bridges and pillars are merged. The resulting pillar should be a bit
// thicker than the ones merging into it. How much thicker? I don't know