mirror of
https://git.mirrors.martin98.com/https://github.com/slic3r/Slic3r.git
synced 2025-08-14 11:56:06 +08:00
overhangs are now overhangs again and not bridged infill supermerill/SuperSlicer#1186
instead of excluding overhang from "bridged" tag and making exceptions to use overhangs alongside bridges, now revert back to when overhangs are bridge and make a unique exception to not apply bridge acceleration to them.
This commit is contained in:
parent
ebbd2f7a4b
commit
95535e68f6
@ -122,7 +122,8 @@ inline bool is_solid_infill(ExtrusionRole role)
|
||||
|
||||
inline bool is_bridge(ExtrusionRole role) {
|
||||
return role == erBridgeInfill
|
||||
|| role == erInternalBridgeInfill;
|
||||
|| role == erInternalBridgeInfill
|
||||
|| role == erOverhangPerimeter;
|
||||
}
|
||||
|
||||
|
||||
|
@ -3701,7 +3701,8 @@ std::string GCode::_before_extrude(const ExtrusionPath &path, const std::string
|
||||
acceleration = m_config.first_layer_acceleration.get_abs_value(acceleration);
|
||||
} else if (m_config.perimeter_acceleration.value > 0 && is_perimeter(path.role())) {
|
||||
acceleration = m_config.perimeter_acceleration.get_abs_value(acceleration);
|
||||
} else if (m_config.bridge_acceleration.value > 0 && is_bridge(path.role())) {
|
||||
} else if (m_config.bridge_acceleration.value > 0 && is_bridge(path.role())
|
||||
&& path.role() != erOverhangPerimeter ) {
|
||||
acceleration = m_config.bridge_acceleration.get_abs_value(acceleration);
|
||||
} else if (m_config.infill_acceleration.value > 0 && is_infill(path.role())) {
|
||||
acceleration = m_config.infill_acceleration.get_abs_value(acceleration);
|
||||
@ -3746,7 +3747,7 @@ std::string GCode::_before_extrude(const ExtrusionPath &path, const std::string
|
||||
throw Slic3r::InvalidArgument("Invalid speed");
|
||||
}
|
||||
//don't modify bridge speed
|
||||
if (factor < 1 && !(path.role() == erOverhangPerimeter || is_bridge(path.role()))) {
|
||||
if (factor < 1 && !(is_bridge(path.role()))) {
|
||||
float small_speed = m_config.small_perimeter_speed.get_abs_value(m_config.perimeter_speed);
|
||||
//apply factor between feature speed and small speed
|
||||
speed = speed * factor + (1.f - factor) * small_speed;
|
||||
@ -3850,8 +3851,7 @@ std::string GCode::_before_extrude(const ExtrusionPath &path, const std::string
|
||||
|
||||
std::string comment;
|
||||
if (m_enable_cooling_markers) {
|
||||
if (is_bridge(path.role())
|
||||
|| path.role() == ExtrusionRole::erOverhangPerimeter)
|
||||
if (is_bridge(path.role()))
|
||||
gcode += ";_BRIDGE_FAN_START\n";
|
||||
else if (ExtrusionRole::erTopSolidInfill == path.role())
|
||||
gcode += ";_TOP_FAN_START\n";
|
||||
@ -3870,8 +3870,7 @@ std::string GCode::_before_extrude(const ExtrusionPath &path, const std::string
|
||||
std::string GCode::_after_extrude(const ExtrusionPath &path) {
|
||||
std::string gcode;
|
||||
if (m_enable_cooling_markers)
|
||||
if (is_bridge(path.role())
|
||||
|| path.role() == ExtrusionRole::erOverhangPerimeter)
|
||||
if (is_bridge(path.role()))
|
||||
gcode += ";_BRIDGE_FAN_END\n";
|
||||
else if (ExtrusionRole::erTopSolidInfill == path.role())
|
||||
gcode += ";_TOP_FAN_END\n";
|
||||
|
@ -1075,7 +1075,7 @@ template<typename LINE>
|
||||
ExtrusionPaths PerimeterGenerator::create_overhangs(LINE loop_polygons, ExtrusionRole role, bool is_external) const {
|
||||
ExtrusionPaths paths;
|
||||
double nozzle_diameter = this->print_config->nozzle_diameter.get_at(this->config->perimeter_extruder - 1);
|
||||
if (this->config->overhangs_width.get_abs_value(nozzle_diameter) ==0 && 0== this->config->overhangs_width_speed.get_abs_value(nozzle_diameter)) {
|
||||
if (this->config->overhangs_width.get_abs_value(nozzle_diameter) == 0 && 0 == this->config->overhangs_width_speed.get_abs_value(nozzle_diameter)) {
|
||||
//error
|
||||
return paths;
|
||||
|
||||
@ -1113,7 +1113,7 @@ ExtrusionPaths PerimeterGenerator::create_overhangs(LINE loop_polygons, Extrusio
|
||||
(this->config->overhangs_width_speed.value > 0 ?
|
||||
diff_pl(poly_speed, this->_lower_slices_bridge_flow):
|
||||
diff_pl(std::vector<LINE>{ loop_polygons }, this->_lower_slices_bridge_flow)),
|
||||
erBridgeInfill,
|
||||
erOverhangPerimeter,
|
||||
this->_mm3_per_mm_overhang,
|
||||
this->overhang_flow.width,
|
||||
this->overhang_flow.height);
|
||||
@ -1138,7 +1138,7 @@ ExtrusionPaths PerimeterGenerator::create_overhangs(LINE loop_polygons, Extrusio
|
||||
extrusion_paths_append(
|
||||
paths,
|
||||
diff_pl(std::vector<LINE>{ loop_polygons }, this->_lower_slices_bridge_flow),
|
||||
erBridgeInfill,
|
||||
erOverhangPerimeter,
|
||||
this->_mm3_per_mm_overhang,
|
||||
this->overhang_flow.width,
|
||||
this->overhang_flow.height);
|
||||
|
@ -304,7 +304,8 @@ void PrintConfigDef::init_fff_params()
|
||||
def->category = OptionCategory::speed;
|
||||
def->tooltip = L("This is the acceleration your printer will use for bridges."
|
||||
"\nCan be a % of the default acceleration"
|
||||
"\nSet zero to disable acceleration control for bridges.");
|
||||
"\nSet zero to disable acceleration control for bridges."
|
||||
"\nNote that it won't be applied to overhangs, they still use the perimeter acceleration.");
|
||||
def->sidetext = L("mm/s² or %");
|
||||
def->min = 0;
|
||||
def->mode = comExpert;
|
||||
|
Loading…
x
Reference in New Issue
Block a user