Fix weirdly specific logic for querying extruded face info (#4320)

This commit is contained in:
Adam Chalmers
2024-10-26 18:16:21 -05:00
committed by GitHub
parent 239ab6850e
commit c5509dabb1

View File

@ -141,23 +141,13 @@ pub(crate) async fn do_post_extrude(
)
.await?;
if sketch.paths.is_empty() {
// The "get extrusion face info" API call requires *any* edge on the sketch being extruded.
// So, let's just use the first one.
let Some(any_edge_id) = sketch.paths.first().map(|edge| edge.get_base().geo_meta.id) else {
return Err(KclError::Type(KclErrorDetails {
message: "Expected a non-empty sketch".to_string(),
source_ranges: vec![args.source_range],
}));
}
let edge_id = sketch.paths.iter().find_map(|segment| match segment {
Path::ToPoint { base } | Path::Circle { base, .. } | Path::Arc { base, .. } => Some(base.geo_meta.id),
_ => None,
});
let Some(edge_id) = edge_id else {
return Err(KclError::Type(KclErrorDetails {
message: "Expected a Path::ToPoint variant".to_string(),
source_ranges: vec![args.source_range],
}));
};
let mut sketch = sketch.clone();
@ -171,7 +161,7 @@ pub(crate) async fn do_post_extrude(
.send_modeling_cmd(
exec_state.id_generator.next_uuid(),
ModelingCmd::from(mcmd::Solid3dGetExtrusionFaceInfo {
edge_id,
edge_id: any_edge_id,
object_id: sketch.id,
}),
)