Fix notifications during GCode export - only CRTICAL are now shown
Relax support detector parameters and warnings
This commit is contained in:
parent
3e37067cc9
commit
716e0254f4
@ -1200,7 +1200,7 @@ void Print::alert_when_supports_needed()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
message += "\n" + L("Consider enabling supports") + (recommend_brim ? (" " + L("and brim")) : "") + ".";
|
message += "\n" + L("Consider enabling supports") + (recommend_brim ? (" " + L("and/or brim")) : "") + ".";
|
||||||
|
|
||||||
if (objects_isssues.size() > 0) {
|
if (objects_isssues.size() > 0) {
|
||||||
this->active_step_add_warning(PrintStateBase::WarningLevel::NON_CRITICAL, message);
|
this->active_step_add_warning(PrintStateBase::WarningLevel::NON_CRITICAL, message);
|
||||||
|
@ -217,7 +217,7 @@ float estimate_curled_up_height(
|
|||||||
float dist_factor = std::max(point.distance - params.malformation_distance_factors.first * flow_width, 0.01f) /
|
float dist_factor = std::max(point.distance - params.malformation_distance_factors.first * flow_width, 0.01f) /
|
||||||
((params.malformation_distance_factors.second - params.malformation_distance_factors.first) * flow_width);
|
((params.malformation_distance_factors.second - params.malformation_distance_factors.first) * flow_width);
|
||||||
|
|
||||||
curled_up_height = layer_height * 2.0f * sqrt(sqrt(dist_factor)) * std::clamp(6.0f * point.curvature, 1.0f, 6.0f);
|
curled_up_height = layer_height * sqrt(sqrt(dist_factor)) * std::clamp(3.0f * point.curvature, 1.0f, 3.0f);
|
||||||
curled_up_height = std::min(curled_up_height, params.max_curled_height_factor * layer_height);
|
curled_up_height = std::min(curled_up_height, params.max_curled_height_factor * layer_height);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1183,23 +1183,22 @@ std::vector<std::pair<SupportPointCause, bool>> gather_issues(const SupportPoint
|
|||||||
[](const PartialObject &left, const PartialObject &right) { return left.volume > right.volume; });
|
[](const PartialObject &left, const PartialObject &right) { return left.volume > right.volume; });
|
||||||
|
|
||||||
float max_volume_part = partial_objects.front().volume;
|
float max_volume_part = partial_objects.front().volume;
|
||||||
bool unstable_floating_part_added = false;
|
|
||||||
for (const PartialObject &p : partial_objects) {
|
for (const PartialObject &p : partial_objects) {
|
||||||
if (p.volume > max_volume_part / 500.0f && !p.connected_to_bed) {
|
if (p.volume > max_volume_part / 200.0f && !p.connected_to_bed) {
|
||||||
result.emplace_back(SupportPointCause::UnstableFloatingPart, true);
|
result.emplace_back(SupportPointCause::UnstableFloatingPart, true);
|
||||||
unstable_floating_part_added = true;
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!unstable_floating_part_added) {
|
// should be detected in previous step
|
||||||
for (const SupportPoint &sp : support_points) {
|
// if (!unstable_floating_part_added) {
|
||||||
if (sp.cause == SupportPointCause::UnstableFloatingPart) {
|
// for (const SupportPoint &sp : support_points) {
|
||||||
result.emplace_back(SupportPointCause::UnstableFloatingPart, true);
|
// if (sp.cause == SupportPointCause::UnstableFloatingPart) {
|
||||||
break;
|
// result.emplace_back(SupportPointCause::UnstableFloatingPart, true);
|
||||||
}
|
// break;
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
|
// }
|
||||||
|
|
||||||
std::vector<SupportPoint> ext_supp_points{};
|
std::vector<SupportPoint> ext_supp_points{};
|
||||||
ext_supp_points.reserve(support_points.size());
|
ext_supp_points.reserve(support_points.size());
|
||||||
@ -1245,7 +1244,7 @@ std::vector<std::pair<SupportPointCause, bool>> gather_issues(const SupportPoint
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ext_supp_points.size() > 5) {
|
if (ext_supp_points.size() > max_volume_part / 200.0f) {
|
||||||
result.emplace_back(SupportPointCause::FloatingExtrusion, false);
|
result.emplace_back(SupportPointCause::FloatingExtrusion, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -33,7 +33,7 @@ struct Params
|
|||||||
}
|
}
|
||||||
|
|
||||||
// the algorithm should use the following units for all computations: distance [mm], mass [g], time [s], force [g*mm/s^2]
|
// the algorithm should use the following units for all computations: distance [mm], mass [g], time [s], force [g*mm/s^2]
|
||||||
const float bridge_distance = 12.0f; // mm
|
const float bridge_distance = 16.0f; // mm
|
||||||
const float max_acceleration; // mm/s^2 ; max acceleration of object in XY -- should be applicable only to printers with bed slinger,
|
const float max_acceleration; // mm/s^2 ; max acceleration of object in XY -- should be applicable only to printers with bed slinger,
|
||||||
// however we do not have such info yet. The force is usually small anyway, so not such a big deal to include it everytime
|
// however we do not have such info yet. The force is usually small anyway, so not such a big deal to include it everytime
|
||||||
const int raft_layers_count;
|
const int raft_layers_count;
|
||||||
@ -42,7 +42,7 @@ struct Params
|
|||||||
BrimType brim_type;
|
BrimType brim_type;
|
||||||
const float brim_width;
|
const float brim_width;
|
||||||
|
|
||||||
const std::pair<float,float> malformation_distance_factors = std::pair<float, float> { 0.4, 1.2 };
|
const std::pair<float,float> malformation_distance_factors = std::pair<float, float> { 0.5, 1.1 };
|
||||||
const float max_curled_height_factor = 10.0f;
|
const float max_curled_height_factor = 10.0f;
|
||||||
|
|
||||||
const float min_distance_between_support_points = 3.0f; //mm
|
const float min_distance_between_support_points = 3.0f; //mm
|
||||||
@ -52,8 +52,8 @@ struct Params
|
|||||||
const float gravity_constant = 9806.65f; // mm/s^2; gravity acceleration on Earth's surface, algorithm assumes that printer is in upwards position.
|
const float gravity_constant = 9806.65f; // mm/s^2; gravity acceleration on Earth's surface, algorithm assumes that printer is in upwards position.
|
||||||
const double filament_density = 1.25e-3f; // g/mm^3 ; Common filaments are very lightweight, so precise number is not that important
|
const double filament_density = 1.25e-3f; // g/mm^3 ; Common filaments are very lightweight, so precise number is not that important
|
||||||
const double material_yield_strength = 33.0f * 1e6f; // (g*mm/s^2)/mm^2; 33 MPa is yield strength of ABS, which has the lowest yield strength from common materials.
|
const double material_yield_strength = 33.0f * 1e6f; // (g*mm/s^2)/mm^2; 33 MPa is yield strength of ABS, which has the lowest yield strength from common materials.
|
||||||
const float standard_extruder_conflict_force = 5.0f * gravity_constant; // force that can occasionally push the model due to various factors (filament leaks, small curling, ... );
|
const float standard_extruder_conflict_force = 10.0f * gravity_constant; // force that can occasionally push the model due to various factors (filament leaks, small curling, ... );
|
||||||
const float malformations_additive_conflict_extruder_force = 100.0f * gravity_constant; // for areas with possible high layered curled filaments
|
const float malformations_additive_conflict_extruder_force = 65.0f * gravity_constant; // for areas with possible high layered curled filaments
|
||||||
|
|
||||||
// MPa * 1e^6 = (g*mm/s^2)/mm^2 = g/(mm*s^2); yield strength of the bed surface
|
// MPa * 1e^6 = (g*mm/s^2)/mm^2 = g/(mm*s^2); yield strength of the bed surface
|
||||||
double get_bed_adhesion_yield_strength() const {
|
double get_bed_adhesion_yield_strength() const {
|
||||||
@ -72,9 +72,8 @@ struct Params
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//just return PLA adhesion value as value for supports
|
|
||||||
double get_support_spots_adhesion_strength() const {
|
double get_support_spots_adhesion_strength() const {
|
||||||
return 0.02f * 1e6;
|
return 0.016f * 1e6;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -4367,13 +4367,20 @@ void Plater::priv::clear_warnings()
|
|||||||
}
|
}
|
||||||
bool Plater::priv::warnings_dialog()
|
bool Plater::priv::warnings_dialog()
|
||||||
{
|
{
|
||||||
if (current_warnings.empty())
|
std::vector<std::pair<Slic3r::PrintStateBase::Warning, size_t>> current_critical_warnings{};
|
||||||
|
for (const auto& w : current_warnings) {
|
||||||
|
if (w.first.level == PrintStateBase::WarningLevel::CRITICAL) {
|
||||||
|
current_critical_warnings.push_back(w);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (current_critical_warnings.empty())
|
||||||
return true;
|
return true;
|
||||||
std::string text = _u8L("There are active warnings concerning sliced models:") + "\n";
|
std::string text = _u8L("There are active warnings concerning sliced models:") + "\n";
|
||||||
for (auto const& it : current_warnings) {
|
for (auto const& it : current_critical_warnings) {
|
||||||
size_t next_n = it.first.message.find_first_of('\n', 0);
|
size_t next_n = it.first.message.find_first_of('\n', 0);
|
||||||
text += "\n";
|
text += "\n";
|
||||||
if (next_n != std::string::npos)
|
if (next_n != std::string::npos)
|
||||||
text += it.first.message.substr(0, next_n);
|
text += it.first.message.substr(0, next_n);
|
||||||
else
|
else
|
||||||
text += it.first.message;
|
text += it.first.message;
|
||||||
|
Loading…
Reference in New Issue
Block a user