FIX: layer height cannot exceed limits

Jira: STUDIO-4279

Change-Id: I9c580f9192f7d37123d76e72a62022a48c2a5315
This commit is contained in:
liz.li 2023-09-11 10:19:38 +08:00 committed by Lane.Wei
parent b3d9ff95ec
commit 76f3f22bcc

View File

@ -1188,11 +1188,23 @@ StringObjectException Print::validate(StringObjectException *warning, Polygons*
if (layer_height > min_nozzle_diameter)
return {L("Layer height cannot exceed nozzle diameter"), object, "layer_height"};
double min_layer_height_from_nozzle = 0.01;
double max_layer_height_from_nozzle = std::numeric_limits<double>::max();
for (unsigned int extruder_id : extruders) {
min_layer_height_from_nozzle = std::max(min_layer_height_from_nozzle, m_config.min_layer_height.get_at(extruder_id));
max_layer_height_from_nozzle = std::min(max_layer_height_from_nozzle, m_config.max_layer_height.get_at(extruder_id));
}
if (layer_height > max_layer_height_from_nozzle ||
layer_height < min_layer_height_from_nozzle) {
return { L("Layer height cannot exceed the limit in Printer Settings -> Extruder -> Layer height limits"), object, "layer_height" };
}
for (auto range : object->m_model_object->layer_config_ranges) {
double range_layer_height = range.second.opt_float("layer_height");
if (range_layer_height > object->m_slicing_params.max_layer_height ||
range_layer_height < object->m_slicing_params.min_layer_height)
return { L("Layer height cannot exceed nozzle diameter"), nullptr, "layer_height" };
if (range_layer_height > max_layer_height_from_nozzle ||
range_layer_height < min_layer_height_from_nozzle)
return { L("Layer height cannot exceed the limit in Printer Settings -> Extruder -> Layer height limits"), nullptr, "layer_height" };
}
// Validate extrusion widths.