FIX: do not merge overhangs when buildplate_only is on
Jira: STUDIO-3024 Change-Id: I87f73a556945d1b1640c515336ca108f65b88bdf (cherry picked from commit 1c09513324bb965647bbb157be1cacaf9371ce07)
This commit is contained in:
parent
3ea602091e
commit
12d0a51362
1 changed files with 4 additions and 2 deletions
|
@ -1142,7 +1142,7 @@ void TreeSupport::detect_overhangs(bool detect_first_sharp_tail_only)
|
||||||
|
|
||||||
#ifdef SUPPORT_TREE_DEBUG_TO_SVG
|
#ifdef SUPPORT_TREE_DEBUG_TO_SVG
|
||||||
for (const SupportLayer* layer : m_object->support_layers()) {
|
for (const SupportLayer* layer : m_object->support_layers()) {
|
||||||
if (layer->overhang_areas.empty() && blockers[layer->id()].empty())
|
if (layer->overhang_areas.empty() && (blockers.size()<=layer->id() || blockers[layer->id()].empty()))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
SVG svg(format("SVG/overhang_areas_%s.svg", layer->print_z), m_object->bounding_box());
|
SVG svg(format("SVG/overhang_areas_%s.svg", layer->print_z), m_object->bounding_box());
|
||||||
|
@ -1981,6 +1981,7 @@ void TreeSupport::draw_circles(const std::vector<std::vector<Node*>>& contact_no
|
||||||
int bottom_gap_layers = round(m_slicing_params.gap_object_support / m_slicing_params.layer_height);
|
int bottom_gap_layers = round(m_slicing_params.gap_object_support / m_slicing_params.layer_height);
|
||||||
const coordf_t branch_radius = config.tree_support_branch_diameter.value / 2;
|
const coordf_t branch_radius = config.tree_support_branch_diameter.value / 2;
|
||||||
const coordf_t branch_radius_scaled = scale_(branch_radius);
|
const coordf_t branch_radius_scaled = scale_(branch_radius);
|
||||||
|
bool on_buildplate_only = config.support_on_build_plate_only.value;
|
||||||
Polygon branch_circle; //Pre-generate a circle with correct diameter so that we don't have to recompute those (co)sines every time.
|
Polygon branch_circle; //Pre-generate a circle with correct diameter so that we don't have to recompute those (co)sines every time.
|
||||||
|
|
||||||
// Use square support if there are too many nodes per layer because circle support needs much longer time to compute
|
// Use square support if there are too many nodes per layer because circle support needs much longer time to compute
|
||||||
|
@ -2113,7 +2114,8 @@ void TreeSupport::draw_circles(const std::vector<std::vector<Node*>>& contact_no
|
||||||
}
|
}
|
||||||
area.emplace_back(ExPolygon(circle));
|
area.emplace_back(ExPolygon(circle));
|
||||||
// merge overhang to get a smoother interface surface
|
// merge overhang to get a smoother interface surface
|
||||||
if (top_interface_layers > 0 && node.support_roof_layers_below > 0) {
|
// Do not merge when buildplate_only is on, because some underneath nodes may have been deleted.
|
||||||
|
if (top_interface_layers > 0 && node.support_roof_layers_below > 0 && !on_buildplate_only) {
|
||||||
ExPolygons overhang_expanded;
|
ExPolygons overhang_expanded;
|
||||||
if (node.overhang->contour.size() > 100 || node.overhang->holes.size()>1)
|
if (node.overhang->contour.size() > 100 || node.overhang->holes.size()>1)
|
||||||
overhang_expanded.emplace_back(*node.overhang);
|
overhang_expanded.emplace_back(*node.overhang);
|
||||||
|
|
Loading…
Reference in a new issue