ENH: generate framework for all layers

jira: none
Change-Id: I95f35ba45fe9f544c53bdf0c5a52a70bd45ee7a9
This commit is contained in:
zhimin.zeng 2025-01-21 15:39:42 +08:00 committed by lane.wei
parent db2a8f011c
commit 3e0b6eb228
11 changed files with 28 additions and 6 deletions

View File

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

View File

@ -136,5 +136,6 @@
"enable_circle_compensation": "0",
"circle_compensation_manual_offset": "0",
"infill_shift_step": "0.4",
"infill_rotate_step": "0"
"infill_rotate_step": "0",
"prime_tower_enable_framework": "0"
}

View File

@ -1383,7 +1383,8 @@ WipeTower::WipeTower(const PrintConfig& config, int plate_idx, Vec3d plate_origi
m_extra_rib_length((float)config.prime_tower_extra_rib_length.value),
m_rib_width((float)config.prime_tower_rib_width.value),
m_used_fillet(config.prime_tower_fillet_wall.value),
m_extra_spacing((float)config.prime_tower_infill_gap.value/100.f)
m_extra_spacing((float)config.prime_tower_infill_gap.value/100.f),
m_tower_framework(config.prime_tower_enable_framework.value)
{
// Read absolute value of first layer speed, if given as percentage,
// it is taken over following default. Speeds from config are not
@ -3550,6 +3551,16 @@ void WipeTower::generate_wipe_tower_blocks()
m_plan[layer_id].depth += block.layer_depths[layer_id];
}
}
if (m_tower_framework) {
for (int layer_id = 1; layer_id < m_plan.size(); ++layer_id) {
m_plan[layer_id].depth = 0;
for (auto &block : m_wipe_tower_blocks) {
block.layer_depths[layer_id] = block.layer_depths[0];
m_plan[layer_id].depth += block.layer_depths[layer_id];
}
}
}
}
void WipeTower::plan_tower_new()

View File

@ -431,6 +431,7 @@ private:
float m_extra_rib_length=0.f;
bool m_used_fillet{false};
Vec2f m_rib_offset{Vec2f(0.f, 0.f)};
bool m_tower_framework{false};
// G-code generator parameters.
// BBS: remove useless config

View File

@ -878,7 +878,7 @@ static std::vector<std::string> s_Preset_print_options {
"ooze_prevention", "standby_temperature_delta", "interface_shells", "line_width", "initial_layer_line_width",
"inner_wall_line_width", "outer_wall_line_width", "sparse_infill_line_width", "internal_solid_infill_line_width",
"top_surface_line_width", "support_line_width", "infill_wall_overlap", "bridge_flow",
"elefant_foot_compensation", "xy_contour_compensation", "xy_hole_compensation", "resolution", "enable_prime_tower",
"elefant_foot_compensation", "xy_contour_compensation", "xy_hole_compensation", "resolution", "enable_prime_tower", "prime_tower_enable_framework",
"prime_tower_width", "prime_tower_brim_width", "prime_tower_skip_points",
"prime_tower_rib_wall","prime_tower_extra_rib_length","prime_tower_rib_width","prime_tower_fillet_wall","prime_tower_infill_gap",
"enable_circle_compensation", "circle_compensation_speed", "circle_compensation_manual_offset", "apply_scarf_seam_on_circles",

View File

@ -254,6 +254,7 @@ bool Print::invalidate_state_by_config_options(const ConfigOptionResolver & /* n
|| opt_key == "hot_plate_temp"
|| opt_key == "textured_plate_temp"
|| opt_key == "enable_prime_tower"
|| opt_key == "prime_tower_enable_framework"
|| opt_key == "prime_tower_width"
|| opt_key == "prime_tower_brim_width"
|| opt_key == "prime_tower_skip_points"

View File

@ -4225,6 +4225,12 @@ void PrintConfigDef::init_fff_params()
def->mode = comSimple;
def->set_default_value(new ConfigOptionBool(false));
def = this->add("prime_tower_enable_framework", coBool);
def->label = L("Internal ribs");
def->tooltip = L("");
def->mode = comSimple;
def->set_default_value(new ConfigOptionBool(false));
def = this->add("enable_circle_compensation", coBool);
def->label = L("Auto Circle Holes-contour Compensation");
def->tooltip = L("Expirment feature to compensate the circle holes and circle contour. "

View File

@ -1200,6 +1200,7 @@ PRINT_CONFIG_CLASS_DERIVED_DEFINE(
((ConfigOptionInts, nozzle_temperature_range_high))
((ConfigOptionFloatsNullable, wipe_distance))
((ConfigOptionBool, enable_prime_tower))
((ConfigOptionBool, prime_tower_enable_framework))
// BBS: change wipe_tower_x and wipe_tower_y data type to floats to add partplate logic
((ConfigOptionFloats, wipe_tower_x))
((ConfigOptionFloats, wipe_tower_y))

View File

@ -683,7 +683,7 @@ void ConfigManipulation::toggle_print_fff_options(DynamicPrintConfig *config, in
toggle_field("standby_temperature_delta", have_ooze_prevention);
bool have_prime_tower = config->opt_bool("enable_prime_tower");
for (auto el : {"prime_tower_width", "prime_tower_brim_width", "prime_tower_skip_points", "prime_tower_rib_wall", "prime_tower_infill_gap"})
for (auto el : {"prime_tower_width", "prime_tower_brim_width", "prime_tower_skip_points", "prime_tower_rib_wall", "prime_tower_infill_gap","prime_tower_enable_framework"})
toggle_line(el, have_prime_tower);
bool have_rib_wall = config->opt_bool("prime_tower_rib_wall")&&have_prime_tower;

View File

@ -4166,7 +4166,7 @@ Plater::priv::priv(Plater *q, MainFrame *main_frame)
"extruder_clearance_height_to_lid", "extruder_clearance_height_to_rod",
"nozzle_height", "skirt_loops", "skirt_distance",
"brim_width", "brim_object_gap", "brim_type", "nozzle_diameter", "single_extruder_multi_material",
"enable_prime_tower", "wipe_tower_x", "wipe_tower_y", "prime_tower_width", "prime_tower_brim_width", "prime_tower_skip_points",
"enable_prime_tower", "wipe_tower_x", "wipe_tower_y", "prime_tower_width", "prime_tower_brim_width", "prime_tower_skip_points", "prime_tower_enable_framework",
"prime_tower_rib_wall","prime_tower_extra_rib_length", "prime_tower_rib_width","prime_tower_fillet_wall", "prime_tower_infill_gap","filament_prime_volume",
"extruder_colour", "filament_colour", "filament_type", "material_colour", "printable_height", "extruder_printable_height", "printer_model", "printer_technology",
// These values are necessary to construct SlicingParameters by the Canvas3D variable layer height editor.

View File

@ -2228,6 +2228,7 @@ void TabPrint::build()
optgroup = page->new_optgroup(L("Prime tower"), L"param_tower");
optgroup->append_single_option_line("enable_prime_tower","parameter/prime-tower");
optgroup->append_single_option_line("prime_tower_skip_points", "parameter/prime-tower");
optgroup->append_single_option_line("prime_tower_enable_framework", "parameter/prime-tower");
optgroup->append_single_option_line("prime_tower_width","parameter/prime-tower");
optgroup->append_single_option_line("prime_tower_brim_width","parameter/prime-tower");
optgroup->append_single_option_line("prime_tower_infill_gap","parameter/prime-tower");