mirror of
https://github.com/SoftFever/OrcaSlicer.git
synced 2025-07-07 06:57:36 -06:00
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 05961f7c98
)
* 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:
parent
ab1b0e0ebc
commit
924a2b4551
16 changed files with 533 additions and 54 deletions
|
@ -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."
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue