Feature: Fuzzy Skin Extrusion Mode (#9878)

* Feature: Fuzzy Skin Extrusion Mode

This extension allows you to add new features to the fuzzy skin generator.

* Add auto switch to Arachne mode

* Move dialog to `update_print_fff_config` and update how `is_msg_dlg_already_exist` is used

---------

Co-authored-by: Noisyfox <timemanager.rick@gmail.com>
This commit is contained in:
π²
2025-07-25 10:36:18 +03:00
committed by GitHub
parent 43a84842e8
commit 3d16c7f4c8
8 changed files with 81 additions and 7 deletions

View File

@@ -486,7 +486,24 @@ void ConfigManipulation::update_print_fff_config(DynamicPrintConfig* config, con
apply(config, &new_conf);
is_msg_dlg_already_exist = false;
}
bool have_arachne = config->opt_enum<PerimeterGeneratorType>("wall_generator") == PerimeterGeneratorType::Arachne;
if (config->opt_enum<FuzzySkinMode>("fuzzy_skin_mode") != FuzzySkinMode::Displacement && !have_arachne) {
wxString msg_text = _(L("Both [Extrusion] and [Combined] modes of Fuzzy Skin require the Arachne Wall Generator to be enabled."));
msg_text += "\n\n" + _(L("Change these settings automatically?\n"
"Yes - Enable Arachne Wall Generator\n"
"No - Disable Arachne Wall Generator and set [Displacement] mode of the Fuzzy Skin"));
MessageDialog dialog(m_msg_dlg_parent, msg_text, "", wxICON_WARNING | wxYES | wxNO);
DynamicPrintConfig new_conf = *config;
is_msg_dlg_already_exist = true;
auto answer = dialog.ShowModal();
if (answer == wxID_YES)
new_conf.set_key_value("wall_generator", new ConfigOptionEnum<PerimeterGeneratorType>(PerimeterGeneratorType::Arachne));
else
new_conf.set_key_value("fuzzy_skin_mode", new ConfigOptionEnum<FuzzySkinMode>(FuzzySkinMode::Displacement));
apply(config, &new_conf);
is_msg_dlg_already_exist = false;
}
}
void ConfigManipulation::apply_null_fff_config(DynamicPrintConfig *config, std::vector<std::string> const &keys, std::map<ObjectBase *, ModelConfig *> const &configs)