Made the sheath around the base support configurable. Without the sheath

it is easier to remove the support, but the support is more fragile.
This commit is contained in:
bubnikv 2016-10-04 14:38:13 +02:00
parent 5bb37ad2c4
commit 5268574ade
6 changed files with 18 additions and 3 deletions

View file

@ -480,7 +480,7 @@ sub build {
brim_width brim_width
support_material support_material_threshold support_material_enforce_layers support_material support_material_threshold support_material_enforce_layers
raft_layers raft_layers
support_material_pattern support_material_spacing support_material_angle support_material_pattern support_material_with_sheath support_material_spacing support_material_angle
support_material_interface_layers support_material_interface_spacing support_material_interface_layers support_material_interface_spacing
support_material_contact_distance support_material_buildplate_only dont_support_bridges support_material_contact_distance support_material_buildplate_only dont_support_bridges
notes notes
@ -588,6 +588,7 @@ sub build {
my $optgroup = $page->new_optgroup('Options for support material and raft'); my $optgroup = $page->new_optgroup('Options for support material and raft');
$optgroup->append_single_option_line('support_material_contact_distance'); $optgroup->append_single_option_line('support_material_contact_distance');
$optgroup->append_single_option_line('support_material_pattern'); $optgroup->append_single_option_line('support_material_pattern');
$optgroup->append_single_option_line('support_material_with_sheath');
$optgroup->append_single_option_line('support_material_spacing'); $optgroup->append_single_option_line('support_material_spacing');
$optgroup->append_single_option_line('support_material_angle'); $optgroup->append_single_option_line('support_material_angle');
$optgroup->append_single_option_line('support_material_interface_layers'); $optgroup->append_single_option_line('support_material_interface_layers');
@ -826,7 +827,7 @@ sub _update {
my $have_support_material = $config->support_material || $config->raft_layers > 0; my $have_support_material = $config->support_material || $config->raft_layers > 0;
my $have_support_interface = $config->support_material_interface_layers > 0; my $have_support_interface = $config->support_material_interface_layers > 0;
$self->get_field($_)->toggle($have_support_material) $self->get_field($_)->toggle($have_support_material)
for qw(support_material_threshold support_material_pattern for qw(support_material_threshold support_material_pattern support_material_with_sheath
support_material_spacing support_material_angle support_material_spacing support_material_angle
support_material_interface_layers dont_support_bridges support_material_interface_layers dont_support_bridges
support_material_extrusion_width support_material_contact_distance); support_material_extrusion_width support_material_contact_distance);

View file

@ -592,6 +592,7 @@ sub generate_toolpaths {
# prepare fillers # prepare fillers
my $pattern = $self->object_config->support_material_pattern; my $pattern = $self->object_config->support_material_pattern;
my $with_sheath = $self->object_config->support_material_with_sheath;
my @angles = ($self->object_config->support_material_angle); my @angles = ($self->object_config->support_material_angle);
if ($pattern eq 'rectilinear-grid') { if ($pattern eq 'rectilinear-grid') {
$pattern = 'rectilinear'; $pattern = 'rectilinear';
@ -791,7 +792,7 @@ sub generate_toolpaths {
# use the proper spacing for first layer as we don't need to align # use the proper spacing for first layer as we don't need to align
# its pattern to the other layers # its pattern to the other layers
$filler->spacing($base_flow->spacing); $filler->spacing($base_flow->spacing);
} else { } elsif ($with_sheath) {
# draw a perimeter all around support infill # draw a perimeter all around support infill
# TODO: use brim ordering algorithm # TODO: use brim ordering algorithm
my $mm3_per_mm = $_flow->mm3_per_mm; my $mm3_per_mm = $_flow->mm3_per_mm;

View file

@ -418,6 +418,9 @@ $j
default: $config->{support_material_threshold}) default: $config->{support_material_threshold})
--support-material-pattern --support-material-pattern
Pattern to use for support material (default: $config->{support_material_pattern}) Pattern to use for support material (default: $config->{support_material_pattern})
--support-material-with-sheath
Add a sheath (a single perimeter line) around the base support.
This makes the support more reliable, but also more difficult to remove. (default: yes)
--support-material-spacing --support-material-spacing
Spacing between pattern lines (mm, default: $config->{support_material_spacing}) Spacing between pattern lines (mm, default: $config->{support_material_spacing})
--support-material-angle --support-material-angle

View file

@ -1219,6 +1219,13 @@ PrintConfigDef::PrintConfigDef()
def->max = 90; def->max = 90;
def->default_value = new ConfigOptionInt(0); def->default_value = new ConfigOptionInt(0);
def = this->add("support_material_with_sheath", coBool);
def->label = "With sheath around the support";
def->category = "Support material";
def->tooltip = "Add a sheath (a single perimeter line) around the base support. This makes the support more reliable, but also more difficult to remove.";
def->cli = "support-material-with-sheath!";
def->default_value = new ConfigOptionBool(true);
def = this->add("temperature", coInts); def = this->add("temperature", coInts);
def->label = "Other layers"; def->label = "Other layers";
def->tooltip = "Extruder temperature for layers after the first one. Set this to zero to disable temperature control commands in the output."; def->tooltip = "Extruder temperature for layers after the first one. Set this to zero to disable temperature control commands in the output.";

View file

@ -158,6 +158,7 @@ class PrintObjectConfig : public virtual StaticPrintConfig
ConfigOptionFloat support_material_spacing; ConfigOptionFloat support_material_spacing;
ConfigOptionFloat support_material_speed; ConfigOptionFloat support_material_speed;
ConfigOptionInt support_material_threshold; ConfigOptionInt support_material_threshold;
ConfigOptionBool support_material_with_sheath;
ConfigOptionFloat xy_size_compensation; ConfigOptionFloat xy_size_compensation;
PrintObjectConfig(bool initialize = true) : StaticPrintConfig() { PrintObjectConfig(bool initialize = true) : StaticPrintConfig() {
@ -191,6 +192,7 @@ class PrintObjectConfig : public virtual StaticPrintConfig
OPT_PTR(support_material_spacing); OPT_PTR(support_material_spacing);
OPT_PTR(support_material_speed); OPT_PTR(support_material_speed);
OPT_PTR(support_material_threshold); OPT_PTR(support_material_threshold);
OPT_PTR(support_material_with_sheath);
OPT_PTR(xy_size_compensation); OPT_PTR(xy_size_compensation);
return NULL; return NULL;

View file

@ -240,6 +240,7 @@ PrintObject::invalidate_state_by_config_options(const std::vector<t_config_optio
|| *opt_key == "support_material_pattern" || *opt_key == "support_material_pattern"
|| *opt_key == "support_material_spacing" || *opt_key == "support_material_spacing"
|| *opt_key == "support_material_threshold" || *opt_key == "support_material_threshold"
|| *opt_key == "support_material_with_sheath"
|| *opt_key == "dont_support_bridges" || *opt_key == "dont_support_bridges"
|| *opt_key == "first_layer_extrusion_width") { || *opt_key == "first_layer_extrusion_width") {
steps.insert(posSupportMaterial); steps.insert(posSupportMaterial);