ENH: do not leave a gap for top interface if the top z distance is 0
Previously when the overhang is a slop, it's controled by the xy distance. Now we control it with top z distance as long as it's an interface. Note: Not working with Snug support, which has a different mechanism of support interface. Jira: STUDIO-3991 Change-Id: I1b7c4cf892b4c4ec2f3e668bd966ab0971212364 (cherry picked from commit c094b5ec83dc98dca7a8b8c0438b8f1994134db6)
This commit is contained in:
parent
a631e6cb99
commit
6612086816
|
@ -3359,7 +3359,9 @@ void PrintObjectSupportMaterial::trim_support_layers_by_object(
|
|||
// perimeter's width. $support contains the full shape of support
|
||||
// material, thus including the width of its foremost extrusion.
|
||||
// We leave a gap equal to a full extrusion width.
|
||||
support_layer.polygons = diff(support_layer.polygons, polygons_trimming);
|
||||
// arthur: do not leave a gap for top interface if the top z distance is 0.
|
||||
if (support_layer.layer_type != sltTopContact || m_slicing_params.gap_support_object != 0)
|
||||
support_layer.polygons = diff(support_layer.polygons, polygons_trimming);
|
||||
}
|
||||
});
|
||||
BOOST_LOG_TRIVIAL(debug) << "PrintObjectSupportMaterial::trim_support_layers_by_object() in parallel - end";
|
||||
|
|
|
@ -2265,8 +2265,9 @@ void TreeSupport::draw_circles(const std::vector<std::vector<Node*>>& contact_no
|
|||
roof_1st_layer = std::move(offset2_ex(roof_1st_layer, contact_dist_scaled, -contact_dist_scaled));
|
||||
|
||||
// avoid object
|
||||
//ExPolygons avoid_region_interface = m_ts_data->get_collision(m_ts_data->m_xy_distance, layer_nr);
|
||||
Polygons avoid_region_interface = get_trim_support_regions(*m_object, ts_layer, m_slicing_params.gap_object_support, m_slicing_params.gap_support_object, m_ts_data->m_xy_distance);
|
||||
// arthur: do not leave a gap for top interface if the top z distance is 0. See STUDIO-3991
|
||||
Polygons avoid_region_interface = get_trim_support_regions(*m_object, ts_layer, m_slicing_params.gap_object_support, m_slicing_params.gap_support_object,
|
||||
m_slicing_params.gap_support_object == 0 ? 0 : m_ts_data->m_xy_distance);
|
||||
if (has_circle_node) {
|
||||
roof_areas = avoid_object_remove_extra_small_parts(roof_areas, avoid_region_interface);
|
||||
roof_1st_layer = avoid_object_remove_extra_small_parts(roof_1st_layer, avoid_region_interface);
|
||||
|
|
Loading…
Reference in New Issue