mirror of
https://github.com/SoftFever/OrcaSlicer.git
synced 2025-07-07 23:17:35 -06:00
FIX: tree(manual) didn't support well
1. We have a logic to add supports at corners for tree(auto), now I extend it to tree(manual) also. 2. Only show support_critical_regions_only option to tree(auto). Github: #2008 Change-Id: I161444da93464fd2ef0e0f3b40a0c5852beba351 (cherry picked from commit af4efb4aadc2a4d16de3eea881c6610955985fff)
This commit is contained in:
parent
24bd494ad9
commit
44fdfe8fff
2 changed files with 7 additions and 4 deletions
|
@ -1101,7 +1101,7 @@ void TreeSupport::detect_overhangs(bool detect_first_sharp_tail_only)
|
||||||
SupportLayer* ts_layer = m_object->get_support_layer(layer_nr + m_raft_layers);
|
SupportLayer* ts_layer = m_object->get_support_layer(layer_nr + m_raft_layers);
|
||||||
auto layer = m_object->get_layer(layer_nr);
|
auto layer = m_object->get_layer(layer_nr);
|
||||||
auto lower_layer = layer->lower_layer;
|
auto lower_layer = layer->lower_layer;
|
||||||
if (support_critical_regions_only) {
|
if (support_critical_regions_only && is_auto(stype)) {
|
||||||
ts_layer->overhang_areas.clear();
|
ts_layer->overhang_areas.clear();
|
||||||
if (lower_layer == nullptr)
|
if (lower_layer == nullptr)
|
||||||
ts_layer->overhang_areas = layer->sharp_tails;
|
ts_layer->overhang_areas = layer->sharp_tails;
|
||||||
|
@ -1153,7 +1153,8 @@ void TreeSupport::detect_overhangs(bool detect_first_sharp_tail_only)
|
||||||
if (svg.is_opened()) {
|
if (svg.is_opened()) {
|
||||||
svg.draw_outline(m_object->get_layer(layer->id())->lslices, "yellow");
|
svg.draw_outline(m_object->get_layer(layer->id())->lslices, "yellow");
|
||||||
svg.draw(layer->overhang_areas, "orange");
|
svg.draw(layer->overhang_areas, "orange");
|
||||||
svg.draw(blockers[layer->id()], "red");
|
if (blockers.size() > layer->id())
|
||||||
|
svg.draw(blockers[layer->id()], "red");
|
||||||
for (auto& overhang : layer->overhang_areas) {
|
for (auto& overhang : layer->overhang_areas) {
|
||||||
double aarea = overhang.area()/ area_thresh_well_supported;
|
double aarea = overhang.area()/ area_thresh_well_supported;
|
||||||
auto pt = get_extents(overhang).center();
|
auto pt = get_extents(overhang).center();
|
||||||
|
@ -3481,7 +3482,8 @@ void TreeSupport::generate_contact_points(std::vector<std::vector<TreeSupport::N
|
||||||
curr_nodes.emplace_back(contact_node);
|
curr_nodes.emplace_back(contact_node);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (ts_layer->overhang_types[&overhang_part] == SupportLayer::Detected) {
|
// add supports at corners for both auto and manual overhangs, github #2008
|
||||||
|
if (/*ts_layer->overhang_types[&overhang_part] == SupportLayer::Detected*/1) {
|
||||||
// add points at corners
|
// add points at corners
|
||||||
auto &points = overhang_part.contour.points;
|
auto &points = overhang_part.contour.points;
|
||||||
int nSize = points.size();
|
int nSize = points.size();
|
||||||
|
|
|
@ -607,7 +607,7 @@ void ConfigManipulation::toggle_print_fff_options(DynamicPrintConfig *config, co
|
||||||
"support_interface_pattern", "support_interface_top_layers", "support_interface_bottom_layers",
|
"support_interface_pattern", "support_interface_top_layers", "support_interface_bottom_layers",
|
||||||
"bridge_no_support", "max_bridge_length", "support_top_z_distance", "support_bottom_z_distance",
|
"bridge_no_support", "max_bridge_length", "support_top_z_distance", "support_bottom_z_distance",
|
||||||
//BBS: add more support params to dependent of enable_support
|
//BBS: add more support params to dependent of enable_support
|
||||||
"support_type", "support_on_build_plate_only", "support_critical_regions_only",
|
"support_type", "support_on_build_plate_only",
|
||||||
"support_remove_small_overhang",
|
"support_remove_small_overhang",
|
||||||
"support_object_xy_distance"/*, "independent_support_layer_height"*/})
|
"support_object_xy_distance"/*, "independent_support_layer_height"*/})
|
||||||
toggle_field(el, have_support_material);
|
toggle_field(el, have_support_material);
|
||||||
|
@ -621,6 +621,7 @@ void ConfigManipulation::toggle_print_fff_options(DynamicPrintConfig *config, co
|
||||||
// hide tree support settings when normal is selected
|
// hide tree support settings when normal is selected
|
||||||
for (auto el : {"tree_support_branch_angle", "tree_support_wall_count", "tree_support_branch_distance", "tree_support_branch_diameter", "max_bridge_length","tree_support_brim_width" })
|
for (auto el : {"tree_support_branch_angle", "tree_support_wall_count", "tree_support_branch_distance", "tree_support_branch_diameter", "max_bridge_length","tree_support_brim_width" })
|
||||||
toggle_line(el, support_is_tree);
|
toggle_line(el, support_is_tree);
|
||||||
|
toggle_line("support_critical_regions_only", is_auto(support_type) && support_is_tree);
|
||||||
|
|
||||||
// tree support use max_bridge_length instead of bridge_no_support
|
// tree support use max_bridge_length instead of bridge_no_support
|
||||||
toggle_line("bridge_no_support", !support_is_tree);
|
toggle_line("bridge_no_support", !support_is_tree);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue