Fixup of previous commit:
the previous fix only works for objects that have equal height
This commit is contained in:
parent
05e94eb0ab
commit
037a866f22
@ -541,16 +541,17 @@ std::string Print::validate(std::string* warning) const
|
||||
// a copy of another, or when a layer height modifier is used the same way on both objects.
|
||||
// The latter case might create a floating point inaccuracy mismatch, so compare
|
||||
// element-wise using an epsilon check.
|
||||
bool profiles_equal = layer_height_profiles[idx_object].size() == layer_height_profiles[tallest_object_idx].size();
|
||||
size_t i = 0;
|
||||
const coordf_t eps = 0.5 * EPSILON; // layers closer than EPSILON will be merged later. Let's make
|
||||
// this check a bit more sensitive to make sure we never consider two different layers as one.
|
||||
while (profiles_equal && i < layer_height_profiles[idx_object].size()) {
|
||||
profiles_equal = (std::abs(layer_height_profiles[idx_object][i] - layer_height_profiles[tallest_object_idx][i]) < eps);
|
||||
while (i < layer_height_profiles[idx_object].size()
|
||||
&& i < layer_height_profiles[tallest_object_idx].size()) {
|
||||
if (i%2 == 0 && layer_height_profiles[tallest_object_idx][i] > layer_height_profiles[idx_object][layer_height_profiles[idx_object].size() - 2 ])
|
||||
break;
|
||||
if (! std::abs(layer_height_profiles[idx_object][i] - layer_height_profiles[tallest_object_idx][i]) < eps)
|
||||
return L("The Wipe tower is only supported if all objects have the same variable layer height");
|
||||
++i;
|
||||
}
|
||||
if (! profiles_equal)
|
||||
return L("The Wipe tower is only supported if all objects have the same variable layer height");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user