mirror of
https://git.mirrors.martin98.com/https://github.com/slic3r/Slic3r.git
synced 2025-08-16 11:46:00 +08:00
#280 new setting: fill_angle_increment. rotate every infill by this angle, multiplied by the layer id.
This commit is contained in:
parent
ef2b6d3633
commit
f1fdcf4243
@ -123,6 +123,7 @@ group:sidetext_width$3:Advanced
|
|||||||
line:Angle
|
line:Angle
|
||||||
setting:label_width$6:width$5:fill_angle
|
setting:label_width$6:width$5:fill_angle
|
||||||
setting:label_width$6:width$5:bridge_angle
|
setting:label_width$6:width$5:bridge_angle
|
||||||
|
setting:label_width$6:width$5:label$increment:fill_angle_increment
|
||||||
end_line
|
end_line
|
||||||
line:Anchor solid infill by X mm
|
line:Anchor solid infill by X mm
|
||||||
setting:label_width$6:width$5:external_infill_margin
|
setting:label_width$6:width$5:external_infill_margin
|
||||||
|
@ -303,6 +303,7 @@ void make_fill(LayerRegion &layerm, ExtrusionEntityCollection &out)
|
|||||||
f->z = layerm.layer()->print_z;
|
f->z = layerm.layer()->print_z;
|
||||||
if (is_denser)f->angle = 0;
|
if (is_denser)f->angle = 0;
|
||||||
else f->angle = float(Geometry::deg2rad(layerm.region()->config().fill_angle.value));
|
else f->angle = float(Geometry::deg2rad(layerm.region()->config().fill_angle.value));
|
||||||
|
f->angle += PI * (layerm.region()->config().fill_angle_increment.value * layerm.layer()->id()) / 180.;
|
||||||
// Maximum length of the perimeter segment linking two infill lines.
|
// Maximum length of the perimeter segment linking two infill lines.
|
||||||
f->link_max_length = (coord_t)scale_(link_max_length);
|
f->link_max_length = (coord_t)scale_(link_max_length);
|
||||||
// Used by the concentric infill pattern to clip the loops to create extrusion paths.
|
// Used by the concentric infill pattern to clip the loops to create extrusion paths.
|
||||||
|
@ -1329,6 +1329,19 @@ void PrintConfigDef::init_fff_params()
|
|||||||
def->mode = comAdvanced;
|
def->mode = comAdvanced;
|
||||||
def->set_default_value(new ConfigOptionFloat(45));
|
def->set_default_value(new ConfigOptionFloat(45));
|
||||||
|
|
||||||
|
def = this->add("fill_angle_increment", coFloat);
|
||||||
|
def->label = L("Fill");
|
||||||
|
def->full_label = L("Fill angle increment");
|
||||||
|
def->category = OptionCategory::infill;
|
||||||
|
def->tooltip = L("Add this angle each layer to the base angle for infill. "
|
||||||
|
"May be useful for art, or to be sure to hit every object's feature even with very low infill. "
|
||||||
|
"Still experiemental, tell me what makes it useful, or the problems that arise using it.");
|
||||||
|
def->sidetext = L("°");
|
||||||
|
def->min = 0;
|
||||||
|
def->max = 360;
|
||||||
|
def->mode = comAdvanced;
|
||||||
|
def->set_default_value(new ConfigOptionFloat(0));
|
||||||
|
|
||||||
def = this->add("fill_density", coPercent);
|
def = this->add("fill_density", coPercent);
|
||||||
def->gui_type = "f_enum_open";
|
def->gui_type = "f_enum_open";
|
||||||
def->gui_flags = "show_value";
|
def->gui_flags = "show_value";
|
||||||
|
@ -639,6 +639,7 @@ public:
|
|||||||
ConfigOptionBool extra_perimeters_overhangs;
|
ConfigOptionBool extra_perimeters_overhangs;
|
||||||
ConfigOptionBool only_one_perimeter_top;
|
ConfigOptionBool only_one_perimeter_top;
|
||||||
ConfigOptionFloat fill_angle;
|
ConfigOptionFloat fill_angle;
|
||||||
|
ConfigOptionFloat fill_angle_increment;
|
||||||
ConfigOptionPercent fill_density;
|
ConfigOptionPercent fill_density;
|
||||||
ConfigOptionEnum<InfillPattern> fill_pattern;
|
ConfigOptionEnum<InfillPattern> fill_pattern;
|
||||||
ConfigOptionPercent fill_top_flow_ratio;
|
ConfigOptionPercent fill_top_flow_ratio;
|
||||||
@ -726,6 +727,7 @@ protected:
|
|||||||
OPT_PTR(extra_perimeters_overhangs);
|
OPT_PTR(extra_perimeters_overhangs);
|
||||||
OPT_PTR(only_one_perimeter_top);
|
OPT_PTR(only_one_perimeter_top);
|
||||||
OPT_PTR(fill_angle);
|
OPT_PTR(fill_angle);
|
||||||
|
OPT_PTR(fill_angle_increment);
|
||||||
OPT_PTR(fill_density);
|
OPT_PTR(fill_density);
|
||||||
OPT_PTR(fill_pattern);
|
OPT_PTR(fill_pattern);
|
||||||
OPT_PTR(fill_top_flow_ratio);
|
OPT_PTR(fill_top_flow_ratio);
|
||||||
|
@ -709,6 +709,7 @@ bool PrintObject::invalidate_state_by_config_options(const std::vector<t_config_
|
|||||||
|| opt_key == "solid_fill_pattern"
|
|| opt_key == "solid_fill_pattern"
|
||||||
|| opt_key == "enforce_full_fill_volume"
|
|| opt_key == "enforce_full_fill_volume"
|
||||||
|| opt_key == "fill_angle"
|
|| opt_key == "fill_angle"
|
||||||
|
|| opt_key == "fill_angle_increment"
|
||||||
|| opt_key == "fill_pattern"
|
|| opt_key == "fill_pattern"
|
||||||
|| opt_key == "fill_top_flow_ratio"
|
|| opt_key == "fill_top_flow_ratio"
|
||||||
|| opt_key == "fill_smooth_width"
|
|| opt_key == "fill_smooth_width"
|
||||||
|
@ -456,7 +456,10 @@ const std::vector<std::string>& Preset::print_options()
|
|||||||
, "top_fill_pattern"
|
, "top_fill_pattern"
|
||||||
, "bottom_fill_pattern"
|
, "bottom_fill_pattern"
|
||||||
, "solid_fill_pattern",
|
, "solid_fill_pattern",
|
||||||
"infill_every_layers", "infill_only_where_needed", "solid_infill_every_layers", "fill_angle", "bridge_angle",
|
"infill_every_layers", "infill_only_where_needed", "solid_infill_every_layers",
|
||||||
|
"fill_angle",
|
||||||
|
"fill_angle_increment",
|
||||||
|
"bridge_angle",
|
||||||
"solid_infill_below_area", "only_retract_when_crossing_perimeters", "infill_first",
|
"solid_infill_below_area", "only_retract_when_crossing_perimeters", "infill_first",
|
||||||
"max_print_speed",
|
"max_print_speed",
|
||||||
"max_volumetric_speed",
|
"max_volumetric_speed",
|
||||||
|
Loading…
x
Reference in New Issue
Block a user