diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/libslic3r/PrintConfig.cpp | 10 | ||||
-rw-r--r-- | src/libslic3r/PrintConfig.hpp | 4 | ||||
-rw-r--r-- | src/libslic3r/SLA/SupportTree.cpp | 1 | ||||
-rw-r--r-- | src/libslic3r/SLA/SupportTree.hpp | 4 | ||||
-rw-r--r-- | src/libslic3r/SLAPrint.cpp | 3 | ||||
-rw-r--r-- | src/slic3r/GUI/ConfigManipulation.cpp | 1 | ||||
-rw-r--r-- | src/slic3r/GUI/Preset.cpp | 1 | ||||
-rw-r--r-- | src/slic3r/GUI/Tab.cpp | 2 |
8 files changed, 24 insertions, 2 deletions
diff --git a/src/libslic3r/PrintConfig.cpp b/src/libslic3r/PrintConfig.cpp index 2be1f8cf6..adb1f4ee3 100644 --- a/src/libslic3r/PrintConfig.cpp +++ b/src/libslic3r/PrintConfig.cpp @@ -2653,6 +2653,16 @@ void PrintConfigDef::init_sla_params() def->max = 15; def->mode = comSimple; def->set_default_value(new ConfigOptionFloat(1.0)); + + def = this->add("support_max_bridges_on_pillar", coInt); + def->label = L("Max bridges on a pillar"); + def->tooltip = L( + "Maximum number of bridges that can be placed on a pillar. Bridges " + "hold support point pinheads and connect to pillars as small branches."); + def->min = 0; + def->max = 50; + def->mode = comExpert; + def->set_default_value(new ConfigOptionInt(3)); def = this->add("support_pillar_connection_mode", coEnum); def->label = L("Support pillar connection mode"); diff --git a/src/libslic3r/PrintConfig.hpp b/src/libslic3r/PrintConfig.hpp index 8c6710dad..f6a2bd679 100644 --- a/src/libslic3r/PrintConfig.hpp +++ b/src/libslic3r/PrintConfig.hpp @@ -980,6 +980,9 @@ public: // Radius in mm of the support pillars. ConfigOptionFloat support_pillar_diameter /*= 0.8*/; + + // How much bridge (supporting another pinhead) can be placed on a pillar. + ConfigOptionInt support_max_bridges_on_pillar; // How the pillars are bridged together ConfigOptionEnum<SLAPillarConnectionMode> support_pillar_connection_mode; @@ -1101,6 +1104,7 @@ protected: OPT_PTR(support_head_penetration); OPT_PTR(support_head_width); OPT_PTR(support_pillar_diameter); + OPT_PTR(support_max_bridges_on_pillar); OPT_PTR(support_pillar_connection_mode); OPT_PTR(support_buildplate_only); OPT_PTR(support_pillar_widening_factor); diff --git a/src/libslic3r/SLA/SupportTree.cpp b/src/libslic3r/SLA/SupportTree.cpp index 5ee35f9e0..528778b68 100644 --- a/src/libslic3r/SLA/SupportTree.cpp +++ b/src/libslic3r/SLA/SupportTree.cpp @@ -41,7 +41,6 @@ const double SupportConfig::max_dual_pillar_height_mm = 35.0; const double SupportConfig::optimizer_rel_score_diff = 1e-6; const unsigned SupportConfig::optimizer_max_iterations = 1000; const unsigned SupportConfig::pillar_cascade_neighbors = 3; -const unsigned SupportConfig::max_bridges_on_pillar = 3; void SupportTree::retrieve_full_mesh(TriangleMesh &outmesh) const { outmesh.merge(retrieve_mesh(MeshType::Support)); diff --git a/src/libslic3r/SLA/SupportTree.hpp b/src/libslic3r/SLA/SupportTree.hpp index acf6c10f5..c6255aa2f 100644 --- a/src/libslic3r/SLA/SupportTree.hpp +++ b/src/libslic3r/SLA/SupportTree.hpp @@ -83,6 +83,8 @@ struct SupportConfig // body. This is only useful when elevation is set to zero. double pillar_base_safety_distance_mm = 0.5; + unsigned max_bridges_on_pillar = 3; + double head_fullwidth() const { return 2 * head_front_radius_mm + head_width_mm + 2 * head_back_radius_mm - head_penetration_mm; @@ -103,7 +105,7 @@ struct SupportConfig static const double optimizer_rel_score_diff; static const unsigned optimizer_max_iterations; static const unsigned pillar_cascade_neighbors; - static const unsigned max_bridges_on_pillar; + }; enum class MeshType { Support, Pad }; diff --git a/src/libslic3r/SLAPrint.cpp b/src/libslic3r/SLAPrint.cpp index cca0abd5c..4ec5aae29 100644 --- a/src/libslic3r/SLAPrint.cpp +++ b/src/libslic3r/SLAPrint.cpp @@ -65,6 +65,8 @@ sla::SupportConfig make_support_cfg(const SLAPrintObjectConfig& c) c.support_base_safety_distance.getFloat() < EPSILON ? scfg.safety_distance_mm : c.support_base_safety_distance.getFloat(); + scfg.max_bridges_on_pillar = unsigned(c.support_max_bridges_on_pillar.getInt()); + return scfg; } @@ -946,6 +948,7 @@ bool SLAPrintObject::invalidate_state_by_config_options(const std::vector<t_conf || opt_key == "support_head_penetration" || opt_key == "support_head_width" || opt_key == "support_pillar_diameter" + || opt_key == "support_max_bridges_on_pillar" || opt_key == "support_pillar_connection_mode" || opt_key == "support_buildplate_only" || opt_key == "support_base_diameter" diff --git a/src/slic3r/GUI/ConfigManipulation.cpp b/src/slic3r/GUI/ConfigManipulation.cpp index 0d38ee566..c9143b645 100644 --- a/src/slic3r/GUI/ConfigManipulation.cpp +++ b/src/slic3r/GUI/ConfigManipulation.cpp @@ -347,6 +347,7 @@ void ConfigManipulation::toggle_print_sla_options(DynamicPrintConfig* config) toggle_field("support_head_penetration", supports_en); toggle_field("support_head_width", supports_en); toggle_field("support_pillar_diameter", supports_en); + toggle_field("support_max_bridges_on_pillar", supports_en); toggle_field("support_pillar_connection_mode", supports_en); toggle_field("support_buildplate_only", supports_en); toggle_field("support_base_diameter", supports_en); diff --git a/src/slic3r/GUI/Preset.cpp b/src/slic3r/GUI/Preset.cpp index 252b39d14..fc98a35fe 100644 --- a/src/slic3r/GUI/Preset.cpp +++ b/src/slic3r/GUI/Preset.cpp @@ -480,6 +480,7 @@ const std::vector<std::string>& Preset::sla_print_options() "support_head_penetration", "support_head_width", "support_pillar_diameter", + "support_max_bridges_on_pillar", "support_pillar_connection_mode", "support_buildplate_only", "support_pillar_widening_factor", diff --git a/src/slic3r/GUI/Tab.cpp b/src/slic3r/GUI/Tab.cpp index 19d085420..ac141caa4 100644 --- a/src/slic3r/GUI/Tab.cpp +++ b/src/slic3r/GUI/Tab.cpp @@ -3612,6 +3612,8 @@ void TabSLAPrint::build() optgroup = page->new_optgroup(_(L("Support pillar"))); optgroup->append_single_option_line("support_pillar_diameter"); + optgroup->append_single_option_line("support_max_bridges_on_pillar"); + optgroup->append_single_option_line("support_pillar_connection_mode"); optgroup->append_single_option_line("support_buildplate_only"); // TODO: This parameter is not used at the moment. |