transform a sketch (#5867)

* transform a sketch

Signed-off-by: Jess Frazelle <github@jessfraz.com>

* updates

Signed-off-by: Jess Frazelle <github@jessfraz.com>

* fix test

Signed-off-by: Jess Frazelle <github@jessfraz.com>

* updates

Signed-off-by: Jess Frazelle <github@jessfraz.com>

* A snapshot a day keeps the bugs away! 📷🐛

* A snapshot a day keeps the bugs away! 📷🐛

* A snapshot a day keeps the bugs away! 📷🐛

* A snapshot a day keeps the bugs away! 📷🐛

* updates

Signed-off-by: Jess Frazelle <github@jessfraz.com>

* A snapshot a day keeps the bugs away! 📷🐛

* A snapshot a day keeps the bugs away! 📷🐛

* updates

Signed-off-by: Jess Frazelle <github@jessfraz.com>

---------

Signed-off-by: Jess Frazelle <github@jessfraz.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
This commit is contained in:
Jess Frazelle
2025-03-18 16:36:48 -07:00
committed by GitHub
parent f5a2c84ce2
commit 3b1d1307c4
23 changed files with 745 additions and 377 deletions

View File

@ -1459,13 +1459,27 @@ impl<'a> FromKclValue<'a> for crate::execution::Solid {
}
}
impl<'a> FromKclValue<'a> for crate::execution::SolidOrImportedGeometry {
impl<'a> FromKclValue<'a> for crate::execution::SolidOrSketchOrImportedGeometry {
fn from_kcl_val(arg: &'a KclValue) -> Option<Self> {
match arg {
KclValue::Solid { value } => Some(Self::SolidSet(vec![(**value).clone()])),
KclValue::HomArray { value, .. } => Some(Self::SolidSet(
value.iter().map(|v| v.as_solid().unwrap().clone()).collect(),
)),
KclValue::Sketch { value } => Some(Self::SketchSet(vec![(**value).clone()])),
KclValue::HomArray { value, .. } => {
let mut solids = vec![];
let mut sketches = vec![];
for item in value {
match item {
KclValue::Solid { value } => solids.push((**value).clone()),
KclValue::Sketch { value } => sketches.push((**value).clone()),
_ => return None,
}
}
if !solids.is_empty() {
Some(Self::SolidSet(solids))
} else {
Some(Self::SketchSet(sketches))
}
}
KclValue::ImportedGeometry(value) => Some(Self::ImportedGeometry(Box::new(value.clone()))),
_ => None,
}