Seam: use scarf joint to minimize seam visiblity (#3839)
* Remember z of previous layer * Support travel to middle of the layer z * Support sloped extrusion * Implement sloped seam * Reduce extra movements * Don't clip loop if sloped seam is enabled * Fix wipe * Ensure `slope_max_segment_length` * Add options * Limit slope length to perimeter length * Fix slope segmentation * Rename the option to scarf joint seam * Don't modify the slope option when turning on spiral vase * Add a few suggestions when turnning on scarf joint * Add option to add scarf joint to inner walls * Apply seam gap at the end of the slope * Add option to explicitly use the entire loop as scarf length * Fix layer number * Increase default scarf length to 20mm * Better way of storing the global scarf state * Better vase mode layer height recognition * Move id should exclude seams * Fix slope height with independent support layer height * Fix linux build * Allow controlling the scarf with modifier * Scarf start height default to 0 * Allow enable scarf seam on contour only * Fix type error * Move the creation of sloped loop into ExtrusionEntity.cpp * Fix error "vector too long" * Detect seams properly * The correct way of calculating the rate limit * The correct way of calculating the rate limit (cherry picked from commit 05961f7c98803a42871b8df855bfff6a102936c4) * Add pressure equalizer in print by object mode * Remove the settings recommendation as it varies a lot depends on printer & filament * Add a beta suffix --------- Co-authored-by: SoftFever <softfeverever@gmail.com>
This commit is contained in:
@@ -264,6 +264,14 @@ 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_SeamScarfType{
|
||||
{ "none", int(SeamScarfType::None) },
|
||||
{ "external", int(SeamScarfType::External) },
|
||||
{ "all", int(SeamScarfType::All) },
|
||||
};
|
||||
CONFIG_OPTION_ENUM_DEFINE_STATIC_MAPS(SeamScarfType)
|
||||
|
||||
// Orca
|
||||
static t_config_enum_values s_keys_map_InternalBridgeFilter {
|
||||
{ "disabled", ibfDisabled },
|
||||
@@ -2795,6 +2803,10 @@ def = this->add("filament_loading_speed", coFloats);
|
||||
def->height = 15;
|
||||
def->set_default_value(new ConfigOptionStrings{"0,0", "\n0.2,0.4444", "\n0.4,0.6145", "\n0.6,0.7059", "\n0.8,0.7619", "\n1.5,0.8571", "\n2,0.8889", "\n3,0.9231", "\n5,0.9520", "\n10,1"});
|
||||
|
||||
def = this->add("has_scarf_joint_seam", coBool);
|
||||
def->mode = comAdvanced;
|
||||
def->set_default_value(new ConfigOptionBool(false));
|
||||
|
||||
{
|
||||
struct AxisDefault {
|
||||
std::string name;
|
||||
@@ -3523,6 +3535,55 @@ def = this->add("filament_loading_speed", coFloats);
|
||||
def->mode = comAdvanced;
|
||||
def->set_default_value(new ConfigOptionFloatOrPercent(10,true));
|
||||
|
||||
def = this->add("seam_slope_type", coEnum);
|
||||
def->label = L("Scarf joint seam (beta)");
|
||||
def->tooltip = L("Use scarf joint to minimize seam visibility and increase seam strength.");
|
||||
def->enum_keys_map = &ConfigOptionEnum<SeamScarfType>::get_enum_values();
|
||||
def->enum_values.push_back("none");
|
||||
def->enum_values.push_back("external");
|
||||
def->enum_values.push_back("all");
|
||||
def->enum_labels.push_back(L("None"));
|
||||
def->enum_labels.push_back(L("Contour"));
|
||||
def->enum_labels.push_back(L("Contour and hole"));
|
||||
def->mode = comAdvanced;
|
||||
def->set_default_value(new ConfigOptionEnum<SeamScarfType>(SeamScarfType::None));
|
||||
|
||||
def = this->add("seam_slope_start_height", coFloatOrPercent);
|
||||
def->label = L("Scarf start height");
|
||||
def->tooltip = L("Start height of the scarf.\n"
|
||||
"This amount can be specified in millimeters or as a percentage of the current layer height. The default value for this parameter is 0.");
|
||||
def->sidetext = L("mm or %");
|
||||
def->min = 0;
|
||||
def->mode = comAdvanced;
|
||||
def->set_default_value(new ConfigOptionFloatOrPercent(0, false));
|
||||
|
||||
def = this->add("seam_slope_entire_loop", coBool);
|
||||
def->label = L("Scarf around entire wall");
|
||||
def->tooltip = L("The scarf extends to the entire length of the wall.");
|
||||
def->mode = comAdvanced;
|
||||
def->set_default_value(new ConfigOptionBool(false));
|
||||
|
||||
def = this->add("seam_slope_min_length", coFloat);
|
||||
def->label = L("Scarf length");
|
||||
def->tooltip = L("Length of the scarf. Setting this parameter to zero effectively disables the scarf.");
|
||||
def->sidetext = L("mm");
|
||||
def->min = 0;
|
||||
def->mode = comAdvanced;
|
||||
def->set_default_value(new ConfigOptionFloat(20));
|
||||
|
||||
def = this->add("seam_slope_steps", coInt);
|
||||
def->label = L("Scarf steps");
|
||||
def->tooltip = L("Minimum number of segments of each scarf.");
|
||||
def->min = 1;
|
||||
def->mode = comAdvanced;
|
||||
def->set_default_value(new ConfigOptionInt(10));
|
||||
|
||||
def = this->add("seam_slope_inner_walls", coBool);
|
||||
def->label = L("Scarf joint for inner walls");
|
||||
def->tooltip = L("Use scarf joint for inner walls as well.");
|
||||
def->mode = comAdvanced;
|
||||
def->set_default_value(new ConfigOptionBool(false));
|
||||
|
||||
def = this->add("role_based_wipe_speed", coBool);
|
||||
def->label = L("Role base wipe speed");
|
||||
def->tooltip = L("The wipe speed is determined by the speed of the current extrusion role."
|
||||
|
||||
Reference in New Issue
Block a user