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:
parent
5bb37ad2c4
commit
5268574ade
6 changed files with 18 additions and 3 deletions
|
@ -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);
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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.";
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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);
|
||||||
|
|
Loading…
Reference in a new issue