FIX: blockers not working for sharp tails of tree support
also change default style to tree organic jira: STUDIO-6801 Change-Id: Iab1d8c6117139c9a7a4c1fa71de0a13bcb356dd5 (cherry picked from commit d2c4efad58f16b23bef49bd47d3b70bf322d6f55)
This commit is contained in:
parent
1389862ad8
commit
cd9305e3e0
|
@ -605,7 +605,7 @@ TreeSupport::TreeSupport(PrintObject& object, const SlicingParameters &slicing_p
|
||||||
support_type = m_object_config->support_type;
|
support_type = m_object_config->support_type;
|
||||||
support_style = m_object_config->support_style;
|
support_style = m_object_config->support_style;
|
||||||
if (support_style == smsDefault)
|
if (support_style == smsDefault)
|
||||||
support_style = smsTreeHybrid;
|
support_style = smsTreeOrganic;
|
||||||
SupportMaterialPattern support_pattern = m_object_config->support_base_pattern;
|
SupportMaterialPattern support_pattern = m_object_config->support_base_pattern;
|
||||||
if (support_style == smsTreeHybrid && support_pattern == smpDefault)
|
if (support_style == smsTreeHybrid && support_pattern == smpDefault)
|
||||||
support_pattern = smpRectilinear;
|
support_pattern = smpRectilinear;
|
||||||
|
@ -1056,18 +1056,20 @@ void TreeSupport::detect_overhangs(bool check_support_necessity/* = false*/)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (layer_nr < blockers.size()) {
|
||||||
|
// Arthur: union_ is a must because after mirroring, the blocker polygons are in left-hand coordinates, ie clockwise,
|
||||||
|
// which are not valid polygons, and will be removed by offset_ex. union_ can make these polygons right.
|
||||||
|
ExPolygons blocker = offset_ex(union_(blockers[layer_nr]), scale_(radius_sample_resolution));
|
||||||
|
layer->loverhangs = diff_ex(layer->loverhangs, blocker);
|
||||||
|
layer->cantilevers = diff_ex(layer->cantilevers, blocker);
|
||||||
|
sharp_tail_overhangs = diff_ex(sharp_tail_overhangs, blocker);
|
||||||
|
}
|
||||||
|
|
||||||
if (support_critical_regions_only && is_auto(stype)) {
|
if (support_critical_regions_only && is_auto(stype)) {
|
||||||
layer->loverhangs.clear(); // remove oridinary overhangs, only keep cantilevers and sharp tails (added later)
|
layer->loverhangs.clear(); // remove oridinary overhangs, only keep cantilevers and sharp tails (added later)
|
||||||
append(layer->loverhangs, layer->cantilevers);
|
append(layer->loverhangs, layer->cantilevers);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (layer_nr < blockers.size()) {
|
|
||||||
Polygons& blocker = blockers[layer_nr];
|
|
||||||
// Arthur: union_ is a must because after mirroring, the blocker polygons are in left-hand coordinates, ie clockwise,
|
|
||||||
// which are not valid polygons, and will be removed by offset_ex. union_ can make these polygons right.
|
|
||||||
layer->loverhangs = diff_ex(layer->loverhangs, offset_ex(union_(blocker), scale_(radius_sample_resolution)));
|
|
||||||
}
|
|
||||||
|
|
||||||
if (max_bridge_length > 0 && layer->loverhangs.size() > 0 && lower_layer) {
|
if (max_bridge_length > 0 && layer->loverhangs.size() > 0 && lower_layer) {
|
||||||
// do not break bridge for normal part in TreeHybrid, nor Tree Strong
|
// do not break bridge for normal part in TreeHybrid, nor Tree Strong
|
||||||
bool break_bridge = !(support_style == smsTreeHybrid && area(layer->loverhangs) > m_support_params.thresh_big_overhang)
|
bool break_bridge = !(support_style == smsTreeHybrid && area(layer->loverhangs) > m_support_params.thresh_big_overhang)
|
||||||
|
|
Loading…
Reference in New Issue