[Feature] Enabled gap fill algorithm for all solid fill types (#3412)

* ENH: Enabled gap fill algorithm for all solid fill types

* Made gap fill an option & refactored code into its own method

* Code comment updates

* Converted gap fill to enum and control filter out gap fill in the UI

* Update label for consistency

* Spelling mistake
This commit is contained in:
Ioannis Giannakas 2024-01-18 14:43:23 +00:00 committed by GitHub
parent c0c05c715b
commit fe148515ce
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
9 changed files with 143 additions and 7 deletions

View file

@ -248,6 +248,7 @@ static t_config_enum_values s_keys_map_SeamPosition {
};
CONFIG_OPTION_ENUM_DEFINE_STATIC_MAPS(SeamPosition)
// Orca
static t_config_enum_values s_keys_map_InternalBridgeFilter {
{ "disabled", ibfDisabled },
{ "limited", ibfLimited },
@ -255,6 +256,14 @@ static t_config_enum_values s_keys_map_InternalBridgeFilter {
};
CONFIG_OPTION_ENUM_DEFINE_STATIC_MAPS(InternalBridgeFilter)
// Orca
static t_config_enum_values s_keys_map_GapFillTarget {
{ "everywhere", gftEverywhere },
{ "topbottom", gftTopBottom },
{ "nowhere", gftNowhere },
};
CONFIG_OPTION_ENUM_DEFINE_STATIC_MAPS(GapFillTarget)
static const t_config_enum_values s_keys_map_SLADisplayOrientation = {
{ "landscape", sladoLandscape},
{ "portrait", sladoPortrait}
@ -752,6 +761,26 @@ void PrintConfigDef::init_fff_params()
def->sidetext = L("mm");
def->min = 0;
def->set_default_value(new ConfigOptionFloat(0.));
def = this->add("gap_fill_target", coEnum);
def->label = L("Apply gap fill");
def->category = L("Strength");
def->tooltip = L("Enables gap fill for the selected surfaces. The minimum gap length that will be filled can be controlled "
"from the filter out tiny gaps option below.\n\n"
"Options:\n"
"1. Everywhere: Applies gap fill to top, bottom and internal solid surfaces\n"
"2. Top and Bottom surfaces: Applies gap fill to top and bottom surfaces only\n"
"3. Nowhere: Disables gap fill\n");
def->enum_keys_map = &ConfigOptionEnum<GapFillTarget>::get_enum_values();
def->enum_values.push_back("everywhere");
def->enum_values.push_back("topbottom");
def->enum_values.push_back("nowhere");
def->enum_labels.push_back(L("Everywhere"));
def->enum_labels.push_back(L("Top and bottom surfaces"));
def->enum_labels.push_back(L("Nowhere"));
def->mode = comAdvanced;
def->set_default_value(new ConfigOptionEnum<GapFillTarget>(gftEverywhere));
def = this->add("enable_overhang_bridge_fan", coBools);
def->label = L("Force cooling for overhang and bridge");