Tree supports: Added the most important tree support parameters
to parameter layer.
This commit is contained in:
parent
443f5c1821
commit
88ba9ab1c8
@ -450,7 +450,9 @@ static std::vector<std::string> s_Preset_print_options {
|
||||
"support_material_synchronize_layers", "support_material_angle", "support_material_interface_layers", "support_material_bottom_interface_layers",
|
||||
"support_material_interface_pattern", "support_material_interface_spacing", "support_material_interface_contact_loops",
|
||||
"support_material_contact_distance", "support_material_bottom_contact_distance",
|
||||
"support_material_buildplate_only", "dont_support_bridges", "thick_bridges", "notes", "complete_objects", "extruder_clearance_radius",
|
||||
"support_material_buildplate_only",
|
||||
"support_tree_angle", "support_tree_angle_slow", "support_tree_branch_diameter", "support_tree_branch_diameter_angle", "support_tree_top_rate", "support_tree_tip_diameter",
|
||||
"dont_support_bridges", "thick_bridges", "notes", "complete_objects", "extruder_clearance_radius",
|
||||
"extruder_clearance_height", "gcode_comments", "gcode_label_objects", "output_filename_format", "post_process", "gcode_substitutions", "perimeter_extruder",
|
||||
"infill_extruder", "solid_infill_extruder", "support_material_extruder", "support_material_interface_extruder",
|
||||
"ooze_prevention", "standby_temperature_delta", "interface_shells", "extrusion_width", "first_layer_extrusion_width",
|
||||
|
@ -2876,6 +2876,71 @@ void PrintConfigDef::init_fff_params()
|
||||
def->mode = comExpert;
|
||||
def->set_default_value(new ConfigOptionBool(true));
|
||||
|
||||
def = this->add("support_tree_angle", coFloat);
|
||||
def->label = L("Tree Support Maximum Branch Angle");
|
||||
def->category = L("Support material");
|
||||
def->tooltip = L("The maximum angle of the branches, when the branches have to avoid the model. "
|
||||
"Use a lower angle to make them more vertical and more stable. Use a higher angle to be able to have more reach.");
|
||||
def->sidetext = L("°");
|
||||
def->min = 0;
|
||||
def->max = 85;
|
||||
def->mode = comAdvanced;
|
||||
def->set_default_value(new ConfigOptionFloat(40));
|
||||
|
||||
def = this->add("support_tree_angle_slow", coFloat);
|
||||
def->label = L("Tree Support Preferred Branch Angle");
|
||||
def->category = L("Support material");
|
||||
def->tooltip = L("The preferred angle of the branches, when they do not have to avoid the model. "
|
||||
"Use a lower angle to make them more vertical and more stable. Use a higher angle for branches to merge faster.");
|
||||
def->sidetext = L("°");
|
||||
def->min = 10;
|
||||
def->max = 85;
|
||||
def->mode = comAdvanced;
|
||||
def->set_default_value(new ConfigOptionFloat(25));
|
||||
|
||||
def = this->add("support_tree_tip_diameter", coFloat);
|
||||
def->label = L("Tree Support Tip Diameter");
|
||||
def->category = L("Support material");
|
||||
def->tooltip = L("The diameter of the top of the tip of the branches of tree support.");
|
||||
def->sidetext = L("mm");
|
||||
def->min = 0;
|
||||
def->mode = comAdvanced;
|
||||
def->set_default_value(new ConfigOptionFloat(0.8));
|
||||
|
||||
def = this->add("support_tree_branch_diameter", coFloat);
|
||||
def->label = L("Tree Support Branch Diameter");
|
||||
def->category = L("Support material");
|
||||
def->tooltip = L("The diameter of the thinnest branches of tree support. Thicker branches are more sturdy. "
|
||||
"Branches towards the base will be thicker than this.");
|
||||
def->sidetext = L("mm");
|
||||
def->min = 0;
|
||||
def->mode = comAdvanced;
|
||||
def->set_default_value(new ConfigOptionFloat(2));
|
||||
|
||||
def = this->add("support_tree_branch_diameter_angle", coFloat);
|
||||
def->label = L("Tree Support Branch Diameter Angle");
|
||||
def->category = L("Support material");
|
||||
def->tooltip = L("The angle of the branches' diameter as they gradually become thicker towards the bottom. "
|
||||
"An angle of 0 will cause the branches to have uniform thickness over their length. "
|
||||
"A bit of an angle can increase stability of the tree support.");
|
||||
def->sidetext = L("°");
|
||||
def->min = 0;
|
||||
def->max = 15;
|
||||
def->mode = comAdvanced;
|
||||
def->set_default_value(new ConfigOptionFloat(5));
|
||||
|
||||
def = this->add("support_tree_top_rate", coPercent);
|
||||
def->label = L("Tree Support Branch Density");
|
||||
def->category = L("Support material");
|
||||
def->tooltip = L("Adjusts the density of the support structure used to generate the tips of the branches. "
|
||||
"A higher value results in better overhangs, but the supports are harder to remove. "
|
||||
"Use Support Roof for very high values or ensure support density is similarly high at the top.");
|
||||
def->sidetext = L("%");
|
||||
def->min = 5;
|
||||
def->max_literal = 35;
|
||||
def->mode = comAdvanced;
|
||||
def->set_default_value(new ConfigOptionPercent(30));
|
||||
|
||||
def = this->add("temperature", coInts);
|
||||
def->label = L("Other layers");
|
||||
def->tooltip = L("Nozzle temperature for layers after the first one. Set this to zero to disable "
|
||||
|
@ -547,6 +547,14 @@ PRINT_CONFIG_CLASS_DEFINE(
|
||||
((ConfigOptionInt, support_material_threshold))
|
||||
((ConfigOptionBool, support_material_with_sheath))
|
||||
((ConfigOptionFloatOrPercent, support_material_xy_spacing))
|
||||
// Tree supports
|
||||
((ConfigOptionFloat, support_tree_angle))
|
||||
((ConfigOptionFloat, support_tree_angle_slow))
|
||||
((ConfigOptionFloat, support_tree_branch_diameter))
|
||||
((ConfigOptionFloat, support_tree_branch_diameter_angle))
|
||||
((ConfigOptionPercent, support_tree_top_rate))
|
||||
((ConfigOptionFloat, support_tree_tip_diameter))
|
||||
// The rest
|
||||
((ConfigOptionBool, thick_bridges))
|
||||
((ConfigOptionFloat, xy_size_compensation))
|
||||
((ConfigOptionBool, wipe_into_objects))
|
||||
|
@ -657,6 +657,12 @@ bool PrintObject::invalidate_state_by_config_options(
|
||||
|| opt_key == "support_material_synchronize_layers"
|
||||
|| opt_key == "support_material_threshold"
|
||||
|| opt_key == "support_material_with_sheath"
|
||||
|| opt_key == "support_tree_angle"
|
||||
|| opt_key == "support_tree_angle_slow"
|
||||
|| opt_key == "support_tree_branch_diameter"
|
||||
|| opt_key == "support_tree_branch_diameter_angle"
|
||||
|| opt_key == "support_tree_top_rate"
|
||||
|| opt_key == "support_tree_tip_diameter"
|
||||
|| opt_key == "raft_expansion"
|
||||
|| opt_key == "raft_first_layer_density"
|
||||
|| opt_key == "raft_first_layer_expansion"
|
||||
|
@ -54,6 +54,7 @@ TreeSupportMeshGroupSettings::TreeSupportMeshGroupSettings(const PrintObject &pr
|
||||
|
||||
this->layer_height = scaled<coord_t>(config.layer_height.value);
|
||||
this->resolution = scaled<coord_t>(print_config.gcode_resolution.value);
|
||||
// Arache feature
|
||||
this->min_feature_size = scaled<coord_t>(config.min_feature_size.value);
|
||||
// +1 makes the threshold inclusive
|
||||
this->support_angle = 0.5 * M_PI - std::clamp<double>((config.support_material_threshold + 1) * M_PI / 180., 0., 0.5 * M_PI);
|
||||
@ -88,6 +89,14 @@ TreeSupportMeshGroupSettings::TreeSupportMeshGroupSettings(const PrintObject &pr
|
||||
// this->minimum_support_area =
|
||||
// this->minimum_bottom_area =
|
||||
// this->support_offset =
|
||||
// this->support_tree_branch_distance = 2.5 * line_width ??
|
||||
this->support_tree_angle = std::clamp<double>(config.support_tree_angle * M_PI / 180., 0., 0.5 * M_PI - EPSILON);
|
||||
this->support_tree_angle_slow = std::clamp<double>(config.support_tree_angle_slow * M_PI / 180., 0., this->support_tree_angle - EPSILON);
|
||||
this->support_tree_branch_diameter = scaled<coord_t>(config.support_tree_branch_diameter.value);
|
||||
this->support_tree_branch_diameter_angle = std::clamp<double>(config.support_tree_branch_diameter_angle * M_PI / 180., 0., 0.5 * M_PI - EPSILON);
|
||||
this->support_tree_top_rate = config.support_tree_top_rate.value; // percent
|
||||
// this->support_tree_tip_diameter = this->support_line_width;
|
||||
this->support_tree_tip_diameter = std::clamp(scaled<coord_t>(config.support_tree_tip_diameter.value), 0, this->support_tree_branch_diameter);
|
||||
}
|
||||
|
||||
//FIXME Machine border is currently ignored.
|
||||
|
@ -11,7 +11,6 @@
|
||||
|
||||
#include <mutex>
|
||||
#include <unordered_map>
|
||||
#include <unordered_set>
|
||||
|
||||
#include <boost/functional/hash.hpp>
|
||||
|
||||
@ -43,7 +42,7 @@ struct TreeSupportMeshGroupSettings {
|
||||
// the print will be less accurate, but the g-code will be smaller. Maximum Deviation is a limit for Maximum Resolution,
|
||||
// so if the two conflict the Maximum Deviation will always be held true.
|
||||
coord_t resolution { scaled<coord_t>(0.025) };
|
||||
// Minimum Feature Size (aka minimum line width)
|
||||
// Minimum Feature Size (aka minimum line width) - Arachne specific
|
||||
// Minimum thickness of thin features. Model features that are thinner than this value will not be printed, while features thicker
|
||||
// than the Minimum Feature Size will be widened to the Minimum Wall Line Width.
|
||||
coord_t min_feature_size { scaled<coord_t>(0.1) };
|
||||
@ -183,7 +182,7 @@ struct TreeSupportMeshGroupSettings {
|
||||
// 5%-35%
|
||||
double support_tree_top_rate { 15. };
|
||||
// Tree Support Tip Diameter
|
||||
// The diameter of the top of the tip of the branches of tree support."
|
||||
// The diameter of the top of the tip of the branches of tree support.
|
||||
// minimum: min_wall_line_width, minimum warning: min_wall_line_width+0.05, maximum_value: support_tree_branch_diameter, value: support_line_width
|
||||
coord_t support_tree_tip_diameter { scaled<coord_t>(0.4) };
|
||||
|
||||
|
@ -1526,6 +1526,14 @@ void TabPrint::build()
|
||||
optgroup->append_single_option_line("dont_support_bridges", category_path + "dont-support-bridges");
|
||||
optgroup->append_single_option_line("support_material_synchronize_layers", category_path + "synchronize-with-object-layers");
|
||||
|
||||
optgroup = page->new_optgroup(L("Tree supports"));
|
||||
optgroup->append_single_option_line("support_tree_angle", category_path + "tree_angle");
|
||||
optgroup->append_single_option_line("support_tree_angle_slow", category_path + "tree_angle_slow");
|
||||
optgroup->append_single_option_line("support_tree_branch_diameter", category_path + "tree_branch_diameter");
|
||||
optgroup->append_single_option_line("support_tree_branch_diameter_angle", category_path + "tree_branch_diameter_angle");
|
||||
optgroup->append_single_option_line("support_tree_tip_diameter", category_path + "tree_tip_diameter");
|
||||
optgroup->append_single_option_line("support_tree_top_rate", category_path + "tree_top_rate");
|
||||
|
||||
page = add_options_page(L("Speed"), "time");
|
||||
optgroup = page->new_optgroup(L("Speed for print moves"));
|
||||
optgroup->append_single_option_line("perimeter_speed");
|
||||
|
Loading…
Reference in New Issue
Block a user