ENH: generate framework for all layers

jira: none
Change-Id: I95f35ba45fe9f544c53bdf0c5a52a70bd45ee7a9
(cherry picked from commit 3e0b6eb2289eab383c6e616d37559b0c6619eca1)
This commit is contained in:
zhimin.zeng 2025-01-21 15:39:42 +08:00 committed by Noisyfox
parent d27c59c705
commit a0b5cdfbb2
10 changed files with 26 additions and 4 deletions

View file

@ -110,5 +110,6 @@
"scarf_angle_threshold": "155",
"infill_shift_step": "0.4",
"infill_rotate_step": "0",
"prime_tower_enable_framework": "0",
"symmetric_infill_y_axis": "0"
}

View file

@ -1390,7 +1390,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
@ -3543,6 +3544,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

@ -435,6 +435,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.
float m_cooling_tube_retraction = 0.f;

View file

@ -814,7 +814,7 @@ static std::vector<std::string> s_Preset_print_options {
"outer_wall_line_width", "sparse_infill_line_width", "internal_solid_infill_line_width",
"skin_infill_line_width","skeleton_infill_line_width",
"top_surface_line_width", "support_line_width", "infill_wall_overlap","top_bottom_infill_wall_overlap", "bridge_flow", "internal_bridge_flow",
"elefant_foot_compensation", "elefant_foot_compensation_layers", "xy_contour_compensation", "xy_hole_compensation", "resolution", "enable_prime_tower",
"elefant_foot_compensation", "elefant_foot_compensation_layers", "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",
"wipe_tower_no_sparse_layers", "compatible_printers", "compatible_printers_condition", "inherits",

View file

@ -295,6 +295,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

@ -5890,6 +5890,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("flush_volumes_vector", coFloats);
// BBS: remove _L()
def->label = ("Purging volumes - load/unload volumes");

View file

@ -1443,6 +1443,7 @@ PRINT_CONFIG_CLASS_DERIVED_DEFINE(
((ConfigOptionInts, nozzle_temperature_range_high))
((ConfigOptionFloats, 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

@ -759,7 +759,7 @@ void ConfigManipulation::toggle_print_fff_options(DynamicPrintConfig *config, co
toggle_line("preheat_steps", have_ooze_prevention && (preheat_steps > 0));
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

@ -4039,7 +4039,7 @@ Plater::priv::priv(Plater *q, MainFrame *main_frame)
"extruder_clearance_height_to_lid", "extruder_clearance_height_to_rod",
"nozzle_height", "skirt_type", "skirt_loops", "skirt_speed","min_skirt_length", "skirt_distance", "skirt_start_angle",
"brim_width", "brim_object_gap", "brim_type", "nozzle_diameter", "single_extruder_multi_material", "preferred_orientation",
"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

@ -2476,6 +2476,7 @@ void TabPrint::build()
optgroup = page->new_optgroup(L("Prime tower"), L"param_tower");
optgroup->append_single_option_line("enable_prime_tower", "multimaterial_settings_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", "multimaterial_settings_prime_tower#width");
optgroup->append_single_option_line("prime_tower_brim_width", "multimaterial_settings_prime_tower#brim-width");
optgroup->append_single_option_line("prime_tower_infill_gap","parameter/prime-tower");