rename avoid_curled_filament_during_travels to avoid_crossing_curled_overhangs
mark avoid_crossing_curled_overhangs as Experimental rename overhang_steepness_levels to overhang_overlap_levels
This commit is contained in:
parent
dbaa0f72d1
commit
cfb702be99
@ -2161,11 +2161,11 @@ LayerResult GCode::process_layer(
|
|||||||
Skirt::make_skirt_loops_per_extruder_1st_layer(print, layer_tools, m_skirt_done) :
|
Skirt::make_skirt_loops_per_extruder_1st_layer(print, layer_tools, m_skirt_done) :
|
||||||
Skirt::make_skirt_loops_per_extruder_other_layers(print, layer_tools, m_skirt_done);
|
Skirt::make_skirt_loops_per_extruder_other_layers(print, layer_tools, m_skirt_done);
|
||||||
|
|
||||||
if (this->config().avoid_curled_filament_during_travels) {
|
if (this->config().avoid_crossing_curled_overhangs) {
|
||||||
m_avoid_curled_filaments.clear();
|
m_avoid_crossing_curled_overhangs.clear();
|
||||||
for (const ObjectLayerToPrint &layer_to_print : layers) {
|
for (const ObjectLayerToPrint &layer_to_print : layers) {
|
||||||
m_avoid_curled_filaments.add_obstacles(layer_to_print.object_layer, Point(scaled(this->origin())));
|
m_avoid_crossing_curled_overhangs.add_obstacles(layer_to_print.object_layer, Point(scaled(this->origin())));
|
||||||
m_avoid_curled_filaments.add_obstacles(layer_to_print.support_layer, Point(scaled(this->origin())));
|
m_avoid_crossing_curled_overhangs.add_obstacles(layer_to_print.support_layer, Point(scaled(this->origin())));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2916,7 +2916,7 @@ std::string GCode::_extrude(const ExtrusionPath &path, const std::string_view de
|
|||||||
bool variable_speed = false;
|
bool variable_speed = false;
|
||||||
std::vector<ProcessedPoint> new_points{};
|
std::vector<ProcessedPoint> new_points{};
|
||||||
if (this->m_config.enable_dynamic_overhang_speeds && !this->on_first_layer() && is_perimeter(path.role())) {
|
if (this->m_config.enable_dynamic_overhang_speeds && !this->on_first_layer() && is_perimeter(path.role())) {
|
||||||
new_points = m_extrusion_quality_estimator.estimate_extrusion_quality(path, m_config.overhang_steepness_levels,
|
new_points = m_extrusion_quality_estimator.estimate_extrusion_quality(path, m_config.overhang_overlap_levels,
|
||||||
m_config.dynamic_overhang_speeds,
|
m_config.dynamic_overhang_speeds,
|
||||||
m_config.get_abs_value("external_perimeter_speed"), speed);
|
m_config.get_abs_value("external_perimeter_speed"), speed);
|
||||||
variable_speed = std::any_of(new_points.begin(), new_points.end(), [speed](const ProcessedPoint &p) { return p.speed != speed; });
|
variable_speed = std::any_of(new_points.begin(), new_points.end(), [speed](const ProcessedPoint &p) { return p.speed != speed; });
|
||||||
@ -3040,13 +3040,13 @@ std::string GCode::travel_to(const Point &point, ExtrusionRole role, std::string
|
|||||||
this->origin in order to get G-code coordinates. */
|
this->origin in order to get G-code coordinates. */
|
||||||
Polyline travel { this->last_pos(), point };
|
Polyline travel { this->last_pos(), point };
|
||||||
|
|
||||||
if (this->config().avoid_curled_filament_during_travels) {
|
if (this->config().avoid_crossing_curled_overhangs) {
|
||||||
if (m_config.avoid_crossing_perimeters) {
|
if (m_config.avoid_crossing_perimeters) {
|
||||||
BOOST_LOG_TRIVIAL(warning)
|
BOOST_LOG_TRIVIAL(warning)
|
||||||
<< "Option >avoid curled filament during travels< is not compatible with avoid crossing perimeters and it will be ignored!";
|
<< "Option >avoid crossing curled overhangs< is not compatible with avoid crossing perimeters and it will be ignored!";
|
||||||
} else {
|
} else {
|
||||||
Point scaled_origin = Point(scaled(this->origin()));
|
Point scaled_origin = Point(scaled(this->origin()));
|
||||||
travel = m_avoid_curled_filaments.find_path(this->last_pos() + scaled_origin, point + scaled_origin);
|
travel = m_avoid_crossing_curled_overhangs.find_path(this->last_pos() + scaled_origin, point + scaled_origin);
|
||||||
travel.translate(-scaled_origin);
|
travel.translate(-scaled_origin);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -352,7 +352,7 @@ private:
|
|||||||
OozePrevention m_ooze_prevention;
|
OozePrevention m_ooze_prevention;
|
||||||
Wipe m_wipe;
|
Wipe m_wipe;
|
||||||
AvoidCrossingPerimeters m_avoid_crossing_perimeters;
|
AvoidCrossingPerimeters m_avoid_crossing_perimeters;
|
||||||
JPSPathFinder m_avoid_curled_filaments;
|
JPSPathFinder m_avoid_crossing_curled_overhangs;
|
||||||
RetractWhenCrossingPerimeters m_retract_when_crossing_perimeters;
|
RetractWhenCrossingPerimeters m_retract_when_crossing_perimeters;
|
||||||
bool m_enable_loop_clipping;
|
bool m_enable_loop_clipping;
|
||||||
// If enabled, the G-code generator will put following comments at the ends
|
// If enabled, the G-code generator will put following comments at the ends
|
||||||
|
@ -324,7 +324,7 @@ public:
|
|||||||
coordf_t height; // layer height in unscaled coordinates
|
coordf_t height; // layer height in unscaled coordinates
|
||||||
coordf_t bottom_z() const { return this->print_z - this->height; }
|
coordf_t bottom_z() const { return this->print_z - this->height; }
|
||||||
|
|
||||||
//Lines estimated to be seriously malformed, info from the IssueSearch algorithm. These lines should probably be avoided during fast travels.
|
//Extrusions estimated to be seriously malformed, estimated during "Estimating curled extrusions" step. These lines should be avoided during fast travels.
|
||||||
Lines malformed_lines;
|
Lines malformed_lines;
|
||||||
|
|
||||||
// Collection of expolygons generated by slicing the possibly multiple meshes of the source geometry
|
// Collection of expolygons generated by slicing the possibly multiple meshes of the source geometry
|
||||||
|
@ -420,7 +420,7 @@ void Preset::set_visible_from_appconfig(const AppConfig &app_config)
|
|||||||
static std::vector<std::string> s_Preset_print_options {
|
static std::vector<std::string> s_Preset_print_options {
|
||||||
"layer_height", "first_layer_height", "perimeters", "spiral_vase", "slice_closing_radius", "slicing_mode",
|
"layer_height", "first_layer_height", "perimeters", "spiral_vase", "slice_closing_radius", "slicing_mode",
|
||||||
"top_solid_layers", "top_solid_min_thickness", "bottom_solid_layers", "bottom_solid_min_thickness",
|
"top_solid_layers", "top_solid_min_thickness", "bottom_solid_layers", "bottom_solid_min_thickness",
|
||||||
"extra_perimeters", "extra_perimeters_on_overhangs", "ensure_vertical_shell_thickness", "avoid_curled_filament_during_travels", "avoid_crossing_perimeters", "thin_walls", "overhangs",
|
"extra_perimeters", "extra_perimeters_on_overhangs", "ensure_vertical_shell_thickness", "avoid_crossing_curled_overhangs", "avoid_crossing_perimeters", "thin_walls", "overhangs",
|
||||||
"seam_position","staggered_inner_seams", "external_perimeters_first", "fill_density", "fill_pattern", "top_fill_pattern", "bottom_fill_pattern",
|
"seam_position","staggered_inner_seams", "external_perimeters_first", "fill_density", "fill_pattern", "top_fill_pattern", "bottom_fill_pattern",
|
||||||
"infill_every_layers", "infill_only_where_needed", "solid_infill_every_layers", "fill_angle", "bridge_angle",
|
"infill_every_layers", "infill_only_where_needed", "solid_infill_every_layers", "fill_angle", "bridge_angle",
|
||||||
"solid_infill_below_area", "only_retract_when_crossing_perimeters", "infill_first",
|
"solid_infill_below_area", "only_retract_when_crossing_perimeters", "infill_first",
|
||||||
@ -429,7 +429,7 @@ static std::vector<std::string> s_Preset_print_options {
|
|||||||
"fuzzy_skin", "fuzzy_skin_thickness", "fuzzy_skin_point_dist",
|
"fuzzy_skin", "fuzzy_skin_thickness", "fuzzy_skin_point_dist",
|
||||||
"max_volumetric_extrusion_rate_slope_positive", "max_volumetric_extrusion_rate_slope_negative",
|
"max_volumetric_extrusion_rate_slope_positive", "max_volumetric_extrusion_rate_slope_negative",
|
||||||
"perimeter_speed", "small_perimeter_speed", "external_perimeter_speed", "infill_speed", "solid_infill_speed",
|
"perimeter_speed", "small_perimeter_speed", "external_perimeter_speed", "infill_speed", "solid_infill_speed",
|
||||||
"enable_dynamic_overhang_speeds", "dynamic_overhang_speeds", "overhang_steepness_levels",
|
"enable_dynamic_overhang_speeds", "dynamic_overhang_speeds", "overhang_overlap_levels",
|
||||||
"top_solid_infill_speed", "support_material_speed", "support_material_xy_spacing", "support_material_interface_speed",
|
"top_solid_infill_speed", "support_material_speed", "support_material_xy_spacing", "support_material_interface_speed",
|
||||||
"bridge_speed", "gap_fill_speed", "gap_fill_enabled", "travel_speed", "travel_speed_z", "first_layer_speed", "first_layer_speed_over_raft", "perimeter_acceleration", "infill_acceleration",
|
"bridge_speed", "gap_fill_speed", "gap_fill_enabled", "travel_speed", "travel_speed_z", "first_layer_speed", "first_layer_speed_over_raft", "perimeter_acceleration", "infill_acceleration",
|
||||||
"bridge_acceleration", "first_layer_acceleration", "first_layer_acceleration_over_raft", "default_acceleration", "skirts", "skirt_distance", "skirt_height", "draft_shield",
|
"bridge_acceleration", "first_layer_acceleration", "first_layer_acceleration_over_raft", "default_acceleration", "skirts", "skirt_distance", "skirt_height", "draft_shield",
|
||||||
|
@ -222,7 +222,7 @@ bool Print::invalidate_state_by_config_options(const ConfigOptionResolver & /* n
|
|||||||
osteps.emplace_back(posInfill);
|
osteps.emplace_back(posInfill);
|
||||||
osteps.emplace_back(posSupportMaterial);
|
osteps.emplace_back(posSupportMaterial);
|
||||||
steps.emplace_back(psSkirtBrim);
|
steps.emplace_back(psSkirtBrim);
|
||||||
} else if (opt_key == "avoid_curled_filament_during_travels") {
|
} else if (opt_key == "avoid_crossing_curled_overhangs") {
|
||||||
osteps.emplace_back(posEstimateCurledExtrusions);
|
osteps.emplace_back(posEstimateCurledExtrusions);
|
||||||
} else {
|
} else {
|
||||||
// for legacy, if we can't handle this option let's invalidate all steps
|
// for legacy, if we can't handle this option let's invalidate all steps
|
||||||
|
@ -400,10 +400,10 @@ void PrintConfigDef::init_fff_params()
|
|||||||
|
|
||||||
// Maximum extruder temperature, bumped to 1500 to support printing of glass.
|
// Maximum extruder temperature, bumped to 1500 to support printing of glass.
|
||||||
const int max_temp = 1500;
|
const int max_temp = 1500;
|
||||||
def = this->add("avoid_curled_filament_during_travels", coBool);
|
def = this->add("avoid_crossing_curled_overhangs", coBool);
|
||||||
def->label = L("Avoid curled filament during travels");
|
def->label = L("Avoid crossing curled overhangs (Experimental)");
|
||||||
def->tooltip = L("Plan travel moves such that the extruder avoids areas where filament may be curled up. "
|
def->tooltip = L("Plan travel moves such that the extruder avoids areas where the filament may be curled up. "
|
||||||
"This is mostly happening on steeper rounded overhangs and may cause crash or borken print. "
|
"This is mostly happening on steeper rounded overhangs and may cause a crash with the nozzle. "
|
||||||
"This feature slows down both the print and the G-code generation.");
|
"This feature slows down both the print and the G-code generation.");
|
||||||
def->mode = comExpert;
|
def->mode = comExpert;
|
||||||
def->set_default_value(new ConfigOptionBool(false));
|
def->set_default_value(new ConfigOptionBool(false));
|
||||||
@ -536,11 +536,15 @@ void PrintConfigDef::init_fff_params()
|
|||||||
def->mode = comAdvanced;
|
def->mode = comAdvanced;
|
||||||
def->set_default_value(new ConfigOptionBool(true));
|
def->set_default_value(new ConfigOptionBool(true));
|
||||||
|
|
||||||
def = this->add("overhang_steepness_levels", coPercents);
|
def = this->add("overhang_overlap_levels", coPercents);
|
||||||
def->full_label = L("Steepness levels of overhangs");
|
def->full_label = L("Overhang overlap levels");
|
||||||
def->category = L("Speed");
|
def->category = L("Speed");
|
||||||
def->tooltip = L("Controls overhang steepness, expressed as percentage of overlap of the extrusion with the previous layer. "
|
def->tooltip = L("Controls overhang levels, expressed as a percentage of overlap of the extrusion with the previous layer - "
|
||||||
"Each overhang level then corresponds with the overhang speed below.");
|
"100% represents full overlap - no overhang is present, while 0% represents full overhang (floating extrusion). "
|
||||||
|
"Each overhang level then corresponds with the overhang speed below. Speeds for overhang levels in between are "
|
||||||
|
"calculated via linear interpolation."
|
||||||
|
"If you set multiple different speeds for the same overhang level, only the largest speed is used. "
|
||||||
|
);
|
||||||
def->sidetext = L("%");
|
def->sidetext = L("%");
|
||||||
def->min = 0;
|
def->min = 0;
|
||||||
def->max = 100;
|
def->max = 100;
|
||||||
@ -550,7 +554,8 @@ void PrintConfigDef::init_fff_params()
|
|||||||
def = this->add("dynamic_overhang_speeds", coFloatsOrPercents);
|
def = this->add("dynamic_overhang_speeds", coFloatsOrPercents);
|
||||||
def->full_label = L("Dynamic speed on overhangs");
|
def->full_label = L("Dynamic speed on overhangs");
|
||||||
def->category = L("Speed");
|
def->category = L("Speed");
|
||||||
def->tooltip = L("This setting controls the speed on the overhang with steepness value above. "
|
def->tooltip = L("This setting controls the speed on the overhang with the overlap value set above. "
|
||||||
|
"The speed of the extrusion is calculated as a linear interpolation of the speeds for higher and lower overlap. "
|
||||||
"If set as percentage, the speed is calculated over the external perimeter speed."
|
"If set as percentage, the speed is calculated over the external perimeter speed."
|
||||||
);
|
);
|
||||||
def->sidetext = L("mm/s or %");
|
def->sidetext = L("mm/s or %");
|
||||||
|
@ -565,7 +565,7 @@ PRINT_CONFIG_CLASS_DEFINE(
|
|||||||
((ConfigOptionFloatOrPercent, external_perimeter_extrusion_width))
|
((ConfigOptionFloatOrPercent, external_perimeter_extrusion_width))
|
||||||
((ConfigOptionFloatOrPercent, external_perimeter_speed))
|
((ConfigOptionFloatOrPercent, external_perimeter_speed))
|
||||||
((ConfigOptionBool, enable_dynamic_overhang_speeds))
|
((ConfigOptionBool, enable_dynamic_overhang_speeds))
|
||||||
((ConfigOptionPercents, overhang_steepness_levels))
|
((ConfigOptionPercents, overhang_overlap_levels))
|
||||||
((ConfigOptionFloatsOrPercents, dynamic_overhang_speeds))
|
((ConfigOptionFloatsOrPercents, dynamic_overhang_speeds))
|
||||||
((ConfigOptionBool, external_perimeters_first))
|
((ConfigOptionBool, external_perimeters_first))
|
||||||
((ConfigOptionBool, extra_perimeters))
|
((ConfigOptionBool, extra_perimeters))
|
||||||
@ -732,7 +732,7 @@ PRINT_CONFIG_CLASS_DERIVED_DEFINE(
|
|||||||
PrintConfig,
|
PrintConfig,
|
||||||
(MachineEnvelopeConfig, GCodeConfig),
|
(MachineEnvelopeConfig, GCodeConfig),
|
||||||
|
|
||||||
((ConfigOptionBool, avoid_curled_filament_during_travels))
|
((ConfigOptionBool, avoid_crossing_curled_overhangs))
|
||||||
((ConfigOptionBool, avoid_crossing_perimeters))
|
((ConfigOptionBool, avoid_crossing_perimeters))
|
||||||
((ConfigOptionFloatOrPercent, avoid_crossing_perimeters_max_detour))
|
((ConfigOptionFloatOrPercent, avoid_crossing_perimeters_max_detour))
|
||||||
((ConfigOptionPoints, bed_shape))
|
((ConfigOptionPoints, bed_shape))
|
||||||
|
@ -454,7 +454,7 @@ void PrintObject::generate_support_material()
|
|||||||
void PrintObject::estimate_curled_extrusions()
|
void PrintObject::estimate_curled_extrusions()
|
||||||
{
|
{
|
||||||
if (this->set_started(posEstimateCurledExtrusions)) {
|
if (this->set_started(posEstimateCurledExtrusions)) {
|
||||||
if (this->print()->config().avoid_curled_filament_during_travels) {
|
if (this->print()->config().avoid_crossing_curled_overhangs) {
|
||||||
BOOST_LOG_TRIVIAL(debug) << "Estimating areas with curled extrusions - start";
|
BOOST_LOG_TRIVIAL(debug) << "Estimating areas with curled extrusions - start";
|
||||||
m_print->set_status(88, L("Estimating curled extrusions"));
|
m_print->set_status(88, L("Estimating curled extrusions"));
|
||||||
|
|
||||||
@ -749,7 +749,7 @@ bool PrintObject::invalidate_state_by_config_options(
|
|||||||
|| opt_key == "support_material_interface_speed"
|
|| opt_key == "support_material_interface_speed"
|
||||||
|| opt_key == "bridge_speed"
|
|| opt_key == "bridge_speed"
|
||||||
|| opt_key == "enable_dynamic_overhang_speeds"
|
|| opt_key == "enable_dynamic_overhang_speeds"
|
||||||
|| opt_key == "overhang_steepness_levels"
|
|| opt_key == "overhang_overlap_levels"
|
||||||
|| opt_key == "dynamic_overhang_speeds"
|
|| opt_key == "dynamic_overhang_speeds"
|
||||||
|| opt_key == "external_perimeter_speed"
|
|| opt_key == "external_perimeter_speed"
|
||||||
|| opt_key == "infill_speed"
|
|| opt_key == "infill_speed"
|
||||||
|
@ -221,11 +221,11 @@ void ConfigManipulation::toggle_print_fff_options(DynamicPrintConfig* config)
|
|||||||
bool have_perimeters = config->opt_int("perimeters") > 0;
|
bool have_perimeters = config->opt_int("perimeters") > 0;
|
||||||
for (auto el : { "extra_perimeters","extra_perimeters_on_overhangs", "ensure_vertical_shell_thickness", "thin_walls", "overhangs",
|
for (auto el : { "extra_perimeters","extra_perimeters_on_overhangs", "ensure_vertical_shell_thickness", "thin_walls", "overhangs",
|
||||||
"seam_position","staggered_inner_seams", "external_perimeters_first", "external_perimeter_extrusion_width",
|
"seam_position","staggered_inner_seams", "external_perimeters_first", "external_perimeter_extrusion_width",
|
||||||
"perimeter_speed", "small_perimeter_speed", "external_perimeter_speed", "enable_dynamic_overhang_speeds", "overhang_steepness_levels", "dynamic_overhang_speeds" })
|
"perimeter_speed", "small_perimeter_speed", "external_perimeter_speed", "enable_dynamic_overhang_speeds", "overhang_overlap_levels", "dynamic_overhang_speeds" })
|
||||||
toggle_field(el, have_perimeters);
|
toggle_field(el, have_perimeters);
|
||||||
|
|
||||||
for (size_t i = 0; i < 4; i++) {
|
for (size_t i = 0; i < 4; i++) {
|
||||||
toggle_field("overhang_steepness_levels#" + std::to_string(i), config->opt_bool("enable_dynamic_overhang_speeds"));
|
toggle_field("overhang_overlap_levels#" + std::to_string(i), config->opt_bool("enable_dynamic_overhang_speeds"));
|
||||||
toggle_field("dynamic_overhang_speeds#" + std::to_string(i), config->opt_bool("enable_dynamic_overhang_speeds"));
|
toggle_field("dynamic_overhang_speeds#" + std::to_string(i), config->opt_bool("enable_dynamic_overhang_speeds"));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -321,8 +321,8 @@ void ConfigManipulation::toggle_print_fff_options(DynamicPrintConfig* config)
|
|||||||
"wipe_tower_bridging", "wipe_tower_no_sparse_layers", "single_extruder_multi_material_priming" })
|
"wipe_tower_bridging", "wipe_tower_no_sparse_layers", "single_extruder_multi_material_priming" })
|
||||||
toggle_field(el, have_wipe_tower);
|
toggle_field(el, have_wipe_tower);
|
||||||
|
|
||||||
toggle_field("avoid_curled_filament_during_travels", !config->opt_bool("avoid_crossing_perimeters"));
|
toggle_field("avoid_crossing_curled_overhangs", !config->opt_bool("avoid_crossing_perimeters"));
|
||||||
toggle_field("avoid_crossing_perimeters", !config->opt_bool("avoid_curled_filament_during_travels"));
|
toggle_field("avoid_crossing_perimeters", !config->opt_bool("avoid_crossing_curled_overhangs"));
|
||||||
|
|
||||||
bool have_avoid_crossing_perimeters = config->opt_bool("avoid_crossing_perimeters");
|
bool have_avoid_crossing_perimeters = config->opt_bool("avoid_crossing_perimeters");
|
||||||
toggle_field("avoid_crossing_perimeters_max_detour", have_avoid_crossing_perimeters);
|
toggle_field("avoid_crossing_perimeters_max_detour", have_avoid_crossing_perimeters);
|
||||||
|
@ -1425,7 +1425,7 @@ void TabPrint::build()
|
|||||||
optgroup->append_single_option_line("extra_perimeters", category_path + "extra-perimeters-if-needed");
|
optgroup->append_single_option_line("extra_perimeters", category_path + "extra-perimeters-if-needed");
|
||||||
optgroup->append_single_option_line("extra_perimeters_on_overhangs", category_path + "extra-perimeters-on-overhangs");
|
optgroup->append_single_option_line("extra_perimeters_on_overhangs", category_path + "extra-perimeters-on-overhangs");
|
||||||
optgroup->append_single_option_line("ensure_vertical_shell_thickness", category_path + "ensure-vertical-shell-thickness");
|
optgroup->append_single_option_line("ensure_vertical_shell_thickness", category_path + "ensure-vertical-shell-thickness");
|
||||||
optgroup->append_single_option_line("avoid_curled_filament_during_travels", category_path + "avoid-curled-filament-during-travels");
|
optgroup->append_single_option_line("avoid_crossing_curled_overhangs", category_path + "avoid-crossing-curled-overhangs");
|
||||||
optgroup->append_single_option_line("avoid_crossing_perimeters", category_path + "avoid-crossing-perimeters");
|
optgroup->append_single_option_line("avoid_crossing_perimeters", category_path + "avoid-crossing-perimeters");
|
||||||
optgroup->append_single_option_line("avoid_crossing_perimeters_max_detour", category_path + "avoid_crossing_perimeters_max_detour");
|
optgroup->append_single_option_line("avoid_crossing_perimeters_max_detour", category_path + "avoid_crossing_perimeters_max_detour");
|
||||||
optgroup->append_single_option_line("thin_walls", category_path + "detect-thin-walls");
|
optgroup->append_single_option_line("thin_walls", category_path + "detect-thin-walls");
|
||||||
@ -1548,7 +1548,7 @@ void TabPrint::build()
|
|||||||
optgroup->append_line(line);
|
optgroup->append_line(line);
|
||||||
};
|
};
|
||||||
optgroup->append_single_option_line("enable_dynamic_overhang_speeds");
|
optgroup->append_single_option_line("enable_dynamic_overhang_speeds");
|
||||||
append_option_line(optgroup,"overhang_steepness_levels");
|
append_option_line(optgroup,"overhang_overlap_levels");
|
||||||
append_option_line(optgroup,"dynamic_overhang_speeds");
|
append_option_line(optgroup,"dynamic_overhang_speeds");
|
||||||
|
|
||||||
optgroup = page->new_optgroup(L("Speed for non-print moves"));
|
optgroup = page->new_optgroup(L("Speed for non-print moves"));
|
||||||
|
Loading…
Reference in New Issue
Block a user