KCL: Patterns of patterns can use the original sketch/solid as target (#5284)

Right now, if you model something like this box with a button:

<img width="413" alt="Screenshot 2025-02-06 at 3 08 03 PM" src="https://github.com/user-attachments/assets/04818a70-7cf3-4ee3-b8c5-df5959ac10db" />

Let's say you want to pattern the button, and repeat it a second time. If you try, you'll actually pattern the entire model (box + button).

<img width="486" alt="Screenshot 2025-02-06 at 3 08 52 PM" src="https://github.com/user-attachments/assets/09fc28d9-5d80-4ab3-b4dc-b8de2945fcba" />

Why? Because right now, when you sketch on a face (like the button was), both the box and the button share the same ID. All extrusions from a solid will share the same ID, because they all refer to the same composite solid.

This is helpful in some ways -- arguably the solid _is_ just one big complex shape now -- but it's not helpful in other ways. What if I want to only pattern the button? Luckily there's an original ID for the button part, which is still stored. So we just need a way to tell the pattern stdlib functions whether to use the target's main ID or its original ID. This PR adds a new optional bool, `useOriginal`, to patterns. It's false by default, to keep backwards-compatibility (make sure that old KCL code doesn't change).

This PR is based on https://github.com/KittyCAD/modeling-app/pull/3914. It's based on work Serena and I are doing to fix a bug (engine does not allow patterning a 3D solid which was sketched on a face of another solid). @gserena01 our test program is now:

```
w = 400

case = startSketchOn('XY')
  |> startProfileAt([-w, -w], %)
  |> line(endAbsolute = [-w, w])
  |> line(endAbsolute = [w, -w])
  |> line(endAbsolute = [-w, -w])
  |> close()
  |> extrude(length = 200)

bump1 = startSketchOn(case, 'end')
  |> circle({ center = [-50, -50], radius = 40 }, %)
  |> extrude(length = 20)

// We pass in "bump1" here since we want to pattern just this object on the face.
useOriginal = true
target = bump1
transform = {
  axis = [1, 0, 0],
  instances = 3,
  distance = -100
}
patternLinear3d(transform, target, useOriginal)
```

If you change the `useOriginal = true` to `false` you can see the difference.
This commit is contained in:
Adam Chalmers
2025-02-06 17:46:47 -06:00
committed by GitHub
parent 020497cde2
commit 6ac9c49773
59 changed files with 7468 additions and 18 deletions

View File

@ -9,7 +9,7 @@ Repeat a 2-dimensional sketch along some dimension, with a dynamic amount
of distance between each repetition, some specified number of times. of distance between each repetition, some specified number of times.
```js ```js
patternLinear2d(data: LinearPattern2dData, sketch_set: SketchSet) -> [Sketch] patternLinear2d(data: LinearPattern2dData, sketch_set: SketchSet, use_original?: bool) -> [Sketch]
``` ```
@ -19,6 +19,7 @@ patternLinear2d(data: LinearPattern2dData, sketch_set: SketchSet) -> [Sketch]
|----------|------|-------------|----------| |----------|------|-------------|----------|
| `data` | [`LinearPattern2dData`](/docs/kcl/types/LinearPattern2dData) | Data for a linear pattern on a 2D sketch. | Yes | | `data` | [`LinearPattern2dData`](/docs/kcl/types/LinearPattern2dData) | Data for a linear pattern on a 2D sketch. | Yes |
| `sketch_set` | [`SketchSet`](/docs/kcl/types/SketchSet) | A sketch or a group of sketches. | Yes | | `sketch_set` | [`SketchSet`](/docs/kcl/types/SketchSet) | A sketch or a group of sketches. | Yes |
| `use_original` | `bool` | | No |
### Returns ### Returns

View File

@ -9,7 +9,7 @@ Repeat a 3-dimensional solid along a linear path, with a dynamic amount
of distance between each repetition, some specified number of times. of distance between each repetition, some specified number of times.
```js ```js
patternLinear3d(data: LinearPattern3dData, solid_set: SolidSet) -> [Solid] patternLinear3d(data: LinearPattern3dData, solid_set: SolidSet, use_original?: bool) -> [Solid]
``` ```
@ -19,6 +19,7 @@ patternLinear3d(data: LinearPattern3dData, solid_set: SolidSet) -> [Solid]
|----------|------|-------------|----------| |----------|------|-------------|----------|
| `data` | [`LinearPattern3dData`](/docs/kcl/types/LinearPattern3dData) | Data for a linear pattern on a 3D model. | Yes | | `data` | [`LinearPattern3dData`](/docs/kcl/types/LinearPattern3dData) | Data for a linear pattern on a 3D model. | Yes |
| `solid_set` | [`SolidSet`](/docs/kcl/types/SolidSet) | A solid or a group of solids. | Yes | | `solid_set` | [`SolidSet`](/docs/kcl/types/SolidSet) | A solid or a group of solids. | Yes |
| `use_original` | `bool` | | No |
### Returns ### Returns

View File

@ -35,7 +35,7 @@ The transform function returns a transform object. All properties of the object
- `rotation.origin` (either "local" i.e. rotate around its own center, "global" i.e. rotate around the scene's center, or a 3D point, defaults to "local") - `rotation.origin` (either "local" i.e. rotate around its own center, "global" i.e. rotate around the scene's center, or a 3D point, defaults to "local")
```js ```js
patternTransform(total_instances: integer, transform_function: FunctionParam, solid_set: SolidSet) -> [Solid] patternTransform(total_instances: integer, transform_function: FunctionParam, solid_set: SolidSet, use_original?: bool) -> [Solid]
``` ```
@ -46,6 +46,7 @@ patternTransform(total_instances: integer, transform_function: FunctionParam, so
| `total_instances` | `integer` | | Yes | | `total_instances` | `integer` | | Yes |
| `transform_function` | `FunctionParam` | | Yes | | `transform_function` | `FunctionParam` | | Yes |
| `solid_set` | [`SolidSet`](/docs/kcl/types/SolidSet) | A solid or a group of solids. | Yes | | `solid_set` | [`SolidSet`](/docs/kcl/types/SolidSet) | A solid or a group of solids. | Yes |
| `use_original` | `bool` | | No |
### Returns ### Returns

View File

@ -9,7 +9,7 @@ Just like patternTransform, but works on 2D sketches not 3D solids.
```js ```js
patternTransform2d(total_instances: integer, transform_function: FunctionParam, solid_set: SketchSet) -> [Sketch] patternTransform2d(total_instances: integer, transform_function: FunctionParam, solid_set: SketchSet, use_original?: bool) -> [Sketch]
``` ```
@ -20,6 +20,7 @@ patternTransform2d(total_instances: integer, transform_function: FunctionParam,
| `total_instances` | `integer` | | Yes | | `total_instances` | `integer` | | Yes |
| `transform_function` | `FunctionParam` | | Yes | | `transform_function` | `FunctionParam` | | Yes |
| `solid_set` | [`SketchSet`](/docs/kcl/types/SketchSet) | A sketch or a group of sketches. | Yes | | `solid_set` | [`SketchSet`](/docs/kcl/types/SketchSet) | A sketch or a group of sketches. | Yes |
| `use_original` | `bool` | | No |
### Returns ### Returns

File diff suppressed because it is too large Load Diff

View File

@ -20,5 +20,6 @@ Data for a circular pattern on a 2D sketch.
| `center` |`[number, number]`| The center about which to make the pattern. This is a 2D vector. | No | | `center` |`[number, number]`| The center about which to make the pattern. This is a 2D vector. | No |
| `arcDegrees` |`number`| The arc angle (in degrees) to place the repetitions. Must be greater than 0. | No | | `arcDegrees` |`number`| The arc angle (in degrees) to place the repetitions. Must be greater than 0. | No |
| `rotateDuplicates` |`boolean`| Whether or not to rotate the duplicates as they are copied. | No | | `rotateDuplicates` |`boolean`| Whether or not to rotate the duplicates as they are copied. | No |
| `useOriginal` |`boolean`| If the target being patterned is itself a pattern, then, should you use the original solid, or the pattern? | No |

View File

@ -21,5 +21,6 @@ Data for a circular pattern on a 3D model.
| `center` |`[number, number, number]`| The center about which to make the pattern. This is a 3D vector. | No | | `center` |`[number, number, number]`| The center about which to make the pattern. This is a 3D vector. | No |
| `arcDegrees` |`number`| The arc angle (in degrees) to place the repetitions. Must be greater than 0. | No | | `arcDegrees` |`number`| The arc angle (in degrees) to place the repetitions. Must be greater than 0. | No |
| `rotateDuplicates` |`boolean`| Whether or not to rotate the duplicates as they are copied. | No | | `rotateDuplicates` |`boolean`| Whether or not to rotate the duplicates as they are copied. | No |
| `useOriginal` |`boolean`| If the target being patterned is itself a pattern, then, should you use the original solid, or the pattern? | No |

View File

@ -22,6 +22,7 @@ A sketch is a collection of paths.
| `start` |[`BasePath`](/docs/kcl/types/BasePath)| The starting path. | No | | `start` |[`BasePath`](/docs/kcl/types/BasePath)| The starting path. | No |
| `tags` |`object`| Tag identifiers that have been declared in this sketch. | No | | `tags` |`object`| Tag identifiers that have been declared in this sketch. | No |
| `artifactId` |[`ArtifactId`](/docs/kcl/types/ArtifactId)| The original id of the sketch. This stays the same even if the sketch is is sketched on face etc. | No | | `artifactId` |[`ArtifactId`](/docs/kcl/types/ArtifactId)| The original id of the sketch. This stays the same even if the sketch is is sketched on face etc. | No |
| `originalId` |`string`| | No |
| `units` |[`UnitLen`](/docs/kcl/types/UnitLen)| A sketch is a collection of paths. | No | | `units` |[`UnitLen`](/docs/kcl/types/UnitLen)| A sketch is a collection of paths. | No |
| `__meta` |`[` [`Metadata`](/docs/kcl/types/Metadata) `]`| Metadata. | No | | `__meta` |`[` [`Metadata`](/docs/kcl/types/Metadata) `]`| Metadata. | No |

View File

@ -31,6 +31,7 @@ A sketch is a collection of paths.
| `start` |[`BasePath`](/docs/kcl/types/BasePath)| The starting path. | No | | `start` |[`BasePath`](/docs/kcl/types/BasePath)| The starting path. | No |
| `tags` |`object`| Tag identifiers that have been declared in this sketch. | No | | `tags` |`object`| Tag identifiers that have been declared in this sketch. | No |
| `artifactId` |[`ArtifactId`](/docs/kcl/types/ArtifactId)| The original id of the sketch. This stays the same even if the sketch is is sketched on face etc. | No | | `artifactId` |[`ArtifactId`](/docs/kcl/types/ArtifactId)| The original id of the sketch. This stays the same even if the sketch is is sketched on face etc. | No |
| `originalId` |`string`| | No |
| `units` |[`UnitLen`](/docs/kcl/types/UnitLen)| A sketch or a group of sketches. | No | | `units` |[`UnitLen`](/docs/kcl/types/UnitLen)| A sketch or a group of sketches. | No |
| `__meta` |`[` [`Metadata`](/docs/kcl/types/Metadata) `]`| Metadata. | No | | `__meta` |`[` [`Metadata`](/docs/kcl/types/Metadata) `]`| Metadata. | No |

Binary file not shown.

Before

Width:  |  Height:  |  Size: 145 KiB

After

Width:  |  Height:  |  Size: 145 KiB

View File

@ -55,6 +55,7 @@ const mySketch001 = startSketchOn('XY')
], ],
id: expect.any(String), id: expect.any(String),
artifactId: expect.any(String), artifactId: expect.any(String),
originalId: expect.any(String),
units: { units: {
type: 'Mm', type: 'Mm',
}, },
@ -98,6 +99,7 @@ const mySketch001 = startSketchOn('XY')
], ],
sketch: { sketch: {
id: expect.any(String), id: expect.any(String),
originalId: expect.any(String),
artifactId: expect.any(String), artifactId: expect.any(String),
units: { units: {
type: 'Mm', type: 'Mm',
@ -203,6 +205,7 @@ const sk2 = startSketchOn('XY')
], ],
sketch: { sketch: {
id: expect.any(String), id: expect.any(String),
originalId: expect.any(String),
artifactId: expect.any(String), artifactId: expect.any(String),
__meta: expect.any(Array), __meta: expect.any(Array),
on: expect.any(Object), on: expect.any(Object),
@ -308,6 +311,7 @@ const sk2 = startSketchOn('XY')
], ],
sketch: { sketch: {
id: expect.any(String), id: expect.any(String),
originalId: expect.any(String),
artifactId: expect.any(String), artifactId: expect.any(String),
units: { units: {
type: 'Mm', type: 'Mm',

View File

@ -221,6 +221,7 @@ const newVar = myVar + 1`
}, },
], ],
id: expect.any(String), id: expect.any(String),
originalId: expect.any(String),
artifactId: expect.any(String), artifactId: expect.any(String),
units: { units: {
type: 'Mm', type: 'Mm',

View File

@ -32,6 +32,16 @@ impl Geometry {
Geometry::Solid(e) => e.id, Geometry::Solid(e) => e.id,
} }
} }
/// If this geometry is the result of a pattern, then return the ID of
/// the original sketch which was patterned.
/// Equivalent to the `id()` method if this isn't a pattern.
pub fn original_id(&self) -> uuid::Uuid {
match self {
Geometry::Sketch(s) => s.original_id,
Geometry::Solid(e) => e.sketch.original_id,
}
}
} }
/// A set of geometry. /// A set of geometry.
@ -419,6 +429,8 @@ pub struct Sketch {
/// The original id of the sketch. This stays the same even if the sketch is /// The original id of the sketch. This stays the same even if the sketch is
/// is sketched on face etc. /// is sketched on face etc.
pub artifact_id: ArtifactId, pub artifact_id: ArtifactId,
#[ts(skip)]
pub original_id: uuid::Uuid,
pub units: UnitLen, pub units: UnitLen,
/// Metadata. /// Metadata.
#[serde(rename = "__meta")] #[serde(rename = "__meta")]

View File

@ -356,7 +356,7 @@ impl Args {
Ok(numbers) Ok(numbers)
} }
pub(crate) fn get_pattern_transform_args(&self) -> Result<(u32, FnAsArg<'_>, SolidSet), KclError> { pub(crate) fn get_pattern_transform_args(&self) -> Result<(u32, FnAsArg<'_>, SolidSet, Option<bool>), KclError> {
FromArgs::from_args(self, 0) FromArgs::from_args(self, 0)
} }
@ -764,6 +764,10 @@ macro_rules! let_field_of {
($obj:ident, $field:ident?) => { ($obj:ident, $field:ident?) => {
let $field = $obj.get(stringify!($field)).and_then(FromKclValue::from_kcl_val); let $field = $obj.get(stringify!($field)).and_then(FromKclValue::from_kcl_val);
}; };
// Optional field but with a different string used as the key
($obj:ident, $field:ident? $key:literal) => {
let $field = $obj.get($key).and_then(FromKclValue::from_kcl_val);
};
// Mandatory field, but with a different string used as the key. // Mandatory field, but with a different string used as the key.
($obj:ident, $field:ident $key:literal) => { ($obj:ident, $field:ident $key:literal) => {
let $field = $obj.get($key).and_then(FromKclValue::from_kcl_val)?; let $field = $obj.get($key).and_then(FromKclValue::from_kcl_val)?;
@ -947,12 +951,14 @@ impl<'a> FromKclValue<'a> for super::patterns::CircularPattern3dData {
let_field_of!(obj, rotate_duplicates "rotateDuplicates"); let_field_of!(obj, rotate_duplicates "rotateDuplicates");
let_field_of!(obj, axis); let_field_of!(obj, axis);
let_field_of!(obj, center); let_field_of!(obj, center);
let_field_of!(obj, use_original? "useOriginal");
Some(Self { Some(Self {
instances, instances,
axis, axis,
center, center,
arc_degrees, arc_degrees,
rotate_duplicates, rotate_duplicates,
use_original,
}) })
} }
} }
@ -964,11 +970,13 @@ impl<'a> FromKclValue<'a> for super::patterns::CircularPattern2dData {
let_field_of!(obj, arc_degrees "arcDegrees"); let_field_of!(obj, arc_degrees "arcDegrees");
let_field_of!(obj, rotate_duplicates "rotateDuplicates"); let_field_of!(obj, rotate_duplicates "rotateDuplicates");
let_field_of!(obj, center); let_field_of!(obj, center);
let_field_of!(obj, use_original? "useOriginal");
Some(Self { Some(Self {
instances, instances,
center, center,
arc_degrees, arc_degrees,
rotate_duplicates, rotate_duplicates,
use_original,
}) })
} }
} }

View File

@ -63,7 +63,7 @@ pub struct LinearPattern3dData {
/// Repeat some 3D solid, changing each repetition slightly. /// Repeat some 3D solid, changing each repetition slightly.
pub async fn pattern_transform(exec_state: &mut ExecState, args: Args) -> Result<KclValue, KclError> { pub async fn pattern_transform(exec_state: &mut ExecState, args: Args) -> Result<KclValue, KclError> {
let (num_repetitions, transform, extr) = args.get_pattern_transform_args()?; let (num_repetitions, transform, extr, use_original) = args.get_pattern_transform_args()?;
let solids = inner_pattern_transform( let solids = inner_pattern_transform(
num_repetitions, num_repetitions,
@ -75,6 +75,7 @@ pub async fn pattern_transform(exec_state: &mut ExecState, args: Args) -> Result
memory: *transform.memory, memory: *transform.memory,
}, },
extr, extr,
use_original,
exec_state, exec_state,
&args, &args,
) )
@ -84,7 +85,7 @@ pub async fn pattern_transform(exec_state: &mut ExecState, args: Args) -> Result
/// Repeat some 2D sketch, changing each repetition slightly. /// Repeat some 2D sketch, changing each repetition slightly.
pub async fn pattern_transform_2d(exec_state: &mut ExecState, args: Args) -> Result<KclValue, KclError> { pub async fn pattern_transform_2d(exec_state: &mut ExecState, args: Args) -> Result<KclValue, KclError> {
let (num_repetitions, transform, sketch): (u32, super::FnAsArg<'_>, SketchSet) = let (num_repetitions, transform, sketch, use_original): (u32, super::FnAsArg<'_>, SketchSet, Option<bool>) =
super::args::FromArgs::from_args(&args, 0)?; super::args::FromArgs::from_args(&args, 0)?;
let sketches = inner_pattern_transform_2d( let sketches = inner_pattern_transform_2d(
@ -97,6 +98,7 @@ pub async fn pattern_transform_2d(exec_state: &mut ExecState, args: Args) -> Res
memory: *transform.memory, memory: *transform.memory,
}, },
sketch, sketch,
use_original,
exec_state, exec_state,
&args, &args,
) )
@ -295,6 +297,7 @@ async fn inner_pattern_transform<'a>(
total_instances: u32, total_instances: u32,
transform_function: FunctionParam<'a>, transform_function: FunctionParam<'a>,
solid_set: SolidSet, solid_set: SolidSet,
use_original: Option<bool>,
exec_state: &mut ExecState, exec_state: &mut ExecState,
args: &'a Args, args: &'a Args,
) -> Result<Vec<Box<Solid>>, KclError> { ) -> Result<Vec<Box<Solid>>, KclError> {
@ -310,7 +313,7 @@ async fn inner_pattern_transform<'a>(
let t = make_transform::<Box<Solid>>(i, &transform_function, args.source_range, exec_state).await?; let t = make_transform::<Box<Solid>>(i, &transform_function, args.source_range, exec_state).await?;
transform.push(t); transform.push(t);
} }
execute_pattern_transform(transform, solid_set, exec_state, args).await execute_pattern_transform(transform, solid_set, use_original.unwrap_or_default(), exec_state, args).await
} }
/// Just like patternTransform, but works on 2D sketches not 3D solids. /// Just like patternTransform, but works on 2D sketches not 3D solids.
@ -332,6 +335,7 @@ async fn inner_pattern_transform_2d<'a>(
total_instances: u32, total_instances: u32,
transform_function: FunctionParam<'a>, transform_function: FunctionParam<'a>,
solid_set: SketchSet, solid_set: SketchSet,
use_original: Option<bool>,
exec_state: &mut ExecState, exec_state: &mut ExecState,
args: &'a Args, args: &'a Args,
) -> Result<Vec<Box<Sketch>>, KclError> { ) -> Result<Vec<Box<Sketch>>, KclError> {
@ -347,12 +351,13 @@ async fn inner_pattern_transform_2d<'a>(
let t = make_transform::<Box<Sketch>>(i, &transform_function, args.source_range, exec_state).await?; let t = make_transform::<Box<Sketch>>(i, &transform_function, args.source_range, exec_state).await?;
transform.push(t); transform.push(t);
} }
execute_pattern_transform(transform, solid_set, exec_state, args).await execute_pattern_transform(transform, solid_set, use_original.unwrap_or_default(), exec_state, args).await
} }
async fn execute_pattern_transform<T: GeometryTrait>( async fn execute_pattern_transform<T: GeometryTrait>(
transforms: Vec<Vec<Transform>>, transforms: Vec<Vec<Transform>>,
geo_set: T::Set, geo_set: T::Set,
use_original: bool,
exec_state: &mut ExecState, exec_state: &mut ExecState,
args: &Args, args: &Args,
) -> Result<Vec<T>, KclError> { ) -> Result<Vec<T>, KclError> {
@ -368,7 +373,7 @@ async fn execute_pattern_transform<T: GeometryTrait>(
let mut output = Vec::new(); let mut output = Vec::new();
for geo in starting { for geo in starting {
let new = send_pattern_transform(transforms.clone(), &geo, exec_state, args).await?; let new = send_pattern_transform(transforms.clone(), &geo, use_original, exec_state, args).await?;
output.extend(new) output.extend(new)
} }
Ok(output) Ok(output)
@ -379,6 +384,7 @@ async fn send_pattern_transform<T: GeometryTrait>(
// https://github.com/KittyCAD/modeling-app/issues/2821 // https://github.com/KittyCAD/modeling-app/issues/2821
transforms: Vec<Vec<Transform>>, transforms: Vec<Vec<Transform>>,
solid: &T, solid: &T,
use_original: bool,
exec_state: &mut ExecState, exec_state: &mut ExecState,
args: &Args, args: &Args,
) -> Result<Vec<T>, KclError> { ) -> Result<Vec<T>, KclError> {
@ -388,7 +394,7 @@ async fn send_pattern_transform<T: GeometryTrait>(
.send_modeling_cmd( .send_modeling_cmd(
id, id,
ModelingCmd::from(mcmd::EntityLinearPatternTransform { ModelingCmd::from(mcmd::EntityLinearPatternTransform {
entity_id: solid.id(), entity_id: if use_original { solid.original_id() } else { solid.id() },
transform: Default::default(), transform: Default::default(),
transforms, transforms,
}), }),
@ -602,6 +608,7 @@ fn array_to_point2d(val: &KclValue, source_ranges: Vec<SourceRange>) -> Result<P
trait GeometryTrait: Clone { trait GeometryTrait: Clone {
type Set: Into<Vec<Self>> + Clone; type Set: Into<Vec<Self>> + Clone;
fn id(&self) -> Uuid; fn id(&self) -> Uuid;
fn original_id(&self) -> Uuid;
fn set_id(&mut self, id: Uuid); fn set_id(&mut self, id: Uuid);
fn array_to_point3d(val: &KclValue, source_ranges: Vec<SourceRange>) -> Result<Point3d, KclError>; fn array_to_point3d(val: &KclValue, source_ranges: Vec<SourceRange>) -> Result<Point3d, KclError>;
async fn flush_batch(args: &Args, exec_state: &mut ExecState, set: Self::Set) -> Result<(), KclError>; async fn flush_batch(args: &Args, exec_state: &mut ExecState, set: Self::Set) -> Result<(), KclError>;
@ -615,6 +622,9 @@ impl GeometryTrait for Box<Sketch> {
fn id(&self) -> Uuid { fn id(&self) -> Uuid {
self.id self.id
} }
fn original_id(&self) -> Uuid {
self.original_id
}
fn array_to_point3d(val: &KclValue, source_ranges: Vec<SourceRange>) -> Result<Point3d, KclError> { fn array_to_point3d(val: &KclValue, source_ranges: Vec<SourceRange>) -> Result<Point3d, KclError> {
let Point2d { x, y } = array_to_point2d(val, source_ranges)?; let Point2d { x, y } = array_to_point2d(val, source_ranges)?;
Ok(Point3d { x, y, z: 0.0 }) Ok(Point3d { x, y, z: 0.0 })
@ -634,6 +644,11 @@ impl GeometryTrait for Box<Solid> {
fn id(&self) -> Uuid { fn id(&self) -> Uuid {
self.id self.id
} }
fn original_id(&self) -> Uuid {
self.sketch.original_id
}
fn array_to_point3d(val: &KclValue, source_ranges: Vec<SourceRange>) -> Result<Point3d, KclError> { fn array_to_point3d(val: &KclValue, source_ranges: Vec<SourceRange>) -> Result<Point3d, KclError> {
array_to_point3d(val, source_ranges) array_to_point3d(val, source_ranges)
} }
@ -674,7 +689,8 @@ mod tests {
/// A linear pattern on a 2D sketch. /// A linear pattern on a 2D sketch.
pub async fn pattern_linear_2d(exec_state: &mut ExecState, args: Args) -> Result<KclValue, KclError> { pub async fn pattern_linear_2d(exec_state: &mut ExecState, args: Args) -> Result<KclValue, KclError> {
let (data, sketch_set): (LinearPattern2dData, SketchSet) = args.get_data_and_sketch_set()?; let (data, sketch_set, use_original): (LinearPattern2dData, SketchSet, Option<bool>) =
super::args::FromArgs::from_args(&args, 0)?;
if data.axis == [0.0, 0.0] { if data.axis == [0.0, 0.0] {
return Err(KclError::Semantic(KclErrorDetails { return Err(KclError::Semantic(KclErrorDetails {
@ -685,7 +701,7 @@ pub async fn pattern_linear_2d(exec_state: &mut ExecState, args: Args) -> Result
})); }));
} }
let sketches = inner_pattern_linear_2d(data, sketch_set, exec_state, args).await?; let sketches = inner_pattern_linear_2d(data, sketch_set, use_original, exec_state, args).await?;
Ok(sketches.into()) Ok(sketches.into())
} }
@ -709,6 +725,7 @@ pub async fn pattern_linear_2d(exec_state: &mut ExecState, args: Args) -> Result
async fn inner_pattern_linear_2d( async fn inner_pattern_linear_2d(
data: LinearPattern2dData, data: LinearPattern2dData,
sketch_set: SketchSet, sketch_set: SketchSet,
use_original: Option<bool>,
exec_state: &mut ExecState, exec_state: &mut ExecState,
args: Args, args: Args,
) -> Result<Vec<Box<Sketch>>, KclError> { ) -> Result<Vec<Box<Sketch>>, KclError> {
@ -726,12 +743,20 @@ async fn inner_pattern_linear_2d(
}] }]
}) })
.collect(); .collect();
execute_pattern_transform(transforms, sketch_set, exec_state, &args).await execute_pattern_transform(
transforms,
sketch_set,
use_original.unwrap_or_default(),
exec_state,
&args,
)
.await
} }
/// A linear pattern on a 3D model. /// A linear pattern on a 3D model.
pub async fn pattern_linear_3d(exec_state: &mut ExecState, args: Args) -> Result<KclValue, KclError> { pub async fn pattern_linear_3d(exec_state: &mut ExecState, args: Args) -> Result<KclValue, KclError> {
let (data, solid_set): (LinearPattern3dData, SolidSet) = args.get_data_and_solid_set()?; let (data, solid_set, use_original): (LinearPattern3dData, SolidSet, Option<bool>) =
super::args::FromArgs::from_args(&args, 0)?;
if data.axis == [0.0, 0.0, 0.0] { if data.axis == [0.0, 0.0, 0.0] {
return Err(KclError::Semantic(KclErrorDetails { return Err(KclError::Semantic(KclErrorDetails {
@ -742,7 +767,7 @@ pub async fn pattern_linear_3d(exec_state: &mut ExecState, args: Args) -> Result
})); }));
} }
let solids = inner_pattern_linear_3d(data, solid_set, exec_state, args).await?; let solids = inner_pattern_linear_3d(data, solid_set, use_original, exec_state, args).await?;
Ok(solids.into()) Ok(solids.into())
} }
@ -771,6 +796,7 @@ pub async fn pattern_linear_3d(exec_state: &mut ExecState, args: Args) -> Result
async fn inner_pattern_linear_3d( async fn inner_pattern_linear_3d(
data: LinearPattern3dData, data: LinearPattern3dData,
solid_set: SolidSet, solid_set: SolidSet,
use_original: Option<bool>,
exec_state: &mut ExecState, exec_state: &mut ExecState,
args: Args, args: Args,
) -> Result<Vec<Box<Solid>>, KclError> { ) -> Result<Vec<Box<Solid>>, KclError> {
@ -788,7 +814,14 @@ async fn inner_pattern_linear_3d(
}] }]
}) })
.collect(); .collect();
execute_pattern_transform(transforms, solid_set, exec_state, &args).await execute_pattern_transform(
transforms,
solid_set,
use_original.unwrap_or_default(),
exec_state,
&args,
)
.await
} }
/// Data for a circular pattern on a 2D sketch. /// Data for a circular pattern on a 2D sketch.
@ -807,6 +840,10 @@ pub struct CircularPattern2dData {
pub arc_degrees: f64, pub arc_degrees: f64,
/// Whether or not to rotate the duplicates as they are copied. /// Whether or not to rotate the duplicates as they are copied.
pub rotate_duplicates: bool, pub rotate_duplicates: bool,
/// If the target being patterned is itself a pattern, then, should you use the original solid,
/// or the pattern?
#[serde(default)]
pub use_original: Option<bool>,
} }
/// Data for a circular pattern on a 3D model. /// Data for a circular pattern on a 3D model.
@ -827,6 +864,10 @@ pub struct CircularPattern3dData {
pub arc_degrees: f64, pub arc_degrees: f64,
/// Whether or not to rotate the duplicates as they are copied. /// Whether or not to rotate the duplicates as they are copied.
pub rotate_duplicates: bool, pub rotate_duplicates: bool,
/// If the target being patterned is itself a pattern, then, should you use the original solid,
/// or the pattern?
#[serde(default)]
pub use_original: Option<bool>,
} }
pub enum CircularPattern { pub enum CircularPattern {
@ -889,6 +930,13 @@ impl CircularPattern {
CircularPattern::ThreeD(lp) => lp.rotate_duplicates, CircularPattern::ThreeD(lp) => lp.rotate_duplicates,
} }
} }
pub fn use_original(&self) -> bool {
match self {
CircularPattern::TwoD(lp) => lp.use_original.unwrap_or_default(),
CircularPattern::ThreeD(lp) => lp.use_original.unwrap_or_default(),
}
}
} }
/// A circular pattern on a 2D sketch. /// A circular pattern on a 2D sketch.
@ -1055,7 +1103,11 @@ async fn pattern_circular(
id, id,
ModelingCmd::from(mcmd::EntityCircularPattern { ModelingCmd::from(mcmd::EntityCircularPattern {
axis: kcmc::shared::Point3d::from(data.axis()), axis: kcmc::shared::Point3d::from(data.axis()),
entity_id: geometry.id(), entity_id: if data.use_original() {
geometry.original_id()
} else {
geometry.id()
},
center: kcmc::shared::Point3d { center: kcmc::shared::Point3d {
x: LengthUnit(center[0]), x: LengthUnit(center[0]),
y: LengthUnit(center[1]), y: LengthUnit(center[1]),

View File

@ -1360,6 +1360,7 @@ pub(crate) async fn inner_start_profile_at(
let sketch = Sketch { let sketch = Sketch {
id: path_id, id: path_id,
original_id: path_id,
artifact_id: path_id.into(), artifact_id: path_id.into(),
on: sketch_surface.clone(), on: sketch_surface.clone(),
paths: vec![], paths: vec![],

View File

@ -1,6 +1,7 @@
--- ---
source: kcl/src/simulation_tests.rs source: kcl/src/simulation_tests.rs
description: Program memory after executing angled_line.kcl description: Program memory after executing angled_line.kcl
snapshot_kind: text
--- ---
{ {
"environments": [ "environments": [
@ -346,6 +347,7 @@ description: Program memory after executing angled_line.kcl
} }
}, },
"artifactId": "[uuid]", "artifactId": "[uuid]",
"originalId": "[uuid]",
"units": { "units": {
"type": "Mm" "type": "Mm"
}, },

View File

@ -374,6 +374,7 @@ snapshot_kind: text
} }
}, },
"artifactId": "[uuid]", "artifactId": "[uuid]",
"originalId": "[uuid]",
"units": { "units": {
"type": "Mm" "type": "Mm"
}, },
@ -904,6 +905,7 @@ snapshot_kind: text
} }
}, },
"artifactId": "[uuid]", "artifactId": "[uuid]",
"originalId": "[uuid]",
"units": { "units": {
"type": "Mm" "type": "Mm"
}, },
@ -975,6 +977,7 @@ snapshot_kind: text
} }
}, },
"artifactId": "[uuid]", "artifactId": "[uuid]",
"originalId": "[uuid]",
"units": { "units": {
"type": "Mm" "type": "Mm"
}, },
@ -1412,6 +1415,7 @@ snapshot_kind: text
} }
}, },
"artifactId": "[uuid]", "artifactId": "[uuid]",
"originalId": "[uuid]",
"units": { "units": {
"type": "Mm" "type": "Mm"
}, },
@ -1878,6 +1882,7 @@ snapshot_kind: text
} }
}, },
"artifactId": "[uuid]", "artifactId": "[uuid]",
"originalId": "[uuid]",
"units": { "units": {
"type": "Mm" "type": "Mm"
}, },
@ -1949,6 +1954,7 @@ snapshot_kind: text
} }
}, },
"artifactId": "[uuid]", "artifactId": "[uuid]",
"originalId": "[uuid]",
"units": { "units": {
"type": "Mm" "type": "Mm"
}, },

View File

@ -468,6 +468,7 @@ snapshot_kind: text
} }
}, },
"artifactId": "[uuid]", "artifactId": "[uuid]",
"originalId": "[uuid]",
"units": { "units": {
"type": "Mm" "type": "Mm"
}, },
@ -609,6 +610,7 @@ snapshot_kind: text
} }
}, },
"artifactId": "[uuid]", "artifactId": "[uuid]",
"originalId": "[uuid]",
"units": { "units": {
"type": "Mm" "type": "Mm"
}, },

View File

@ -200,6 +200,7 @@ snapshot_kind: text
} }
}, },
"artifactId": "[uuid]", "artifactId": "[uuid]",
"originalId": "[uuid]",
"units": { "units": {
"type": "Mm" "type": "Mm"
}, },

View File

@ -274,6 +274,7 @@ snapshot_kind: text
} }
}, },
"artifactId": "[uuid]", "artifactId": "[uuid]",
"originalId": "[uuid]",
"units": { "units": {
"type": "Mm" "type": "Mm"
}, },
@ -695,6 +696,7 @@ snapshot_kind: text
} }
}, },
"artifactId": "[uuid]", "artifactId": "[uuid]",
"originalId": "[uuid]",
"units": { "units": {
"type": "Mm" "type": "Mm"
}, },
@ -757,6 +759,7 @@ snapshot_kind: text
} }
}, },
"artifactId": "[uuid]", "artifactId": "[uuid]",
"originalId": "[uuid]",
"units": { "units": {
"type": "Mm" "type": "Mm"
}, },
@ -1332,6 +1335,7 @@ snapshot_kind: text
} }
}, },
"artifactId": "[uuid]", "artifactId": "[uuid]",
"originalId": "[uuid]",
"units": { "units": {
"type": "Mm" "type": "Mm"
}, },
@ -1394,6 +1398,7 @@ snapshot_kind: text
} }
}, },
"artifactId": "[uuid]", "artifactId": "[uuid]",
"originalId": "[uuid]",
"units": { "units": {
"type": "Mm" "type": "Mm"
}, },
@ -1517,6 +1522,7 @@ snapshot_kind: text
} }
}, },
"artifactId": "[uuid]", "artifactId": "[uuid]",
"originalId": "[uuid]",
"units": { "units": {
"type": "Mm" "type": "Mm"
}, },
@ -2236,6 +2242,7 @@ snapshot_kind: text
} }
}, },
"artifactId": "[uuid]", "artifactId": "[uuid]",
"originalId": "[uuid]",
"units": { "units": {
"type": "Mm" "type": "Mm"
}, },
@ -2298,6 +2305,7 @@ snapshot_kind: text
} }
}, },
"artifactId": "[uuid]", "artifactId": "[uuid]",
"originalId": "[uuid]",
"units": { "units": {
"type": "Mm" "type": "Mm"
}, },
@ -2421,6 +2429,7 @@ snapshot_kind: text
} }
}, },
"artifactId": "[uuid]", "artifactId": "[uuid]",
"originalId": "[uuid]",
"units": { "units": {
"type": "Mm" "type": "Mm"
}, },
@ -2483,6 +2492,7 @@ snapshot_kind: text
} }
}, },
"artifactId": "[uuid]", "artifactId": "[uuid]",
"originalId": "[uuid]",
"units": { "units": {
"type": "Mm" "type": "Mm"
}, },
@ -2836,6 +2846,7 @@ snapshot_kind: text
} }
}, },
"artifactId": "[uuid]", "artifactId": "[uuid]",
"originalId": "[uuid]",
"units": { "units": {
"type": "Mm" "type": "Mm"
}, },
@ -3202,6 +3213,7 @@ snapshot_kind: text
} }
}, },
"artifactId": "[uuid]", "artifactId": "[uuid]",
"originalId": "[uuid]",
"units": { "units": {
"type": "Mm" "type": "Mm"
}, },
@ -3264,6 +3276,7 @@ snapshot_kind: text
} }
}, },
"artifactId": "[uuid]", "artifactId": "[uuid]",
"originalId": "[uuid]",
"units": { "units": {
"type": "Mm" "type": "Mm"
}, },
@ -3779,6 +3792,7 @@ snapshot_kind: text
} }
}, },
"artifactId": "[uuid]", "artifactId": "[uuid]",
"originalId": "[uuid]",
"units": { "units": {
"type": "Mm" "type": "Mm"
}, },
@ -3841,6 +3855,7 @@ snapshot_kind: text
} }
}, },
"artifactId": "[uuid]", "artifactId": "[uuid]",
"originalId": "[uuid]",
"units": { "units": {
"type": "Mm" "type": "Mm"
}, },
@ -3964,6 +3979,7 @@ snapshot_kind: text
} }
}, },
"artifactId": "[uuid]", "artifactId": "[uuid]",
"originalId": "[uuid]",
"units": { "units": {
"type": "Mm" "type": "Mm"
}, },
@ -4628,6 +4644,7 @@ snapshot_kind: text
} }
}, },
"artifactId": "[uuid]", "artifactId": "[uuid]",
"originalId": "[uuid]",
"units": { "units": {
"type": "Mm" "type": "Mm"
}, },
@ -4690,6 +4707,7 @@ snapshot_kind: text
} }
}, },
"artifactId": "[uuid]", "artifactId": "[uuid]",
"originalId": "[uuid]",
"units": { "units": {
"type": "Mm" "type": "Mm"
}, },
@ -4813,6 +4831,7 @@ snapshot_kind: text
} }
}, },
"artifactId": "[uuid]", "artifactId": "[uuid]",
"originalId": "[uuid]",
"units": { "units": {
"type": "Mm" "type": "Mm"
}, },
@ -4875,6 +4894,7 @@ snapshot_kind: text
} }
}, },
"artifactId": "[uuid]", "artifactId": "[uuid]",
"originalId": "[uuid]",
"units": { "units": {
"type": "Mm" "type": "Mm"
}, },

View File

@ -1,6 +1,7 @@
--- ---
source: kcl/src/simulation_tests.rs source: kcl/src/simulation_tests.rs
description: Program memory after executing basic_fillet_cube_close_opposite.kcl description: Program memory after executing basic_fillet_cube_close_opposite.kcl
snapshot_kind: text
--- ---
{ {
"environments": [ "environments": [
@ -422,6 +423,7 @@ description: Program memory after executing basic_fillet_cube_close_opposite.kcl
} }
}, },
"artifactId": "[uuid]", "artifactId": "[uuid]",
"originalId": "[uuid]",
"units": { "units": {
"type": "Mm" "type": "Mm"
}, },

View File

@ -1,6 +1,7 @@
--- ---
source: kcl/src/simulation_tests.rs source: kcl/src/simulation_tests.rs
description: Program memory after executing basic_fillet_cube_end.kcl description: Program memory after executing basic_fillet_cube_end.kcl
snapshot_kind: text
--- ---
{ {
"environments": [ "environments": [
@ -353,6 +354,7 @@ description: Program memory after executing basic_fillet_cube_end.kcl
} }
}, },
"artifactId": "[uuid]", "artifactId": "[uuid]",
"originalId": "[uuid]",
"units": { "units": {
"type": "Mm" "type": "Mm"
}, },

View File

@ -1,6 +1,7 @@
--- ---
source: kcl/src/simulation_tests.rs source: kcl/src/simulation_tests.rs
description: Program memory after executing basic_fillet_cube_next_adjacent.kcl description: Program memory after executing basic_fillet_cube_next_adjacent.kcl
snapshot_kind: text
--- ---
{ {
"environments": [ "environments": [
@ -491,6 +492,7 @@ description: Program memory after executing basic_fillet_cube_next_adjacent.kcl
} }
}, },
"artifactId": "[uuid]", "artifactId": "[uuid]",
"originalId": "[uuid]",
"units": { "units": {
"type": "Mm" "type": "Mm"
}, },

View File

@ -1,6 +1,7 @@
--- ---
source: kcl/src/simulation_tests.rs source: kcl/src/simulation_tests.rs
description: Program memory after executing basic_fillet_cube_previous_adjacent.kcl description: Program memory after executing basic_fillet_cube_previous_adjacent.kcl
snapshot_kind: text
--- ---
{ {
"environments": [ "environments": [
@ -491,6 +492,7 @@ description: Program memory after executing basic_fillet_cube_previous_adjacent.
} }
}, },
"artifactId": "[uuid]", "artifactId": "[uuid]",
"originalId": "[uuid]",
"units": { "units": {
"type": "Mm" "type": "Mm"
}, },

View File

@ -1,6 +1,7 @@
--- ---
source: kcl/src/simulation_tests.rs source: kcl/src/simulation_tests.rs
description: Program memory after executing basic_fillet_cube_start.kcl description: Program memory after executing basic_fillet_cube_start.kcl
snapshot_kind: text
--- ---
{ {
"environments": [ "environments": [
@ -353,6 +354,7 @@ description: Program memory after executing basic_fillet_cube_start.kcl
} }
}, },
"artifactId": "[uuid]", "artifactId": "[uuid]",
"originalId": "[uuid]",
"units": { "units": {
"type": "Mm" "type": "Mm"
}, },

View File

@ -1,6 +1,7 @@
--- ---
source: kcl/src/simulation_tests.rs source: kcl/src/simulation_tests.rs
description: Program memory after executing big_number_angle_to_match_length_x.kcl description: Program memory after executing big_number_angle_to_match_length_x.kcl
snapshot_kind: text
--- ---
{ {
"environments": [ "environments": [
@ -253,6 +254,7 @@ description: Program memory after executing big_number_angle_to_match_length_x.k
} }
}, },
"artifactId": "[uuid]", "artifactId": "[uuid]",
"originalId": "[uuid]",
"units": { "units": {
"type": "Mm" "type": "Mm"
}, },

View File

@ -1,6 +1,7 @@
--- ---
source: kcl/src/simulation_tests.rs source: kcl/src/simulation_tests.rs
description: Program memory after executing big_number_angle_to_match_length_y.kcl description: Program memory after executing big_number_angle_to_match_length_y.kcl
snapshot_kind: text
--- ---
{ {
"environments": [ "environments": [
@ -253,6 +254,7 @@ description: Program memory after executing big_number_angle_to_match_length_y.k
} }
}, },
"artifactId": "[uuid]", "artifactId": "[uuid]",
"originalId": "[uuid]",
"units": { "units": {
"type": "Mm" "type": "Mm"
}, },

View File

@ -1,6 +1,7 @@
--- ---
source: kcl/src/simulation_tests.rs source: kcl/src/simulation_tests.rs
description: Program memory after executing circle_three_point.kcl description: Program memory after executing circle_three_point.kcl
snapshot_kind: text
--- ---
{ {
"environments": [ "environments": [
@ -126,6 +127,7 @@ description: Program memory after executing circle_three_point.kcl
} }
}, },
"artifactId": "[uuid]", "artifactId": "[uuid]",
"originalId": "[uuid]",
"units": { "units": {
"type": "Mm" "type": "Mm"
}, },

View File

@ -1,6 +1,7 @@
--- ---
source: kcl/src/simulation_tests.rs source: kcl/src/simulation_tests.rs
description: Program memory after executing cube.kcl description: Program memory after executing cube.kcl
snapshot_kind: text
--- ---
{ {
"environments": [ "environments": [
@ -944,6 +945,7 @@ description: Program memory after executing cube.kcl
} }
}, },
"artifactId": "[uuid]", "artifactId": "[uuid]",
"originalId": "[uuid]",
"units": { "units": {
"type": "Mm" "type": "Mm"
}, },

View File

@ -1,6 +1,7 @@
--- ---
source: kcl/src/simulation_tests.rs source: kcl/src/simulation_tests.rs
description: Program memory after executing fillet-and-shell.kcl description: Program memory after executing fillet-and-shell.kcl
snapshot_kind: text
--- ---
{ {
"environments": [ "environments": [
@ -504,6 +505,7 @@ description: Program memory after executing fillet-and-shell.kcl
} }
}, },
"artifactId": "[uuid]", "artifactId": "[uuid]",
"originalId": "[uuid]",
"units": { "units": {
"type": "Mm" "type": "Mm"
}, },
@ -1787,6 +1789,7 @@ description: Program memory after executing fillet-and-shell.kcl
} }
}, },
"artifactId": "[uuid]", "artifactId": "[uuid]",
"originalId": "[uuid]",
"units": { "units": {
"type": "Mm" "type": "Mm"
}, },
@ -2389,6 +2392,7 @@ description: Program memory after executing fillet-and-shell.kcl
} }
}, },
"artifactId": "[uuid]", "artifactId": "[uuid]",
"originalId": "[uuid]",
"units": { "units": {
"type": "Mm" "type": "Mm"
}, },
@ -2674,6 +2678,7 @@ description: Program memory after executing fillet-and-shell.kcl
} }
}, },
"artifactId": "[uuid]", "artifactId": "[uuid]",
"originalId": "[uuid]",
"units": { "units": {
"type": "Mm" "type": "Mm"
}, },

View File

@ -1,6 +1,7 @@
--- ---
source: kcl/src/simulation_tests.rs source: kcl/src/simulation_tests.rs
description: Program memory after executing function_sketch.kcl description: Program memory after executing function_sketch.kcl
snapshot_kind: text
--- ---
{ {
"environments": [ "environments": [
@ -622,6 +623,7 @@ description: Program memory after executing function_sketch.kcl
} }
}, },
"artifactId": "[uuid]", "artifactId": "[uuid]",
"originalId": "[uuid]",
"units": { "units": {
"type": "Mm" "type": "Mm"
}, },

View File

@ -1,6 +1,7 @@
--- ---
source: kcl/src/simulation_tests.rs source: kcl/src/simulation_tests.rs
description: Program memory after executing function_sketch_with_position.kcl description: Program memory after executing function_sketch_with_position.kcl
snapshot_kind: text
--- ---
{ {
"environments": [ "environments": [
@ -608,6 +609,7 @@ description: Program memory after executing function_sketch_with_position.kcl
} }
}, },
"artifactId": "[uuid]", "artifactId": "[uuid]",
"originalId": "[uuid]",
"units": { "units": {
"type": "Mm" "type": "Mm"
}, },

View File

@ -1,6 +1,7 @@
--- ---
source: kcl/src/simulation_tests.rs source: kcl/src/simulation_tests.rs
description: Program memory after executing helix_ccw.kcl description: Program memory after executing helix_ccw.kcl
snapshot_kind: text
--- ---
{ {
"environments": [ "environments": [
@ -126,6 +127,7 @@ description: Program memory after executing helix_ccw.kcl
} }
}, },
"artifactId": "[uuid]", "artifactId": "[uuid]",
"originalId": "[uuid]",
"units": { "units": {
"type": "Mm" "type": "Mm"
}, },

View File

@ -1,6 +1,7 @@
--- ---
source: kcl/src/simulation_tests.rs source: kcl/src/simulation_tests.rs
description: Program memory after executing i_shape.kcl description: Program memory after executing i_shape.kcl
snapshot_kind: text
--- ---
{ {
"environments": [ "environments": [
@ -643,6 +644,7 @@ description: Program memory after executing i_shape.kcl
} }
}, },
"artifactId": "[uuid]", "artifactId": "[uuid]",
"originalId": "[uuid]",
"units": { "units": {
"type": "Mm" "type": "Mm"
}, },
@ -1623,6 +1625,7 @@ description: Program memory after executing i_shape.kcl
} }
}, },
"artifactId": "[uuid]", "artifactId": "[uuid]",
"originalId": "[uuid]",
"units": { "units": {
"type": "Mm" "type": "Mm"
}, },
@ -1923,6 +1926,7 @@ description: Program memory after executing i_shape.kcl
} }
}, },
"artifactId": "[uuid]", "artifactId": "[uuid]",
"originalId": "[uuid]",
"units": { "units": {
"type": "Mm" "type": "Mm"
}, },

View File

@ -1,6 +1,7 @@
--- ---
source: kcl/src/simulation_tests.rs source: kcl/src/simulation_tests.rs
description: Program memory after executing import_function_not_sketch.kcl description: Program memory after executing import_function_not_sketch.kcl
snapshot_kind: text
--- ---
{ {
"environments": [ "environments": [
@ -471,6 +472,7 @@ description: Program memory after executing import_function_not_sketch.kcl
} }
}, },
"artifactId": "[uuid]", "artifactId": "[uuid]",
"originalId": "[uuid]",
"units": { "units": {
"type": "Mm" "type": "Mm"
}, },
@ -905,6 +907,7 @@ description: Program memory after executing import_function_not_sketch.kcl
} }
}, },
"artifactId": "[uuid]", "artifactId": "[uuid]",
"originalId": "[uuid]",
"units": { "units": {
"type": "Mm" "type": "Mm"
}, },

View File

@ -1,6 +1,7 @@
--- ---
source: kcl/src/simulation_tests.rs source: kcl/src/simulation_tests.rs
description: Program memory after executing import_whole.kcl description: Program memory after executing import_whole.kcl
snapshot_kind: text
--- ---
{ {
"environments": [ "environments": [
@ -126,6 +127,7 @@ description: Program memory after executing import_whole.kcl
} }
}, },
"artifactId": "[uuid]", "artifactId": "[uuid]",
"originalId": "[uuid]",
"units": { "units": {
"type": "Inches" "type": "Inches"
}, },

View File

@ -1,6 +1,7 @@
--- ---
source: kcl/src/simulation_tests.rs source: kcl/src/simulation_tests.rs
description: Program memory after executing kittycad_svg.kcl description: Program memory after executing kittycad_svg.kcl
snapshot_kind: text
--- ---
{ {
"environments": [ "environments": [
@ -8820,6 +8821,7 @@ description: Program memory after executing kittycad_svg.kcl
} }
}, },
"artifactId": "[uuid]", "artifactId": "[uuid]",
"originalId": "[uuid]",
"units": { "units": {
"type": "Mm" "type": "Mm"
}, },

View File

@ -1,6 +1,7 @@
--- ---
source: kcl/src/simulation_tests.rs source: kcl/src/simulation_tests.rs
description: Program memory after executing linear_pattern3d_a_pattern.kcl description: Program memory after executing linear_pattern3d_a_pattern.kcl
snapshot_kind: text
--- ---
{ {
"environments": [ "environments": [
@ -213,6 +214,7 @@ description: Program memory after executing linear_pattern3d_a_pattern.kcl
} }
}, },
"artifactId": "[uuid]", "artifactId": "[uuid]",
"originalId": "[uuid]",
"units": { "units": {
"type": "Mm" "type": "Mm"
}, },
@ -431,6 +433,7 @@ description: Program memory after executing linear_pattern3d_a_pattern.kcl
} }
}, },
"artifactId": "[uuid]", "artifactId": "[uuid]",
"originalId": "[uuid]",
"units": { "units": {
"type": "Mm" "type": "Mm"
}, },
@ -645,6 +648,7 @@ description: Program memory after executing linear_pattern3d_a_pattern.kcl
} }
}, },
"artifactId": "[uuid]", "artifactId": "[uuid]",
"originalId": "[uuid]",
"units": { "units": {
"type": "Mm" "type": "Mm"
}, },
@ -859,6 +863,7 @@ description: Program memory after executing linear_pattern3d_a_pattern.kcl
} }
}, },
"artifactId": "[uuid]", "artifactId": "[uuid]",
"originalId": "[uuid]",
"units": { "units": {
"type": "Mm" "type": "Mm"
}, },
@ -1073,6 +1078,7 @@ description: Program memory after executing linear_pattern3d_a_pattern.kcl
} }
}, },
"artifactId": "[uuid]", "artifactId": "[uuid]",
"originalId": "[uuid]",
"units": { "units": {
"type": "Mm" "type": "Mm"
}, },
@ -1287,6 +1293,7 @@ description: Program memory after executing linear_pattern3d_a_pattern.kcl
} }
}, },
"artifactId": "[uuid]", "artifactId": "[uuid]",
"originalId": "[uuid]",
"units": { "units": {
"type": "Mm" "type": "Mm"
}, },
@ -1501,6 +1508,7 @@ description: Program memory after executing linear_pattern3d_a_pattern.kcl
} }
}, },
"artifactId": "[uuid]", "artifactId": "[uuid]",
"originalId": "[uuid]",
"units": { "units": {
"type": "Mm" "type": "Mm"
}, },
@ -1715,6 +1723,7 @@ description: Program memory after executing linear_pattern3d_a_pattern.kcl
} }
}, },
"artifactId": "[uuid]", "artifactId": "[uuid]",
"originalId": "[uuid]",
"units": { "units": {
"type": "Mm" "type": "Mm"
}, },
@ -1934,6 +1943,7 @@ description: Program memory after executing linear_pattern3d_a_pattern.kcl
} }
}, },
"artifactId": "[uuid]", "artifactId": "[uuid]",
"originalId": "[uuid]",
"units": { "units": {
"type": "Mm" "type": "Mm"
}, },
@ -2148,6 +2158,7 @@ description: Program memory after executing linear_pattern3d_a_pattern.kcl
} }
}, },
"artifactId": "[uuid]", "artifactId": "[uuid]",
"originalId": "[uuid]",
"units": { "units": {
"type": "Mm" "type": "Mm"
}, },
@ -2362,6 +2373,7 @@ description: Program memory after executing linear_pattern3d_a_pattern.kcl
} }
}, },
"artifactId": "[uuid]", "artifactId": "[uuid]",
"originalId": "[uuid]",
"units": { "units": {
"type": "Mm" "type": "Mm"
}, },
@ -2576,6 +2588,7 @@ description: Program memory after executing linear_pattern3d_a_pattern.kcl
} }
}, },
"artifactId": "[uuid]", "artifactId": "[uuid]",
"originalId": "[uuid]",
"units": { "units": {
"type": "Mm" "type": "Mm"
}, },
@ -2790,6 +2803,7 @@ description: Program memory after executing linear_pattern3d_a_pattern.kcl
} }
}, },
"artifactId": "[uuid]", "artifactId": "[uuid]",
"originalId": "[uuid]",
"units": { "units": {
"type": "Mm" "type": "Mm"
}, },
@ -3004,6 +3018,7 @@ description: Program memory after executing linear_pattern3d_a_pattern.kcl
} }
}, },
"artifactId": "[uuid]", "artifactId": "[uuid]",
"originalId": "[uuid]",
"units": { "units": {
"type": "Mm" "type": "Mm"
}, },
@ -3218,6 +3233,7 @@ description: Program memory after executing linear_pattern3d_a_pattern.kcl
} }
}, },
"artifactId": "[uuid]", "artifactId": "[uuid]",
"originalId": "[uuid]",
"units": { "units": {
"type": "Mm" "type": "Mm"
}, },
@ -3432,6 +3448,7 @@ description: Program memory after executing linear_pattern3d_a_pattern.kcl
} }
}, },
"artifactId": "[uuid]", "artifactId": "[uuid]",
"originalId": "[uuid]",
"units": { "units": {
"type": "Mm" "type": "Mm"
}, },
@ -3646,6 +3663,7 @@ description: Program memory after executing linear_pattern3d_a_pattern.kcl
} }
}, },
"artifactId": "[uuid]", "artifactId": "[uuid]",
"originalId": "[uuid]",
"units": { "units": {
"type": "Mm" "type": "Mm"
}, },
@ -3860,6 +3878,7 @@ description: Program memory after executing linear_pattern3d_a_pattern.kcl
} }
}, },
"artifactId": "[uuid]", "artifactId": "[uuid]",
"originalId": "[uuid]",
"units": { "units": {
"type": "Mm" "type": "Mm"
}, },
@ -4074,6 +4093,7 @@ description: Program memory after executing linear_pattern3d_a_pattern.kcl
} }
}, },
"artifactId": "[uuid]", "artifactId": "[uuid]",
"originalId": "[uuid]",
"units": { "units": {
"type": "Mm" "type": "Mm"
}, },
@ -4288,6 +4308,7 @@ description: Program memory after executing linear_pattern3d_a_pattern.kcl
} }
}, },
"artifactId": "[uuid]", "artifactId": "[uuid]",
"originalId": "[uuid]",
"units": { "units": {
"type": "Mm" "type": "Mm"
}, },
@ -4502,6 +4523,7 @@ description: Program memory after executing linear_pattern3d_a_pattern.kcl
} }
}, },
"artifactId": "[uuid]", "artifactId": "[uuid]",
"originalId": "[uuid]",
"units": { "units": {
"type": "Mm" "type": "Mm"
}, },
@ -4716,6 +4738,7 @@ description: Program memory after executing linear_pattern3d_a_pattern.kcl
} }
}, },
"artifactId": "[uuid]", "artifactId": "[uuid]",
"originalId": "[uuid]",
"units": { "units": {
"type": "Mm" "type": "Mm"
}, },
@ -4930,6 +4953,7 @@ description: Program memory after executing linear_pattern3d_a_pattern.kcl
} }
}, },
"artifactId": "[uuid]", "artifactId": "[uuid]",
"originalId": "[uuid]",
"units": { "units": {
"type": "Mm" "type": "Mm"
}, },
@ -5144,6 +5168,7 @@ description: Program memory after executing linear_pattern3d_a_pattern.kcl
} }
}, },
"artifactId": "[uuid]", "artifactId": "[uuid]",
"originalId": "[uuid]",
"units": { "units": {
"type": "Mm" "type": "Mm"
}, },
@ -5358,6 +5383,7 @@ description: Program memory after executing linear_pattern3d_a_pattern.kcl
} }
}, },
"artifactId": "[uuid]", "artifactId": "[uuid]",
"originalId": "[uuid]",
"units": { "units": {
"type": "Mm" "type": "Mm"
}, },
@ -5572,6 +5598,7 @@ description: Program memory after executing linear_pattern3d_a_pattern.kcl
} }
}, },
"artifactId": "[uuid]", "artifactId": "[uuid]",
"originalId": "[uuid]",
"units": { "units": {
"type": "Mm" "type": "Mm"
}, },
@ -5786,6 +5813,7 @@ description: Program memory after executing linear_pattern3d_a_pattern.kcl
} }
}, },
"artifactId": "[uuid]", "artifactId": "[uuid]",
"originalId": "[uuid]",
"units": { "units": {
"type": "Mm" "type": "Mm"
}, },
@ -6000,6 +6028,7 @@ description: Program memory after executing linear_pattern3d_a_pattern.kcl
} }
}, },
"artifactId": "[uuid]", "artifactId": "[uuid]",
"originalId": "[uuid]",
"units": { "units": {
"type": "Mm" "type": "Mm"
}, },
@ -6214,6 +6243,7 @@ description: Program memory after executing linear_pattern3d_a_pattern.kcl
} }
}, },
"artifactId": "[uuid]", "artifactId": "[uuid]",
"originalId": "[uuid]",
"units": { "units": {
"type": "Mm" "type": "Mm"
}, },
@ -6428,6 +6458,7 @@ description: Program memory after executing linear_pattern3d_a_pattern.kcl
} }
}, },
"artifactId": "[uuid]", "artifactId": "[uuid]",
"originalId": "[uuid]",
"units": { "units": {
"type": "Mm" "type": "Mm"
}, },
@ -6642,6 +6673,7 @@ description: Program memory after executing linear_pattern3d_a_pattern.kcl
} }
}, },
"artifactId": "[uuid]", "artifactId": "[uuid]",
"originalId": "[uuid]",
"units": { "units": {
"type": "Mm" "type": "Mm"
}, },
@ -6856,6 +6888,7 @@ description: Program memory after executing linear_pattern3d_a_pattern.kcl
} }
}, },
"artifactId": "[uuid]", "artifactId": "[uuid]",
"originalId": "[uuid]",
"units": { "units": {
"type": "Mm" "type": "Mm"
}, },
@ -7070,6 +7103,7 @@ description: Program memory after executing linear_pattern3d_a_pattern.kcl
} }
}, },
"artifactId": "[uuid]", "artifactId": "[uuid]",
"originalId": "[uuid]",
"units": { "units": {
"type": "Mm" "type": "Mm"
}, },
@ -7284,6 +7318,7 @@ description: Program memory after executing linear_pattern3d_a_pattern.kcl
} }
}, },
"artifactId": "[uuid]", "artifactId": "[uuid]",
"originalId": "[uuid]",
"units": { "units": {
"type": "Mm" "type": "Mm"
}, },
@ -7498,6 +7533,7 @@ description: Program memory after executing linear_pattern3d_a_pattern.kcl
} }
}, },
"artifactId": "[uuid]", "artifactId": "[uuid]",
"originalId": "[uuid]",
"units": { "units": {
"type": "Mm" "type": "Mm"
}, },
@ -7712,6 +7748,7 @@ description: Program memory after executing linear_pattern3d_a_pattern.kcl
} }
}, },
"artifactId": "[uuid]", "artifactId": "[uuid]",
"originalId": "[uuid]",
"units": { "units": {
"type": "Mm" "type": "Mm"
}, },
@ -7926,6 +7963,7 @@ description: Program memory after executing linear_pattern3d_a_pattern.kcl
} }
}, },
"artifactId": "[uuid]", "artifactId": "[uuid]",
"originalId": "[uuid]",
"units": { "units": {
"type": "Mm" "type": "Mm"
}, },
@ -8140,6 +8178,7 @@ description: Program memory after executing linear_pattern3d_a_pattern.kcl
} }
}, },
"artifactId": "[uuid]", "artifactId": "[uuid]",
"originalId": "[uuid]",
"units": { "units": {
"type": "Mm" "type": "Mm"
}, },
@ -8354,6 +8393,7 @@ description: Program memory after executing linear_pattern3d_a_pattern.kcl
} }
}, },
"artifactId": "[uuid]", "artifactId": "[uuid]",
"originalId": "[uuid]",
"units": { "units": {
"type": "Mm" "type": "Mm"
}, },
@ -8568,6 +8608,7 @@ description: Program memory after executing linear_pattern3d_a_pattern.kcl
} }
}, },
"artifactId": "[uuid]", "artifactId": "[uuid]",
"originalId": "[uuid]",
"units": { "units": {
"type": "Mm" "type": "Mm"
}, },
@ -8782,6 +8823,7 @@ description: Program memory after executing linear_pattern3d_a_pattern.kcl
} }
}, },
"artifactId": "[uuid]", "artifactId": "[uuid]",
"originalId": "[uuid]",
"units": { "units": {
"type": "Mm" "type": "Mm"
}, },
@ -8996,6 +9038,7 @@ description: Program memory after executing linear_pattern3d_a_pattern.kcl
} }
}, },
"artifactId": "[uuid]", "artifactId": "[uuid]",
"originalId": "[uuid]",
"units": { "units": {
"type": "Mm" "type": "Mm"
}, },
@ -9210,6 +9253,7 @@ description: Program memory after executing linear_pattern3d_a_pattern.kcl
} }
}, },
"artifactId": "[uuid]", "artifactId": "[uuid]",
"originalId": "[uuid]",
"units": { "units": {
"type": "Mm" "type": "Mm"
}, },
@ -9424,6 +9468,7 @@ description: Program memory after executing linear_pattern3d_a_pattern.kcl
} }
}, },
"artifactId": "[uuid]", "artifactId": "[uuid]",
"originalId": "[uuid]",
"units": { "units": {
"type": "Mm" "type": "Mm"
}, },
@ -9638,6 +9683,7 @@ description: Program memory after executing linear_pattern3d_a_pattern.kcl
} }
}, },
"artifactId": "[uuid]", "artifactId": "[uuid]",
"originalId": "[uuid]",
"units": { "units": {
"type": "Mm" "type": "Mm"
}, },
@ -9852,6 +9898,7 @@ description: Program memory after executing linear_pattern3d_a_pattern.kcl
} }
}, },
"artifactId": "[uuid]", "artifactId": "[uuid]",
"originalId": "[uuid]",
"units": { "units": {
"type": "Mm" "type": "Mm"
}, },
@ -10066,6 +10113,7 @@ description: Program memory after executing linear_pattern3d_a_pattern.kcl
} }
}, },
"artifactId": "[uuid]", "artifactId": "[uuid]",
"originalId": "[uuid]",
"units": { "units": {
"type": "Mm" "type": "Mm"
}, },
@ -10280,6 +10328,7 @@ description: Program memory after executing linear_pattern3d_a_pattern.kcl
} }
}, },
"artifactId": "[uuid]", "artifactId": "[uuid]",
"originalId": "[uuid]",
"units": { "units": {
"type": "Mm" "type": "Mm"
}, },
@ -10494,6 +10543,7 @@ description: Program memory after executing linear_pattern3d_a_pattern.kcl
} }
}, },
"artifactId": "[uuid]", "artifactId": "[uuid]",
"originalId": "[uuid]",
"units": { "units": {
"type": "Mm" "type": "Mm"
}, },
@ -10708,6 +10758,7 @@ description: Program memory after executing linear_pattern3d_a_pattern.kcl
} }
}, },
"artifactId": "[uuid]", "artifactId": "[uuid]",
"originalId": "[uuid]",
"units": { "units": {
"type": "Mm" "type": "Mm"
}, },
@ -10922,6 +10973,7 @@ description: Program memory after executing linear_pattern3d_a_pattern.kcl
} }
}, },
"artifactId": "[uuid]", "artifactId": "[uuid]",
"originalId": "[uuid]",
"units": { "units": {
"type": "Mm" "type": "Mm"
}, },
@ -11136,6 +11188,7 @@ description: Program memory after executing linear_pattern3d_a_pattern.kcl
} }
}, },
"artifactId": "[uuid]", "artifactId": "[uuid]",
"originalId": "[uuid]",
"units": { "units": {
"type": "Mm" "type": "Mm"
}, },
@ -11350,6 +11403,7 @@ description: Program memory after executing linear_pattern3d_a_pattern.kcl
} }
}, },
"artifactId": "[uuid]", "artifactId": "[uuid]",
"originalId": "[uuid]",
"units": { "units": {
"type": "Mm" "type": "Mm"
}, },
@ -11564,6 +11618,7 @@ description: Program memory after executing linear_pattern3d_a_pattern.kcl
} }
}, },
"artifactId": "[uuid]", "artifactId": "[uuid]",
"originalId": "[uuid]",
"units": { "units": {
"type": "Mm" "type": "Mm"
}, },
@ -11778,6 +11833,7 @@ description: Program memory after executing linear_pattern3d_a_pattern.kcl
} }
}, },
"artifactId": "[uuid]", "artifactId": "[uuid]",
"originalId": "[uuid]",
"units": { "units": {
"type": "Mm" "type": "Mm"
}, },
@ -11992,6 +12048,7 @@ description: Program memory after executing linear_pattern3d_a_pattern.kcl
} }
}, },
"artifactId": "[uuid]", "artifactId": "[uuid]",
"originalId": "[uuid]",
"units": { "units": {
"type": "Mm" "type": "Mm"
}, },
@ -12206,6 +12263,7 @@ description: Program memory after executing linear_pattern3d_a_pattern.kcl
} }
}, },
"artifactId": "[uuid]", "artifactId": "[uuid]",
"originalId": "[uuid]",
"units": { "units": {
"type": "Mm" "type": "Mm"
}, },

View File

@ -1,6 +1,7 @@
--- ---
source: kcl/src/simulation_tests.rs source: kcl/src/simulation_tests.rs
description: Program memory after executing mike_stress_test.kcl description: Program memory after executing mike_stress_test.kcl
snapshot_kind: text
--- ---
{ {
"environments": [ "environments": [
@ -31120,6 +31121,7 @@ description: Program memory after executing mike_stress_test.kcl
} }
}, },
"artifactId": "[uuid]", "artifactId": "[uuid]",
"originalId": "[uuid]",
"units": { "units": {
"type": "Mm" "type": "Mm"
}, },

View File

@ -1,6 +1,7 @@
--- ---
source: kcl/src/simulation_tests.rs source: kcl/src/simulation_tests.rs
description: Program memory after executing neg_xz_plane.kcl description: Program memory after executing neg_xz_plane.kcl
snapshot_kind: text
--- ---
{ {
"environments": [ "environments": [
@ -182,6 +183,7 @@ description: Program memory after executing neg_xz_plane.kcl
} }
}, },
"artifactId": "[uuid]", "artifactId": "[uuid]",
"originalId": "[uuid]",
"units": { "units": {
"type": "Mm" "type": "Mm"
}, },

View File

@ -1,6 +1,7 @@
--- ---
source: kcl/src/simulation_tests.rs source: kcl/src/simulation_tests.rs
description: Program memory after executing parametric.kcl description: Program memory after executing parametric.kcl
snapshot_kind: text
--- ---
{ {
"environments": [ "environments": [
@ -288,6 +289,7 @@ description: Program memory after executing parametric.kcl
} }
}, },
"artifactId": "[uuid]", "artifactId": "[uuid]",
"originalId": "[uuid]",
"units": { "units": {
"type": "Mm" "type": "Mm"
}, },

View File

@ -1,6 +1,7 @@
--- ---
source: kcl/src/simulation_tests.rs source: kcl/src/simulation_tests.rs
description: Program memory after executing parametric_with_tan_arc.kcl description: Program memory after executing parametric_with_tan_arc.kcl
snapshot_kind: text
--- ---
{ {
"environments": [ "environments": [
@ -360,6 +361,7 @@ description: Program memory after executing parametric_with_tan_arc.kcl
} }
}, },
"artifactId": "[uuid]", "artifactId": "[uuid]",
"originalId": "[uuid]",
"units": { "units": {
"type": "Mm" "type": "Mm"
}, },

View File

@ -1,6 +1,7 @@
--- ---
source: kcl/src/simulation_tests.rs source: kcl/src/simulation_tests.rs
description: Program memory after executing pentagon_fillet_sugar.kcl description: Program memory after executing pentagon_fillet_sugar.kcl
snapshot_kind: text
--- ---
{ {
"environments": [ "environments": [
@ -713,6 +714,7 @@ description: Program memory after executing pentagon_fillet_sugar.kcl
} }
}, },
"artifactId": "[uuid]", "artifactId": "[uuid]",
"originalId": "[uuid]",
"units": { "units": {
"type": "Mm" "type": "Mm"
}, },
@ -842,6 +844,7 @@ description: Program memory after executing pentagon_fillet_sugar.kcl
} }
}, },
"artifactId": "[uuid]", "artifactId": "[uuid]",
"originalId": "[uuid]",
"units": { "units": {
"type": "Mm" "type": "Mm"
}, },
@ -1297,6 +1300,7 @@ description: Program memory after executing pentagon_fillet_sugar.kcl
} }
}, },
"artifactId": "[uuid]", "artifactId": "[uuid]",
"originalId": "[uuid]",
"units": { "units": {
"type": "Mm" "type": "Mm"
}, },
@ -1426,6 +1430,7 @@ description: Program memory after executing pentagon_fillet_sugar.kcl
} }
}, },
"artifactId": "[uuid]", "artifactId": "[uuid]",
"originalId": "[uuid]",
"units": { "units": {
"type": "Mm" "type": "Mm"
}, },
@ -2318,6 +2323,7 @@ description: Program memory after executing pentagon_fillet_sugar.kcl
} }
}, },
"artifactId": "[uuid]", "artifactId": "[uuid]",
"originalId": "[uuid]",
"units": { "units": {
"type": "Mm" "type": "Mm"
}, },
@ -2782,6 +2788,7 @@ description: Program memory after executing pentagon_fillet_sugar.kcl
} }
}, },
"artifactId": "[uuid]", "artifactId": "[uuid]",
"originalId": "[uuid]",
"units": { "units": {
"type": "Mm" "type": "Mm"
}, },
@ -3275,6 +3282,7 @@ description: Program memory after executing pentagon_fillet_sugar.kcl
} }
}, },
"artifactId": "[uuid]", "artifactId": "[uuid]",
"originalId": "[uuid]",
"units": { "units": {
"type": "Mm" "type": "Mm"
}, },
@ -3404,6 +3412,7 @@ description: Program memory after executing pentagon_fillet_sugar.kcl
} }
}, },
"artifactId": "[uuid]", "artifactId": "[uuid]",
"originalId": "[uuid]",
"units": { "units": {
"type": "Mm" "type": "Mm"
}, },
@ -3913,6 +3922,7 @@ description: Program memory after executing pentagon_fillet_sugar.kcl
} }
}, },
"artifactId": "[uuid]", "artifactId": "[uuid]",
"originalId": "[uuid]",
"units": { "units": {
"type": "Mm" "type": "Mm"
}, },
@ -4042,6 +4052,7 @@ description: Program memory after executing pentagon_fillet_sugar.kcl
} }
}, },
"artifactId": "[uuid]", "artifactId": "[uuid]",
"originalId": "[uuid]",
"units": { "units": {
"type": "Mm" "type": "Mm"
}, },

View File

@ -1,6 +1,7 @@
--- ---
source: kcl/src/simulation_tests.rs source: kcl/src/simulation_tests.rs
description: Program memory after executing pipe_as_arg.kcl description: Program memory after executing pipe_as_arg.kcl
snapshot_kind: text
--- ---
{ {
"environments": [ "environments": [
@ -1765,6 +1766,7 @@ description: Program memory after executing pipe_as_arg.kcl
} }
}, },
"artifactId": "[uuid]", "artifactId": "[uuid]",
"originalId": "[uuid]",
"units": { "units": {
"type": "Mm" "type": "Mm"
}, },

View File

@ -1,6 +1,7 @@
--- ---
source: kcl/src/simulation_tests.rs source: kcl/src/simulation_tests.rs
description: Program memory after executing poop_chute.kcl description: Program memory after executing poop_chute.kcl
snapshot_kind: text
--- ---
{ {
"environments": [ "environments": [
@ -680,6 +681,7 @@ description: Program memory after executing poop_chute.kcl
} }
}, },
"artifactId": "[uuid]", "artifactId": "[uuid]",
"originalId": "[uuid]",
"units": { "units": {
"type": "Mm" "type": "Mm"
}, },
@ -1213,6 +1215,7 @@ description: Program memory after executing poop_chute.kcl
} }
}, },
"artifactId": "[uuid]", "artifactId": "[uuid]",
"originalId": "[uuid]",
"units": { "units": {
"type": "Mm" "type": "Mm"
}, },
@ -1764,6 +1767,7 @@ description: Program memory after executing poop_chute.kcl
} }
}, },
"artifactId": "[uuid]", "artifactId": "[uuid]",
"originalId": "[uuid]",
"units": { "units": {
"type": "Mm" "type": "Mm"
}, },

View File

@ -1,6 +1,7 @@
--- ---
source: kcl/src/simulation_tests.rs source: kcl/src/simulation_tests.rs
description: Program memory after executing riddle_small.kcl description: Program memory after executing riddle_small.kcl
snapshot_kind: text
--- ---
{ {
"environments": [ "environments": [
@ -322,6 +323,7 @@ description: Program memory after executing riddle_small.kcl
} }
}, },
"artifactId": "[uuid]", "artifactId": "[uuid]",
"originalId": "[uuid]",
"units": { "units": {
"type": "Mm" "type": "Mm"
}, },

View File

@ -1,6 +1,7 @@
--- ---
source: kcl/src/simulation_tests.rs source: kcl/src/simulation_tests.rs
description: Program memory after executing sketch-on-chamfer-two-times-different-order.kcl description: Program memory after executing sketch-on-chamfer-two-times-different-order.kcl
snapshot_kind: text
--- ---
{ {
"environments": [ "environments": [
@ -544,6 +545,7 @@ description: Program memory after executing sketch-on-chamfer-two-times-differen
} }
}, },
"artifactId": "[uuid]", "artifactId": "[uuid]",
"originalId": "[uuid]",
"units": { "units": {
"type": "Mm" "type": "Mm"
}, },
@ -1330,6 +1332,7 @@ description: Program memory after executing sketch-on-chamfer-two-times-differen
} }
}, },
"artifactId": "[uuid]", "artifactId": "[uuid]",
"originalId": "[uuid]",
"units": { "units": {
"type": "Mm" "type": "Mm"
}, },
@ -1604,6 +1607,7 @@ description: Program memory after executing sketch-on-chamfer-two-times-differen
} }
}, },
"artifactId": "[uuid]", "artifactId": "[uuid]",
"originalId": "[uuid]",
"units": { "units": {
"type": "Mm" "type": "Mm"
}, },
@ -2622,6 +2626,7 @@ description: Program memory after executing sketch-on-chamfer-two-times-differen
} }
}, },
"artifactId": "[uuid]", "artifactId": "[uuid]",
"originalId": "[uuid]",
"units": { "units": {
"type": "Mm" "type": "Mm"
}, },
@ -3294,6 +3299,7 @@ description: Program memory after executing sketch-on-chamfer-two-times-differen
} }
}, },
"artifactId": "[uuid]", "artifactId": "[uuid]",
"originalId": "[uuid]",
"units": { "units": {
"type": "Mm" "type": "Mm"
}, },
@ -3568,6 +3574,7 @@ description: Program memory after executing sketch-on-chamfer-two-times-differen
} }
}, },
"artifactId": "[uuid]", "artifactId": "[uuid]",
"originalId": "[uuid]",
"units": { "units": {
"type": "Mm" "type": "Mm"
}, },
@ -4240,6 +4247,7 @@ description: Program memory after executing sketch-on-chamfer-two-times-differen
} }
}, },
"artifactId": "[uuid]", "artifactId": "[uuid]",
"originalId": "[uuid]",
"units": { "units": {
"type": "Mm" "type": "Mm"
}, },
@ -4469,6 +4477,7 @@ description: Program memory after executing sketch-on-chamfer-two-times-differen
} }
}, },
"artifactId": "[uuid]", "artifactId": "[uuid]",
"originalId": "[uuid]",
"units": { "units": {
"type": "Mm" "type": "Mm"
}, },

View File

@ -1,6 +1,7 @@
--- ---
source: kcl/src/simulation_tests.rs source: kcl/src/simulation_tests.rs
description: Program memory after executing sketch-on-chamfer-two-times.kcl description: Program memory after executing sketch-on-chamfer-two-times.kcl
snapshot_kind: text
--- ---
{ {
"environments": [ "environments": [
@ -544,6 +545,7 @@ description: Program memory after executing sketch-on-chamfer-two-times.kcl
} }
}, },
"artifactId": "[uuid]", "artifactId": "[uuid]",
"originalId": "[uuid]",
"units": { "units": {
"type": "Mm" "type": "Mm"
}, },
@ -1330,6 +1332,7 @@ description: Program memory after executing sketch-on-chamfer-two-times.kcl
} }
}, },
"artifactId": "[uuid]", "artifactId": "[uuid]",
"originalId": "[uuid]",
"units": { "units": {
"type": "Mm" "type": "Mm"
}, },
@ -1604,6 +1607,7 @@ description: Program memory after executing sketch-on-chamfer-two-times.kcl
} }
}, },
"artifactId": "[uuid]", "artifactId": "[uuid]",
"originalId": "[uuid]",
"units": { "units": {
"type": "Mm" "type": "Mm"
}, },
@ -2622,6 +2626,7 @@ description: Program memory after executing sketch-on-chamfer-two-times.kcl
} }
}, },
"artifactId": "[uuid]", "artifactId": "[uuid]",
"originalId": "[uuid]",
"units": { "units": {
"type": "Mm" "type": "Mm"
}, },
@ -3294,6 +3299,7 @@ description: Program memory after executing sketch-on-chamfer-two-times.kcl
} }
}, },
"artifactId": "[uuid]", "artifactId": "[uuid]",
"originalId": "[uuid]",
"units": { "units": {
"type": "Mm" "type": "Mm"
}, },
@ -3568,6 +3574,7 @@ description: Program memory after executing sketch-on-chamfer-two-times.kcl
} }
}, },
"artifactId": "[uuid]", "artifactId": "[uuid]",
"originalId": "[uuid]",
"units": { "units": {
"type": "Mm" "type": "Mm"
}, },
@ -4240,6 +4247,7 @@ description: Program memory after executing sketch-on-chamfer-two-times.kcl
} }
}, },
"artifactId": "[uuid]", "artifactId": "[uuid]",
"originalId": "[uuid]",
"units": { "units": {
"type": "Mm" "type": "Mm"
}, },
@ -4469,6 +4477,7 @@ description: Program memory after executing sketch-on-chamfer-two-times.kcl
} }
}, },
"artifactId": "[uuid]", "artifactId": "[uuid]",
"originalId": "[uuid]",
"units": { "units": {
"type": "Mm" "type": "Mm"
}, },

View File

@ -1,6 +1,7 @@
--- ---
source: kcl/src/simulation_tests.rs source: kcl/src/simulation_tests.rs
description: Program memory after executing sketch_in_object.kcl description: Program memory after executing sketch_in_object.kcl
snapshot_kind: text
--- ---
{ {
"environments": [ "environments": [
@ -1173,6 +1174,7 @@ description: Program memory after executing sketch_in_object.kcl
} }
}, },
"artifactId": "[uuid]", "artifactId": "[uuid]",
"originalId": "[uuid]",
"units": { "units": {
"type": "Mm" "type": "Mm"
}, },
@ -1330,6 +1332,7 @@ description: Program memory after executing sketch_in_object.kcl
} }
}, },
"artifactId": "[uuid]", "artifactId": "[uuid]",
"originalId": "[uuid]",
"units": { "units": {
"type": "Mm" "type": "Mm"
}, },

View File

@ -1,6 +1,7 @@
--- ---
source: kcl/src/simulation_tests.rs source: kcl/src/simulation_tests.rs
description: Program memory after executing sketch_on_face.kcl description: Program memory after executing sketch_on_face.kcl
snapshot_kind: text
--- ---
{ {
"environments": [ "environments": [
@ -344,6 +345,7 @@ description: Program memory after executing sketch_on_face.kcl
} }
}, },
"artifactId": "[uuid]", "artifactId": "[uuid]",
"originalId": "[uuid]",
"units": { "units": {
"type": "Mm" "type": "Mm"
}, },
@ -787,6 +789,7 @@ description: Program memory after executing sketch_on_face.kcl
} }
}, },
"artifactId": "[uuid]", "artifactId": "[uuid]",
"originalId": "[uuid]",
"units": { "units": {
"type": "Mm" "type": "Mm"
}, },
@ -849,6 +852,7 @@ description: Program memory after executing sketch_on_face.kcl
} }
}, },
"artifactId": "[uuid]", "artifactId": "[uuid]",
"originalId": "[uuid]",
"units": { "units": {
"type": "Mm" "type": "Mm"
}, },

View File

@ -1,6 +1,7 @@
--- ---
source: kcl/src/simulation_tests.rs source: kcl/src/simulation_tests.rs
description: Program memory after executing sketch_on_face_after_fillets_referencing_face.kcl description: Program memory after executing sketch_on_face_after_fillets_referencing_face.kcl
snapshot_kind: text
--- ---
{ {
"environments": [ "environments": [
@ -537,6 +538,7 @@ description: Program memory after executing sketch_on_face_after_fillets_referen
} }
}, },
"artifactId": "[uuid]", "artifactId": "[uuid]",
"originalId": "[uuid]",
"units": { "units": {
"type": "Mm" "type": "Mm"
}, },
@ -1448,6 +1450,7 @@ description: Program memory after executing sketch_on_face_after_fillets_referen
} }
}, },
"artifactId": "[uuid]", "artifactId": "[uuid]",
"originalId": "[uuid]",
"units": { "units": {
"type": "Mm" "type": "Mm"
}, },
@ -1526,6 +1529,7 @@ description: Program memory after executing sketch_on_face_after_fillets_referen
} }
}, },
"artifactId": "[uuid]", "artifactId": "[uuid]",
"originalId": "[uuid]",
"units": { "units": {
"type": "Mm" "type": "Mm"
}, },

View File

@ -1,6 +1,7 @@
--- ---
source: kcl/src/simulation_tests.rs source: kcl/src/simulation_tests.rs
description: Program memory after executing sketch_on_face_circle_tagged.kcl description: Program memory after executing sketch_on_face_circle_tagged.kcl
snapshot_kind: text
--- ---
{ {
"environments": [ "environments": [
@ -607,6 +608,7 @@ description: Program memory after executing sketch_on_face_circle_tagged.kcl
} }
}, },
"artifactId": "[uuid]", "artifactId": "[uuid]",
"originalId": "[uuid]",
"units": { "units": {
"type": "Mm" "type": "Mm"
}, },
@ -902,6 +904,7 @@ description: Program memory after executing sketch_on_face_circle_tagged.kcl
} }
}, },
"artifactId": "[uuid]", "artifactId": "[uuid]",
"originalId": "[uuid]",
"units": { "units": {
"type": "Mm" "type": "Mm"
}, },
@ -1031,6 +1034,7 @@ description: Program memory after executing sketch_on_face_circle_tagged.kcl
} }
}, },
"artifactId": "[uuid]", "artifactId": "[uuid]",
"originalId": "[uuid]",
"units": { "units": {
"type": "Mm" "type": "Mm"
}, },

View File

@ -1,6 +1,7 @@
--- ---
source: kcl/src/simulation_tests.rs source: kcl/src/simulation_tests.rs
description: Program memory after executing sketch_on_face_end.kcl description: Program memory after executing sketch_on_face_end.kcl
snapshot_kind: text
--- ---
{ {
"environments": [ "environments": [
@ -541,6 +542,7 @@ description: Program memory after executing sketch_on_face_end.kcl
} }
}, },
"artifactId": "[uuid]", "artifactId": "[uuid]",
"originalId": "[uuid]",
"units": { "units": {
"type": "Mm" "type": "Mm"
}, },
@ -913,6 +915,7 @@ description: Program memory after executing sketch_on_face_end.kcl
} }
}, },
"artifactId": "[uuid]", "artifactId": "[uuid]",
"originalId": "[uuid]",
"units": { "units": {
"type": "Mm" "type": "Mm"
}, },
@ -975,6 +978,7 @@ description: Program memory after executing sketch_on_face_end.kcl
} }
}, },
"artifactId": "[uuid]", "artifactId": "[uuid]",
"originalId": "[uuid]",
"units": { "units": {
"type": "Mm" "type": "Mm"
}, },

View File

@ -1,6 +1,7 @@
--- ---
source: kcl/src/simulation_tests.rs source: kcl/src/simulation_tests.rs
description: Program memory after executing sketch_on_face_end_negative_extrude.kcl description: Program memory after executing sketch_on_face_end_negative_extrude.kcl
snapshot_kind: text
--- ---
{ {
"environments": [ "environments": [
@ -541,6 +542,7 @@ description: Program memory after executing sketch_on_face_end_negative_extrude.
} }
}, },
"artifactId": "[uuid]", "artifactId": "[uuid]",
"originalId": "[uuid]",
"units": { "units": {
"type": "Mm" "type": "Mm"
}, },
@ -913,6 +915,7 @@ description: Program memory after executing sketch_on_face_end_negative_extrude.
} }
}, },
"artifactId": "[uuid]", "artifactId": "[uuid]",
"originalId": "[uuid]",
"units": { "units": {
"type": "Mm" "type": "Mm"
}, },
@ -975,6 +978,7 @@ description: Program memory after executing sketch_on_face_end_negative_extrude.
} }
}, },
"artifactId": "[uuid]", "artifactId": "[uuid]",
"originalId": "[uuid]",
"units": { "units": {
"type": "Mm" "type": "Mm"
}, },

View File

@ -1,6 +1,7 @@
--- ---
source: kcl/src/simulation_tests.rs source: kcl/src/simulation_tests.rs
description: Program memory after executing sketch_on_face_start.kcl description: Program memory after executing sketch_on_face_start.kcl
snapshot_kind: text
--- ---
{ {
"environments": [ "environments": [
@ -541,6 +542,7 @@ description: Program memory after executing sketch_on_face_start.kcl
} }
}, },
"artifactId": "[uuid]", "artifactId": "[uuid]",
"originalId": "[uuid]",
"units": { "units": {
"type": "Mm" "type": "Mm"
}, },
@ -758,6 +760,7 @@ description: Program memory after executing sketch_on_face_start.kcl
} }
}, },
"artifactId": "[uuid]", "artifactId": "[uuid]",
"originalId": "[uuid]",
"units": { "units": {
"type": "Mm" "type": "Mm"
}, },
@ -1130,6 +1133,7 @@ description: Program memory after executing sketch_on_face_start.kcl
} }
}, },
"artifactId": "[uuid]", "artifactId": "[uuid]",
"originalId": "[uuid]",
"units": { "units": {
"type": "Mm" "type": "Mm"
}, },
@ -1192,6 +1196,7 @@ description: Program memory after executing sketch_on_face_start.kcl
} }
}, },
"artifactId": "[uuid]", "artifactId": "[uuid]",
"originalId": "[uuid]",
"units": { "units": {
"type": "Mm" "type": "Mm"
}, },

View File

@ -1,6 +1,7 @@
--- ---
source: kcl/src/simulation_tests.rs source: kcl/src/simulation_tests.rs
description: Program memory after executing tangential_arc.kcl description: Program memory after executing tangential_arc.kcl
snapshot_kind: text
--- ---
{ {
"environments": [ "environments": [
@ -187,6 +188,7 @@ description: Program memory after executing tangential_arc.kcl
} }
}, },
"artifactId": "[uuid]", "artifactId": "[uuid]",
"originalId": "[uuid]",
"units": { "units": {
"type": "Mm" "type": "Mm"
}, },

View File

@ -1,6 +1,7 @@
--- ---
source: kcl/src/simulation_tests.rs source: kcl/src/simulation_tests.rs
description: Program memory after executing xz_plane.kcl description: Program memory after executing xz_plane.kcl
snapshot_kind: text
--- ---
{ {
"environments": [ "environments": [
@ -182,6 +183,7 @@ description: Program memory after executing xz_plane.kcl
} }
}, },
"artifactId": "[uuid]", "artifactId": "[uuid]",
"originalId": "[uuid]",
"units": { "units": {
"type": "Mm" "type": "Mm"
}, },