FIX: bottom layer of erSupportTransition dont overlap with base_support

It's because the angle pramater is initialized outside of parallel computing

jira: STUDIO-11015
Change-Id: I2746880683f705cedc5eaca8a41d7b385e22368f
This commit is contained in:
jiaxi.chen 2025-03-20 16:57:13 +08:00 committed by lane.wei
parent 1c62771c4c
commit 8dd8979201
1 changed files with 10 additions and 8 deletions

View File

@ -1557,14 +1557,6 @@ void TreeSupport::generate_toolpaths()
if (m_object->support_layer_count() <= m_raft_layers)
return;
BoundingBox bbox_object(Point(-scale_(1.), -scale_(1.0)), Point(scale_(1.), scale_(1.)));
std::shared_ptr<Fill> filler_interface = std::shared_ptr<Fill>(Fill::new_from_type(m_support_params.contact_fill_pattern));
std::shared_ptr<Fill> filler_Roof1stLayer = std::shared_ptr<Fill>(Fill::new_from_type(ipRectilinear));
filler_interface->set_bounding_box(bbox_object);
filler_Roof1stLayer->set_bounding_box(bbox_object);
filler_interface->angle = Geometry::deg2rad(object_config.support_angle.value + 90.);
filler_Roof1stLayer->angle = Geometry::deg2rad(object_config.support_angle.value + 90.);
// generate tree support tool paths
tbb::parallel_for(
tbb::blocked_range<size_t>(m_raft_layers, m_object->support_layer_count()),
@ -1574,6 +1566,10 @@ void TreeSupport::generate_toolpaths()
if (m_object->print()->canceled())
break;
BoundingBox bbox_object(Point(-scale_(1.), -scale_(1.0)), Point(scale_(1.), scale_(1.)));
std::shared_ptr<Fill> filler_interface = std::shared_ptr<Fill>(Fill::new_from_type(m_support_params.contact_fill_pattern));
std::shared_ptr<Fill> filler_Roof1stLayer = std::shared_ptr<Fill>(Fill::new_from_type(ipRectilinear));
//m_object->print()->set_status(70, (boost::format(_u8L("Support: generate toolpath at layer %d")) % layer_id).str());
SupportLayer* ts_layer = m_object->get_support_layer(layer_id);
@ -1584,6 +1580,12 @@ void TreeSupport::generate_toolpaths()
ts_layer->support_fills.no_sort = false;
for (auto& area_group : ts_layer->area_groups) {
filler_interface->set_bounding_box(bbox_object);
filler_Roof1stLayer->set_bounding_box(bbox_object);
filler_interface->angle = Geometry::deg2rad(object_config.support_angle.value + 90.);
filler_Roof1stLayer->angle = Geometry::deg2rad(object_config.support_angle.value + 90.);
ExPolygon& poly = *area_group.area;
ExPolygons polys;
FillParams fill_params;