Fix modifiers bridge speed not respected (#13971)
* Respect modifiers bridge speed
This commit is contained in:
@ -256,10 +256,8 @@ 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;
|
||||||
@ -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);
|
||||||
@ -327,9 +323,7 @@ struct SurfaceFillParams
|
|||||||
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->solid_infill_speed == rhs.solid_infill_speed &&
|
|
||||||
this->lateral_lattice_angle_1 == rhs.lateral_lattice_angle_1 &&
|
this->lateral_lattice_angle_1 == rhs.lateral_lattice_angle_1 &&
|
||||||
this->lateral_lattice_angle_2 == rhs.lateral_lattice_angle_2 &&
|
this->lateral_lattice_angle_2 == rhs.lateral_lattice_angle_2 &&
|
||||||
this->infill_lock_depth == rhs.infill_lock_depth &&
|
this->infill_lock_depth == rhs.infill_lock_depth &&
|
||||||
@ -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