FIX: crash of "filling bed"

"get_arrange_settings() const" gets trapped in infinite recursive calling.
Now we delete this function.

jira: STUDIO-5688
Change-Id: Ia39974734bb37b2a2f06b5bf78185f01be726872
(cherry picked from commit 631365822319139ae84e8cd8cbad5f10d9a10c4a)
This commit is contained in:
Arthur 2023-12-26 17:52:51 +08:00 committed by Lane.Wei
parent a037d28da3
commit 6c6934bf81
3 changed files with 5 additions and 17 deletions

View File

@ -1009,17 +1009,6 @@ public:
void highlight_toolbar_item(const std::string& item_name);
void highlight_gizmo(const std::string& gizmo_name);
ArrangeSettings get_arrange_settings() const {
const ArrangeSettings &settings = get_arrange_settings();
ArrangeSettings ret = settings;
if (&settings == &m_arrange_settings_fff_seq_print) {
ret.distance = std::max(ret.distance,
float(min_object_distance(*m_config)));
}
return ret;
}
// Timestamp for FPS calculation and notification fade-outs.
static int64_t timestamp_now() {
#ifdef _WIN32

View File

@ -759,10 +759,10 @@ double bed_stride_y(const Plater* plater) {
// call before get selected and unselected
arrangement::ArrangeParams init_arrange_params(Plater *p)
{
arrangement::ArrangeParams params;
GLCanvas3D::ArrangeSettings &settings = p->canvas3D()->get_arrange_settings();
auto & print = wxGetApp().plater()->get_partplate_list().get_current_fff_print();
const PrintConfig& print_config = print.config();
arrangement::ArrangeParams params;
GLCanvas3D::ArrangeSettings &settings = p->canvas3D()->get_arrange_settings();
auto &print = wxGetApp().plater()->get_partplate_list().get_current_fff_print();
const PrintConfig &print_config = print.config();
params.clearance_height_to_rod = print_config.extruder_clearance_height_to_rod.value;
params.clearance_height_to_lid = print_config.extruder_clearance_height_to_lid.value;

View File

@ -146,8 +146,7 @@ void FillBedJob::prepare()
double sc = scaled<double>(1.) * scaled(1.);
const GLCanvas3D::ArrangeSettings& settings = static_cast<const GLCanvas3D*>(m_plater->canvas3D())->get_arrange_settings();
auto polys = offset_ex(m_selected.front().poly, scaled(settings.distance) / 2);
auto polys = offset_ex(m_selected.front().poly, params.min_obj_distance / 2);
ExPolygon poly = polys.empty() ? m_selected.front().poly : polys.front();
double poly_area = poly.area() / sc;
double unsel_area = std::accumulate(m_unselected.begin(),