diff --git a/src/libslic3r/Support/TreeSupportCommon.cpp b/src/libslic3r/Support/TreeSupportCommon.cpp index ea3e675220..6e758ce22a 100644 --- a/src/libslic3r/Support/TreeSupportCommon.cpp +++ b/src/libslic3r/Support/TreeSupportCommon.cpp @@ -33,16 +33,16 @@ TreeSupportMeshGroupSettings::TreeSupportMeshGroupSettings(const PrintObject &pr assert(config.support_material_style == smsTree || config.support_material_style == smsOrganic); // Calculate maximum external perimeter width over all printing regions, taking into account the default layer height. - coordf_t external_perimeter_width = 0.; + double external_perimeter_width = 0.; for (size_t region_id = 0; region_id < print_object.num_printing_regions(); ++ region_id) { const PrintRegion ®ion = print_object.printing_region(region_id); - external_perimeter_width = std::max(external_perimeter_width, region.flow(print_object, frExternalPerimeter, config.layer_height).width()); + external_perimeter_width = std::max(external_perimeter_width, region.flow(print_object, frExternalPerimeter, config.layer_height).width()); } this->layer_height = scaled(config.layer_height.value); this->resolution = scaled(print_config.gcode_resolution.value); // Arache feature - this->min_feature_size = scaled(config.min_feature_size.value); + this->min_feature_size = scaled(external_perimeter_width * 0.25); // +1 makes the threshold inclusive this->support_angle = 0.5 * M_PI - std::clamp((config.support_material_threshold + 1) * M_PI / 180., 0., 0.5 * M_PI); this->support_line_width = support_material_flow(&print_object, config.layer_height).scaled_width(); @@ -200,4 +200,4 @@ void tree_supports_show_error(std::string_view message, bool critical) #endif // TREE_SUPPORT_SHOW_ERRORS_WIN32 } -} // namespace Slic3r::FFFTreeSupport \ No newline at end of file +} // namespace Slic3r::FFFTreeSupport