ENH: precise tree support wall count

Change the behavior of "tree support wall count" option, let it control precisely.
0 means auto.

jira: STUDIO-8068
github: 4780
Change-Id: I6d1a64cff9b121f5c0a3e910c5ddbfe6db198687
This commit is contained in:
Arthur 2024-09-12 15:50:37 +08:00 committed by Lane.Wei
parent 3a3e5e3844
commit a557bbe758
3 changed files with 6 additions and 14 deletions

View File

@ -3600,11 +3600,11 @@ void PrintConfigDef::init_fff_params()
def = this->add("tree_support_wall_count", coInt);
def->label = L("Support wall loops");
def->category = L("Support");
def->tooltip = L("This setting specifies the min count of support walls in the range of [0,2]. Actual wall count may be larger than the specified value.");
def->tooltip = L("This setting specifies the count of support walls in the range of [0,2]. 0 means auto.");
def->min = 0;
def->max = 2;
def->mode = comAdvanced;
def->set_default_value(new ConfigOptionInt(1));
def->set_default_value(new ConfigOptionInt(0));
def = this->add("chamber_temperatures", coInts);
def->label = L("Chamber temperature");

View File

@ -160,7 +160,9 @@ struct SupportParameters {
independent_layer_height = print_config.independent_support_layer_height;
// force double walls everywhere if wall count is larger than 1
tree_branch_diameter_double_wall_area_scaled = object_config.tree_support_wall_count.value > 1 ? 0.1 : 0.25 * sqr(scaled<double>(5.0)) * M_PI;
tree_branch_diameter_double_wall_area_scaled = object_config.tree_support_wall_count.value > 1 ? 0.1 :
object_config.tree_support_wall_count.value == 0 ? 0.25 * sqr(scaled<double>(5.0)) * M_PI :
std::numeric_limits<double>::max();
}
// Both top / bottom contacts and interfaces are soluble.

View File

@ -1545,17 +1545,7 @@ void TreeSupport::generate_toolpaths()
erSupportMaterial, filler_support.get(), support_density);
}
else {
size_t walls = wall_count;
//if (area_group.need_extra_wall && walls < 2) walls += 1;
//for (size_t i = 1; i < walls; i++) {
// Polygons contour_new = offset(poly.contour, -(i - 0.5f) * flow.scaled_spacing(), jtSquare);
// loops.insert(loops.end(), contour_new.begin(), contour_new.end());
//}
//fill_expolygons_with_sheath_generate_paths(ts_layer->support_fills.entities, loops, nullptr, 0, erSupportMaterial, flow, true, false);
SupportParameters support_params = m_support_params;
if(walls>1)
support_params.tree_branch_diameter_double_wall_area_scaled=0.1;
tree_supports_generate_paths(ts_layer->support_fills.entities, loops, flow, support_params);
tree_supports_generate_paths(ts_layer->support_fills.entities, loops, flow, m_support_params);
}
}
}