mirror of
https://github.com/OrcaSlicer/OrcaSlicer.git
synced 2026-07-29 13:52:07 +00:00
Fix modifiers bridge speed not respected (#13971)
* Respect modifiers bridge speed
This commit is contained in:
@@ -256,17 +256,15 @@ struct SurfaceFillParams
|
|||||||
|
|
||||||
// Index of this entry in a linear vector.
|
// Index of this entry in a linear vector.
|
||||||
size_t idx = 0;
|
size_t idx = 0;
|
||||||
// infill speed settings
|
// Infill speed setting for the effective extrusion role.
|
||||||
float sparse_infill_speed = 0;
|
float role_speed = 0;
|
||||||
float top_surface_speed = 0;
|
|
||||||
float solid_infill_speed = 0;
|
|
||||||
|
|
||||||
// Params for lattice infill angles
|
// Params for lattice infill angles
|
||||||
float lateral_lattice_angle_1 = 0.f;
|
float lateral_lattice_angle_1 = 0.f;
|
||||||
float lateral_lattice_angle_2 = 0.f;
|
float lateral_lattice_angle_2 = 0.f;
|
||||||
float infill_lock_depth = 0;
|
float infill_lock_depth = 0;
|
||||||
float skin_infill_depth = 0;
|
float skin_infill_depth = 0;
|
||||||
bool symmetric_infill_y_axis = false;
|
bool symmetric_infill_y_axis = false;
|
||||||
|
|
||||||
// Params for Lateral honeycomb
|
// Params for Lateral honeycomb
|
||||||
float infill_overhang_angle = 60.f;
|
float infill_overhang_angle = 60.f;
|
||||||
@@ -298,9 +296,7 @@ struct SurfaceFillParams
|
|||||||
RETURN_COMPARE_NON_EQUAL(flow.nozzle_diameter());
|
RETURN_COMPARE_NON_EQUAL(flow.nozzle_diameter());
|
||||||
RETURN_COMPARE_NON_EQUAL_TYPED(unsigned, bridge);
|
RETURN_COMPARE_NON_EQUAL_TYPED(unsigned, bridge);
|
||||||
RETURN_COMPARE_NON_EQUAL_TYPED(unsigned, extrusion_role);
|
RETURN_COMPARE_NON_EQUAL_TYPED(unsigned, extrusion_role);
|
||||||
RETURN_COMPARE_NON_EQUAL(sparse_infill_speed);
|
RETURN_COMPARE_NON_EQUAL(role_speed);
|
||||||
RETURN_COMPARE_NON_EQUAL(top_surface_speed);
|
|
||||||
RETURN_COMPARE_NON_EQUAL(solid_infill_speed);
|
|
||||||
RETURN_COMPARE_NON_EQUAL(lateral_lattice_angle_1);
|
RETURN_COMPARE_NON_EQUAL(lateral_lattice_angle_1);
|
||||||
RETURN_COMPARE_NON_EQUAL(lateral_lattice_angle_2);
|
RETURN_COMPARE_NON_EQUAL(lateral_lattice_angle_2);
|
||||||
RETURN_COMPARE_NON_EQUAL(symmetric_infill_y_axis);
|
RETURN_COMPARE_NON_EQUAL(symmetric_infill_y_axis);
|
||||||
@@ -312,30 +308,28 @@ struct SurfaceFillParams
|
|||||||
}
|
}
|
||||||
|
|
||||||
bool operator==(const SurfaceFillParams &rhs) const {
|
bool operator==(const SurfaceFillParams &rhs) const {
|
||||||
return this->extruder == rhs.extruder &&
|
return this->extruder == rhs.extruder &&
|
||||||
this->pattern == rhs.pattern &&
|
this->pattern == rhs.pattern &&
|
||||||
this->spacing == rhs.spacing &&
|
this->spacing == rhs.spacing &&
|
||||||
this->overlap == rhs.overlap &&
|
this->overlap == rhs.overlap &&
|
||||||
this->angle == rhs.angle &&
|
this->angle == rhs.angle &&
|
||||||
this->fixed_angle == rhs.fixed_angle &&
|
this->fixed_angle == rhs.fixed_angle &&
|
||||||
this->bridge == rhs.bridge &&
|
this->bridge == rhs.bridge &&
|
||||||
this->bridge_angle == rhs.bridge_angle &&
|
this->bridge_angle == rhs.bridge_angle &&
|
||||||
this->density == rhs.density &&
|
this->density == rhs.density &&
|
||||||
this->multiline == rhs.multiline &&
|
this->multiline == rhs.multiline &&
|
||||||
// this->dont_adjust == rhs.dont_adjust &&
|
// this->dont_adjust == rhs.dont_adjust &&
|
||||||
this->anchor_length == rhs.anchor_length &&
|
this->anchor_length == rhs.anchor_length &&
|
||||||
this->anchor_length_max == rhs.anchor_length_max &&
|
this->anchor_length_max == rhs.anchor_length_max &&
|
||||||
this->flow == rhs.flow &&
|
this->flow == rhs.flow &&
|
||||||
this->extrusion_role == rhs.extrusion_role &&
|
this->extrusion_role == rhs.extrusion_role &&
|
||||||
this->sparse_infill_speed == rhs.sparse_infill_speed &&
|
this->role_speed == rhs.role_speed &&
|
||||||
this->top_surface_speed == rhs.top_surface_speed &&
|
this->lateral_lattice_angle_1 == rhs.lateral_lattice_angle_1 &&
|
||||||
this->solid_infill_speed == rhs.solid_infill_speed &&
|
this->lateral_lattice_angle_2 == rhs.lateral_lattice_angle_2 &&
|
||||||
this->lateral_lattice_angle_1 == rhs.lateral_lattice_angle_1 &&
|
this->infill_lock_depth == rhs.infill_lock_depth &&
|
||||||
this->lateral_lattice_angle_2 == rhs.lateral_lattice_angle_2 &&
|
this->skin_infill_depth == rhs.skin_infill_depth &&
|
||||||
this->infill_lock_depth == rhs.infill_lock_depth &&
|
this->infill_overhang_angle == rhs.infill_overhang_angle &&
|
||||||
this->skin_infill_depth == rhs.skin_infill_depth &&
|
this->gyroid_optimized == rhs.gyroid_optimized;
|
||||||
this->infill_overhang_angle == rhs.infill_overhang_angle &&
|
|
||||||
this->gyroid_optimized == rhs.gyroid_optimized;
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -954,15 +948,18 @@ std::vector<SurfaceFill> group_fills(const Layer &layer, LockRegionParam &lock_p
|
|||||||
//Orca: enable thick bridge based on config
|
//Orca: enable thick bridge based on config
|
||||||
layerm.bridging_flow(extrusion_role, is_thick_bridge) :
|
layerm.bridging_flow(extrusion_role, is_thick_bridge) :
|
||||||
layerm.flow(extrusion_role, (surface.thickness == -1) ? layer.height : surface.thickness);
|
layerm.flow(extrusion_role, (surface.thickness == -1) ? layer.height : surface.thickness);
|
||||||
// record speed params
|
|
||||||
if (!params.bridge) {
|
params.role_speed = 0;
|
||||||
if (params.extrusion_role == erInternalInfill)
|
if (params.extrusion_role == erBridgeInfill)
|
||||||
params.sparse_infill_speed = region_config.sparse_infill_speed;
|
params.role_speed = region_config.bridge_speed;
|
||||||
else if (params.extrusion_role == erTopSolidInfill) {
|
else if (params.extrusion_role == erInternalBridgeInfill)
|
||||||
params.top_surface_speed = region_config.top_surface_speed;
|
params.role_speed = region_config.get_abs_value("internal_bridge_speed");
|
||||||
} else if (params.extrusion_role == erSolidInfill)
|
else if (params.extrusion_role == erInternalInfill)
|
||||||
params.solid_infill_speed = region_config.internal_solid_infill_speed;
|
params.role_speed = region_config.sparse_infill_speed;
|
||||||
}
|
else if (params.extrusion_role == erTopSolidInfill)
|
||||||
|
params.role_speed = region_config.top_surface_speed;
|
||||||
|
else if (params.extrusion_role == erSolidInfill)
|
||||||
|
params.role_speed = region_config.internal_solid_infill_speed;
|
||||||
// Calculate flow spacing for infill pattern generation.
|
// Calculate flow spacing for infill pattern generation.
|
||||||
if (surface.is_solid() || is_bridge) {
|
if (surface.is_solid() || is_bridge) {
|
||||||
params.spacing = params.flow.spacing();
|
params.spacing = params.flow.spacing();
|
||||||
|
|||||||
@@ -359,7 +359,7 @@ static std::vector<std::vector<ExPolygons>> slices_to_regions(
|
|||||||
bool rhs_empty = rhs.region_id < 0 || rhs.expolygons.empty();
|
bool rhs_empty = rhs.region_id < 0 || rhs.expolygons.empty();
|
||||||
// Sort the empty items to the end of the list.
|
// Sort the empty items to the end of the list.
|
||||||
// Sort by region_id & volume_id lexicographically.
|
// Sort by region_id & volume_id lexicographically.
|
||||||
return ! this_empty && (rhs_empty || (this->region_id < rhs.region_id || (this->region_id == rhs.region_id && volume_id < volume_id)));
|
return ! this_empty && (rhs_empty || (this->region_id < rhs.region_id || (this->region_id == rhs.region_id && volume_id < rhs.volume_id)));
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user