mirror of
https://git.mirrors.martin98.com/https://github.com/prusa3d/PrusaSlicer.git
synced 2025-05-24 23:27:46 +08:00
Avoid crossing perimeters max detour could newly be specified
in percentage of the direct path.
This commit is contained in:
parent
fef729b75a
commit
b5f95dd4b4
@ -903,9 +903,16 @@ Polyline AvoidCrossingPerimeters::travel_to(const GCode &gcodegen, const Point &
|
|||||||
travel_intersection_count = 0;
|
travel_intersection_count = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
double max_detour_length scale_(gcodegen.config().avoid_crossing_perimeters_max_detour);
|
const ConfigOptionFloatOrPercent &opt_max_detour = gcodegen.config().avoid_crossing_perimeters_max_detour;
|
||||||
if (max_detour_length > 0 && (result_pl.length() - travel.length()) > max_detour_length)
|
if (opt_max_detour.value > 0) {
|
||||||
|
double direct_length = travel.length();
|
||||||
|
double detour = result_pl.length() - direct_length;
|
||||||
|
double max_detour_length = opt_max_detour.percent ?
|
||||||
|
direct_length * 0.01 * opt_max_detour.value :
|
||||||
|
scale_(opt_max_detour.value);
|
||||||
|
if (detour > max_detour_length)
|
||||||
result_pl = {start, end};
|
result_pl = {start, end};
|
||||||
|
}
|
||||||
|
|
||||||
if (use_external) {
|
if (use_external) {
|
||||||
result_pl.translate(-scaled_origin);
|
result_pl.translate(-scaled_origin);
|
||||||
|
@ -188,11 +188,12 @@ void PrintConfigDef::init_fff_params()
|
|||||||
def->label = L("Avoid crossing perimeters - Max detour length");
|
def->label = L("Avoid crossing perimeters - Max detour length");
|
||||||
def->category = L("Layers and Perimeters");
|
def->category = L("Layers and Perimeters");
|
||||||
def->tooltip = L("The maximum detour length for avoid crossing perimeters. "
|
def->tooltip = L("The maximum detour length for avoid crossing perimeters. "
|
||||||
"If the detour is longer than this value, avoid crossing perimeters is not applied for this path.");
|
"If the detour is longer than this value, avoid crossing perimeters is not applied for this travel path. "
|
||||||
|
"Detour length could be specified either as an absolute value or as percentage (for example 50%) of a direct travel path.");
|
||||||
def->sidetext = L("mm (zero to disable)");
|
def->sidetext = L("mm (zero to disable)");
|
||||||
def->min = 0;
|
def->min = 0;
|
||||||
def->mode = comExpert;
|
def->mode = comExpert;
|
||||||
def->set_default_value(new ConfigOptionFloat(0.));
|
def->set_default_value(new ConfigOptionFloatOrPercent(0., false));
|
||||||
|
|
||||||
def = this->add("bed_temperature", coInts);
|
def = this->add("bed_temperature", coInts);
|
||||||
def->label = L("Other layers");
|
def->label = L("Other layers");
|
||||||
|
@ -828,7 +828,7 @@ class PrintConfig : public MachineEnvelopeConfig, public GCodeConfig
|
|||||||
public:
|
public:
|
||||||
|
|
||||||
ConfigOptionBool avoid_crossing_perimeters;
|
ConfigOptionBool avoid_crossing_perimeters;
|
||||||
ConfigOptionFloat avoid_crossing_perimeters_max_detour;
|
ConfigOptionFloatOrPercent avoid_crossing_perimeters_max_detour;
|
||||||
ConfigOptionPoints bed_shape;
|
ConfigOptionPoints bed_shape;
|
||||||
ConfigOptionInts bed_temperature;
|
ConfigOptionInts bed_temperature;
|
||||||
ConfigOptionFloat bridge_acceleration;
|
ConfigOptionFloat bridge_acceleration;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user