Belt temperature tower: refuse a range without a model

The calibration fell back to the 230-190 tower when no embossed model
existed for the requested range, so the printed numbers did not match
the temperatures.  Show an error naming the range and stop instead.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
harrierpigeon
2026-10-07 19:08:58 -05:00
co-authored by Claude Fable 5.1
parent 798ca8272e
commit e78f437ce4
+9 -3
View File
@@ -17080,9 +17080,15 @@ void Plater::calib_temp(const Calib_Params& params) {
const std::string calib_dir = Slic3r::resources_dir() + "/calib/temperature_tower/";
std::string asset = calib_dir + "belt_temp_tower_" + std::to_string(t_start) + "_" + std::to_string(t_end) + ".stl";
if (!boost::filesystem::exists(asset)) {
BOOST_LOG_TRIVIAL(warning) << "[belt_temp] no embossed provini for " << t_start << "->" << t_end
<< ", falling back to 230_190 (embossed numbers will not match)";
asset = calib_dir + "belt_temp_tower_230_190.stl";
// The embossed numbers are part of the model, so another model's tower would
// print numbers that do not match its temperatures.
MessageDialog dlg(static_cast<wxWindow *>(wxGetApp().mainframe),
format_wxstr(_L("No belt temperature tower is available for the range %1% to %2% °C. "
"Use a range the tower models cover, for example 230 to 190."),
t_start, t_end),
_L("Temperature tower"), wxICON_ERROR | wxOK);
dlg.ShowModal();
return;
}
if (!add_model(false, asset) || model().objects.empty())
return;