Fill Adaptive disconnecting from walls at low density. Disable rotation as infill type does not support it (#11728)

Fix adaptive fill issues
- Disconnecting from walls at low density
- Not supporting rotation

Co-authored-by: Rodrigo Faselli <162915171+RF47@users.noreply.github.com>
This commit is contained in:
Ioannis Giannakas 2025-12-24 12:26:50 +02:00 committed by GitHub
parent 506fde8f86
commit 2a0cfdb356
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 18 additions and 4 deletions

View file

@ -1448,6 +1448,17 @@ static std::vector<CubeProperties> make_cubes_properties(double max_cube_edge_le
if (edge_length > max_cube_edge_length)
break;
}
// Orca: Ensure at least 2 levels so build_octree() will insert triangles.
// Fixes scenario where adaptive fill is disconnected from walls on low densities
if (cubes_properties.size() == 1) {
CubeProperties p = cubes_properties.back();
p.edge_length *= 2.0;
p.height = p.edge_length * sqrt(3);
p.diagonal_length = p.edge_length * sqrt(2);
p.line_z_distance = p.edge_length / sqrt(3);
p.line_xy_distance = p.edge_length / sqrt(6);
cubes_properties.push_back(p);
}
return cubes_properties;
}

View file

@ -935,12 +935,15 @@ void ConfigManipulation::toggle_print_fff_options(DynamicPrintConfig *config, co
bool lattice_options = config->opt_enum<InfillPattern>("sparse_infill_pattern") == InfillPattern::ipLateralLattice;
for (auto el : { "lateral_lattice_angle_1", "lateral_lattice_angle_2"})
toggle_line(el, lattice_options);
// Adaptative Cubic and support cubic infill patterns do not support infill rotation.
bool FillAdaptive = (pattern == InfillPattern::ipAdaptiveCubic || pattern == InfillPattern::ipSupportCubic);
//Orca: disable infill_direction/solid_infill_direction if sparse_infill_rotate_template/solid_infill_rotate_template is not empty value
toggle_field("infill_direction", config->opt_string("sparse_infill_rotate_template") == "");
//Orca: disable infill_direction/solid_infill_direction if sparse_infill_rotate_template/solid_infill_rotate_template is not empty value and adaptive cubic/support cubic infill pattern is not selected
toggle_field("sparse_infill_rotate_template", !FillAdaptive);
toggle_field("infill_direction", config->opt_string("sparse_infill_rotate_template") == "" && !FillAdaptive);
toggle_field("solid_infill_direction", config->opt_string("solid_infill_rotate_template") == "");
toggle_line("infill_overhang_angle", config->opt_enum<InfillPattern>("sparse_infill_pattern") == InfillPattern::ipLateralHoneycomb);
std::string printer_type = wxGetApp().preset_bundle->printers.get_edited_preset().get_printer_type(wxGetApp().preset_bundle);