Automatically disable retract_layer_change when using spiral_vase
This commit is contained in:
parent
2ac40f9547
commit
98b8936ee2
@ -335,7 +335,7 @@ sub validate {
|
|||||||
die "Can't make less than one perimeter when spiral vase mode is enabled\n"
|
die "Can't make less than one perimeter when spiral vase mode is enabled\n"
|
||||||
if $self->perimeters < 1;
|
if $self->perimeters < 1;
|
||||||
|
|
||||||
die "Spiral vase mode is not compatible with non-zero fill density\n"
|
die "Spiral vase mode can only print hollow objects, so you need to set Fill density to 0\n"
|
||||||
if $self->fill_density > 0;
|
if $self->fill_density > 0;
|
||||||
|
|
||||||
die "Spiral vase mode is not compatible with top solid layers\n"
|
die "Spiral vase mode is not compatible with top solid layers\n"
|
||||||
@ -343,11 +343,6 @@ sub validate {
|
|||||||
|
|
||||||
die "Spiral vase mode is not compatible with support material\n"
|
die "Spiral vase mode is not compatible with support material\n"
|
||||||
if $self->support_material || $self->support_material_enforce_layers > 0;
|
if $self->support_material || $self->support_material_enforce_layers > 0;
|
||||||
|
|
||||||
# This should be enforce automatically only on spiral layers and
|
|
||||||
# done on the others
|
|
||||||
die "Spiral vase mode is not compatible with retraction on layer change\n"
|
|
||||||
if defined first { $_ } @{ $self->retract_layer_change };
|
|
||||||
}
|
}
|
||||||
|
|
||||||
# extrusion widths
|
# extrusion widths
|
||||||
|
@ -320,6 +320,15 @@ DynamicConfig::option(const t_config_option_key opt_key, bool create) {
|
|||||||
return this->options[opt_key];
|
return this->options[opt_key];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
template<class T>
|
||||||
|
T*
|
||||||
|
DynamicConfig::opt(const t_config_option_key opt_key, bool create) {
|
||||||
|
return dynamic_cast<T*>(this->option(opt_key, create));
|
||||||
|
}
|
||||||
|
template ConfigOptionInt* DynamicConfig::opt<ConfigOptionInt>(const t_config_option_key opt_key, bool create);
|
||||||
|
template ConfigOptionBool* DynamicConfig::opt<ConfigOptionBool>(const t_config_option_key opt_key, bool create);
|
||||||
|
template ConfigOptionBools* DynamicConfig::opt<ConfigOptionBools>(const t_config_option_key opt_key, bool create);
|
||||||
|
|
||||||
const ConfigOption*
|
const ConfigOption*
|
||||||
DynamicConfig::option(const t_config_option_key opt_key) const {
|
DynamicConfig::option(const t_config_option_key opt_key) const {
|
||||||
return const_cast<DynamicConfig*>(this)->option(opt_key, false);
|
return const_cast<DynamicConfig*>(this)->option(opt_key, false);
|
||||||
|
@ -491,6 +491,7 @@ class DynamicConfig : public ConfigBase
|
|||||||
DynamicConfig& operator= (DynamicConfig other);
|
DynamicConfig& operator= (DynamicConfig other);
|
||||||
void swap(DynamicConfig &other);
|
void swap(DynamicConfig &other);
|
||||||
~DynamicConfig();
|
~DynamicConfig();
|
||||||
|
template<class T> T* opt(const t_config_option_key opt_key, bool create = false);
|
||||||
ConfigOption* option(const t_config_option_key opt_key, bool create = false);
|
ConfigOption* option(const t_config_option_key opt_key, bool create = false);
|
||||||
const ConfigOption* option(const t_config_option_key opt_key) const;
|
const ConfigOption* option(const t_config_option_key opt_key) const;
|
||||||
void keys(t_config_option_keys *keys) const;
|
void keys(t_config_option_keys *keys) const;
|
||||||
|
@ -985,6 +985,13 @@ class DynamicPrintConfig : public DynamicConfig
|
|||||||
if (!this->has("support_material_interface_extruder"))
|
if (!this->has("support_material_interface_extruder"))
|
||||||
this->option("support_material_interface_extruder", true)->setInt(extruder);
|
this->option("support_material_interface_extruder", true)->setInt(extruder);
|
||||||
}
|
}
|
||||||
|
if (this->has("spiral_vase") && this->opt<ConfigOptionBool>("spiral_vase", true)->value) {
|
||||||
|
{
|
||||||
|
// this should be actually done only on the spiral layers instead of all
|
||||||
|
ConfigOptionBools* opt = this->opt<ConfigOptionBools>("retract_layer_change", true);
|
||||||
|
opt->values.assign(opt->values.size(), false); // set all values to false
|
||||||
|
}
|
||||||
|
}
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -4,7 +4,7 @@ use strict;
|
|||||||
use warnings;
|
use warnings;
|
||||||
|
|
||||||
use Slic3r::XS;
|
use Slic3r::XS;
|
||||||
use Test::More tests => 114;
|
use Test::More tests => 115;
|
||||||
|
|
||||||
foreach my $config (Slic3r::Config->new, Slic3r::Config::Full->new) {
|
foreach my $config (Slic3r::Config->new, Slic3r::Config::Full->new) {
|
||||||
$config->set('layer_height', 0.3);
|
$config->set('layer_height', 0.3);
|
||||||
@ -176,4 +176,12 @@ foreach my $config (Slic3r::Config->new, Slic3r::Config::Full->new) {
|
|||||||
is $config->get('perimeter_extruder'), 3, 'defined extruder is not overwritten by default extruder';
|
is $config->get('perimeter_extruder'), 3, 'defined extruder is not overwritten by default extruder';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
my $config = Slic3r::Config->new;
|
||||||
|
$config->set('spiral_vase', 1);
|
||||||
|
$config->set('retract_layer_change', [1,0]);
|
||||||
|
$config->normalize;
|
||||||
|
is_deeply $config->get('retract_layer_change'), [0,0], 'retract_layer_change is disabled with spiral_vase';
|
||||||
|
}
|
||||||
|
|
||||||
__END__
|
__END__
|
||||||
|
Loading…
Reference in New Issue
Block a user