ENH: add seam parameters and increase wall loops

Signed-off-by: qing.zhang <qing.zhang@bambulab.com>
Change-Id: Id5c6cd6e97493f8912ce1857aed56eecace66cee
This commit is contained in:
qing.zhang 2023-06-13 17:49:38 +08:00 committed by Lane.Wei
parent 8905121af5
commit 4f4516357f
11 changed files with 38 additions and 10 deletions

View File

@ -1,7 +1,7 @@
{
"name": "Bambulab",
"url": "http://www.bambulab.com/Parameters/vendor/BBL.json",
"version": "01.06.00.11",
"version": "01.06.00.12",
"force_update": "0",
"description": "the initial version of BBL configurations",
"machine_model_list": [

View File

@ -56,7 +56,7 @@
"only_one_wall_top": "1",
"inner_wall_line_width": "0.45",
"inner_wall_speed": "150",
"wall_loops": "2",
"wall_loops": "3",
"print_settings_id": "",
"raft_layers": "0",
"seam_position": "aligned",

View File

@ -292,7 +292,8 @@ static std::vector<Vec2d> get_path_of_change_filament(const Print& print)
/* Reduce feedrate a bit; travel speed is often too high to move on existing material.
Too fast = ripping of existing material; too slow = short wipe path, thus more blob. */
double wipe_speed = gcodegen.writer().config.travel_speed.value * 0.8;
//softFever
double wipe_speed = gcodegen.writer().config.travel_speed.value * gcodegen.config().wipe_speed.value / 100;
// get the retraction length
double length = toolchange
@ -3434,7 +3435,7 @@ std::string GCode::extrude_loop(ExtrusionLoop loop, std::string description, dou
// if polyline was shorter than the clipping distance we'd get a null polyline, so
// we discard it in that case
double clip_length = m_enable_loop_clipping ?
scale_(EXTRUDER_CONFIG(nozzle_diameter)) * LOOP_CLIPPING_LENGTH_OVER_NOZZLE_DIAMETER :
scale_(EXTRUDER_CONFIG(nozzle_diameter)) * m_config.seam_gap.value :
0;
// get paths

View File

@ -758,6 +758,7 @@ static std::vector<std::string> s_Preset_print_options {
"timelapse_type", "internal_bridge_support_thickness",
"wall_generator", "wall_transition_length", "wall_transition_filter_deviation", "wall_transition_angle",
"wall_distribution_count", "min_feature_size", "min_bead_width", "post_process",
"seam_gap", "wipe_speed",
// calib
"print_flow_ratio"
};

View File

@ -144,7 +144,10 @@ bool Print::invalidate_state_by_config_options(const ConfigOptionResolver & /* n
"chamber_temperature",
"nozzle_hrc",
"required_nozzle_HRC",
"upward_compatible_machine"
"upward_compatible_machine",
//SoftFever
"seam_gap",
"wipe_speed"
};
static std::unordered_set<std::string> steps_ignore;

View File

@ -2333,6 +2333,22 @@ void PrintConfigDef::init_fff_params()
def->mode = comSimple;
def->set_default_value(new ConfigOptionEnum<SeamPosition>(spAligned));
def = this->add("seam_gap", coFloat);
def->label = L("Seam gap");
def->tooltip = L("In order to reduce the visibility of the seam in a closed loop extrusion, the loop is interrupted and shortened by a specified amount.\n" "This amount can be specified in millimeters or as a percentage of the current extruder diameter. The default value for this parameter is 0.15");
def->sidetext = L("mm");
def->min = 0;
def->mode = comDevelop;
def->set_default_value(new ConfigOptionFloat(0.15));
def = this->add("wipe_speed", coPercent);
def->label = L("Wipe speed");
def->tooltip = L("The wipe speed is determined by the speed setting specified in this configuration." "If the value is expressed as a percentage (e.g. 80%), it will be calculated based on the travel speed setting above." "The default value for this parameter is 80%");
def->sidetext = L("%");
def->min = 0.01;
def->mode = comDevelop;
def->set_default_value(new ConfigOptionPercent(80));
def = this->add("skirt_distance", coFloat);
def->label = L("Skirt distance");
def->tooltip = L("Distance from skirt to brim or object");
@ -3161,7 +3177,7 @@ void PrintConfigDef::init_fff_params()
def->enum_labels.push_back(L("Classic"));
def->enum_labels.push_back(L("Arachne"));
def->mode = comAdvanced;
def->set_default_value(new ConfigOptionEnum<PerimeterGeneratorType>(PerimeterGeneratorType::Classic));
def->set_default_value(new ConfigOptionEnum<PerimeterGeneratorType>(PerimeterGeneratorType::Arachne));
def = this->add("wall_transition_length", coPercent);
def->label = L("Wall transition length");

View File

@ -700,6 +700,9 @@ PRINT_CONFIG_CLASS_DEFINE(
((ConfigOptionPercent, min_bead_width))
((ConfigOptionBool, only_one_wall_top))
((ConfigOptionBool, only_one_wall_first_layer))
// SoftFever
((ConfigOptionFloat, seam_gap))
((ConfigOptionPercent, wipe_speed))
)
// This object is mapped to Perl as Slic3r::Config::PrintRegion.

View File

@ -892,6 +892,8 @@ bool PrintObject::invalidate_state_by_config_options(
steps.emplace_back(posSlice);
} else if (
opt_key == "seam_position"
|| opt_key == "seam_gap"
|| opt_key == "wipe_speed"
|| opt_key == "support_speed"
|| opt_key == "support_interface_speed"
|| opt_key == "overhang_1_4_speed"

View File

@ -533,7 +533,7 @@ void ConfigManipulation::toggle_print_fff_options(DynamicPrintConfig *config, co
{
bool have_perimeters = config->opt_int("wall_loops") > 0;
for (auto el : { "ensure_vertical_shell_thickness", "detect_thin_wall", "detect_overhang_wall",
"seam_position", "wall_infill_order", "outer_wall_line_width",
"seam_position","seam_gap","wipe_speed", "wall_infill_order", "outer_wall_line_width",
"inner_wall_speed", "outer_wall_speed" })
toggle_field(el, have_perimeters);

View File

@ -74,9 +74,9 @@ std::map<std::string, std::vector<SimpleSettingData>> SettingsFactory::OBJECT_C
{
{ L("Quality"), {{"layer_height", "",1},
//{"initial_layer_print_height", "",2},
{"seam_position", "",2},
{"slice_closing_radius", "",3}, {"resolution", "",4},
{"xy_hole_compensation", "",5}, {"xy_contour_compensation", "",6}, {"elefant_foot_compensation", "",7}
{"seam_position", "",2}, {"seam_gap", "",3}, {"wipe_speed", "",4},
{"slice_closing_radius", "",5}, {"resolution", "",6},
{"xy_hole_compensation", "",7}, {"xy_contour_compensation", "",8}, {"elefant_foot_compensation", "",9}
}},
{ L("Support"), {{"brim_type", "",1},{"brim_width", "",2},{"brim_object_gap", "",3},
{"enable_support", "",4},{"support_type", "",5},{"support_threshold_angle", "",6},{"support_on_build_plate_only", "",7},

View File

@ -1848,6 +1848,8 @@ void TabPrint::build()
optgroup = page->new_optgroup(L("Seam"), L"param_seam");
optgroup->append_single_option_line("seam_position", "Seam");
optgroup->append_single_option_line("seam_gap", "Seam");
optgroup->append_single_option_line("wipe_speed", "Seam");
optgroup = page->new_optgroup(L("Precision"), L"param_precision");
optgroup->append_single_option_line("slice_closing_radius");