gui integration, overhang angle hack

This commit is contained in:
PavelMikus 2022-07-29 13:08:27 +02:00
parent 14f109e703
commit 62c3ca5e99
4 changed files with 13 additions and 11 deletions

View file

@ -424,7 +424,9 @@ void PrintObject::generate_support_spots()
std::all_of(this->model_object()->volumes.begin(), this->model_object()->volumes.end(),
[](const ModelVolume* mv){return mv->supported_facets.empty();})
) {
SupportSpotsGenerator::Issues issues = SupportSpotsGenerator::full_search(this);
SupportSpotsGenerator::Params params{};
params.overhang_angle_deg = 90.001f - this->m_config.support_material_threshold;
SupportSpotsGenerator::Issues issues = SupportSpotsGenerator::full_search(this, params);
auto obj_transform = this->trafo_centered();
for (ModelVolume *model_volume : this->model_object()->volumes) {
if (model_volume->is_model_part()) {

View file

@ -15,8 +15,8 @@
#include "libslic3r/ClipperUtils.hpp"
#include "Geometry/ConvexHull.hpp"
#define DETAILED_DEBUG_LOGS
#define DEBUG_FILES
//#define DETAILED_DEBUG_LOGS
//#define DEBUG_FILES
#ifdef DEBUG_FILES
#include <boost/nowide/cstdio.hpp>
@ -406,8 +406,8 @@ void check_extrusion_entity_stability(const ExtrusionEntity *entity,
bool in_layer_dist_condition = bridging_acc.distance
> params.bridge_distance / (1.0f + (bridging_acc.max_curvature
* params.bridge_distance_decrease_by_curvature_factor / PI));
bool between_layers_condition = fabs(dist_from_prev_layer) > 5.0f*overhang_dist ||
prev_layer_lines.get_line(nearest_line_idx).malformation > 0.3f;
bool between_layers_condition = fabs(dist_from_prev_layer) > 3.0f*flow_width ||
prev_layer_lines.get_line(nearest_line_idx).malformation > 0.6f;
if (in_layer_dist_condition && between_layers_condition) {
issues.support_points.emplace_back(to_vec3f(current_line.b), 0.0f, Vec3f(0.f, 0.0f, -1.0f));
@ -417,13 +417,13 @@ void check_extrusion_entity_stability(const ExtrusionEntity *entity,
}
//malformation
if (fabs(dist_from_prev_layer) < overhang_dist * 5.0f) {
if (fabs(dist_from_prev_layer) < 3.0f*flow_width) {
const ExtrusionLine &nearest_line = prev_layer_lines.get_line(nearest_line_idx);
current_line.malformation += 0.9 * nearest_line.malformation;
}
if (dist_from_prev_layer > overhang_dist) {
malformation_acc.add_distance(current_line.len);
current_line.malformation += 0.1f
current_line.malformation += 0.3f
* (0.8f + 0.2f * malformation_acc.max_curvature / (1.0f + 0.5f * malformation_acc.distance));
} else {
malformation_acc.reset();

View file

@ -11,7 +11,7 @@ struct Params {
// 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_decrease_by_curvature_factor = 5.0f; // allowed bridge distance = bridge_distance / (this factor * (curvature / PI) )
const float overhang_angle_deg = 55.0f;
float overhang_angle_deg = 50.0f;
const float min_distance_between_support_points = 3.0f; //mm
const float support_points_interface_radius = 0.6f; // mm
@ -21,8 +21,8 @@ struct Params {
const float filament_density = 1.25e-3f ; // g/mm^3 ; Common filaments are very lightweight, so precise number is not that important
const float bed_adhesion_yield_strength = 0.128f * 1e6f; //MPa * 1e^6 = (g*mm/s^2)/mm^2 = g/(mm*s^2); yield strength of the bed surface
const float 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 = 20.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 = 150.0f * gravity_constant; // for areas with possible high layered curled filaments
const float standard_extruder_conflict_force = 50.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 = 200.0f * gravity_constant; // for areas with possible high layered curled filaments
};
struct SupportPoint {

View file

@ -282,7 +282,7 @@ void ConfigManipulation::toggle_print_fff_options(DynamicPrintConfig* config)
"dont_support_bridges", "support_material_extrusion_width", "support_material_contact_distance",
"support_material_xy_spacing" })
toggle_field(el, have_support_material);
toggle_field("support_material_threshold", have_support_material_auto);
// toggle_field("support_material_threshold", have_support_material_auto);
toggle_field("support_material_bottom_contact_distance", have_support_material && ! have_support_soluble);
toggle_field("support_material_closing_radius", have_support_material && support_material_style == smsSnug);