Draft shield option is now an enum (Disabled/Limited/Enabled)
This commit is contained in:
parent
6eeedf2bc6
commit
b466f18326
5 changed files with 34 additions and 15 deletions
src
|
@ -403,7 +403,7 @@ ExtrusionEntityCollection make_brim(const Print &print, PrintTryCancel try_cance
|
||||||
return (bt == btOuterOnly || bt == btOuterAndInner) && print.config().skirt_distance.value < object->config().brim_width;
|
return (bt == btOuterOnly || bt == btOuterAndInner) && print.config().skirt_distance.value < object->config().brim_width;
|
||||||
});
|
});
|
||||||
|
|
||||||
const bool draft_shield = print.config().draft_shield;
|
const bool draft_shield = print.config().draft_shield != dsDisabled;
|
||||||
|
|
||||||
|
|
||||||
// If there is a possibility that brim intersects skirt, go through loops and split those extrusions
|
// If there is a possibility that brim intersects skirt, go through loops and split those extrusions
|
||||||
|
|
|
@ -339,12 +339,12 @@ std::vector<ObjectID> Print::print_object_ids() const
|
||||||
|
|
||||||
bool Print::has_infinite_skirt() const
|
bool Print::has_infinite_skirt() const
|
||||||
{
|
{
|
||||||
return (m_config.draft_shield && m_config.skirts > 0) || (m_config.ooze_prevention && this->extruders().size() > 1);
|
return (m_config.draft_shield == dsEnabled && m_config.skirts > 0) || (m_config.ooze_prevention && this->extruders().size() > 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool Print::has_skirt() const
|
bool Print::has_skirt() const
|
||||||
{
|
{
|
||||||
return (m_config.skirt_height > 0 && m_config.skirts > 0) || this->has_infinite_skirt();
|
return (m_config.skirt_height > 0 && m_config.skirts > 0) || m_config.draft_shield != dsDisabled;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool Print::has_brim() const
|
bool Print::has_brim() const
|
||||||
|
@ -864,7 +864,7 @@ void Print::process()
|
||||||
m_skirt.clear();
|
m_skirt.clear();
|
||||||
m_skirt_convex_hull.clear();
|
m_skirt_convex_hull.clear();
|
||||||
m_first_layer_convex_hull.points.clear();
|
m_first_layer_convex_hull.points.clear();
|
||||||
const bool draft_shield = config().draft_shield;
|
const bool draft_shield = config().draft_shield != dsDisabled;
|
||||||
|
|
||||||
if (this->has_skirt() && draft_shield) {
|
if (this->has_skirt() && draft_shield) {
|
||||||
// In case that draft shield is active, generate skirt first so brim
|
// In case that draft shield is active, generate skirt first so brim
|
||||||
|
@ -971,7 +971,7 @@ void Print::_make_skirt()
|
||||||
append(points, this->first_layer_wipe_tower_corners());
|
append(points, this->first_layer_wipe_tower_corners());
|
||||||
|
|
||||||
// Unless draft shield is enabled, include all brims as well.
|
// Unless draft shield is enabled, include all brims as well.
|
||||||
if (! config().draft_shield)
|
if (config().draft_shield == dsDisabled)
|
||||||
append(points, m_first_layer_convex_hull.points);
|
append(points, m_first_layer_convex_hull.points);
|
||||||
|
|
||||||
if (points.size() < 3)
|
if (points.size() < 3)
|
||||||
|
|
|
@ -173,6 +173,13 @@ static const t_config_enum_values s_keys_map_BrimType = {
|
||||||
};
|
};
|
||||||
CONFIG_OPTION_ENUM_DEFINE_STATIC_MAPS(BrimType)
|
CONFIG_OPTION_ENUM_DEFINE_STATIC_MAPS(BrimType)
|
||||||
|
|
||||||
|
static const t_config_enum_values s_keys_map_DraftShield = {
|
||||||
|
{ "disabled", dsDisabled },
|
||||||
|
{ "limited", dsLimited },
|
||||||
|
{ "enabled", dsEnabled }
|
||||||
|
};
|
||||||
|
CONFIG_OPTION_ENUM_DEFINE_STATIC_MAPS(DraftShield)
|
||||||
|
|
||||||
static const t_config_enum_values s_keys_map_ForwardCompatibilitySubstitutionRule = {
|
static const t_config_enum_values s_keys_map_ForwardCompatibilitySubstitutionRule = {
|
||||||
{ "disable", ForwardCompatibilitySubstitutionRule::Disable },
|
{ "disable", ForwardCompatibilitySubstitutionRule::Disable },
|
||||||
{ "enable", ForwardCompatibilitySubstitutionRule::Enable },
|
{ "enable", ForwardCompatibilitySubstitutionRule::Enable },
|
||||||
|
@ -2147,27 +2154,34 @@ void PrintConfigDef::init_fff_params()
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
def = this->add("skirt_distance", coFloat);
|
def = this->add("skirt_distance", coFloat);
|
||||||
def->label = L("Distance from object");
|
def->label = L("Distance from brim/object");
|
||||||
def->tooltip = L("Distance between skirt and object(s). Set this to zero to attach the skirt "
|
def->tooltip = L("Distance between skirt and brim (when draft shield is not used) or objects.");
|
||||||
"to the object(s) and get a brim for better adhesion.");
|
|
||||||
def->sidetext = L("mm");
|
def->sidetext = L("mm");
|
||||||
def->min = 0;
|
def->min = 0;
|
||||||
def->set_default_value(new ConfigOptionFloat(6));
|
def->set_default_value(new ConfigOptionFloat(6));
|
||||||
|
|
||||||
def = this->add("skirt_height", coInt);
|
def = this->add("skirt_height", coInt);
|
||||||
def->label = L("Skirt height");
|
def->label = L("Skirt height");
|
||||||
def->tooltip = L("Height of skirt expressed in layers. Set this to a tall value to use skirt "
|
def->tooltip = L("Height of skirt expressed in layers.");
|
||||||
"as a shield against drafts.");
|
|
||||||
def->sidetext = L("layers");
|
def->sidetext = L("layers");
|
||||||
def->mode = comAdvanced;
|
def->mode = comAdvanced;
|
||||||
def->set_default_value(new ConfigOptionInt(1));
|
def->set_default_value(new ConfigOptionInt(1));
|
||||||
|
|
||||||
def = this->add("draft_shield", coBool);
|
def = this->add("draft_shield", coEnum);
|
||||||
def->label = L("Draft shield");
|
def->label = L("Draft shield");
|
||||||
def->tooltip = L("If enabled, the skirt will be as tall as a highest printed object. "
|
def->tooltip = L("With draft shield active, the skirt will be printed skirt_distance from the object, possibly intersecting brim.\n"
|
||||||
|
"Enabled = skirt is as tall as the highest printed object.\n"
|
||||||
|
"Limited = skirt is as tall as specified by skirt_height.\n"
|
||||||
"This is useful to protect an ABS or ASA print from warping and detaching from print bed due to wind draft.");
|
"This is useful to protect an ABS or ASA print from warping and detaching from print bed due to wind draft.");
|
||||||
|
def->enum_keys_map = &ConfigOptionEnum<DraftShield>::get_enum_values();
|
||||||
|
def->enum_values.push_back("disabled");
|
||||||
|
def->enum_values.push_back("limited");
|
||||||
|
def->enum_values.push_back("enabled");
|
||||||
|
def->enum_labels.push_back(L("Disabled"));
|
||||||
|
def->enum_labels.push_back(L("Limited"));
|
||||||
|
def->enum_labels.push_back(L("Enabled"));
|
||||||
def->mode = comAdvanced;
|
def->mode = comAdvanced;
|
||||||
def->set_default_value(new ConfigOptionBool(false));
|
def->set_default_value(new ConfigOptionEnum<DraftShield>(dsDisabled));
|
||||||
|
|
||||||
def = this->add("skirts", coInt);
|
def = this->add("skirts", coInt);
|
||||||
def->label = L("Loops (minimum)");
|
def->label = L("Loops (minimum)");
|
||||||
|
|
|
@ -121,6 +121,10 @@ enum BrimType {
|
||||||
btOuterAndInner,
|
btOuterAndInner,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
enum DraftShield {
|
||||||
|
dsDisabled, dsLimited, dsEnabled
|
||||||
|
};
|
||||||
|
|
||||||
#define CONFIG_OPTION_ENUM_DECLARE_STATIC_MAPS(NAME) \
|
#define CONFIG_OPTION_ENUM_DECLARE_STATIC_MAPS(NAME) \
|
||||||
template<> const t_config_enum_names& ConfigOptionEnum<NAME>::get_enum_names(); \
|
template<> const t_config_enum_names& ConfigOptionEnum<NAME>::get_enum_names(); \
|
||||||
template<> const t_config_enum_values& ConfigOptionEnum<NAME>::get_enum_values();
|
template<> const t_config_enum_values& ConfigOptionEnum<NAME>::get_enum_values();
|
||||||
|
@ -141,6 +145,7 @@ CONFIG_OPTION_ENUM_DECLARE_STATIC_MAPS(SeamPosition)
|
||||||
CONFIG_OPTION_ENUM_DECLARE_STATIC_MAPS(SLADisplayOrientation)
|
CONFIG_OPTION_ENUM_DECLARE_STATIC_MAPS(SLADisplayOrientation)
|
||||||
CONFIG_OPTION_ENUM_DECLARE_STATIC_MAPS(SLAPillarConnectionMode)
|
CONFIG_OPTION_ENUM_DECLARE_STATIC_MAPS(SLAPillarConnectionMode)
|
||||||
CONFIG_OPTION_ENUM_DECLARE_STATIC_MAPS(BrimType)
|
CONFIG_OPTION_ENUM_DECLARE_STATIC_MAPS(BrimType)
|
||||||
|
CONFIG_OPTION_ENUM_DECLARE_STATIC_MAPS(DraftShield)
|
||||||
CONFIG_OPTION_ENUM_DECLARE_STATIC_MAPS(ForwardCompatibilitySubstitutionRule)
|
CONFIG_OPTION_ENUM_DECLARE_STATIC_MAPS(ForwardCompatibilitySubstitutionRule)
|
||||||
|
|
||||||
#undef CONFIG_OPTION_ENUM_DECLARE_STATIC_MAPS
|
#undef CONFIG_OPTION_ENUM_DECLARE_STATIC_MAPS
|
||||||
|
@ -689,6 +694,7 @@ PRINT_CONFIG_CLASS_DERIVED_DEFINE(
|
||||||
((ConfigOptionBools, cooling))
|
((ConfigOptionBools, cooling))
|
||||||
((ConfigOptionFloat, default_acceleration))
|
((ConfigOptionFloat, default_acceleration))
|
||||||
((ConfigOptionInts, disable_fan_first_layers))
|
((ConfigOptionInts, disable_fan_first_layers))
|
||||||
|
((ConfigOptionEnum<DraftShield>, draft_shield))
|
||||||
((ConfigOptionFloat, duplicate_distance))
|
((ConfigOptionFloat, duplicate_distance))
|
||||||
((ConfigOptionFloat, extruder_clearance_height))
|
((ConfigOptionFloat, extruder_clearance_height))
|
||||||
((ConfigOptionFloat, extruder_clearance_radius))
|
((ConfigOptionFloat, extruder_clearance_radius))
|
||||||
|
@ -728,7 +734,6 @@ PRINT_CONFIG_CLASS_DERIVED_DEFINE(
|
||||||
((ConfigOptionBools, retract_layer_change))
|
((ConfigOptionBools, retract_layer_change))
|
||||||
((ConfigOptionFloat, skirt_distance))
|
((ConfigOptionFloat, skirt_distance))
|
||||||
((ConfigOptionInt, skirt_height))
|
((ConfigOptionInt, skirt_height))
|
||||||
((ConfigOptionBool, draft_shield))
|
|
||||||
((ConfigOptionInt, skirts))
|
((ConfigOptionInt, skirts))
|
||||||
((ConfigOptionInts, slowdown_below_layer_time))
|
((ConfigOptionInts, slowdown_below_layer_time))
|
||||||
((ConfigOptionBool, spiral_vase))
|
((ConfigOptionBool, spiral_vase))
|
||||||
|
|
|
@ -276,7 +276,7 @@ void ConfigManipulation::toggle_print_fff_options(DynamicPrintConfig* config)
|
||||||
toggle_field(el, have_default_acceleration);
|
toggle_field(el, have_default_acceleration);
|
||||||
|
|
||||||
bool have_skirt = config->opt_int("skirts") > 0;
|
bool have_skirt = config->opt_int("skirts") > 0;
|
||||||
toggle_field("skirt_height", have_skirt && !config->opt_bool("draft_shield"));
|
toggle_field("skirt_height", have_skirt && config->opt_enum<DraftShield>("draft_shield") != dsEnabled);
|
||||||
for (auto el : { "skirt_distance", "draft_shield", "min_skirt_length" })
|
for (auto el : { "skirt_distance", "draft_shield", "min_skirt_length" })
|
||||||
toggle_field(el, have_skirt);
|
toggle_field(el, have_skirt);
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue