From 49d52ce94bc8727a44e4e31c7e1596277982078d Mon Sep 17 00:00:00 2001 From: Nick Cameron Date: Fri, 14 Feb 2025 08:28:00 +1300 Subject: [PATCH 01/30] Remove KclValue::Int (#5369) Signed-off-by: Nick Cameron --- docs/kcl/std.json | 442 ------------------ docs/kcl/types/KclValue.md | 17 - src/wasm-lib/kcl/src/execution/exec_ast.rs | 28 +- src/wasm-lib/kcl/src/execution/kcl_value.rs | 13 - src/wasm-lib/kcl/src/execution/memory.rs | 16 +- src/wasm-lib/kcl/src/std/args.rs | 4 - src/wasm-lib/kcl/src/std/patterns.rs | 2 +- .../array_range_expr/program_memory.snap | 80 ++-- .../program_memory.snap | 44 +- .../tests/double_map_fn/program_memory.snap | 12 +- 10 files changed, 81 insertions(+), 577 deletions(-) diff --git a/docs/kcl/std.json b/docs/kcl/std.json index 65ce3ad7d..0ac01b988 100644 --- a/docs/kcl/std.json +++ b/docs/kcl/std.json @@ -123243,32 +123243,6 @@ } } }, - { - "type": "object", - "required": [ - "__meta", - "type", - "value" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Int" - ] - }, - "value": { - "type": "integer", - "format": "int64" - }, - "__meta": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Metadata" - } - } - } - }, { "type": "object", "required": [ @@ -125487,32 +125461,6 @@ } } }, - { - "type": "object", - "required": [ - "__meta", - "type", - "value" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Int" - ] - }, - "value": { - "type": "integer", - "format": "int64" - }, - "__meta": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Metadata" - } - } - } - }, { "type": "object", "required": [ @@ -127735,32 +127683,6 @@ } } }, - { - "type": "object", - "required": [ - "__meta", - "type", - "value" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Int" - ] - }, - "value": { - "type": "integer", - "format": "int64" - }, - "__meta": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Metadata" - } - } - } - }, { "type": "object", "required": [ @@ -194469,32 +194391,6 @@ } } }, - { - "type": "object", - "required": [ - "__meta", - "type", - "value" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Int" - ] - }, - "value": { - "type": "integer", - "format": "int64" - }, - "__meta": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Metadata" - } - } - } - }, { "type": "object", "required": [ @@ -196712,32 +196608,6 @@ } } }, - { - "type": "object", - "required": [ - "__meta", - "type", - "value" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Int" - ] - }, - "value": { - "type": "integer", - "format": "int64" - }, - "__meta": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Metadata" - } - } - } - }, { "type": "object", "required": [ @@ -197269,32 +197139,6 @@ } } }, - { - "type": "object", - "required": [ - "__meta", - "type", - "value" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Int" - ] - }, - "value": { - "type": "integer", - "format": "int64" - }, - "__meta": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Metadata" - } - } - } - }, { "type": "object", "required": [ @@ -204262,32 +204106,6 @@ } } }, - { - "type": "object", - "required": [ - "__meta", - "type", - "value" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Int" - ] - }, - "value": { - "type": "integer", - "format": "int64" - }, - "__meta": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Metadata" - } - } - } - }, { "type": "object", "required": [ @@ -206503,32 +206321,6 @@ } } }, - { - "type": "object", - "required": [ - "__meta", - "type", - "value" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Int" - ] - }, - "value": { - "type": "integer", - "format": "int64" - }, - "__meta": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Metadata" - } - } - } - }, { "type": "object", "required": [ @@ -207032,32 +206824,6 @@ } } }, - { - "type": "object", - "required": [ - "__meta", - "type", - "value" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Int" - ] - }, - "value": { - "type": "integer", - "format": "int64" - }, - "__meta": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Metadata" - } - } - } - }, { "type": "object", "required": [ @@ -209274,32 +209040,6 @@ } } }, - { - "type": "object", - "required": [ - "__meta", - "type", - "value" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Int" - ] - }, - "value": { - "type": "integer", - "format": "int64" - }, - "__meta": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Metadata" - } - } - } - }, { "type": "object", "required": [ @@ -209831,32 +209571,6 @@ } } }, - { - "type": "object", - "required": [ - "__meta", - "type", - "value" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Int" - ] - }, - "value": { - "type": "integer", - "format": "int64" - }, - "__meta": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Metadata" - } - } - } - }, { "type": "object", "required": [ @@ -212063,32 +211777,6 @@ } } }, - { - "type": "object", - "required": [ - "__meta", - "type", - "value" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Int" - ] - }, - "value": { - "type": "integer", - "format": "int64" - }, - "__meta": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Metadata" - } - } - } - }, { "type": "object", "required": [ @@ -214304,32 +213992,6 @@ } } }, - { - "type": "object", - "required": [ - "__meta", - "type", - "value" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Int" - ] - }, - "value": { - "type": "integer", - "format": "int64" - }, - "__meta": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Metadata" - } - } - } - }, { "type": "object", "required": [ @@ -214833,32 +214495,6 @@ } } }, - { - "type": "object", - "required": [ - "__meta", - "type", - "value" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Int" - ] - }, - "value": { - "type": "integer", - "format": "int64" - }, - "__meta": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Metadata" - } - } - } - }, { "type": "object", "required": [ @@ -217077,32 +216713,6 @@ } } }, - { - "type": "object", - "required": [ - "__meta", - "type", - "value" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Int" - ] - }, - "value": { - "type": "integer", - "format": "int64" - }, - "__meta": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Metadata" - } - } - } - }, { "type": "object", "required": [ @@ -219319,32 +218929,6 @@ } } }, - { - "type": "object", - "required": [ - "__meta", - "type", - "value" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Int" - ] - }, - "value": { - "type": "integer", - "format": "int64" - }, - "__meta": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Metadata" - } - } - } - }, { "type": "object", "required": [ @@ -219876,32 +219460,6 @@ } } }, - { - "type": "object", - "required": [ - "__meta", - "type", - "value" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Int" - ] - }, - "value": { - "type": "integer", - "format": "int64" - }, - "__meta": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Metadata" - } - } - } - }, { "type": "object", "required": [ diff --git a/docs/kcl/types/KclValue.md b/docs/kcl/types/KclValue.md index 36e6740e6..189bcc35e 100644 --- a/docs/kcl/types/KclValue.md +++ b/docs/kcl/types/KclValue.md @@ -70,23 +70,6 @@ Any KCL value. -## Properties - -| Property | Type | Description | Required | -|----------|------|-------------|----------| -| `type` |enum: `Int`| | No | -| `value` |`integer`| | No | -| `__meta` |`[` [`Metadata`](/docs/kcl/types/Metadata) `]`| | No | - - ----- - -**Type:** `object` - - - - - ## Properties | Property | Type | Description | Required | diff --git a/src/wasm-lib/kcl/src/execution/exec_ast.rs b/src/wasm-lib/kcl/src/execution/exec_ast.rs index 26d432517..910ae8186 100644 --- a/src/wasm-lib/kcl/src/execution/exec_ast.rs +++ b/src/wasm-lib/kcl/src/execution/exec_ast.rs @@ -792,15 +792,6 @@ impl Node { }]; Ok(KclValue::Number { value: -value, meta }) } - KclValue::Int { value, meta: _ } => { - let meta = vec![Metadata { - source_range: self.into(), - }]; - Ok(KclValue::Number { - value: (-value) as f64, - meta, - }) - } _ => Err(KclError::Semantic(KclErrorDetails { message: format!( "You can only negate numbers, but this is a {}", @@ -1299,8 +1290,8 @@ impl Node { Ok(KclValue::Array { value: range .into_iter() - .map(|num| KclValue::Int { - value: num, + .map(|num| KclValue::Number { + value: num as f64, meta: meta.clone(), }) .collect(), @@ -1342,8 +1333,6 @@ fn article_for(s: &str) -> &'static str { pub fn parse_number_as_f64(v: &KclValue, source_range: SourceRange) -> Result { if let KclValue::Number { value: n, .. } = &v { Ok(*n) - } else if let KclValue::Int { value: n, .. } = &v { - Ok(*n as f64) } else { let actual_type = v.human_friendly_type(); let article = if actual_type.starts_with(['a', 'e', 'i', 'o', 'u']) { @@ -1460,15 +1449,6 @@ fn jvalue_to_prop(value: &KclValue, property_sr: Vec, name: &str) - })) }; match value { - KclValue::Int { value:num, meta: _ } => { - let maybe_int: Result = (*num).try_into(); - if let Ok(uint) = maybe_int { - Ok(Property::UInt(uint)) - } - else { - make_err(format!("'{num}' is negative, so you can't index an array with it")) - } - } KclValue::Number{value: num, meta:_} => { let num = *num; if num < 0.0 { @@ -1731,8 +1711,8 @@ mod test { fn test_assign_args_to_params() { // Set up a little framework for this test. fn mem(number: usize) -> KclValue { - KclValue::Int { - value: number as i64, + KclValue::Number { + value: number as f64, meta: Default::default(), } } diff --git a/src/wasm-lib/kcl/src/execution/kcl_value.rs b/src/wasm-lib/kcl/src/execution/kcl_value.rs index c74204d74..8b2a652d8 100644 --- a/src/wasm-lib/kcl/src/execution/kcl_value.rs +++ b/src/wasm-lib/kcl/src/execution/kcl_value.rs @@ -43,11 +43,6 @@ pub enum KclValue { #[serde(rename = "__meta")] meta: Vec, }, - Int { - value: i64, - #[serde(rename = "__meta")] - meta: Vec, - }, String { value: String, #[serde(rename = "__meta")] @@ -168,7 +163,6 @@ impl From for Vec { KclValue::Face { value } => to_vec_sr(&value.meta), KclValue::Bool { meta, .. } => to_vec_sr(&meta), KclValue::Number { meta, .. } => to_vec_sr(&meta), - KclValue::Int { meta, .. } => to_vec_sr(&meta), KclValue::String { meta, .. } => to_vec_sr(&meta), KclValue::Array { meta, .. } => to_vec_sr(&meta), KclValue::Object { meta, .. } => to_vec_sr(&meta), @@ -200,7 +194,6 @@ impl From<&KclValue> for Vec { KclValue::Face { value } => to_vec_sr(&value.meta), KclValue::Bool { meta, .. } => to_vec_sr(meta), KclValue::Number { meta, .. } => to_vec_sr(meta), - KclValue::Int { meta, .. } => to_vec_sr(meta), KclValue::String { meta, .. } => to_vec_sr(meta), KclValue::Uuid { meta, .. } => to_vec_sr(meta), KclValue::Array { meta, .. } => to_vec_sr(meta), @@ -218,7 +211,6 @@ impl KclValue { KclValue::Uuid { value: _, meta } => meta.clone(), KclValue::Bool { value: _, meta } => meta.clone(), KclValue::Number { value: _, meta } => meta.clone(), - KclValue::Int { value: _, meta } => meta.clone(), KclValue::String { value: _, meta } => meta.clone(), KclValue::Array { value: _, meta } => meta.clone(), KclValue::Object { value: _, meta } => meta.clone(), @@ -297,7 +289,6 @@ impl KclValue { KclValue::Face { .. } => "Face", KclValue::Bool { .. } => "boolean (true/false value)", KclValue::Number { .. } => "number", - KclValue::Int { .. } => "integer", KclValue::String { .. } => "string (text)", KclValue::Array { .. } => "array (list)", KclValue::Object { .. } => "object", @@ -349,7 +340,6 @@ impl KclValue { pub(crate) fn as_usize(&self) -> Option { match self { - KclValue::Int { value, .. } if *value > 0 => Some(*value as usize), KclValue::Number { value, .. } => crate::try_f64_to_usize(*value), _ => None, } @@ -357,7 +347,6 @@ impl KclValue { pub fn as_int(&self) -> Option { match self { - KclValue::Int { value, .. } => Some(*value), KclValue::Number { value, .. } => crate::try_f64_to_i64(*value), _ => None, } @@ -440,8 +429,6 @@ impl KclValue { pub fn as_f64(&self) -> Option { if let KclValue::Number { value, meta: _ } = &self { Some(*value) - } else if let KclValue::Int { value, meta: _ } = &self { - Some(*value as f64) } else { None } diff --git a/src/wasm-lib/kcl/src/execution/memory.rs b/src/wasm-lib/kcl/src/execution/memory.rs index 57d2347db..2a1fae04b 100644 --- a/src/wasm-lib/kcl/src/execution/memory.rs +++ b/src/wasm-lib/kcl/src/execution/memory.rs @@ -852,8 +852,8 @@ mod test { } fn val(value: i64) -> KclValue { - KclValue::Int { - value, + KclValue::Number { + value: value as f64, meta: Vec::new(), } } @@ -861,14 +861,14 @@ mod test { #[track_caller] fn assert_get(mem: &ProgramMemory, key: &str, n: i64) { match mem.get(key, sr()).unwrap() { - KclValue::Int { value, .. } => assert_eq!(*value, n), + KclValue::Number { value, .. } => assert_eq!(*value as i64, n), _ => unreachable!(), } } - fn expect_int(value: &KclValue) -> Option { + fn expect_small_number(value: &KclValue) -> Option { match value { - KclValue::Int { value, .. } => Some(*value), + KclValue::Number { value, .. } if value > &0.0 && value < &10.0 => Some(*value as i64), _ => None, } } @@ -876,7 +876,7 @@ mod test { #[track_caller] fn assert_get_from(mem: &ProgramMemory, key: &str, n: i64, snapshot: EnvironmentRef) { match mem.get_from(key, snapshot, sr()).unwrap() { - KclValue::Int { value, .. } => assert_eq!(*value, n), + KclValue::Number { value, .. } => assert_eq!(*value as i64, n), _ => unreachable!(), } } @@ -1127,7 +1127,7 @@ mod test { assert_get_from(mem, "b", 3, sn3); assert_get_from(mem, "b", 4, sn4); - let vals: Vec<_> = mem.walk_call_stack().filter_map(expect_int).collect(); + let vals: Vec<_> = mem.walk_call_stack().filter_map(expect_small_number).collect(); let expected = [6, 1, 3, 1, 7]; assert_eq!(vals, expected); @@ -1136,7 +1136,7 @@ mod test { mem.get_from("b", sn1, sr()).unwrap_err(); assert_get_from(mem, "b", 3, sn2); - let vals: Vec<_> = mem.walk_call_stack().filter_map(expect_int).collect(); + let vals: Vec<_> = mem.walk_call_stack().filter_map(expect_small_number).collect(); let expected = [1, 7]; assert_eq!(vals, expected); diff --git a/src/wasm-lib/kcl/src/std/args.rs b/src/wasm-lib/kcl/src/std/args.rs index df30ae758..78085705c 100644 --- a/src/wasm-lib/kcl/src/std/args.rs +++ b/src/wasm-lib/kcl/src/std/args.rs @@ -1391,7 +1391,6 @@ impl<'a> FromKclValue<'a> for i64 { fn from_kcl_val(arg: &'a KclValue) -> Option { match arg { KclValue::Number { value, meta: _ } => crate::try_f64_to_i64(*value), - KclValue::Int { value, meta: _ } => Some(*value), _ => None, } } @@ -1428,7 +1427,6 @@ impl<'a> FromKclValue<'a> for u32 { fn from_kcl_val(arg: &'a KclValue) -> Option { match arg { KclValue::Number { value, meta: _ } => crate::try_f64_to_u32(*value), - KclValue::Int { value, meta: _ } => Some(*value as u32), _ => None, } } @@ -1444,7 +1442,6 @@ impl<'a> FromKclValue<'a> for u64 { fn from_kcl_val(arg: &'a KclValue) -> Option { match arg { KclValue::Number { value, meta: _ } => crate::try_f64_to_u64(*value), - KclValue::Int { value, meta: _ } => Some(*value as u64), _ => None, } } @@ -1453,7 +1450,6 @@ impl<'a> FromKclValue<'a> for f64 { fn from_kcl_val(arg: &'a KclValue) -> Option { match arg { KclValue::Number { value, meta: _ } => Some(*value), - KclValue::Int { value, meta: _ } => Some(*value as f64), _ => None, } } diff --git a/src/wasm-lib/kcl/src/std/patterns.rs b/src/wasm-lib/kcl/src/std/patterns.rs index 4b876ef34..feac49089 100644 --- a/src/wasm-lib/kcl/src/std/patterns.rs +++ b/src/wasm-lib/kcl/src/std/patterns.rs @@ -446,7 +446,7 @@ async fn make_transform( exec_state: &mut ExecState, ) -> Result, KclError> { // Call the transform fn for this repetition. - let repetition_num = KclValue::Int { + let repetition_num = KclValue::Number { value: i.into(), meta: vec![source_range.into()], }; diff --git a/src/wasm-lib/kcl/tests/array_range_expr/program_memory.snap b/src/wasm-lib/kcl/tests/array_range_expr/program_memory.snap index cbd37175f..7ecdae589 100644 --- a/src/wasm-lib/kcl/tests/array_range_expr/program_memory.snap +++ b/src/wasm-lib/kcl/tests/array_range_expr/program_memory.snap @@ -53,8 +53,8 @@ description: Variables in memory after executing array_range_expr.kcl "type": "Array", "value": [ { - "type": "Int", - "value": 0, + "type": "Number", + "value": 0.0, "__meta": [ { "sourceRange": [ @@ -66,8 +66,8 @@ description: Variables in memory after executing array_range_expr.kcl ] }, { - "type": "Int", - "value": 1, + "type": "Number", + "value": 1.0, "__meta": [ { "sourceRange": [ @@ -79,8 +79,8 @@ description: Variables in memory after executing array_range_expr.kcl ] }, { - "type": "Int", - "value": 2, + "type": "Number", + "value": 2.0, "__meta": [ { "sourceRange": [ @@ -92,8 +92,8 @@ description: Variables in memory after executing array_range_expr.kcl ] }, { - "type": "Int", - "value": 3, + "type": "Number", + "value": 3.0, "__meta": [ { "sourceRange": [ @@ -105,8 +105,8 @@ description: Variables in memory after executing array_range_expr.kcl ] }, { - "type": "Int", - "value": 4, + "type": "Number", + "value": 4.0, "__meta": [ { "sourceRange": [ @@ -132,8 +132,8 @@ description: Variables in memory after executing array_range_expr.kcl "type": "Array", "value": [ { - "type": "Int", - "value": 0, + "type": "Number", + "value": 0.0, "__meta": [ { "sourceRange": [ @@ -145,8 +145,8 @@ description: Variables in memory after executing array_range_expr.kcl ] }, { - "type": "Int", - "value": 1, + "type": "Number", + "value": 1.0, "__meta": [ { "sourceRange": [ @@ -158,8 +158,8 @@ description: Variables in memory after executing array_range_expr.kcl ] }, { - "type": "Int", - "value": 2, + "type": "Number", + "value": 2.0, "__meta": [ { "sourceRange": [ @@ -171,8 +171,8 @@ description: Variables in memory after executing array_range_expr.kcl ] }, { - "type": "Int", - "value": 3, + "type": "Number", + "value": 3.0, "__meta": [ { "sourceRange": [ @@ -184,8 +184,8 @@ description: Variables in memory after executing array_range_expr.kcl ] }, { - "type": "Int", - "value": 4, + "type": "Number", + "value": 4.0, "__meta": [ { "sourceRange": [ @@ -211,8 +211,8 @@ description: Variables in memory after executing array_range_expr.kcl "type": "Array", "value": [ { - "type": "Int", - "value": 0, + "type": "Number", + "value": 0.0, "__meta": [ { "sourceRange": [ @@ -224,8 +224,8 @@ description: Variables in memory after executing array_range_expr.kcl ] }, { - "type": "Int", - "value": 1, + "type": "Number", + "value": 1.0, "__meta": [ { "sourceRange": [ @@ -237,8 +237,8 @@ description: Variables in memory after executing array_range_expr.kcl ] }, { - "type": "Int", - "value": 2, + "type": "Number", + "value": 2.0, "__meta": [ { "sourceRange": [ @@ -250,8 +250,8 @@ description: Variables in memory after executing array_range_expr.kcl ] }, { - "type": "Int", - "value": 3, + "type": "Number", + "value": 3.0, "__meta": [ { "sourceRange": [ @@ -263,8 +263,8 @@ description: Variables in memory after executing array_range_expr.kcl ] }, { - "type": "Int", - "value": 4, + "type": "Number", + "value": 4.0, "__meta": [ { "sourceRange": [ @@ -276,8 +276,8 @@ description: Variables in memory after executing array_range_expr.kcl ] }, { - "type": "Int", - "value": 5, + "type": "Number", + "value": 5.0, "__meta": [ { "sourceRange": [ @@ -303,8 +303,8 @@ description: Variables in memory after executing array_range_expr.kcl "type": "Array", "value": [ { - "type": "Int", - "value": 1, + "type": "Number", + "value": 1.0, "__meta": [ { "sourceRange": [ @@ -316,8 +316,8 @@ description: Variables in memory after executing array_range_expr.kcl ] }, { - "type": "Int", - "value": 2, + "type": "Number", + "value": 2.0, "__meta": [ { "sourceRange": [ @@ -329,8 +329,8 @@ description: Variables in memory after executing array_range_expr.kcl ] }, { - "type": "Int", - "value": 3, + "type": "Number", + "value": 3.0, "__meta": [ { "sourceRange": [ @@ -342,8 +342,8 @@ description: Variables in memory after executing array_range_expr.kcl ] }, { - "type": "Int", - "value": 4, + "type": "Number", + "value": 4.0, "__meta": [ { "sourceRange": [ diff --git a/src/wasm-lib/kcl/tests/array_range_negative_expr/program_memory.snap b/src/wasm-lib/kcl/tests/array_range_negative_expr/program_memory.snap index 6ee97fe94..04803a3e6 100644 --- a/src/wasm-lib/kcl/tests/array_range_negative_expr/program_memory.snap +++ b/src/wasm-lib/kcl/tests/array_range_negative_expr/program_memory.snap @@ -27,8 +27,8 @@ description: Variables in memory after executing array_range_negative_expr.kcl "type": "Array", "value": [ { - "type": "Int", - "value": -5, + "type": "Number", + "value": -5.0, "__meta": [ { "sourceRange": [ @@ -40,8 +40,8 @@ description: Variables in memory after executing array_range_negative_expr.kcl ] }, { - "type": "Int", - "value": -4, + "type": "Number", + "value": -4.0, "__meta": [ { "sourceRange": [ @@ -53,8 +53,8 @@ description: Variables in memory after executing array_range_negative_expr.kcl ] }, { - "type": "Int", - "value": -3, + "type": "Number", + "value": -3.0, "__meta": [ { "sourceRange": [ @@ -66,8 +66,8 @@ description: Variables in memory after executing array_range_negative_expr.kcl ] }, { - "type": "Int", - "value": -2, + "type": "Number", + "value": -2.0, "__meta": [ { "sourceRange": [ @@ -79,8 +79,8 @@ description: Variables in memory after executing array_range_negative_expr.kcl ] }, { - "type": "Int", - "value": -1, + "type": "Number", + "value": -1.0, "__meta": [ { "sourceRange": [ @@ -92,8 +92,8 @@ description: Variables in memory after executing array_range_negative_expr.kcl ] }, { - "type": "Int", - "value": 0, + "type": "Number", + "value": 0.0, "__meta": [ { "sourceRange": [ @@ -105,8 +105,8 @@ description: Variables in memory after executing array_range_negative_expr.kcl ] }, { - "type": "Int", - "value": 1, + "type": "Number", + "value": 1.0, "__meta": [ { "sourceRange": [ @@ -118,8 +118,8 @@ description: Variables in memory after executing array_range_negative_expr.kcl ] }, { - "type": "Int", - "value": 2, + "type": "Number", + "value": 2.0, "__meta": [ { "sourceRange": [ @@ -131,8 +131,8 @@ description: Variables in memory after executing array_range_negative_expr.kcl ] }, { - "type": "Int", - "value": 3, + "type": "Number", + "value": 3.0, "__meta": [ { "sourceRange": [ @@ -144,8 +144,8 @@ description: Variables in memory after executing array_range_negative_expr.kcl ] }, { - "type": "Int", - "value": 4, + "type": "Number", + "value": 4.0, "__meta": [ { "sourceRange": [ @@ -157,8 +157,8 @@ description: Variables in memory after executing array_range_negative_expr.kcl ] }, { - "type": "Int", - "value": 5, + "type": "Number", + "value": 5.0, "__meta": [ { "sourceRange": [ diff --git a/src/wasm-lib/kcl/tests/double_map_fn/program_memory.snap b/src/wasm-lib/kcl/tests/double_map_fn/program_memory.snap index a1b272e4c..e9cd254ce 100644 --- a/src/wasm-lib/kcl/tests/double_map_fn/program_memory.snap +++ b/src/wasm-lib/kcl/tests/double_map_fn/program_memory.snap @@ -96,8 +96,8 @@ description: Variables in memory after executing double_map_fn.kcl "type": "Array", "value": [ { - "type": "Int", - "value": 0, + "type": "Number", + "value": 0.0, "__meta": [ { "sourceRange": [ @@ -109,8 +109,8 @@ description: Variables in memory after executing double_map_fn.kcl ] }, { - "type": "Int", - "value": 1, + "type": "Number", + "value": 1.0, "__meta": [ { "sourceRange": [ @@ -122,8 +122,8 @@ description: Variables in memory after executing double_map_fn.kcl ] }, { - "type": "Int", - "value": 2, + "type": "Number", + "value": 2.0, "__meta": [ { "sourceRange": [ From 5d02a271224e0851ef798d79ae8906cb52bfad37 Mon Sep 17 00:00:00 2001 From: Jonathan Tran Date: Thu, 13 Feb 2025 14:28:19 -0500 Subject: [PATCH 02/30] CM KCL: add annotations (#5374) * CM KCL: add annotations * Make AnnotationName a token that includes the @ * The text of AnnotationName is now optional (#5324) --------- Co-authored-by: Matt Mundell --- packages/codemirror-lang-kcl/src/kcl.grammar | 13 +- .../codemirror-lang-kcl/test/annotation.txt | 153 ++++++++++++++++++ 2 files changed, 165 insertions(+), 1 deletion(-) create mode 100644 packages/codemirror-lang-kcl/test/annotation.txt diff --git a/packages/codemirror-lang-kcl/src/kcl.grammar b/packages/codemirror-lang-kcl/src/kcl.grammar index 20400f5bb..590a323e6 100644 --- a/packages/codemirror-lang-kcl/src/kcl.grammar +++ b/packages/codemirror-lang-kcl/src/kcl.grammar @@ -1,4 +1,5 @@ @precedence { + annotation member call exp @left @@ -20,9 +21,12 @@ statement[@isGroup=Statement] { FunctionDeclaration { kw<"export">? kw<"fn"> VariableDefinition Equals? ParamList Arrow? Body } | VariableDeclaration { kw<"export">? (kw<"var"> | kw<"let"> | kw<"const">)? VariableDefinition Equals expression } | ReturnStatement { kw<"return"> expression } | - ExpressionStatement { expression } + ExpressionStatement { expression } | + Annotation { AnnotationName AnnotationList? } } +AnnotationList { !annotation "(" commaSep ")" } + ParamList { "(" commaSep ")" } Body { "{" statement* "}" } @@ -59,6 +63,12 @@ UnaryOp { AddOp | BangOp } ObjectProperty { PropertyName (":" | Equals) expression } +AnnotationProperty { + PropertyName + ( AddOp | MultOp | ExpOp | LogicOp | BangOp | CompOp | Equals | Arrow | PipeOperator | PipeSubstitution ) + expression +} + LabeledArgument { ArgumentLabel Equals expression } ArgumentList { "(" commaSep ")" } @@ -105,6 +115,7 @@ commaSep1NoTrailingComma { term ("," term)* } PipeSubstitution { "%" } identifier { (@asciiLetter | "_") (@asciiLetter | @digit | "_")* } + AnnotationName { "@" identifier? } PropertyName { identifier } TagDeclarator { "$" identifier } diff --git a/packages/codemirror-lang-kcl/test/annotation.txt b/packages/codemirror-lang-kcl/test/annotation.txt new file mode 100644 index 000000000..8f8884e83 --- /dev/null +++ b/packages/codemirror-lang-kcl/test/annotation.txt @@ -0,0 +1,153 @@ +# alone + +@a + +==> +Program(Annotation(AnnotationName)) + +# alone and anonymous + +@ + +==> +Program(Annotation(AnnotationName)) + +# empty + +@ann() + +==> +Program(Annotation(AnnotationName, + AnnotationList)) + +# empty and anonymous + +@() + +==> +Program(Annotation(AnnotationName, + AnnotationList)) + +# equals + +@setting(a=1) + +==> +Program(Annotation(AnnotationName, + AnnotationList(AnnotationProperty(PropertyName, + Equals, + Number)))) + +# operator + +@ann(a*1) + +==> +Program(Annotation(AnnotationName, + AnnotationList(AnnotationProperty(PropertyName, + MultOp, + Number)))) + +# anonymous + +@(a=1) + +==> +Program(Annotation(AnnotationName, + AnnotationList(AnnotationProperty(PropertyName, + Equals, + Number)))) + +# complex expr + +@ann(a=(1+2+f('yes'))) + +==> +Program(Annotation(AnnotationName, + AnnotationList(AnnotationProperty(PropertyName, + Equals, + ParenthesizedExpression(BinaryExpression(BinaryExpression(Number, + AddOp, + Number), + AddOp, + CallExpression(VariableName, + ArgumentList(String)))))))) + +# many args + +@ann(a=1, b=2) + +==> +Program(Annotation(AnnotationName, + AnnotationList(AnnotationProperty(PropertyName, + Equals, + Number), + AnnotationProperty(PropertyName, + Equals, + Number)))) + +# space around op + +@ann(a / 1) + +==> +Program(Annotation(AnnotationName, + AnnotationList(AnnotationProperty(PropertyName, + MultOp, + Number)))) + +# space around sep + +@ann(a/1 , b/2) + +==> +Program(Annotation(AnnotationName, + AnnotationList(AnnotationProperty(PropertyName, + MultOp, + Number), + AnnotationProperty(PropertyName, + MultOp, + Number)))) + +# trailing sep + +@ann(a=1,) + +==> +Program(Annotation(AnnotationName, + AnnotationList(AnnotationProperty(PropertyName, + Equals, + Number)))) + +# lone sep + +@ann(,) + +==> +Program(Annotation(AnnotationName, + AnnotationList)) + +# inside fn + +fn f() { + @anno(b=2) +} + +==> +Program(FunctionDeclaration(fn, + VariableDefinition, + ParamList, + Body(Annotation(AnnotationName, + AnnotationList(AnnotationProperty(PropertyName, + Equals, + Number)))))) + +# laxer with space than the language parser is + +@anno (b=2) + +==> +Program(Annotation(AnnotationName, + AnnotationList(AnnotationProperty(PropertyName, + Equals, + Number)))) From 78b42ea191524d01e646cb3c29fb56413eb67706 Mon Sep 17 00:00:00 2001 From: Adam Chalmers Date: Thu, 13 Feb 2025 13:37:02 -0600 Subject: [PATCH 03/30] offsetPlane kwargs (#5367) Previously: `offsetPlane('XY', 75)` Now: `offsetPlane('XY', offset = 75)` Pairs with this KCL-samples PR: https://github.com/KittyCAD/kcl-samples/pull/163 --- docs/kcl/loft.md | 10 +- docs/kcl/offsetPlane.md | 14 +- docs/kcl/std.json | 22 +- e2e/playwright/feature-tree-pane.spec.ts | 9 +- e2e/playwright/point-click.spec.ts | 8 +- e2e/playwright/sketch-tests.spec.ts | 8 +- package.json | 2 +- src/lang/kclSamples.test.ts | 2 +- src/lang/modifyAst.ts | 11 +- src/lang/queryAst.test.ts | 2 +- src/lang/queryAst.ts | 1 + src/lib/operations.ts | 9 +- src/wasm-lib/kcl/src/std/args.rs | 7 - src/wasm-lib/kcl/src/std/loft.rs | 10 +- src/wasm-lib/kcl/src/std/planes.rs | 20 +- .../artifact_commands.snap | 40 +-- .../artifact_graph_flowchart.snap.md | 10 +- .../ast.snap | 312 ++++++++++-------- .../input.kcl | 6 +- .../ops.snap | 101 +++--- .../program_memory.snap | 13 +- 21 files changed, 320 insertions(+), 297 deletions(-) diff --git a/docs/kcl/loft.md b/docs/kcl/loft.md index e71948b0f..c19b25ec6 100644 --- a/docs/kcl/loft.md +++ b/docs/kcl/loft.md @@ -40,7 +40,7 @@ squareSketch = startSketchOn('XY') |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) |> close() -triangleSketch = startSketchOn(offsetPlane('XY', 75)) +triangleSketch = startSketchOn(offsetPlane('XY', offset = 75)) |> startProfileAt([0, 125], %) |> line(end = [-15, -30]) |> line(end = [30, 0]) @@ -62,10 +62,10 @@ squareSketch = startSketchOn('XY') |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) |> close() -circleSketch0 = startSketchOn(offsetPlane('XY', 75)) +circleSketch0 = startSketchOn(offsetPlane('XY', offset = 75)) |> circle({ center = [0, 100], radius = 50 }, %) -circleSketch1 = startSketchOn(offsetPlane('XY', 150)) +circleSketch1 = startSketchOn(offsetPlane('XY', offset = 150)) |> circle({ center = [0, 100], radius = 20 }, %) loft([ @@ -87,10 +87,10 @@ squareSketch = startSketchOn('XY') |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) |> close() -circleSketch0 = startSketchOn(offsetPlane('XY', 75)) +circleSketch0 = startSketchOn(offsetPlane('XY', offset = 75)) |> circle({ center = [0, 100], radius = 50 }, %) -circleSketch1 = startSketchOn(offsetPlane('XY', 150)) +circleSketch1 = startSketchOn(offsetPlane('XY', offset = 150)) |> circle({ center = [0, 100], radius = 20 }, %) loft( diff --git a/docs/kcl/offsetPlane.md b/docs/kcl/offsetPlane.md index 94de22911..59364bdcf 100644 --- a/docs/kcl/offsetPlane.md +++ b/docs/kcl/offsetPlane.md @@ -17,8 +17,8 @@ offsetPlane(std_plane: StandardPlane, offset: number) -> Plane | Name | Type | Description | Required | |----------|------|-------------|----------| -| `std_plane` | [`StandardPlane`](/docs/kcl/types/StandardPlane) | One of the standard planes. | Yes | -| `offset` | `number` | | Yes | +| `std_plane` | [`StandardPlane`](/docs/kcl/types/StandardPlane) | Which standard plane (e.g. XY) should this new plane be created from? | Yes | +| `offset` | `number` | Distance from the standard plane this new plane will be created at. | Yes | ### Returns @@ -37,7 +37,7 @@ squareSketch = startSketchOn('XY') |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) |> close() -circleSketch = startSketchOn(offsetPlane('XY', 150)) +circleSketch = startSketchOn(offsetPlane('XY', offset = 150)) |> circle({ center = [0, 100], radius = 50 }, %) loft([squareSketch, circleSketch]) @@ -55,7 +55,7 @@ squareSketch = startSketchOn('XZ') |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) |> close() -circleSketch = startSketchOn(offsetPlane('XZ', 150)) +circleSketch = startSketchOn(offsetPlane('XZ', offset = 150)) |> circle({ center = [0, 100], radius = 50 }, %) loft([squareSketch, circleSketch]) @@ -73,7 +73,7 @@ squareSketch = startSketchOn('YZ') |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) |> close() -circleSketch = startSketchOn(offsetPlane('YZ', 150)) +circleSketch = startSketchOn(offsetPlane('YZ', offset = 150)) |> circle({ center = [0, 100], radius = 50 }, %) loft([squareSketch, circleSketch]) @@ -91,7 +91,7 @@ squareSketch = startSketchOn('-XZ') |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) |> close() -circleSketch = startSketchOn(offsetPlane('-XZ', -150)) +circleSketch = startSketchOn(offsetPlane('-XZ', offset = -150)) |> circle({ center = [0, 100], radius = 50 }, %) loft([squareSketch, circleSketch]) @@ -106,7 +106,7 @@ startSketchOn("XY") |> circle({ radius = 10, center = [0, 0] }, %) // Triangle on the plane 4 units above -startSketchOn(offsetPlane("XY", 4)) +startSketchOn(offsetPlane("XY", offset = 4)) |> startProfileAt([0, 0], %) |> line(end = [10, 0]) |> line(end = [0, 10]) diff --git a/docs/kcl/std.json b/docs/kcl/std.json index 0ac01b988..170fe6eb9 100644 --- a/docs/kcl/std.json +++ b/docs/kcl/std.json @@ -122973,9 +122973,9 @@ "unpublished": false, "deprecated": false, "examples": [ - "// Loft a square and a triangle.\nsquareSketch = startSketchOn('XY')\n |> startProfileAt([-100, 200], %)\n |> line(end = [200, 0])\n |> line(end = [0, -200])\n |> line(end = [-200, 0])\n |> line(endAbsolute = [profileStartX(%), profileStartY(%)])\n |> close()\n\ntriangleSketch = startSketchOn(offsetPlane('XY', 75))\n |> startProfileAt([0, 125], %)\n |> line(end = [-15, -30])\n |> line(end = [30, 0])\n |> line(endAbsolute = [profileStartX(%), profileStartY(%)])\n |> close()\n\nloft([squareSketch, triangleSketch])", - "// Loft a square, a circle, and another circle.\nsquareSketch = startSketchOn('XY')\n |> startProfileAt([-100, 200], %)\n |> line(end = [200, 0])\n |> line(end = [0, -200])\n |> line(end = [-200, 0])\n |> line(endAbsolute = [profileStartX(%), profileStartY(%)])\n |> close()\n\ncircleSketch0 = startSketchOn(offsetPlane('XY', 75))\n |> circle({ center = [0, 100], radius = 50 }, %)\n\ncircleSketch1 = startSketchOn(offsetPlane('XY', 150))\n |> circle({ center = [0, 100], radius = 20 }, %)\n\nloft([\n squareSketch,\n circleSketch0,\n circleSketch1\n])", - "// Loft a square, a circle, and another circle with options.\nsquareSketch = startSketchOn('XY')\n |> startProfileAt([-100, 200], %)\n |> line(end = [200, 0])\n |> line(end = [0, -200])\n |> line(end = [-200, 0])\n |> line(endAbsolute = [profileStartX(%), profileStartY(%)])\n |> close()\n\ncircleSketch0 = startSketchOn(offsetPlane('XY', 75))\n |> circle({ center = [0, 100], radius = 50 }, %)\n\ncircleSketch1 = startSketchOn(offsetPlane('XY', 150))\n |> circle({ center = [0, 100], radius = 20 }, %)\n\nloft(\n [\n squareSketch,\n circleSketch0,\n circleSketch1\n],\n baseCurveIndex = 0,\n bezApproximateRational = false,\n tolerance = 0.000001,\n vDegree = 2,\n)" + "// Loft a square and a triangle.\nsquareSketch = startSketchOn('XY')\n |> startProfileAt([-100, 200], %)\n |> line(end = [200, 0])\n |> line(end = [0, -200])\n |> line(end = [-200, 0])\n |> line(endAbsolute = [profileStartX(%), profileStartY(%)])\n |> close()\n\ntriangleSketch = startSketchOn(offsetPlane('XY', offset = 75))\n |> startProfileAt([0, 125], %)\n |> line(end = [-15, -30])\n |> line(end = [30, 0])\n |> line(endAbsolute = [profileStartX(%), profileStartY(%)])\n |> close()\n\nloft([squareSketch, triangleSketch])", + "// Loft a square, a circle, and another circle.\nsquareSketch = startSketchOn('XY')\n |> startProfileAt([-100, 200], %)\n |> line(end = [200, 0])\n |> line(end = [0, -200])\n |> line(end = [-200, 0])\n |> line(endAbsolute = [profileStartX(%), profileStartY(%)])\n |> close()\n\ncircleSketch0 = startSketchOn(offsetPlane('XY', offset = 75))\n |> circle({ center = [0, 100], radius = 50 }, %)\n\ncircleSketch1 = startSketchOn(offsetPlane('XY', offset = 150))\n |> circle({ center = [0, 100], radius = 20 }, %)\n\nloft([\n squareSketch,\n circleSketch0,\n circleSketch1\n])", + "// Loft a square, a circle, and another circle with options.\nsquareSketch = startSketchOn('XY')\n |> startProfileAt([-100, 200], %)\n |> line(end = [200, 0])\n |> line(end = [0, -200])\n |> line(end = [-200, 0])\n |> line(endAbsolute = [profileStartX(%), profileStartY(%)])\n |> close()\n\ncircleSketch0 = startSketchOn(offsetPlane('XY', offset = 75))\n |> circle({ center = [0, 100], radius = 50 }, %)\n\ncircleSketch1 = startSketchOn(offsetPlane('XY', offset = 150))\n |> circle({ center = [0, 100], radius = 20 }, %)\n\nloft(\n [\n squareSketch,\n circleSketch0,\n circleSketch1\n],\n baseCurveIndex = 0,\n bezApproximateRational = false,\n tolerance = 0.000001,\n vDegree = 2,\n)" ] }, { @@ -134124,7 +134124,7 @@ "summary": "Offset a plane by a distance along its normal.", "description": "For example, if you offset the 'XZ' plane by 10, the new plane will be parallel to the 'XZ' plane and 10 units away from it.", "tags": [], - "keywordArguments": false, + "keywordArguments": true, "args": [ { "name": "std_plane", @@ -134180,7 +134180,8 @@ }, "required": true, "includeInSnippet": true, - "labelRequired": true + "description": "Which standard plane (e.g. XY) should this new plane be created from?", + "labelRequired": false }, { "name": "offset", @@ -134193,6 +134194,7 @@ }, "required": true, "includeInSnippet": true, + "description": "Distance from the standard plane this new plane will be created at.", "labelRequired": true } ], @@ -134446,11 +134448,11 @@ "unpublished": false, "deprecated": false, "examples": [ - "// Loft a square and a circle on the `XY` plane using offset.\nsquareSketch = startSketchOn('XY')\n |> startProfileAt([-100, 200], %)\n |> line(end = [200, 0])\n |> line(end = [0, -200])\n |> line(end = [-200, 0])\n |> line(endAbsolute = [profileStartX(%), profileStartY(%)])\n |> close()\n\ncircleSketch = startSketchOn(offsetPlane('XY', 150))\n |> circle({ center = [0, 100], radius = 50 }, %)\n\nloft([squareSketch, circleSketch])", - "// Loft a square and a circle on the `XZ` plane using offset.\nsquareSketch = startSketchOn('XZ')\n |> startProfileAt([-100, 200], %)\n |> line(end = [200, 0])\n |> line(end = [0, -200])\n |> line(end = [-200, 0])\n |> line(endAbsolute = [profileStartX(%), profileStartY(%)])\n |> close()\n\ncircleSketch = startSketchOn(offsetPlane('XZ', 150))\n |> circle({ center = [0, 100], radius = 50 }, %)\n\nloft([squareSketch, circleSketch])", - "// Loft a square and a circle on the `YZ` plane using offset.\nsquareSketch = startSketchOn('YZ')\n |> startProfileAt([-100, 200], %)\n |> line(end = [200, 0])\n |> line(end = [0, -200])\n |> line(end = [-200, 0])\n |> line(endAbsolute = [profileStartX(%), profileStartY(%)])\n |> close()\n\ncircleSketch = startSketchOn(offsetPlane('YZ', 150))\n |> circle({ center = [0, 100], radius = 50 }, %)\n\nloft([squareSketch, circleSketch])", - "// Loft a square and a circle on the `-XZ` plane using offset.\nsquareSketch = startSketchOn('-XZ')\n |> startProfileAt([-100, 200], %)\n |> line(end = [200, 0])\n |> line(end = [0, -200])\n |> line(end = [-200, 0])\n |> line(endAbsolute = [profileStartX(%), profileStartY(%)])\n |> close()\n\ncircleSketch = startSketchOn(offsetPlane('-XZ', -150))\n |> circle({ center = [0, 100], radius = 50 }, %)\n\nloft([squareSketch, circleSketch])", - "// A circle on the XY plane\nstartSketchOn(\"XY\")\n |> startProfileAt([0, 0], %)\n |> circle({ radius = 10, center = [0, 0] }, %)\n\n// Triangle on the plane 4 units above\nstartSketchOn(offsetPlane(\"XY\", 4))\n |> startProfileAt([0, 0], %)\n |> line(end = [10, 0])\n |> line(end = [0, 10])\n |> close()" + "// Loft a square and a circle on the `XY` plane using offset.\nsquareSketch = startSketchOn('XY')\n |> startProfileAt([-100, 200], %)\n |> line(end = [200, 0])\n |> line(end = [0, -200])\n |> line(end = [-200, 0])\n |> line(endAbsolute = [profileStartX(%), profileStartY(%)])\n |> close()\n\ncircleSketch = startSketchOn(offsetPlane('XY', offset = 150))\n |> circle({ center = [0, 100], radius = 50 }, %)\n\nloft([squareSketch, circleSketch])", + "// Loft a square and a circle on the `XZ` plane using offset.\nsquareSketch = startSketchOn('XZ')\n |> startProfileAt([-100, 200], %)\n |> line(end = [200, 0])\n |> line(end = [0, -200])\n |> line(end = [-200, 0])\n |> line(endAbsolute = [profileStartX(%), profileStartY(%)])\n |> close()\n\ncircleSketch = startSketchOn(offsetPlane('XZ', offset = 150))\n |> circle({ center = [0, 100], radius = 50 }, %)\n\nloft([squareSketch, circleSketch])", + "// Loft a square and a circle on the `YZ` plane using offset.\nsquareSketch = startSketchOn('YZ')\n |> startProfileAt([-100, 200], %)\n |> line(end = [200, 0])\n |> line(end = [0, -200])\n |> line(end = [-200, 0])\n |> line(endAbsolute = [profileStartX(%), profileStartY(%)])\n |> close()\n\ncircleSketch = startSketchOn(offsetPlane('YZ', offset = 150))\n |> circle({ center = [0, 100], radius = 50 }, %)\n\nloft([squareSketch, circleSketch])", + "// Loft a square and a circle on the `-XZ` plane using offset.\nsquareSketch = startSketchOn('-XZ')\n |> startProfileAt([-100, 200], %)\n |> line(end = [200, 0])\n |> line(end = [0, -200])\n |> line(end = [-200, 0])\n |> line(endAbsolute = [profileStartX(%), profileStartY(%)])\n |> close()\n\ncircleSketch = startSketchOn(offsetPlane('-XZ', offset = -150))\n |> circle({ center = [0, 100], radius = 50 }, %)\n\nloft([squareSketch, circleSketch])", + "// A circle on the XY plane\nstartSketchOn(\"XY\")\n |> startProfileAt([0, 0], %)\n |> circle({ radius = 10, center = [0, 0] }, %)\n\n// Triangle on the plane 4 units above\nstartSketchOn(offsetPlane(\"XY\", offset = 4))\n |> startProfileAt([0, 0], %)\n |> line(end = [10, 0])\n |> line(end = [0, 10])\n |> close()" ] }, { diff --git a/e2e/playwright/feature-tree-pane.spec.ts b/e2e/playwright/feature-tree-pane.spec.ts index 87b0dec1a..312266611 100644 --- a/e2e/playwright/feature-tree-pane.spec.ts +++ b/e2e/playwright/feature-tree-pane.spec.ts @@ -24,7 +24,7 @@ sketch001 = startSketchOn('XZ') revolve001 = revolve({ axis = "X" }, sketch001) triangle() |> extrude(length = 30) -plane001 = offsetPlane('XY', 10) +plane001 = offsetPlane('XY', offset = 10) sketch002 = startSketchOn(plane001) |> startProfileAt([-20, 0], %) |> line(end = [5, -15]) @@ -54,7 +54,7 @@ sketch002 = startSketchOn(extrude001, rectangleSegmentB001) center = [-1, 2], radius = .5 }, %) -plane001 = offsetPlane('XZ', -5) +plane001 = offsetPlane('XZ', offset = -5) sketch003 = startSketchOn(plane001) |> circle({ center = [0, 0], radius = 5 }, %) ` @@ -116,7 +116,7 @@ test.describe('Feature Tree pane', () => { await testViewSource({ operationName: 'Offset Plane', operationIndex: 0, - expectedActiveLine: "plane001 = offsetPlane('XY', 10)", + expectedActiveLine: "plane001 = offsetPlane('XY', offset = 10)", }) await testViewSource({ operationName: 'Extrude', @@ -342,7 +342,8 @@ test.describe('Feature Tree pane', () => { toolbar, cmdBar, }) => { - const testCode = (value: string) => `p = offsetPlane('XY', ${value})` + const testCode = (value: string) => + `p = offsetPlane('XY', offset = ${value})` const initialInput = '10' const initialCode = testCode(initialInput) const newInput = '5 + 10' diff --git a/e2e/playwright/point-click.spec.ts b/e2e/playwright/point-click.spec.ts index 850504889..68cdb5ebf 100644 --- a/e2e/playwright/point-click.spec.ts +++ b/e2e/playwright/point-click.spec.ts @@ -1052,7 +1052,7 @@ openSketch = startSketchOn('XY') // One dumb hardcoded screen pixel value const testPoint = { x: 700, y: 150 } const [clickOnXzPlane] = scene.makeMouseHelpers(testPoint.x, testPoint.y) - const expectedOutput = `plane001 = offsetPlane('XZ', 5)` + const expectedOutput = `plane001 = offsetPlane('XZ', offset = 5)` await homePage.goToModelingScene() // FIXME: Since there is no KCL code loaded. We need to wait for the scene to load before we continue. @@ -1188,7 +1188,7 @@ openSketch = startSketchOn('XY') }) => { const initialCode = `sketch001 = startSketchOn('XZ') |> circle({ center = [0, 0], radius = 30 }, %) - plane001 = offsetPlane('XZ', 50) + plane001 = offsetPlane('XZ', offset = 50) sketch002 = startSketchOn(plane001) |> circle({ center = [0, 0], radius = 20 }, %) ` @@ -1274,7 +1274,7 @@ openSketch = startSketchOn('XY') }) => { const initialCode = `sketch001 = startSketchOn('XZ') |> circle({ center = [0, 0], radius = 30 }, %) - plane001 = offsetPlane('XZ', 50) + plane001 = offsetPlane('XZ', offset = 50) sketch002 = startSketchOn(plane001) |> circle({ center = [0, 0], radius = 20 }, %) loft001 = loft([sketch001, sketch002]) @@ -1321,7 +1321,7 @@ loft001 = loft([sketch001, sketch002]) await page.waitForTimeout(1000) await clickOnSketch2() await expect(page.locator('.cm-activeLine')).toHaveText(` - plane001 = offsetPlane('XZ', 50) + plane001 = offsetPlane('XZ', offset = 50) `) await page.keyboard.press('Backspace') // Check for sketch 1 diff --git a/e2e/playwright/sketch-tests.spec.ts b/e2e/playwright/sketch-tests.spec.ts index 273fc68ed..6960e9990 100644 --- a/e2e/playwright/sketch-tests.spec.ts +++ b/e2e/playwright/sketch-tests.spec.ts @@ -1304,7 +1304,7 @@ test.describe(`Sketching with offset planes`, () => { await context.addInitScript(() => { localStorage.setItem( 'persistCode', - `offsetPlane001 = offsetPlane("XY", 10)` + `offsetPlane001 = offsetPlane("XY", offset = 10)` ) }) @@ -1318,9 +1318,9 @@ test.describe(`Sketching with offset planes`, () => { await test.step(`Hovering should highlight code`, async () => { await planeHover() await editor.expectState({ - activeLines: [`offsetPlane001=offsetPlane("XY",10)`], + activeLines: [`offsetPlane001=offsetPlane("XY",offset=10)`], diagnostics: [], - highlightedCode: 'offsetPlane("XY", 10)', + highlightedCode: 'offsetPlane("XY", offset = 10)', }) }) @@ -1331,7 +1331,7 @@ test.describe(`Sketching with offset planes`, () => { await expect(toolbar.lineBtn).toBeEnabled() await editor.expectEditor.toContain('startSketchOn(offsetPlane001)') await editor.expectState({ - activeLines: [`offsetPlane001=offsetPlane("XY",10)`], + activeLines: [`offsetPlane001=offsetPlane("XY",offset=10)`], diagnostics: [], highlightedCode: '', }) diff --git a/package.json b/package.json index 8610744d7..959f45aa3 100644 --- a/package.json +++ b/package.json @@ -85,7 +85,7 @@ "fmt": "prettier --write ./src *.ts *.json *.js ./e2e ./packages", "fmt-check": "prettier --check ./src *.ts *.json *.js ./e2e ./packages", "fetch:wasm": "./get-latest-wasm-bundle.sh", - "fetch:samples": "echo \"Fetching latest KCL samples...\" && curl -o public/kcl-samples-manifest-fallback.json https://raw.githubusercontent.com/KittyCAD/kcl-samples/achalmers/kw-pattern-transform2/manifest.json", + "fetch:samples": "echo \"Fetching latest KCL samples...\" && curl -o public/kcl-samples-manifest-fallback.json https://raw.githubusercontent.com/KittyCAD/kcl-samples/achalmers/offset-plane-kwargs/manifest.json", "isomorphic-copy-wasm": "(copy src/wasm-lib/pkg/wasm_lib_bg.wasm public || cp src/wasm-lib/pkg/wasm_lib_bg.wasm public)", "build:wasm-dev": "yarn wasm-prep && (cd src/wasm-lib && wasm-pack build --dev --target web --out-dir pkg && cargo test -p kcl-lib export_bindings) && yarn isomorphic-copy-wasm && yarn fmt", "build:wasm": "yarn wasm-prep && cd src/wasm-lib && wasm-pack build --release --target web --out-dir pkg && cargo test -p kcl-lib export_bindings && cd ../.. && yarn isomorphic-copy-wasm && yarn fmt", diff --git a/src/lang/kclSamples.test.ts b/src/lang/kclSamples.test.ts index 2a4e47985..cf8ef5e67 100644 --- a/src/lang/kclSamples.test.ts +++ b/src/lang/kclSamples.test.ts @@ -32,7 +32,7 @@ child_process.spawnSync('git', [ 'clone', '--single-branch', '--branch', - 'achalmers/kw-pattern-transform2', + 'achalmers/offset-plane-kwargs', URL_GIT_KCL_SAMPLES, DIR_KCL_SAMPLES, ]) diff --git a/src/lang/modifyAst.ts b/src/lang/modifyAst.ts index 702032340..0e8a1c705 100644 --- a/src/lang/modifyAst.ts +++ b/src/lang/modifyAst.ts @@ -33,6 +33,7 @@ import { traverse, ARG_INDEX_FIELD, LABELED_ARG_FIELD, + UNLABELED_ARG, } from './queryAst' import { addTagForSketchOnFace, @@ -656,10 +657,11 @@ export function addOffsetPlane({ const newPlane = createVariableDeclaration( newPlaneName, - createCallExpressionStdLib('offsetPlane', [ + createCallExpressionStdLibKw( + 'offsetPlane', createLiteral(defaultPlane.toUpperCase()), - offset, - ]) + [createLabeledArg('offset', offset)] + ) ) const insertAt = @@ -677,8 +679,7 @@ export function addOffsetPlane({ [insertAt, 'index'], ['declaration', 'VariableDeclaration'], ['init', 'VariableDeclarator'], - ['arguments', 'CallExpression'], - [0, 'index'], + ['unlabeled', UNLABELED_ARG], ] return { modifiedAst, diff --git a/src/lang/queryAst.test.ts b/src/lang/queryAst.test.ts index 3e082034b..6ff2ac21e 100644 --- a/src/lang/queryAst.test.ts +++ b/src/lang/queryAst.test.ts @@ -582,7 +582,7 @@ sketch002 = startSketchOn(extrude001, $seg01) it('finds sketch001 and sketch002 pipes to be lofted', async () => { const exampleCode = `sketch001 = startSketchOn('XZ') |> circle({ center = [0, 0], radius = 1 }, %) -plane001 = offsetPlane('XZ', 2) +plane001 = offsetPlane('XZ', offset = 2) sketch002 = startSketchOn(plane001) |> circle({ center = [0, 0], radius = 3 }, %) ` diff --git a/src/lang/queryAst.ts b/src/lang/queryAst.ts index 7ccc2c64e..11c59590c 100644 --- a/src/lang/queryAst.ts +++ b/src/lang/queryAst.ts @@ -44,6 +44,7 @@ import { codeRefFromRange } from './std/artifactGraph' import { KclSettingsAnnotation } from 'lib/settings/settingsTypes' export const LABELED_ARG_FIELD = 'LabeledArg -> Arg' +export const UNLABELED_ARG = 'unlabeled first arg' export const ARG_INDEX_FIELD = 'arg index' /** diff --git a/src/lib/operations.ts b/src/lib/operations.ts index 5e6dcf41c..d3f8ba6a9 100644 --- a/src/lib/operations.ts +++ b/src/lib/operations.ts @@ -126,8 +126,7 @@ const prepareToEditOffsetPlane: PrepareToEditCallback = async ({ if ( operation.type !== 'StdLibCall' || !operation.labeledArgs || - !('std_plane' in operation.labeledArgs) || - !operation.labeledArgs.std_plane || + !operation.unlabeledArg || !('offset' in operation.labeledArgs) || !operation.labeledArgs.offset ) { @@ -135,11 +134,9 @@ const prepareToEditOffsetPlane: PrepareToEditCallback = async ({ } // TODO: Implement conversion to arbitrary plane selection // once the Offset Plane command supports it. + const stdPlane = operation.unlabeledArg const planeName = codeManager.code - .slice( - operation.labeledArgs.std_plane.sourceRange[0], - operation.labeledArgs.std_plane.sourceRange[1] - ) + .slice(stdPlane.sourceRange[0], stdPlane.sourceRange[1]) .replaceAll(`'`, ``) if (!isDefaultPlaneStr(planeName)) { diff --git a/src/wasm-lib/kcl/src/std/args.rs b/src/wasm-lib/kcl/src/std/args.rs index 78085705c..2c2e03f45 100644 --- a/src/wasm-lib/kcl/src/std/args.rs +++ b/src/wasm-lib/kcl/src/std/args.rs @@ -456,13 +456,6 @@ impl Args { FromArgs::from_args(self, 0) } - pub(crate) fn get_data_and_float<'a, T>(&'a self) -> Result<(T, f64), KclError> - where - T: serde::de::DeserializeOwned + FromKclValue<'a> + Sized, - { - FromArgs::from_args(self, 0) - } - pub(crate) async fn get_adjacent_face_to_tag( &self, exec_state: &mut ExecState, diff --git a/src/wasm-lib/kcl/src/std/loft.rs b/src/wasm-lib/kcl/src/std/loft.rs index d3cdbe164..187cc51b2 100644 --- a/src/wasm-lib/kcl/src/std/loft.rs +++ b/src/wasm-lib/kcl/src/std/loft.rs @@ -57,7 +57,7 @@ pub async fn loft(exec_state: &mut ExecState, args: Args) -> Result line(endAbsolute = [profileStartX(%), profileStartY(%)]) /// |> close() /// -/// triangleSketch = startSketchOn(offsetPlane('XY', 75)) +/// triangleSketch = startSketchOn(offsetPlane('XY', offset = 75)) /// |> startProfileAt([0, 125], %) /// |> line(end = [-15, -30]) /// |> line(end = [30, 0]) @@ -77,10 +77,10 @@ pub async fn loft(exec_state: &mut ExecState, args: Args) -> Result line(endAbsolute = [profileStartX(%), profileStartY(%)]) /// |> close() /// -/// circleSketch0 = startSketchOn(offsetPlane('XY', 75)) +/// circleSketch0 = startSketchOn(offsetPlane('XY', offset = 75)) /// |> circle({ center = [0, 100], radius = 50 }, %) /// -/// circleSketch1 = startSketchOn(offsetPlane('XY', 150)) +/// circleSketch1 = startSketchOn(offsetPlane('XY', offset = 150)) /// |> circle({ center = [0, 100], radius = 20 }, %) /// /// loft([squareSketch, circleSketch0, circleSketch1]) @@ -96,10 +96,10 @@ pub async fn loft(exec_state: &mut ExecState, args: Args) -> Result line(endAbsolute = [profileStartX(%), profileStartY(%)]) /// |> close() /// -/// circleSketch0 = startSketchOn(offsetPlane('XY', 75)) +/// circleSketch0 = startSketchOn(offsetPlane('XY', offset = 75)) /// |> circle({ center = [0, 100], radius = 50 }, %) /// -/// circleSketch1 = startSketchOn(offsetPlane('XY', 150)) +/// circleSketch1 = startSketchOn(offsetPlane('XY', offset = 150)) /// |> circle({ center = [0, 100], radius = 20 }, %) /// /// loft([squareSketch, circleSketch0, circleSketch1], diff --git a/src/wasm-lib/kcl/src/std/planes.rs b/src/wasm-lib/kcl/src/std/planes.rs index 1cba336ae..251a85ff5 100644 --- a/src/wasm-lib/kcl/src/std/planes.rs +++ b/src/wasm-lib/kcl/src/std/planes.rs @@ -52,7 +52,9 @@ impl From for PlaneData { /// Offset a plane by a distance along its normal. pub async fn offset_plane(exec_state: &mut ExecState, args: Args) -> Result { - let (std_plane, offset): (StandardPlane, f64) = args.get_data_and_float()?; + // let (std_plane, offset): (StandardPlane, f64) = args.get_data_and_float()?; + let std_plane = args.get_unlabeled_kw_arg("stdPlane")?; + let offset = args.get_kw_arg("offset")?; let plane = inner_offset_plane(std_plane, offset, exec_state).await?; make_offset_plane_in_engine(&plane, exec_state, &args).await?; Ok(KclValue::Plane { value: Box::new(plane) }) @@ -73,7 +75,7 @@ pub async fn offset_plane(exec_state: &mut ExecState, args: Args) -> Result line(endAbsolute = [profileStartX(%), profileStartY(%)]) /// |> close() /// -/// circleSketch = startSketchOn(offsetPlane('XY', 150)) +/// circleSketch = startSketchOn(offsetPlane('XY', offset = 150)) /// |> circle({ center = [0, 100], radius = 50 }, %) /// /// loft([squareSketch, circleSketch]) @@ -89,7 +91,7 @@ pub async fn offset_plane(exec_state: &mut ExecState, args: Args) -> Result line(endAbsolute = [profileStartX(%), profileStartY(%)]) /// |> close() /// -/// circleSketch = startSketchOn(offsetPlane('XZ', 150)) +/// circleSketch = startSketchOn(offsetPlane('XZ', offset = 150)) /// |> circle({ center = [0, 100], radius = 50 }, %) /// /// loft([squareSketch, circleSketch]) @@ -105,7 +107,7 @@ pub async fn offset_plane(exec_state: &mut ExecState, args: Args) -> Result line(endAbsolute = [profileStartX(%), profileStartY(%)]) /// |> close() /// -/// circleSketch = startSketchOn(offsetPlane('YZ', 150)) +/// circleSketch = startSketchOn(offsetPlane('YZ', offset = 150)) /// |> circle({ center = [0, 100], radius = 50 }, %) /// /// loft([squareSketch, circleSketch]) @@ -121,7 +123,7 @@ pub async fn offset_plane(exec_state: &mut ExecState, args: Args) -> Result line(endAbsolute = [profileStartX(%), profileStartY(%)]) /// |> close() /// -/// circleSketch = startSketchOn(offsetPlane('-XZ', -150)) +/// circleSketch = startSketchOn(offsetPlane('-XZ', offset = -150)) /// |> circle({ center = [0, 100], radius = 50 }, %) /// /// loft([squareSketch, circleSketch]) @@ -133,7 +135,7 @@ pub async fn offset_plane(exec_state: &mut ExecState, args: Args) -> Result circle({ radius = 10, center = [0, 0] }, %) /// /// // Triangle on the plane 4 units above -/// startSketchOn(offsetPlane("XY", 4)) +/// startSketchOn(offsetPlane("XY", offset = 4)) /// |> startProfileAt([0, 0], %) /// |> line(end = [10, 0]) /// |> line(end = [0, 10]) @@ -143,6 +145,12 @@ pub async fn offset_plane(exec_state: &mut ExecState, args: Args) -> Result[166, 191, 0]"] - 5["Segment
[197, 222, 0]"] + 4["Path
[193, 218, 0]"] + 5["Segment
[224, 249, 0]"] end - 1["Plane
[17, 38, 0]"] - 2["Plane
[56, 78, 0]"] - 3["Plane
[96, 117, 0]"] + 1["Plane
[17, 47, 0]"] + 2["Plane
[65, 96, 0]"] + 3["Plane
[114, 144, 0]"] 1 --- 4 4 --- 5 ``` diff --git a/src/wasm-lib/kcl/tests/artifact_graph_example_code_offset_planes/ast.snap b/src/wasm-lib/kcl/tests/artifact_graph_example_code_offset_planes/ast.snap index e0e101ae7..03a1dea92 100644 --- a/src/wasm-lib/kcl/tests/artifact_graph_example_code_offset_planes/ast.snap +++ b/src/wasm-lib/kcl/tests/artifact_graph_example_code_offset_planes/ast.snap @@ -1,13 +1,14 @@ --- source: kcl/src/simulation_tests.rs description: Result of parsing artifact_graph_example_code_offset_planes.kcl +snapshot_kind: text --- { "Ok": { "body": [ { "declaration": { - "end": 38, + "end": 47, "id": { "end": 14, "name": "offsetPlane001", @@ -17,22 +18,21 @@ description: Result of parsing artifact_graph_example_code_offset_planes.kcl "init": { "arguments": [ { - "end": 33, - "raw": "\"XY\"", - "start": 29, - "type": "Literal", - "type": "Literal", - "value": "XY" - }, - { - "end": 37, - "raw": "20", - "start": 35, - "type": "Literal", - "type": "Literal", - "value": { - "value": 20.0, - "suffix": "None" + "type": "LabeledArg", + "label": { + "type": "Identifier", + "name": "offset" + }, + "arg": { + "end": 46, + "raw": "20", + "start": 44, + "type": "Literal", + "type": "Literal", + "value": { + "value": 20.0, + "suffix": "None" + } } } ], @@ -42,15 +42,23 @@ description: Result of parsing artifact_graph_example_code_offset_planes.kcl "start": 17, "type": "Identifier" }, - "end": 38, + "end": 47, "start": 17, - "type": "CallExpression", - "type": "CallExpression" + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": { + "end": 33, + "raw": "\"XY\"", + "start": 29, + "type": "Literal", + "type": "Literal", + "value": "XY" + } }, "start": 0, "type": "VariableDeclarator" }, - "end": 38, + "end": 47, "kind": "const", "start": 0, "type": "VariableDeclaration", @@ -58,120 +66,134 @@ description: Result of parsing artifact_graph_example_code_offset_planes.kcl }, { "declaration": { - "end": 78, + "end": 96, "id": { - "end": 53, + "end": 62, "name": "offsetPlane002", - "start": 39, + "start": 48, "type": "Identifier" }, "init": { "arguments": [ { - "end": 72, - "raw": "\"XZ\"", - "start": 68, - "type": "Literal", - "type": "Literal", - "value": "XZ" - }, - { - "argument": { - "end": 77, - "raw": "50", - "start": 75, - "type": "Literal", - "type": "Literal", - "value": { - "value": 50.0, - "suffix": "None" - } + "type": "LabeledArg", + "label": { + "type": "Identifier", + "name": "offset" }, - "end": 77, - "operator": "-", - "start": 74, - "type": "UnaryExpression", - "type": "UnaryExpression" - } - ], - "callee": { - "end": 67, - "name": "offsetPlane", - "start": 56, - "type": "Identifier" - }, - "end": 78, - "start": 56, - "type": "CallExpression", - "type": "CallExpression" - }, - "start": 39, - "type": "VariableDeclarator" - }, - "end": 78, - "kind": "const", - "start": 39, - "type": "VariableDeclaration", - "type": "VariableDeclaration" - }, - { - "declaration": { - "end": 117, - "id": { - "end": 93, - "name": "offsetPlane003", - "start": 79, - "type": "Identifier" - }, - "init": { - "arguments": [ - { - "end": 112, - "raw": "\"YZ\"", - "start": 108, - "type": "Literal", - "type": "Literal", - "value": "YZ" - }, - { - "end": 116, - "raw": "10", - "start": 114, - "type": "Literal", - "type": "Literal", - "value": { - "value": 10.0, - "suffix": "None" + "arg": { + "argument": { + "end": 95, + "raw": "50", + "start": 93, + "type": "Literal", + "type": "Literal", + "value": { + "value": 50.0, + "suffix": "None" + } + }, + "end": 95, + "operator": "-", + "start": 92, + "type": "UnaryExpression", + "type": "UnaryExpression" } } ], "callee": { - "end": 107, + "end": 76, "name": "offsetPlane", - "start": 96, + "start": 65, "type": "Identifier" }, - "end": 117, - "start": 96, - "type": "CallExpression", - "type": "CallExpression" + "end": 96, + "start": 65, + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": { + "end": 81, + "raw": "\"XZ\"", + "start": 77, + "type": "Literal", + "type": "Literal", + "value": "XZ" + } }, - "start": 79, + "start": 48, "type": "VariableDeclarator" }, - "end": 117, + "end": 96, "kind": "const", - "start": 79, + "start": 48, "type": "VariableDeclaration", "type": "VariableDeclaration" }, { "declaration": { - "end": 222, + "end": 144, "id": { - "end": 128, + "end": 111, + "name": "offsetPlane003", + "start": 97, + "type": "Identifier" + }, + "init": { + "arguments": [ + { + "type": "LabeledArg", + "label": { + "type": "Identifier", + "name": "offset" + }, + "arg": { + "end": 143, + "raw": "10", + "start": 141, + "type": "Literal", + "type": "Literal", + "value": { + "value": 10.0, + "suffix": "None" + } + } + } + ], + "callee": { + "end": 125, + "name": "offsetPlane", + "start": 114, + "type": "Identifier" + }, + "end": 144, + "start": 114, + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": { + "end": 130, + "raw": "\"YZ\"", + "start": 126, + "type": "Literal", + "type": "Literal", + "value": "YZ" + } + }, + "start": 97, + "type": "VariableDeclarator" + }, + "end": 144, + "kind": "const", + "start": 97, + "type": "VariableDeclaration", + "type": "VariableDeclaration" + }, + { + "declaration": { + "end": 249, + "id": { + "end": 155, "name": "sketch002", - "start": 119, + "start": 146, "type": "Identifier" }, "init": { @@ -179,21 +201,21 @@ description: Result of parsing artifact_graph_example_code_offset_planes.kcl { "arguments": [ { - "end": 159, + "end": 186, "name": "offsetPlane001", - "start": 145, + "start": 172, "type": "Identifier", "type": "Identifier" } ], "callee": { - "end": 144, + "end": 171, "name": "startSketchOn", - "start": 131, + "start": 158, "type": "Identifier" }, - "end": 160, - "start": 131, + "end": 187, + "start": 158, "type": "CallExpression", "type": "CallExpression" }, @@ -202,9 +224,9 @@ description: Result of parsing artifact_graph_example_code_offset_planes.kcl { "elements": [ { - "end": 183, + "end": 210, "raw": "0", - "start": 182, + "start": 209, "type": "Literal", "type": "Literal", "value": { @@ -213,9 +235,9 @@ description: Result of parsing artifact_graph_example_code_offset_planes.kcl } }, { - "end": 186, + "end": 213, "raw": "0", - "start": 185, + "start": 212, "type": "Literal", "type": "Literal", "value": { @@ -224,26 +246,26 @@ description: Result of parsing artifact_graph_example_code_offset_planes.kcl } } ], - "end": 187, - "start": 181, + "end": 214, + "start": 208, "type": "ArrayExpression", "type": "ArrayExpression" }, { - "end": 190, - "start": 189, + "end": 217, + "start": 216, "type": "PipeSubstitution", "type": "PipeSubstitution" } ], "callee": { - "end": 180, + "end": 207, "name": "startProfileAt", - "start": 166, + "start": 193, "type": "Identifier" }, - "end": 191, - "start": 166, + "end": 218, + "start": 193, "type": "CallExpression", "type": "CallExpression" }, @@ -258,9 +280,9 @@ description: Result of parsing artifact_graph_example_code_offset_planes.kcl "arg": { "elements": [ { - "end": 213, + "end": 240, "raw": "6.78", - "start": 209, + "start": 236, "type": "Literal", "type": "Literal", "value": { @@ -269,9 +291,9 @@ description: Result of parsing artifact_graph_example_code_offset_planes.kcl } }, { - "end": 220, + "end": 247, "raw": "15.01", - "start": 215, + "start": 242, "type": "Literal", "type": "Literal", "value": { @@ -280,48 +302,48 @@ description: Result of parsing artifact_graph_example_code_offset_planes.kcl } } ], - "end": 221, - "start": 208, + "end": 248, + "start": 235, "type": "ArrayExpression", "type": "ArrayExpression" } } ], "callee": { - "end": 201, + "end": 228, "name": "line", - "start": 197, + "start": 224, "type": "Identifier" }, - "end": 222, - "start": 197, + "end": 249, + "start": 224, "type": "CallExpressionKw", "type": "CallExpressionKw", "unlabeled": null } ], - "end": 222, - "start": 131, + "end": 249, + "start": 158, "type": "PipeExpression", "type": "PipeExpression" }, - "start": 119, + "start": 146, "type": "VariableDeclarator" }, - "end": 222, + "end": 249, "kind": "const", - "start": 119, + "start": 146, "type": "VariableDeclaration", "type": "VariableDeclaration" } ], - "end": 223, + "end": 250, "nonCodeMeta": { "nonCodeNodes": { "2": [ { - "end": 119, - "start": 117, + "end": 146, + "start": 144, "type": "NonCodeNode", "value": { "type": "newLine" diff --git a/src/wasm-lib/kcl/tests/artifact_graph_example_code_offset_planes/input.kcl b/src/wasm-lib/kcl/tests/artifact_graph_example_code_offset_planes/input.kcl index d3efbfe88..dace451b0 100644 --- a/src/wasm-lib/kcl/tests/artifact_graph_example_code_offset_planes/input.kcl +++ b/src/wasm-lib/kcl/tests/artifact_graph_example_code_offset_planes/input.kcl @@ -1,6 +1,6 @@ -offsetPlane001 = offsetPlane("XY", 20) -offsetPlane002 = offsetPlane("XZ", -50) -offsetPlane003 = offsetPlane("YZ", 10) +offsetPlane001 = offsetPlane("XY", offset = 20) +offsetPlane002 = offsetPlane("XZ", offset = -50) +offsetPlane003 = offsetPlane("YZ", offset = 10) sketch002 = startSketchOn(offsetPlane001) |> startProfileAt([0, 0], %) diff --git a/src/wasm-lib/kcl/tests/artifact_graph_example_code_offset_planes/ops.snap b/src/wasm-lib/kcl/tests/artifact_graph_example_code_offset_planes/ops.snap index 643431895..5a22561ec 100644 --- a/src/wasm-lib/kcl/tests/artifact_graph_example_code_offset_planes/ops.snap +++ b/src/wasm-lib/kcl/tests/artifact_graph_example_code_offset_planes/ops.snap @@ -8,15 +8,8 @@ snapshot_kind: text "labeledArgs": { "offset": { "sourceRange": [ - 35, - 37, - 0 - ] - }, - "std_plane": { - "sourceRange": [ - 29, - 33, + 44, + 46, 0 ] } @@ -24,78 +17,82 @@ snapshot_kind: text "name": "offsetPlane", "sourceRange": [ 17, - 38, + 47, 0 ], "type": "StdLibCall", - "unlabeledArg": null + "unlabeledArg": { + "sourceRange": [ + 29, + 33, + 0 + ] + } }, { "labeledArgs": { "offset": { "sourceRange": [ - 74, - 77, - 0 - ] - }, - "std_plane": { - "sourceRange": [ - 68, - 72, - 0 - ] - } - }, - "name": "offsetPlane", - "sourceRange": [ - 56, - 78, - 0 - ], - "type": "StdLibCall", - "unlabeledArg": null - }, - { - "labeledArgs": { - "offset": { - "sourceRange": [ - 114, - 116, - 0 - ] - }, - "std_plane": { - "sourceRange": [ - 108, - 112, + 92, + 95, 0 ] } }, "name": "offsetPlane", "sourceRange": [ + 65, 96, - 117, 0 ], "type": "StdLibCall", - "unlabeledArg": null + "unlabeledArg": { + "sourceRange": [ + 77, + 81, + 0 + ] + } + }, + { + "labeledArgs": { + "offset": { + "sourceRange": [ + 141, + 143, + 0 + ] + } + }, + "name": "offsetPlane", + "sourceRange": [ + 114, + 144, + 0 + ], + "type": "StdLibCall", + "unlabeledArg": { + "sourceRange": [ + 126, + 130, + 0 + ] + } }, { "labeledArgs": { "data": { "sourceRange": [ - 145, - 159, + 172, + 186, 0 ] } }, "name": "startSketchOn", "sourceRange": [ - 131, - 160, + 158, + 187, 0 ], "type": "StdLibCall", diff --git a/src/wasm-lib/kcl/tests/artifact_graph_example_code_offset_planes/program_memory.snap b/src/wasm-lib/kcl/tests/artifact_graph_example_code_offset_planes/program_memory.snap index c709631f1..3df19decf 100644 --- a/src/wasm-lib/kcl/tests/artifact_graph_example_code_offset_planes/program_memory.snap +++ b/src/wasm-lib/kcl/tests/artifact_graph_example_code_offset_planes/program_memory.snap @@ -1,6 +1,7 @@ --- source: kcl/src/simulation_tests.rs description: Variables in memory after executing artifact_graph_example_code_offset_planes.kcl +snapshot_kind: text --- { "HALF_TURN": { @@ -129,8 +130,8 @@ description: Variables in memory after executing artifact_graph_example_code_off "__geoMeta": { "id": "[uuid]", "sourceRange": [ - 197, - 222, + 224, + 249, 0 ] }, @@ -189,8 +190,8 @@ description: Variables in memory after executing artifact_graph_example_code_off "__geoMeta": { "id": "[uuid]", "sourceRange": [ - 166, - 191, + 193, + 218, 0 ] } @@ -203,8 +204,8 @@ description: Variables in memory after executing artifact_graph_example_code_off "__meta": [ { "sourceRange": [ - 166, - 191, + 193, + 218, 0 ] } From e27e9ecc63e1e9843788d1a960f4668b00ba5d1c Mon Sep 17 00:00:00 2001 From: Jonathan Tran Date: Thu, 13 Feb 2025 16:04:12 -0500 Subject: [PATCH 04/30] test: Add SSI pattern simulation test (#5379) * Add new SSI pattern test * Update output since adding new test --- src/wasm-lib/kcl/src/simulation_tests.rs | 21 + .../tests/ssi_pattern/artifact_commands.snap | 4535 +++++ .../ssi_pattern/artifact_graph_flowchart.snap | 6 + .../artifact_graph_flowchart.snap.md | 92 + src/wasm-lib/kcl/tests/ssi_pattern/ast.snap | 873 + src/wasm-lib/kcl/tests/ssi_pattern/input.kcl | 17 + src/wasm-lib/kcl/tests/ssi_pattern/ops.snap | 95 + .../kcl/tests/ssi_pattern/program_memory.snap | 14889 ++++++++++++++++ .../kcl/tests/ssi_pattern/rendered_model.png | Bin 0 -> 87295 bytes 9 files changed, 20528 insertions(+) create mode 100644 src/wasm-lib/kcl/tests/ssi_pattern/artifact_commands.snap create mode 100644 src/wasm-lib/kcl/tests/ssi_pattern/artifact_graph_flowchart.snap create mode 100644 src/wasm-lib/kcl/tests/ssi_pattern/artifact_graph_flowchart.snap.md create mode 100644 src/wasm-lib/kcl/tests/ssi_pattern/ast.snap create mode 100644 src/wasm-lib/kcl/tests/ssi_pattern/input.kcl create mode 100644 src/wasm-lib/kcl/tests/ssi_pattern/ops.snap create mode 100644 src/wasm-lib/kcl/tests/ssi_pattern/program_memory.snap create mode 100644 src/wasm-lib/kcl/tests/ssi_pattern/rendered_model.png diff --git a/src/wasm-lib/kcl/src/simulation_tests.rs b/src/wasm-lib/kcl/src/simulation_tests.rs index 6990f3da9..06b5ad818 100644 --- a/src/wasm-lib/kcl/src/simulation_tests.rs +++ b/src/wasm-lib/kcl/src/simulation_tests.rs @@ -1600,6 +1600,27 @@ mod parametric { super::execute(TEST_NAME, true).await } } +mod ssi_pattern { + const TEST_NAME: &str = "ssi_pattern"; + + /// Test parsing KCL. + #[test] + fn parse() { + super::parse(TEST_NAME) + } + + /// Test that parsing and unparsing KCL produces the original KCL input. + #[test] + fn unparse() { + super::unparse(TEST_NAME) + } + + /// Test that KCL is executed correctly. + #[tokio::test(flavor = "multi_thread")] + async fn kcl_test_execute() { + super::execute(TEST_NAME, true).await + } +} mod angled_line { const TEST_NAME: &str = "angled_line"; diff --git a/src/wasm-lib/kcl/tests/ssi_pattern/artifact_commands.snap b/src/wasm-lib/kcl/tests/ssi_pattern/artifact_commands.snap new file mode 100644 index 000000000..143e2d2f9 --- /dev/null +++ b/src/wasm-lib/kcl/tests/ssi_pattern/artifact_commands.snap @@ -0,0 +1,4535 @@ +--- +source: kcl/src/simulation_tests.rs +description: Artifact commands ssi_pattern.kcl +--- +[ + { + "cmdId": "[uuid]", + "range": [ + 0, + 0, + 0 + ], + "command": { + "type": "make_plane", + "origin": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "x_axis": { + "x": 1.0, + "y": 0.0, + "z": 0.0 + }, + "y_axis": { + "x": 0.0, + "y": 1.0, + "z": 0.0 + }, + "size": 100.0, + "clobber": false, + "hide": true + } + }, + { + "cmdId": "[uuid]", + "range": [ + 0, + 0, + 0 + ], + "command": { + "type": "plane_set_color", + "plane_id": "[uuid]", + "color": { + "r": 0.7, + "g": 0.28, + "b": 0.28, + "a": 0.4 + } + } + }, + { + "cmdId": "[uuid]", + "range": [ + 0, + 0, + 0 + ], + "command": { + "type": "make_plane", + "origin": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "x_axis": { + "x": 0.0, + "y": 1.0, + "z": 0.0 + }, + "y_axis": { + "x": 0.0, + "y": 0.0, + "z": 1.0 + }, + "size": 100.0, + "clobber": false, + "hide": true + } + }, + { + "cmdId": "[uuid]", + "range": [ + 0, + 0, + 0 + ], + "command": { + "type": "plane_set_color", + "plane_id": "[uuid]", + "color": { + "r": 0.28, + "g": 0.7, + "b": 0.28, + "a": 0.4 + } + } + }, + { + "cmdId": "[uuid]", + "range": [ + 0, + 0, + 0 + ], + "command": { + "type": "make_plane", + "origin": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "x_axis": { + "x": 1.0, + "y": 0.0, + "z": 0.0 + }, + "y_axis": { + "x": 0.0, + "y": 0.0, + "z": 1.0 + }, + "size": 100.0, + "clobber": false, + "hide": true + } + }, + { + "cmdId": "[uuid]", + "range": [ + 0, + 0, + 0 + ], + "command": { + "type": "plane_set_color", + "plane_id": "[uuid]", + "color": { + "r": 0.28, + "g": 0.28, + "b": 0.7, + "a": 0.4 + } + } + }, + { + "cmdId": "[uuid]", + "range": [ + 0, + 0, + 0 + ], + "command": { + "type": "make_plane", + "origin": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "x_axis": { + "x": -1.0, + "y": 0.0, + "z": 0.0 + }, + "y_axis": { + "x": 0.0, + "y": 1.0, + "z": 0.0 + }, + "size": 100.0, + "clobber": false, + "hide": true + } + }, + { + "cmdId": "[uuid]", + "range": [ + 0, + 0, + 0 + ], + "command": { + "type": "make_plane", + "origin": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "x_axis": { + "x": 0.0, + "y": -1.0, + "z": 0.0 + }, + "y_axis": { + "x": 0.0, + "y": 0.0, + "z": 1.0 + }, + "size": 100.0, + "clobber": false, + "hide": true + } + }, + { + "cmdId": "[uuid]", + "range": [ + 0, + 0, + 0 + ], + "command": { + "type": "make_plane", + "origin": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "x_axis": { + "x": -1.0, + "y": 0.0, + "z": 0.0 + }, + "y_axis": { + "x": 0.0, + "y": 0.0, + "z": 1.0 + }, + "size": 100.0, + "clobber": false, + "hide": true + } + }, + { + "cmdId": "[uuid]", + "range": [ + 0, + 0, + 0 + ], + "command": { + "type": "edge_lines_visible", + "hidden": false + } + }, + { + "cmdId": "[uuid]", + "range": [ + 0, + 0, + 0 + ], + "command": { + "type": "set_scene_units", + "unit": "mm" + } + }, + { + "cmdId": "[uuid]", + "range": [ + 0, + 0, + 0 + ], + "command": { + "type": "object_visible", + "object_id": "[uuid]", + "hidden": true + } + }, + { + "cmdId": "[uuid]", + "range": [ + 0, + 0, + 0 + ], + "command": { + "type": "object_visible", + "object_id": "[uuid]", + "hidden": true + } + }, + { + "cmdId": "[uuid]", + "range": [ + 12, + 31, + 0 + ], + "command": { + "type": "make_plane", + "origin": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "x_axis": { + "x": 1.0, + "y": 0.0, + "z": 0.0 + }, + "y_axis": { + "x": 0.0, + "y": 0.0, + "z": 1.0 + }, + "size": 60.0, + "clobber": false, + "hide": true + } + }, + { + "cmdId": "[uuid]", + "range": [ + 37, + 71, + 0 + ], + "command": { + "type": "enable_sketch_mode", + "entity_id": "[uuid]", + "ortho": false, + "animated": false, + "adjust_camera": false, + "planar_normal": { + "x": 0.0, + "y": -1.0, + "z": 0.0 + } + } + }, + { + "cmdId": "[uuid]", + "range": [ + 37, + 71, + 0 + ], + "command": { + "type": "start_path" + } + }, + { + "cmdId": "[uuid]", + "range": [ + 37, + 71, + 0 + ], + "command": { + "type": "move_path_pen", + "path": "[uuid]", + "to": { + "x": -4.35, + "y": -12.26, + "z": 0.0 + } + } + }, + { + "cmdId": "[uuid]", + "range": [ + 77, + 91, + 0 + ], + "command": { + "type": "extend_path", + "path": "[uuid]", + "segment": { + "type": "line", + "end": { + "x": 0.0, + "y": 10.2, + "z": 0.0 + }, + "relative": true + } + } + }, + { + "cmdId": "[uuid]", + "range": [ + 97, + 122, + 0 + ], + "command": { + "type": "extend_path", + "path": "[uuid]", + "segment": { + "type": "line", + "end": { + "x": 0.54, + "y": -0.03, + "z": 0.0 + }, + "relative": true + } + } + }, + { + "cmdId": "[uuid]", + "range": [ + 128, + 161, + 0 + ], + "command": { + "type": "extend_path", + "path": "[uuid]", + "segment": { + "type": "tangential_arc_to", + "to": { + "x": 24.21, + "y": 16.7, + "z": 0.0 + }, + "angle_snap_increment": null + } + } + }, + { + "cmdId": "[uuid]", + "range": [ + 167, + 183, + 0 + ], + "command": { + "type": "extend_path", + "path": "[uuid]", + "segment": { + "type": "line", + "end": { + "x": 0.0, + "y": -26.76, + "z": 0.0 + }, + "relative": true + } + } + }, + { + "cmdId": "[uuid]", + "range": [ + 189, + 259, + 0 + ], + "command": { + "type": "extend_path", + "path": "[uuid]", + "segment": { + "type": "line", + "end": { + "x": -4.35, + "y": -12.26, + "z": 0.0 + }, + "relative": false + } + } + }, + { + "cmdId": "[uuid]", + "range": [ + 265, + 272, + 0 + ], + "command": { + "type": "close_path", + "path_id": "[uuid]" + } + }, + { + "cmdId": "[uuid]", + "range": [ + 265, + 272, + 0 + ], + "command": { + "type": "sketch_mode_disable" + } + }, + { + "cmdId": "[uuid]", + "range": [ + 287, + 318, + 0 + ], + "command": { + "type": "enable_sketch_mode", + "entity_id": "[uuid]", + "ortho": false, + "animated": false, + "adjust_camera": false, + "planar_normal": { + "x": 0.0, + "y": -1.0, + "z": 0.0 + } + } + }, + { + "cmdId": "[uuid]", + "range": [ + 287, + 318, + 0 + ], + "command": { + "type": "extrude", + "target": "[uuid]", + "distance": 50.0, + "faces": null + } + }, + { + "cmdId": "[uuid]", + "range": [ + 287, + 318, + 0 + ], + "command": { + "type": "sketch_mode_disable" + } + }, + { + "cmdId": "[uuid]", + "range": [ + 287, + 318, + 0 + ], + "command": { + "type": "object_bring_to_front", + "object_id": "[uuid]" + } + }, + { + "cmdId": "[uuid]", + "range": [ + 287, + 318, + 0 + ], + "command": { + "type": "solid3d_get_extrusion_face_info", + "object_id": "[uuid]", + "edge_id": "[uuid]" + } + }, + { + "cmdId": "[uuid]", + "range": [ + 287, + 318, + 0 + ], + "command": { + "type": "solid3d_get_opposite_edge", + "object_id": "[uuid]", + "edge_id": "[uuid]", + "face_id": "[uuid]" + } + }, + { + "cmdId": "[uuid]", + "range": [ + 287, + 318, + 0 + ], + "command": { + "type": "solid3d_get_next_adjacent_edge", + "object_id": "[uuid]", + "edge_id": "[uuid]", + "face_id": "[uuid]" + } + }, + { + "cmdId": "[uuid]", + "range": [ + 287, + 318, + 0 + ], + "command": { + "type": "solid3d_get_opposite_edge", + "object_id": "[uuid]", + "edge_id": "[uuid]", + "face_id": "[uuid]" + } + }, + { + "cmdId": "[uuid]", + "range": [ + 287, + 318, + 0 + ], + "command": { + "type": "solid3d_get_next_adjacent_edge", + "object_id": "[uuid]", + "edge_id": "[uuid]", + "face_id": "[uuid]" + } + }, + { + "cmdId": "[uuid]", + "range": [ + 287, + 318, + 0 + ], + "command": { + "type": "solid3d_get_opposite_edge", + "object_id": "[uuid]", + "edge_id": "[uuid]", + "face_id": "[uuid]" + } + }, + { + "cmdId": "[uuid]", + "range": [ + 287, + 318, + 0 + ], + "command": { + "type": "solid3d_get_next_adjacent_edge", + "object_id": "[uuid]", + "edge_id": "[uuid]", + "face_id": "[uuid]" + } + }, + { + "cmdId": "[uuid]", + "range": [ + 287, + 318, + 0 + ], + "command": { + "type": "solid3d_get_opposite_edge", + "object_id": "[uuid]", + "edge_id": "[uuid]", + "face_id": "[uuid]" + } + }, + { + "cmdId": "[uuid]", + "range": [ + 287, + 318, + 0 + ], + "command": { + "type": "solid3d_get_next_adjacent_edge", + "object_id": "[uuid]", + "edge_id": "[uuid]", + "face_id": "[uuid]" + } + }, + { + "cmdId": "[uuid]", + "range": [ + 287, + 318, + 0 + ], + "command": { + "type": "solid3d_get_opposite_edge", + "object_id": "[uuid]", + "edge_id": "[uuid]", + "face_id": "[uuid]" + } + }, + { + "cmdId": "[uuid]", + "range": [ + 287, + 318, + 0 + ], + "command": { + "type": "solid3d_get_next_adjacent_edge", + "object_id": "[uuid]", + "edge_id": "[uuid]", + "face_id": "[uuid]" + } + }, + { + "cmdId": "[uuid]", + "range": [ + 370, + 421, + 0 + ], + "command": { + "type": "enable_sketch_mode", + "entity_id": "[uuid]", + "ortho": false, + "animated": false, + "adjust_camera": false, + "planar_normal": null + } + }, + { + "cmdId": "[uuid]", + "range": [ + 370, + 421, + 0 + ], + "command": { + "type": "start_path" + } + }, + { + "cmdId": "[uuid]", + "range": [ + 370, + 421, + 0 + ], + "command": { + "type": "move_path_pen", + "path": "[uuid]", + "to": { + "x": -0.6800000000000002, + "y": 47.7, + "z": 0.0 + } + } + }, + { + "cmdId": "[uuid]", + "range": [ + 370, + 421, + 0 + ], + "command": { + "type": "extend_path", + "path": "[uuid]", + "segment": { + "type": "arc", + "center": { + "x": -2.08, + "y": 47.7 + }, + "radius": 1.4, + "start": { + "unit": "degrees", + "value": 0.0 + }, + "end": { + "unit": "degrees", + "value": 360.0 + }, + "relative": false + } + } + }, + { + "cmdId": "[uuid]", + "range": [ + 370, + 421, + 0 + ], + "command": { + "type": "close_path", + "path_id": "[uuid]" + } + }, + { + "cmdId": "[uuid]", + "range": [ + 427, + 486, + 0 + ], + "command": { + "type": "entity_linear_pattern_transform", + "entity_id": "[uuid]", + "transform": [], + "transforms": [ + [ + { + "translate": { + "x": 5.0, + "y": 0.0, + "z": 0.0 + }, + "scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "rotation": { + "axis": { + "x": 0.0, + "y": 0.0, + "z": 1.0 + }, + "angle": { + "unit": "degrees", + "value": 0.0 + }, + "origin": { + "type": "local" + } + }, + "replicate": true + } + ], + [ + { + "translate": { + "x": 10.0, + "y": 0.0, + "z": 0.0 + }, + "scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "rotation": { + "axis": { + "x": 0.0, + "y": 0.0, + "z": 1.0 + }, + "angle": { + "unit": "degrees", + "value": 0.0 + }, + "origin": { + "type": "local" + } + }, + "replicate": true + } + ], + [ + { + "translate": { + "x": 15.0, + "y": 0.0, + "z": 0.0 + }, + "scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "rotation": { + "axis": { + "x": 0.0, + "y": 0.0, + "z": 1.0 + }, + "angle": { + "unit": "degrees", + "value": 0.0 + }, + "origin": { + "type": "local" + } + }, + "replicate": true + } + ], + [ + { + "translate": { + "x": 20.0, + "y": 0.0, + "z": 0.0 + }, + "scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "rotation": { + "axis": { + "x": 0.0, + "y": 0.0, + "z": 1.0 + }, + "angle": { + "unit": "degrees", + "value": 0.0 + }, + "origin": { + "type": "local" + } + }, + "replicate": true + } + ] + ] + } + }, + { + "cmdId": "[uuid]", + "range": [ + 545, + 605, + 0 + ], + "command": { + "type": "entity_linear_pattern_transform", + "entity_id": "[uuid]", + "transform": [], + "transforms": [ + [ + { + "translate": { + "x": 0.0, + "y": -4.0, + "z": 0.0 + }, + "scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "rotation": { + "axis": { + "x": 0.0, + "y": 0.0, + "z": 1.0 + }, + "angle": { + "unit": "degrees", + "value": 0.0 + }, + "origin": { + "type": "local" + } + }, + "replicate": true + } + ], + [ + { + "translate": { + "x": 0.0, + "y": -8.0, + "z": 0.0 + }, + "scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "rotation": { + "axis": { + "x": 0.0, + "y": 0.0, + "z": 1.0 + }, + "angle": { + "unit": "degrees", + "value": 0.0 + }, + "origin": { + "type": "local" + } + }, + "replicate": true + } + ], + [ + { + "translate": { + "x": 0.0, + "y": -12.0, + "z": 0.0 + }, + "scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "rotation": { + "axis": { + "x": 0.0, + "y": 0.0, + "z": 1.0 + }, + "angle": { + "unit": "degrees", + "value": 0.0 + }, + "origin": { + "type": "local" + } + }, + "replicate": true + } + ], + [ + { + "translate": { + "x": 0.0, + "y": -16.0, + "z": 0.0 + }, + "scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "rotation": { + "axis": { + "x": 0.0, + "y": 0.0, + "z": 1.0 + }, + "angle": { + "unit": "degrees", + "value": 0.0 + }, + "origin": { + "type": "local" + } + }, + "replicate": true + } + ], + [ + { + "translate": { + "x": 0.0, + "y": -20.0, + "z": 0.0 + }, + "scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "rotation": { + "axis": { + "x": 0.0, + "y": 0.0, + "z": 1.0 + }, + "angle": { + "unit": "degrees", + "value": 0.0 + }, + "origin": { + "type": "local" + } + }, + "replicate": true + } + ] + ] + } + }, + { + "cmdId": "[uuid]", + "range": [ + 545, + 605, + 0 + ], + "command": { + "type": "entity_linear_pattern_transform", + "entity_id": "[uuid]", + "transform": [], + "transforms": [ + [ + { + "translate": { + "x": 0.0, + "y": -4.0, + "z": 0.0 + }, + "scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "rotation": { + "axis": { + "x": 0.0, + "y": 0.0, + "z": 1.0 + }, + "angle": { + "unit": "degrees", + "value": 0.0 + }, + "origin": { + "type": "local" + } + }, + "replicate": true + } + ], + [ + { + "translate": { + "x": 0.0, + "y": -8.0, + "z": 0.0 + }, + "scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "rotation": { + "axis": { + "x": 0.0, + "y": 0.0, + "z": 1.0 + }, + "angle": { + "unit": "degrees", + "value": 0.0 + }, + "origin": { + "type": "local" + } + }, + "replicate": true + } + ], + [ + { + "translate": { + "x": 0.0, + "y": -12.0, + "z": 0.0 + }, + "scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "rotation": { + "axis": { + "x": 0.0, + "y": 0.0, + "z": 1.0 + }, + "angle": { + "unit": "degrees", + "value": 0.0 + }, + "origin": { + "type": "local" + } + }, + "replicate": true + } + ], + [ + { + "translate": { + "x": 0.0, + "y": -16.0, + "z": 0.0 + }, + "scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "rotation": { + "axis": { + "x": 0.0, + "y": 0.0, + "z": 1.0 + }, + "angle": { + "unit": "degrees", + "value": 0.0 + }, + "origin": { + "type": "local" + } + }, + "replicate": true + } + ], + [ + { + "translate": { + "x": 0.0, + "y": -20.0, + "z": 0.0 + }, + "scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "rotation": { + "axis": { + "x": 0.0, + "y": 0.0, + "z": 1.0 + }, + "angle": { + "unit": "degrees", + "value": 0.0 + }, + "origin": { + "type": "local" + } + }, + "replicate": true + } + ] + ] + } + }, + { + "cmdId": "[uuid]", + "range": [ + 545, + 605, + 0 + ], + "command": { + "type": "entity_linear_pattern_transform", + "entity_id": "[uuid]", + "transform": [], + "transforms": [ + [ + { + "translate": { + "x": 0.0, + "y": -4.0, + "z": 0.0 + }, + "scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "rotation": { + "axis": { + "x": 0.0, + "y": 0.0, + "z": 1.0 + }, + "angle": { + "unit": "degrees", + "value": 0.0 + }, + "origin": { + "type": "local" + } + }, + "replicate": true + } + ], + [ + { + "translate": { + "x": 0.0, + "y": -8.0, + "z": 0.0 + }, + "scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "rotation": { + "axis": { + "x": 0.0, + "y": 0.0, + "z": 1.0 + }, + "angle": { + "unit": "degrees", + "value": 0.0 + }, + "origin": { + "type": "local" + } + }, + "replicate": true + } + ], + [ + { + "translate": { + "x": 0.0, + "y": -12.0, + "z": 0.0 + }, + "scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "rotation": { + "axis": { + "x": 0.0, + "y": 0.0, + "z": 1.0 + }, + "angle": { + "unit": "degrees", + "value": 0.0 + }, + "origin": { + "type": "local" + } + }, + "replicate": true + } + ], + [ + { + "translate": { + "x": 0.0, + "y": -16.0, + "z": 0.0 + }, + "scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "rotation": { + "axis": { + "x": 0.0, + "y": 0.0, + "z": 1.0 + }, + "angle": { + "unit": "degrees", + "value": 0.0 + }, + "origin": { + "type": "local" + } + }, + "replicate": true + } + ], + [ + { + "translate": { + "x": 0.0, + "y": -20.0, + "z": 0.0 + }, + "scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "rotation": { + "axis": { + "x": 0.0, + "y": 0.0, + "z": 1.0 + }, + "angle": { + "unit": "degrees", + "value": 0.0 + }, + "origin": { + "type": "local" + } + }, + "replicate": true + } + ] + ] + } + }, + { + "cmdId": "[uuid]", + "range": [ + 545, + 605, + 0 + ], + "command": { + "type": "entity_linear_pattern_transform", + "entity_id": "[uuid]", + "transform": [], + "transforms": [ + [ + { + "translate": { + "x": 0.0, + "y": -4.0, + "z": 0.0 + }, + "scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "rotation": { + "axis": { + "x": 0.0, + "y": 0.0, + "z": 1.0 + }, + "angle": { + "unit": "degrees", + "value": 0.0 + }, + "origin": { + "type": "local" + } + }, + "replicate": true + } + ], + [ + { + "translate": { + "x": 0.0, + "y": -8.0, + "z": 0.0 + }, + "scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "rotation": { + "axis": { + "x": 0.0, + "y": 0.0, + "z": 1.0 + }, + "angle": { + "unit": "degrees", + "value": 0.0 + }, + "origin": { + "type": "local" + } + }, + "replicate": true + } + ], + [ + { + "translate": { + "x": 0.0, + "y": -12.0, + "z": 0.0 + }, + "scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "rotation": { + "axis": { + "x": 0.0, + "y": 0.0, + "z": 1.0 + }, + "angle": { + "unit": "degrees", + "value": 0.0 + }, + "origin": { + "type": "local" + } + }, + "replicate": true + } + ], + [ + { + "translate": { + "x": 0.0, + "y": -16.0, + "z": 0.0 + }, + "scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "rotation": { + "axis": { + "x": 0.0, + "y": 0.0, + "z": 1.0 + }, + "angle": { + "unit": "degrees", + "value": 0.0 + }, + "origin": { + "type": "local" + } + }, + "replicate": true + } + ], + [ + { + "translate": { + "x": 0.0, + "y": -20.0, + "z": 0.0 + }, + "scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "rotation": { + "axis": { + "x": 0.0, + "y": 0.0, + "z": 1.0 + }, + "angle": { + "unit": "degrees", + "value": 0.0 + }, + "origin": { + "type": "local" + } + }, + "replicate": true + } + ] + ] + } + }, + { + "cmdId": "[uuid]", + "range": [ + 545, + 605, + 0 + ], + "command": { + "type": "entity_linear_pattern_transform", + "entity_id": "[uuid]", + "transform": [], + "transforms": [ + [ + { + "translate": { + "x": 0.0, + "y": -4.0, + "z": 0.0 + }, + "scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "rotation": { + "axis": { + "x": 0.0, + "y": 0.0, + "z": 1.0 + }, + "angle": { + "unit": "degrees", + "value": 0.0 + }, + "origin": { + "type": "local" + } + }, + "replicate": true + } + ], + [ + { + "translate": { + "x": 0.0, + "y": -8.0, + "z": 0.0 + }, + "scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "rotation": { + "axis": { + "x": 0.0, + "y": 0.0, + "z": 1.0 + }, + "angle": { + "unit": "degrees", + "value": 0.0 + }, + "origin": { + "type": "local" + } + }, + "replicate": true + } + ], + [ + { + "translate": { + "x": 0.0, + "y": -12.0, + "z": 0.0 + }, + "scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "rotation": { + "axis": { + "x": 0.0, + "y": 0.0, + "z": 1.0 + }, + "angle": { + "unit": "degrees", + "value": 0.0 + }, + "origin": { + "type": "local" + } + }, + "replicate": true + } + ], + [ + { + "translate": { + "x": 0.0, + "y": -16.0, + "z": 0.0 + }, + "scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "rotation": { + "axis": { + "x": 0.0, + "y": 0.0, + "z": 1.0 + }, + "angle": { + "unit": "degrees", + "value": 0.0 + }, + "origin": { + "type": "local" + } + }, + "replicate": true + } + ], + [ + { + "translate": { + "x": 0.0, + "y": -20.0, + "z": 0.0 + }, + "scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "rotation": { + "axis": { + "x": 0.0, + "y": 0.0, + "z": 1.0 + }, + "angle": { + "unit": "degrees", + "value": 0.0 + }, + "origin": { + "type": "local" + } + }, + "replicate": true + } + ] + ] + } + }, + { + "cmdId": "[uuid]", + "range": [ + 611, + 632, + 0 + ], + "command": { + "type": "enable_sketch_mode", + "entity_id": "[uuid]", + "ortho": false, + "animated": false, + "adjust_camera": false, + "planar_normal": null + } + }, + { + "cmdId": "[uuid]", + "range": [ + 611, + 632, + 0 + ], + "command": { + "type": "extrude", + "target": "[uuid]", + "distance": -40.0, + "faces": null + } + }, + { + "cmdId": "[uuid]", + "range": [ + 611, + 632, + 0 + ], + "command": { + "type": "sketch_mode_disable" + } + }, + { + "cmdId": "[uuid]", + "range": [ + 611, + 632, + 0 + ], + "command": { + "type": "object_bring_to_front", + "object_id": "[uuid]" + } + }, + { + "cmdId": "[uuid]", + "range": [ + 611, + 632, + 0 + ], + "command": { + "type": "solid3d_get_extrusion_face_info", + "object_id": "[uuid]", + "edge_id": "[uuid]" + } + }, + { + "cmdId": "[uuid]", + "range": [ + 611, + 632, + 0 + ], + "command": { + "type": "solid3d_get_opposite_edge", + "object_id": "[uuid]", + "edge_id": "[uuid]", + "face_id": "[uuid]" + } + }, + { + "cmdId": "[uuid]", + "range": [ + 611, + 632, + 0 + ], + "command": { + "type": "solid3d_get_next_adjacent_edge", + "object_id": "[uuid]", + "edge_id": "[uuid]", + "face_id": "[uuid]" + } + }, + { + "cmdId": "[uuid]", + "range": [ + 611, + 632, + 0 + ], + "command": { + "type": "enable_sketch_mode", + "entity_id": "[uuid]", + "ortho": false, + "animated": false, + "adjust_camera": false, + "planar_normal": null + } + }, + { + "cmdId": "[uuid]", + "range": [ + 611, + 632, + 0 + ], + "command": { + "type": "extrude", + "target": "[uuid]", + "distance": -40.0, + "faces": null + } + }, + { + "cmdId": "[uuid]", + "range": [ + 611, + 632, + 0 + ], + "command": { + "type": "sketch_mode_disable" + } + }, + { + "cmdId": "[uuid]", + "range": [ + 611, + 632, + 0 + ], + "command": { + "type": "object_bring_to_front", + "object_id": "[uuid]" + } + }, + { + "cmdId": "[uuid]", + "range": [ + 611, + 632, + 0 + ], + "command": { + "type": "solid3d_get_extrusion_face_info", + "object_id": "[uuid]", + "edge_id": "[uuid]" + } + }, + { + "cmdId": "[uuid]", + "range": [ + 611, + 632, + 0 + ], + "command": { + "type": "solid3d_get_opposite_edge", + "object_id": "[uuid]", + "edge_id": "[uuid]", + "face_id": "[uuid]" + } + }, + { + "cmdId": "[uuid]", + "range": [ + 611, + 632, + 0 + ], + "command": { + "type": "solid3d_get_next_adjacent_edge", + "object_id": "[uuid]", + "edge_id": "[uuid]", + "face_id": "[uuid]" + } + }, + { + "cmdId": "[uuid]", + "range": [ + 611, + 632, + 0 + ], + "command": { + "type": "enable_sketch_mode", + "entity_id": "[uuid]", + "ortho": false, + "animated": false, + "adjust_camera": false, + "planar_normal": null + } + }, + { + "cmdId": "[uuid]", + "range": [ + 611, + 632, + 0 + ], + "command": { + "type": "extrude", + "target": "[uuid]", + "distance": -40.0, + "faces": null + } + }, + { + "cmdId": "[uuid]", + "range": [ + 611, + 632, + 0 + ], + "command": { + "type": "sketch_mode_disable" + } + }, + { + "cmdId": "[uuid]", + "range": [ + 611, + 632, + 0 + ], + "command": { + "type": "object_bring_to_front", + "object_id": "[uuid]" + } + }, + { + "cmdId": "[uuid]", + "range": [ + 611, + 632, + 0 + ], + "command": { + "type": "solid3d_get_extrusion_face_info", + "object_id": "[uuid]", + "edge_id": "[uuid]" + } + }, + { + "cmdId": "[uuid]", + "range": [ + 611, + 632, + 0 + ], + "command": { + "type": "solid3d_get_opposite_edge", + "object_id": "[uuid]", + "edge_id": "[uuid]", + "face_id": "[uuid]" + } + }, + { + "cmdId": "[uuid]", + "range": [ + 611, + 632, + 0 + ], + "command": { + "type": "solid3d_get_next_adjacent_edge", + "object_id": "[uuid]", + "edge_id": "[uuid]", + "face_id": "[uuid]" + } + }, + { + "cmdId": "[uuid]", + "range": [ + 611, + 632, + 0 + ], + "command": { + "type": "enable_sketch_mode", + "entity_id": "[uuid]", + "ortho": false, + "animated": false, + "adjust_camera": false, + "planar_normal": null + } + }, + { + "cmdId": "[uuid]", + "range": [ + 611, + 632, + 0 + ], + "command": { + "type": "extrude", + "target": "[uuid]", + "distance": -40.0, + "faces": null + } + }, + { + "cmdId": "[uuid]", + "range": [ + 611, + 632, + 0 + ], + "command": { + "type": "sketch_mode_disable" + } + }, + { + "cmdId": "[uuid]", + "range": [ + 611, + 632, + 0 + ], + "command": { + "type": "object_bring_to_front", + "object_id": "[uuid]" + } + }, + { + "cmdId": "[uuid]", + "range": [ + 611, + 632, + 0 + ], + "command": { + "type": "solid3d_get_extrusion_face_info", + "object_id": "[uuid]", + "edge_id": "[uuid]" + } + }, + { + "cmdId": "[uuid]", + "range": [ + 611, + 632, + 0 + ], + "command": { + "type": "solid3d_get_opposite_edge", + "object_id": "[uuid]", + "edge_id": "[uuid]", + "face_id": "[uuid]" + } + }, + { + "cmdId": "[uuid]", + "range": [ + 611, + 632, + 0 + ], + "command": { + "type": "solid3d_get_next_adjacent_edge", + "object_id": "[uuid]", + "edge_id": "[uuid]", + "face_id": "[uuid]" + } + }, + { + "cmdId": "[uuid]", + "range": [ + 611, + 632, + 0 + ], + "command": { + "type": "enable_sketch_mode", + "entity_id": "[uuid]", + "ortho": false, + "animated": false, + "adjust_camera": false, + "planar_normal": null + } + }, + { + "cmdId": "[uuid]", + "range": [ + 611, + 632, + 0 + ], + "command": { + "type": "extrude", + "target": "[uuid]", + "distance": -40.0, + "faces": null + } + }, + { + "cmdId": "[uuid]", + "range": [ + 611, + 632, + 0 + ], + "command": { + "type": "sketch_mode_disable" + } + }, + { + "cmdId": "[uuid]", + "range": [ + 611, + 632, + 0 + ], + "command": { + "type": "object_bring_to_front", + "object_id": "[uuid]" + } + }, + { + "cmdId": "[uuid]", + "range": [ + 611, + 632, + 0 + ], + "command": { + "type": "solid3d_get_extrusion_face_info", + "object_id": "[uuid]", + "edge_id": "[uuid]" + } + }, + { + "cmdId": "[uuid]", + "range": [ + 611, + 632, + 0 + ], + "command": { + "type": "solid3d_get_opposite_edge", + "object_id": "[uuid]", + "edge_id": "[uuid]", + "face_id": "[uuid]" + } + }, + { + "cmdId": "[uuid]", + "range": [ + 611, + 632, + 0 + ], + "command": { + "type": "solid3d_get_next_adjacent_edge", + "object_id": "[uuid]", + "edge_id": "[uuid]", + "face_id": "[uuid]" + } + }, + { + "cmdId": "[uuid]", + "range": [ + 611, + 632, + 0 + ], + "command": { + "type": "enable_sketch_mode", + "entity_id": "[uuid]", + "ortho": false, + "animated": false, + "adjust_camera": false, + "planar_normal": null + } + }, + { + "cmdId": "[uuid]", + "range": [ + 611, + 632, + 0 + ], + "command": { + "type": "extrude", + "target": "[uuid]", + "distance": -40.0, + "faces": null + } + }, + { + "cmdId": "[uuid]", + "range": [ + 611, + 632, + 0 + ], + "command": { + "type": "sketch_mode_disable" + } + }, + { + "cmdId": "[uuid]", + "range": [ + 611, + 632, + 0 + ], + "command": { + "type": "object_bring_to_front", + "object_id": "[uuid]" + } + }, + { + "cmdId": "[uuid]", + "range": [ + 611, + 632, + 0 + ], + "command": { + "type": "solid3d_get_extrusion_face_info", + "object_id": "[uuid]", + "edge_id": "[uuid]" + } + }, + { + "cmdId": "[uuid]", + "range": [ + 611, + 632, + 0 + ], + "command": { + "type": "solid3d_get_opposite_edge", + "object_id": "[uuid]", + "edge_id": "[uuid]", + "face_id": "[uuid]" + } + }, + { + "cmdId": "[uuid]", + "range": [ + 611, + 632, + 0 + ], + "command": { + "type": "solid3d_get_next_adjacent_edge", + "object_id": "[uuid]", + "edge_id": "[uuid]", + "face_id": "[uuid]" + } + }, + { + "cmdId": "[uuid]", + "range": [ + 611, + 632, + 0 + ], + "command": { + "type": "enable_sketch_mode", + "entity_id": "[uuid]", + "ortho": false, + "animated": false, + "adjust_camera": false, + "planar_normal": null + } + }, + { + "cmdId": "[uuid]", + "range": [ + 611, + 632, + 0 + ], + "command": { + "type": "extrude", + "target": "[uuid]", + "distance": -40.0, + "faces": null + } + }, + { + "cmdId": "[uuid]", + "range": [ + 611, + 632, + 0 + ], + "command": { + "type": "sketch_mode_disable" + } + }, + { + "cmdId": "[uuid]", + "range": [ + 611, + 632, + 0 + ], + "command": { + "type": "object_bring_to_front", + "object_id": "[uuid]" + } + }, + { + "cmdId": "[uuid]", + "range": [ + 611, + 632, + 0 + ], + "command": { + "type": "solid3d_get_extrusion_face_info", + "object_id": "[uuid]", + "edge_id": "[uuid]" + } + }, + { + "cmdId": "[uuid]", + "range": [ + 611, + 632, + 0 + ], + "command": { + "type": "solid3d_get_opposite_edge", + "object_id": "[uuid]", + "edge_id": "[uuid]", + "face_id": "[uuid]" + } + }, + { + "cmdId": "[uuid]", + "range": [ + 611, + 632, + 0 + ], + "command": { + "type": "solid3d_get_next_adjacent_edge", + "object_id": "[uuid]", + "edge_id": "[uuid]", + "face_id": "[uuid]" + } + }, + { + "cmdId": "[uuid]", + "range": [ + 611, + 632, + 0 + ], + "command": { + "type": "enable_sketch_mode", + "entity_id": "[uuid]", + "ortho": false, + "animated": false, + "adjust_camera": false, + "planar_normal": null + } + }, + { + "cmdId": "[uuid]", + "range": [ + 611, + 632, + 0 + ], + "command": { + "type": "extrude", + "target": "[uuid]", + "distance": -40.0, + "faces": null + } + }, + { + "cmdId": "[uuid]", + "range": [ + 611, + 632, + 0 + ], + "command": { + "type": "sketch_mode_disable" + } + }, + { + "cmdId": "[uuid]", + "range": [ + 611, + 632, + 0 + ], + "command": { + "type": "object_bring_to_front", + "object_id": "[uuid]" + } + }, + { + "cmdId": "[uuid]", + "range": [ + 611, + 632, + 0 + ], + "command": { + "type": "solid3d_get_extrusion_face_info", + "object_id": "[uuid]", + "edge_id": "[uuid]" + } + }, + { + "cmdId": "[uuid]", + "range": [ + 611, + 632, + 0 + ], + "command": { + "type": "solid3d_get_opposite_edge", + "object_id": "[uuid]", + "edge_id": "[uuid]", + "face_id": "[uuid]" + } + }, + { + "cmdId": "[uuid]", + "range": [ + 611, + 632, + 0 + ], + "command": { + "type": "solid3d_get_next_adjacent_edge", + "object_id": "[uuid]", + "edge_id": "[uuid]", + "face_id": "[uuid]" + } + }, + { + "cmdId": "[uuid]", + "range": [ + 611, + 632, + 0 + ], + "command": { + "type": "enable_sketch_mode", + "entity_id": "[uuid]", + "ortho": false, + "animated": false, + "adjust_camera": false, + "planar_normal": null + } + }, + { + "cmdId": "[uuid]", + "range": [ + 611, + 632, + 0 + ], + "command": { + "type": "extrude", + "target": "[uuid]", + "distance": -40.0, + "faces": null + } + }, + { + "cmdId": "[uuid]", + "range": [ + 611, + 632, + 0 + ], + "command": { + "type": "sketch_mode_disable" + } + }, + { + "cmdId": "[uuid]", + "range": [ + 611, + 632, + 0 + ], + "command": { + "type": "object_bring_to_front", + "object_id": "[uuid]" + } + }, + { + "cmdId": "[uuid]", + "range": [ + 611, + 632, + 0 + ], + "command": { + "type": "solid3d_get_extrusion_face_info", + "object_id": "[uuid]", + "edge_id": "[uuid]" + } + }, + { + "cmdId": "[uuid]", + "range": [ + 611, + 632, + 0 + ], + "command": { + "type": "solid3d_get_opposite_edge", + "object_id": "[uuid]", + "edge_id": "[uuid]", + "face_id": "[uuid]" + } + }, + { + "cmdId": "[uuid]", + "range": [ + 611, + 632, + 0 + ], + "command": { + "type": "solid3d_get_next_adjacent_edge", + "object_id": "[uuid]", + "edge_id": "[uuid]", + "face_id": "[uuid]" + } + }, + { + "cmdId": "[uuid]", + "range": [ + 611, + 632, + 0 + ], + "command": { + "type": "enable_sketch_mode", + "entity_id": "[uuid]", + "ortho": false, + "animated": false, + "adjust_camera": false, + "planar_normal": null + } + }, + { + "cmdId": "[uuid]", + "range": [ + 611, + 632, + 0 + ], + "command": { + "type": "extrude", + "target": "[uuid]", + "distance": -40.0, + "faces": null + } + }, + { + "cmdId": "[uuid]", + "range": [ + 611, + 632, + 0 + ], + "command": { + "type": "sketch_mode_disable" + } + }, + { + "cmdId": "[uuid]", + "range": [ + 611, + 632, + 0 + ], + "command": { + "type": "object_bring_to_front", + "object_id": "[uuid]" + } + }, + { + "cmdId": "[uuid]", + "range": [ + 611, + 632, + 0 + ], + "command": { + "type": "solid3d_get_extrusion_face_info", + "object_id": "[uuid]", + "edge_id": "[uuid]" + } + }, + { + "cmdId": "[uuid]", + "range": [ + 611, + 632, + 0 + ], + "command": { + "type": "solid3d_get_opposite_edge", + "object_id": "[uuid]", + "edge_id": "[uuid]", + "face_id": "[uuid]" + } + }, + { + "cmdId": "[uuid]", + "range": [ + 611, + 632, + 0 + ], + "command": { + "type": "solid3d_get_next_adjacent_edge", + "object_id": "[uuid]", + "edge_id": "[uuid]", + "face_id": "[uuid]" + } + }, + { + "cmdId": "[uuid]", + "range": [ + 611, + 632, + 0 + ], + "command": { + "type": "enable_sketch_mode", + "entity_id": "[uuid]", + "ortho": false, + "animated": false, + "adjust_camera": false, + "planar_normal": null + } + }, + { + "cmdId": "[uuid]", + "range": [ + 611, + 632, + 0 + ], + "command": { + "type": "extrude", + "target": "[uuid]", + "distance": -40.0, + "faces": null + } + }, + { + "cmdId": "[uuid]", + "range": [ + 611, + 632, + 0 + ], + "command": { + "type": "sketch_mode_disable" + } + }, + { + "cmdId": "[uuid]", + "range": [ + 611, + 632, + 0 + ], + "command": { + "type": "object_bring_to_front", + "object_id": "[uuid]" + } + }, + { + "cmdId": "[uuid]", + "range": [ + 611, + 632, + 0 + ], + "command": { + "type": "solid3d_get_extrusion_face_info", + "object_id": "[uuid]", + "edge_id": "[uuid]" + } + }, + { + "cmdId": "[uuid]", + "range": [ + 611, + 632, + 0 + ], + "command": { + "type": "solid3d_get_opposite_edge", + "object_id": "[uuid]", + "edge_id": "[uuid]", + "face_id": "[uuid]" + } + }, + { + "cmdId": "[uuid]", + "range": [ + 611, + 632, + 0 + ], + "command": { + "type": "solid3d_get_next_adjacent_edge", + "object_id": "[uuid]", + "edge_id": "[uuid]", + "face_id": "[uuid]" + } + }, + { + "cmdId": "[uuid]", + "range": [ + 611, + 632, + 0 + ], + "command": { + "type": "enable_sketch_mode", + "entity_id": "[uuid]", + "ortho": false, + "animated": false, + "adjust_camera": false, + "planar_normal": null + } + }, + { + "cmdId": "[uuid]", + "range": [ + 611, + 632, + 0 + ], + "command": { + "type": "extrude", + "target": "[uuid]", + "distance": -40.0, + "faces": null + } + }, + { + "cmdId": "[uuid]", + "range": [ + 611, + 632, + 0 + ], + "command": { + "type": "sketch_mode_disable" + } + }, + { + "cmdId": "[uuid]", + "range": [ + 611, + 632, + 0 + ], + "command": { + "type": "object_bring_to_front", + "object_id": "[uuid]" + } + }, + { + "cmdId": "[uuid]", + "range": [ + 611, + 632, + 0 + ], + "command": { + "type": "solid3d_get_extrusion_face_info", + "object_id": "[uuid]", + "edge_id": "[uuid]" + } + }, + { + "cmdId": "[uuid]", + "range": [ + 611, + 632, + 0 + ], + "command": { + "type": "solid3d_get_opposite_edge", + "object_id": "[uuid]", + "edge_id": "[uuid]", + "face_id": "[uuid]" + } + }, + { + "cmdId": "[uuid]", + "range": [ + 611, + 632, + 0 + ], + "command": { + "type": "solid3d_get_next_adjacent_edge", + "object_id": "[uuid]", + "edge_id": "[uuid]", + "face_id": "[uuid]" + } + }, + { + "cmdId": "[uuid]", + "range": [ + 611, + 632, + 0 + ], + "command": { + "type": "enable_sketch_mode", + "entity_id": "[uuid]", + "ortho": false, + "animated": false, + "adjust_camera": false, + "planar_normal": null + } + }, + { + "cmdId": "[uuid]", + "range": [ + 611, + 632, + 0 + ], + "command": { + "type": "extrude", + "target": "[uuid]", + "distance": -40.0, + "faces": null + } + }, + { + "cmdId": "[uuid]", + "range": [ + 611, + 632, + 0 + ], + "command": { + "type": "sketch_mode_disable" + } + }, + { + "cmdId": "[uuid]", + "range": [ + 611, + 632, + 0 + ], + "command": { + "type": "object_bring_to_front", + "object_id": "[uuid]" + } + }, + { + "cmdId": "[uuid]", + "range": [ + 611, + 632, + 0 + ], + "command": { + "type": "solid3d_get_extrusion_face_info", + "object_id": "[uuid]", + "edge_id": "[uuid]" + } + }, + { + "cmdId": "[uuid]", + "range": [ + 611, + 632, + 0 + ], + "command": { + "type": "solid3d_get_opposite_edge", + "object_id": "[uuid]", + "edge_id": "[uuid]", + "face_id": "[uuid]" + } + }, + { + "cmdId": "[uuid]", + "range": [ + 611, + 632, + 0 + ], + "command": { + "type": "solid3d_get_next_adjacent_edge", + "object_id": "[uuid]", + "edge_id": "[uuid]", + "face_id": "[uuid]" + } + }, + { + "cmdId": "[uuid]", + "range": [ + 611, + 632, + 0 + ], + "command": { + "type": "enable_sketch_mode", + "entity_id": "[uuid]", + "ortho": false, + "animated": false, + "adjust_camera": false, + "planar_normal": null + } + }, + { + "cmdId": "[uuid]", + "range": [ + 611, + 632, + 0 + ], + "command": { + "type": "extrude", + "target": "[uuid]", + "distance": -40.0, + "faces": null + } + }, + { + "cmdId": "[uuid]", + "range": [ + 611, + 632, + 0 + ], + "command": { + "type": "sketch_mode_disable" + } + }, + { + "cmdId": "[uuid]", + "range": [ + 611, + 632, + 0 + ], + "command": { + "type": "object_bring_to_front", + "object_id": "[uuid]" + } + }, + { + "cmdId": "[uuid]", + "range": [ + 611, + 632, + 0 + ], + "command": { + "type": "solid3d_get_extrusion_face_info", + "object_id": "[uuid]", + "edge_id": "[uuid]" + } + }, + { + "cmdId": "[uuid]", + "range": [ + 611, + 632, + 0 + ], + "command": { + "type": "solid3d_get_opposite_edge", + "object_id": "[uuid]", + "edge_id": "[uuid]", + "face_id": "[uuid]" + } + }, + { + "cmdId": "[uuid]", + "range": [ + 611, + 632, + 0 + ], + "command": { + "type": "solid3d_get_next_adjacent_edge", + "object_id": "[uuid]", + "edge_id": "[uuid]", + "face_id": "[uuid]" + } + }, + { + "cmdId": "[uuid]", + "range": [ + 611, + 632, + 0 + ], + "command": { + "type": "enable_sketch_mode", + "entity_id": "[uuid]", + "ortho": false, + "animated": false, + "adjust_camera": false, + "planar_normal": null + } + }, + { + "cmdId": "[uuid]", + "range": [ + 611, + 632, + 0 + ], + "command": { + "type": "extrude", + "target": "[uuid]", + "distance": -40.0, + "faces": null + } + }, + { + "cmdId": "[uuid]", + "range": [ + 611, + 632, + 0 + ], + "command": { + "type": "sketch_mode_disable" + } + }, + { + "cmdId": "[uuid]", + "range": [ + 611, + 632, + 0 + ], + "command": { + "type": "object_bring_to_front", + "object_id": "[uuid]" + } + }, + { + "cmdId": "[uuid]", + "range": [ + 611, + 632, + 0 + ], + "command": { + "type": "solid3d_get_extrusion_face_info", + "object_id": "[uuid]", + "edge_id": "[uuid]" + } + }, + { + "cmdId": "[uuid]", + "range": [ + 611, + 632, + 0 + ], + "command": { + "type": "solid3d_get_opposite_edge", + "object_id": "[uuid]", + "edge_id": "[uuid]", + "face_id": "[uuid]" + } + }, + { + "cmdId": "[uuid]", + "range": [ + 611, + 632, + 0 + ], + "command": { + "type": "solid3d_get_next_adjacent_edge", + "object_id": "[uuid]", + "edge_id": "[uuid]", + "face_id": "[uuid]" + } + }, + { + "cmdId": "[uuid]", + "range": [ + 611, + 632, + 0 + ], + "command": { + "type": "enable_sketch_mode", + "entity_id": "[uuid]", + "ortho": false, + "animated": false, + "adjust_camera": false, + "planar_normal": null + } + }, + { + "cmdId": "[uuid]", + "range": [ + 611, + 632, + 0 + ], + "command": { + "type": "extrude", + "target": "[uuid]", + "distance": -40.0, + "faces": null + } + }, + { + "cmdId": "[uuid]", + "range": [ + 611, + 632, + 0 + ], + "command": { + "type": "sketch_mode_disable" + } + }, + { + "cmdId": "[uuid]", + "range": [ + 611, + 632, + 0 + ], + "command": { + "type": "object_bring_to_front", + "object_id": "[uuid]" + } + }, + { + "cmdId": "[uuid]", + "range": [ + 611, + 632, + 0 + ], + "command": { + "type": "solid3d_get_extrusion_face_info", + "object_id": "[uuid]", + "edge_id": "[uuid]" + } + }, + { + "cmdId": "[uuid]", + "range": [ + 611, + 632, + 0 + ], + "command": { + "type": "solid3d_get_opposite_edge", + "object_id": "[uuid]", + "edge_id": "[uuid]", + "face_id": "[uuid]" + } + }, + { + "cmdId": "[uuid]", + "range": [ + 611, + 632, + 0 + ], + "command": { + "type": "solid3d_get_next_adjacent_edge", + "object_id": "[uuid]", + "edge_id": "[uuid]", + "face_id": "[uuid]" + } + }, + { + "cmdId": "[uuid]", + "range": [ + 611, + 632, + 0 + ], + "command": { + "type": "enable_sketch_mode", + "entity_id": "[uuid]", + "ortho": false, + "animated": false, + "adjust_camera": false, + "planar_normal": null + } + }, + { + "cmdId": "[uuid]", + "range": [ + 611, + 632, + 0 + ], + "command": { + "type": "extrude", + "target": "[uuid]", + "distance": -40.0, + "faces": null + } + }, + { + "cmdId": "[uuid]", + "range": [ + 611, + 632, + 0 + ], + "command": { + "type": "sketch_mode_disable" + } + }, + { + "cmdId": "[uuid]", + "range": [ + 611, + 632, + 0 + ], + "command": { + "type": "object_bring_to_front", + "object_id": "[uuid]" + } + }, + { + "cmdId": "[uuid]", + "range": [ + 611, + 632, + 0 + ], + "command": { + "type": "solid3d_get_extrusion_face_info", + "object_id": "[uuid]", + "edge_id": "[uuid]" + } + }, + { + "cmdId": "[uuid]", + "range": [ + 611, + 632, + 0 + ], + "command": { + "type": "solid3d_get_opposite_edge", + "object_id": "[uuid]", + "edge_id": "[uuid]", + "face_id": "[uuid]" + } + }, + { + "cmdId": "[uuid]", + "range": [ + 611, + 632, + 0 + ], + "command": { + "type": "solid3d_get_next_adjacent_edge", + "object_id": "[uuid]", + "edge_id": "[uuid]", + "face_id": "[uuid]" + } + }, + { + "cmdId": "[uuid]", + "range": [ + 611, + 632, + 0 + ], + "command": { + "type": "enable_sketch_mode", + "entity_id": "[uuid]", + "ortho": false, + "animated": false, + "adjust_camera": false, + "planar_normal": null + } + }, + { + "cmdId": "[uuid]", + "range": [ + 611, + 632, + 0 + ], + "command": { + "type": "extrude", + "target": "[uuid]", + "distance": -40.0, + "faces": null + } + }, + { + "cmdId": "[uuid]", + "range": [ + 611, + 632, + 0 + ], + "command": { + "type": "sketch_mode_disable" + } + }, + { + "cmdId": "[uuid]", + "range": [ + 611, + 632, + 0 + ], + "command": { + "type": "object_bring_to_front", + "object_id": "[uuid]" + } + }, + { + "cmdId": "[uuid]", + "range": [ + 611, + 632, + 0 + ], + "command": { + "type": "solid3d_get_extrusion_face_info", + "object_id": "[uuid]", + "edge_id": "[uuid]" + } + }, + { + "cmdId": "[uuid]", + "range": [ + 611, + 632, + 0 + ], + "command": { + "type": "solid3d_get_opposite_edge", + "object_id": "[uuid]", + "edge_id": "[uuid]", + "face_id": "[uuid]" + } + }, + { + "cmdId": "[uuid]", + "range": [ + 611, + 632, + 0 + ], + "command": { + "type": "solid3d_get_next_adjacent_edge", + "object_id": "[uuid]", + "edge_id": "[uuid]", + "face_id": "[uuid]" + } + }, + { + "cmdId": "[uuid]", + "range": [ + 611, + 632, + 0 + ], + "command": { + "type": "enable_sketch_mode", + "entity_id": "[uuid]", + "ortho": false, + "animated": false, + "adjust_camera": false, + "planar_normal": null + } + }, + { + "cmdId": "[uuid]", + "range": [ + 611, + 632, + 0 + ], + "command": { + "type": "extrude", + "target": "[uuid]", + "distance": -40.0, + "faces": null + } + }, + { + "cmdId": "[uuid]", + "range": [ + 611, + 632, + 0 + ], + "command": { + "type": "sketch_mode_disable" + } + }, + { + "cmdId": "[uuid]", + "range": [ + 611, + 632, + 0 + ], + "command": { + "type": "object_bring_to_front", + "object_id": "[uuid]" + } + }, + { + "cmdId": "[uuid]", + "range": [ + 611, + 632, + 0 + ], + "command": { + "type": "solid3d_get_extrusion_face_info", + "object_id": "[uuid]", + "edge_id": "[uuid]" + } + }, + { + "cmdId": "[uuid]", + "range": [ + 611, + 632, + 0 + ], + "command": { + "type": "solid3d_get_opposite_edge", + "object_id": "[uuid]", + "edge_id": "[uuid]", + "face_id": "[uuid]" + } + }, + { + "cmdId": "[uuid]", + "range": [ + 611, + 632, + 0 + ], + "command": { + "type": "solid3d_get_next_adjacent_edge", + "object_id": "[uuid]", + "edge_id": "[uuid]", + "face_id": "[uuid]" + } + }, + { + "cmdId": "[uuid]", + "range": [ + 611, + 632, + 0 + ], + "command": { + "type": "enable_sketch_mode", + "entity_id": "[uuid]", + "ortho": false, + "animated": false, + "adjust_camera": false, + "planar_normal": null + } + }, + { + "cmdId": "[uuid]", + "range": [ + 611, + 632, + 0 + ], + "command": { + "type": "extrude", + "target": "[uuid]", + "distance": -40.0, + "faces": null + } + }, + { + "cmdId": "[uuid]", + "range": [ + 611, + 632, + 0 + ], + "command": { + "type": "sketch_mode_disable" + } + }, + { + "cmdId": "[uuid]", + "range": [ + 611, + 632, + 0 + ], + "command": { + "type": "object_bring_to_front", + "object_id": "[uuid]" + } + }, + { + "cmdId": "[uuid]", + "range": [ + 611, + 632, + 0 + ], + "command": { + "type": "solid3d_get_extrusion_face_info", + "object_id": "[uuid]", + "edge_id": "[uuid]" + } + }, + { + "cmdId": "[uuid]", + "range": [ + 611, + 632, + 0 + ], + "command": { + "type": "solid3d_get_opposite_edge", + "object_id": "[uuid]", + "edge_id": "[uuid]", + "face_id": "[uuid]" + } + }, + { + "cmdId": "[uuid]", + "range": [ + 611, + 632, + 0 + ], + "command": { + "type": "solid3d_get_next_adjacent_edge", + "object_id": "[uuid]", + "edge_id": "[uuid]", + "face_id": "[uuid]" + } + }, + { + "cmdId": "[uuid]", + "range": [ + 611, + 632, + 0 + ], + "command": { + "type": "enable_sketch_mode", + "entity_id": "[uuid]", + "ortho": false, + "animated": false, + "adjust_camera": false, + "planar_normal": null + } + }, + { + "cmdId": "[uuid]", + "range": [ + 611, + 632, + 0 + ], + "command": { + "type": "extrude", + "target": "[uuid]", + "distance": -40.0, + "faces": null + } + }, + { + "cmdId": "[uuid]", + "range": [ + 611, + 632, + 0 + ], + "command": { + "type": "sketch_mode_disable" + } + }, + { + "cmdId": "[uuid]", + "range": [ + 611, + 632, + 0 + ], + "command": { + "type": "object_bring_to_front", + "object_id": "[uuid]" + } + }, + { + "cmdId": "[uuid]", + "range": [ + 611, + 632, + 0 + ], + "command": { + "type": "solid3d_get_extrusion_face_info", + "object_id": "[uuid]", + "edge_id": "[uuid]" + } + }, + { + "cmdId": "[uuid]", + "range": [ + 611, + 632, + 0 + ], + "command": { + "type": "solid3d_get_opposite_edge", + "object_id": "[uuid]", + "edge_id": "[uuid]", + "face_id": "[uuid]" + } + }, + { + "cmdId": "[uuid]", + "range": [ + 611, + 632, + 0 + ], + "command": { + "type": "solid3d_get_next_adjacent_edge", + "object_id": "[uuid]", + "edge_id": "[uuid]", + "face_id": "[uuid]" + } + }, + { + "cmdId": "[uuid]", + "range": [ + 611, + 632, + 0 + ], + "command": { + "type": "enable_sketch_mode", + "entity_id": "[uuid]", + "ortho": false, + "animated": false, + "adjust_camera": false, + "planar_normal": null + } + }, + { + "cmdId": "[uuid]", + "range": [ + 611, + 632, + 0 + ], + "command": { + "type": "extrude", + "target": "[uuid]", + "distance": -40.0, + "faces": null + } + }, + { + "cmdId": "[uuid]", + "range": [ + 611, + 632, + 0 + ], + "command": { + "type": "sketch_mode_disable" + } + }, + { + "cmdId": "[uuid]", + "range": [ + 611, + 632, + 0 + ], + "command": { + "type": "object_bring_to_front", + "object_id": "[uuid]" + } + }, + { + "cmdId": "[uuid]", + "range": [ + 611, + 632, + 0 + ], + "command": { + "type": "solid3d_get_extrusion_face_info", + "object_id": "[uuid]", + "edge_id": "[uuid]" + } + }, + { + "cmdId": "[uuid]", + "range": [ + 611, + 632, + 0 + ], + "command": { + "type": "solid3d_get_opposite_edge", + "object_id": "[uuid]", + "edge_id": "[uuid]", + "face_id": "[uuid]" + } + }, + { + "cmdId": "[uuid]", + "range": [ + 611, + 632, + 0 + ], + "command": { + "type": "solid3d_get_next_adjacent_edge", + "object_id": "[uuid]", + "edge_id": "[uuid]", + "face_id": "[uuid]" + } + }, + { + "cmdId": "[uuid]", + "range": [ + 611, + 632, + 0 + ], + "command": { + "type": "enable_sketch_mode", + "entity_id": "[uuid]", + "ortho": false, + "animated": false, + "adjust_camera": false, + "planar_normal": null + } + }, + { + "cmdId": "[uuid]", + "range": [ + 611, + 632, + 0 + ], + "command": { + "type": "extrude", + "target": "[uuid]", + "distance": -40.0, + "faces": null + } + }, + { + "cmdId": "[uuid]", + "range": [ + 611, + 632, + 0 + ], + "command": { + "type": "sketch_mode_disable" + } + }, + { + "cmdId": "[uuid]", + "range": [ + 611, + 632, + 0 + ], + "command": { + "type": "object_bring_to_front", + "object_id": "[uuid]" + } + }, + { + "cmdId": "[uuid]", + "range": [ + 611, + 632, + 0 + ], + "command": { + "type": "solid3d_get_extrusion_face_info", + "object_id": "[uuid]", + "edge_id": "[uuid]" + } + }, + { + "cmdId": "[uuid]", + "range": [ + 611, + 632, + 0 + ], + "command": { + "type": "solid3d_get_opposite_edge", + "object_id": "[uuid]", + "edge_id": "[uuid]", + "face_id": "[uuid]" + } + }, + { + "cmdId": "[uuid]", + "range": [ + 611, + 632, + 0 + ], + "command": { + "type": "solid3d_get_next_adjacent_edge", + "object_id": "[uuid]", + "edge_id": "[uuid]", + "face_id": "[uuid]" + } + }, + { + "cmdId": "[uuid]", + "range": [ + 611, + 632, + 0 + ], + "command": { + "type": "enable_sketch_mode", + "entity_id": "[uuid]", + "ortho": false, + "animated": false, + "adjust_camera": false, + "planar_normal": null + } + }, + { + "cmdId": "[uuid]", + "range": [ + 611, + 632, + 0 + ], + "command": { + "type": "extrude", + "target": "[uuid]", + "distance": -40.0, + "faces": null + } + }, + { + "cmdId": "[uuid]", + "range": [ + 611, + 632, + 0 + ], + "command": { + "type": "sketch_mode_disable" + } + }, + { + "cmdId": "[uuid]", + "range": [ + 611, + 632, + 0 + ], + "command": { + "type": "object_bring_to_front", + "object_id": "[uuid]" + } + }, + { + "cmdId": "[uuid]", + "range": [ + 611, + 632, + 0 + ], + "command": { + "type": "solid3d_get_extrusion_face_info", + "object_id": "[uuid]", + "edge_id": "[uuid]" + } + }, + { + "cmdId": "[uuid]", + "range": [ + 611, + 632, + 0 + ], + "command": { + "type": "solid3d_get_opposite_edge", + "object_id": "[uuid]", + "edge_id": "[uuid]", + "face_id": "[uuid]" + } + }, + { + "cmdId": "[uuid]", + "range": [ + 611, + 632, + 0 + ], + "command": { + "type": "solid3d_get_next_adjacent_edge", + "object_id": "[uuid]", + "edge_id": "[uuid]", + "face_id": "[uuid]" + } + }, + { + "cmdId": "[uuid]", + "range": [ + 611, + 632, + 0 + ], + "command": { + "type": "enable_sketch_mode", + "entity_id": "[uuid]", + "ortho": false, + "animated": false, + "adjust_camera": false, + "planar_normal": null + } + }, + { + "cmdId": "[uuid]", + "range": [ + 611, + 632, + 0 + ], + "command": { + "type": "extrude", + "target": "[uuid]", + "distance": -40.0, + "faces": null + } + }, + { + "cmdId": "[uuid]", + "range": [ + 611, + 632, + 0 + ], + "command": { + "type": "sketch_mode_disable" + } + }, + { + "cmdId": "[uuid]", + "range": [ + 611, + 632, + 0 + ], + "command": { + "type": "object_bring_to_front", + "object_id": "[uuid]" + } + }, + { + "cmdId": "[uuid]", + "range": [ + 611, + 632, + 0 + ], + "command": { + "type": "solid3d_get_extrusion_face_info", + "object_id": "[uuid]", + "edge_id": "[uuid]" + } + }, + { + "cmdId": "[uuid]", + "range": [ + 611, + 632, + 0 + ], + "command": { + "type": "solid3d_get_opposite_edge", + "object_id": "[uuid]", + "edge_id": "[uuid]", + "face_id": "[uuid]" + } + }, + { + "cmdId": "[uuid]", + "range": [ + 611, + 632, + 0 + ], + "command": { + "type": "solid3d_get_next_adjacent_edge", + "object_id": "[uuid]", + "edge_id": "[uuid]", + "face_id": "[uuid]" + } + }, + { + "cmdId": "[uuid]", + "range": [ + 611, + 632, + 0 + ], + "command": { + "type": "enable_sketch_mode", + "entity_id": "[uuid]", + "ortho": false, + "animated": false, + "adjust_camera": false, + "planar_normal": null + } + }, + { + "cmdId": "[uuid]", + "range": [ + 611, + 632, + 0 + ], + "command": { + "type": "extrude", + "target": "[uuid]", + "distance": -40.0, + "faces": null + } + }, + { + "cmdId": "[uuid]", + "range": [ + 611, + 632, + 0 + ], + "command": { + "type": "sketch_mode_disable" + } + }, + { + "cmdId": "[uuid]", + "range": [ + 611, + 632, + 0 + ], + "command": { + "type": "object_bring_to_front", + "object_id": "[uuid]" + } + }, + { + "cmdId": "[uuid]", + "range": [ + 611, + 632, + 0 + ], + "command": { + "type": "solid3d_get_extrusion_face_info", + "object_id": "[uuid]", + "edge_id": "[uuid]" + } + }, + { + "cmdId": "[uuid]", + "range": [ + 611, + 632, + 0 + ], + "command": { + "type": "solid3d_get_opposite_edge", + "object_id": "[uuid]", + "edge_id": "[uuid]", + "face_id": "[uuid]" + } + }, + { + "cmdId": "[uuid]", + "range": [ + 611, + 632, + 0 + ], + "command": { + "type": "solid3d_get_next_adjacent_edge", + "object_id": "[uuid]", + "edge_id": "[uuid]", + "face_id": "[uuid]" + } + }, + { + "cmdId": "[uuid]", + "range": [ + 611, + 632, + 0 + ], + "command": { + "type": "enable_sketch_mode", + "entity_id": "[uuid]", + "ortho": false, + "animated": false, + "adjust_camera": false, + "planar_normal": null + } + }, + { + "cmdId": "[uuid]", + "range": [ + 611, + 632, + 0 + ], + "command": { + "type": "extrude", + "target": "[uuid]", + "distance": -40.0, + "faces": null + } + }, + { + "cmdId": "[uuid]", + "range": [ + 611, + 632, + 0 + ], + "command": { + "type": "sketch_mode_disable" + } + }, + { + "cmdId": "[uuid]", + "range": [ + 611, + 632, + 0 + ], + "command": { + "type": "object_bring_to_front", + "object_id": "[uuid]" + } + }, + { + "cmdId": "[uuid]", + "range": [ + 611, + 632, + 0 + ], + "command": { + "type": "solid3d_get_extrusion_face_info", + "object_id": "[uuid]", + "edge_id": "[uuid]" + } + }, + { + "cmdId": "[uuid]", + "range": [ + 611, + 632, + 0 + ], + "command": { + "type": "solid3d_get_opposite_edge", + "object_id": "[uuid]", + "edge_id": "[uuid]", + "face_id": "[uuid]" + } + }, + { + "cmdId": "[uuid]", + "range": [ + 611, + 632, + 0 + ], + "command": { + "type": "solid3d_get_next_adjacent_edge", + "object_id": "[uuid]", + "edge_id": "[uuid]", + "face_id": "[uuid]" + } + }, + { + "cmdId": "[uuid]", + "range": [ + 611, + 632, + 0 + ], + "command": { + "type": "enable_sketch_mode", + "entity_id": "[uuid]", + "ortho": false, + "animated": false, + "adjust_camera": false, + "planar_normal": null + } + }, + { + "cmdId": "[uuid]", + "range": [ + 611, + 632, + 0 + ], + "command": { + "type": "extrude", + "target": "[uuid]", + "distance": -40.0, + "faces": null + } + }, + { + "cmdId": "[uuid]", + "range": [ + 611, + 632, + 0 + ], + "command": { + "type": "sketch_mode_disable" + } + }, + { + "cmdId": "[uuid]", + "range": [ + 611, + 632, + 0 + ], + "command": { + "type": "object_bring_to_front", + "object_id": "[uuid]" + } + }, + { + "cmdId": "[uuid]", + "range": [ + 611, + 632, + 0 + ], + "command": { + "type": "solid3d_get_extrusion_face_info", + "object_id": "[uuid]", + "edge_id": "[uuid]" + } + }, + { + "cmdId": "[uuid]", + "range": [ + 611, + 632, + 0 + ], + "command": { + "type": "solid3d_get_opposite_edge", + "object_id": "[uuid]", + "edge_id": "[uuid]", + "face_id": "[uuid]" + } + }, + { + "cmdId": "[uuid]", + "range": [ + 611, + 632, + 0 + ], + "command": { + "type": "solid3d_get_next_adjacent_edge", + "object_id": "[uuid]", + "edge_id": "[uuid]", + "face_id": "[uuid]" + } + }, + { + "cmdId": "[uuid]", + "range": [ + 611, + 632, + 0 + ], + "command": { + "type": "enable_sketch_mode", + "entity_id": "[uuid]", + "ortho": false, + "animated": false, + "adjust_camera": false, + "planar_normal": null + } + }, + { + "cmdId": "[uuid]", + "range": [ + 611, + 632, + 0 + ], + "command": { + "type": "extrude", + "target": "[uuid]", + "distance": -40.0, + "faces": null + } + }, + { + "cmdId": "[uuid]", + "range": [ + 611, + 632, + 0 + ], + "command": { + "type": "sketch_mode_disable" + } + }, + { + "cmdId": "[uuid]", + "range": [ + 611, + 632, + 0 + ], + "command": { + "type": "object_bring_to_front", + "object_id": "[uuid]" + } + }, + { + "cmdId": "[uuid]", + "range": [ + 611, + 632, + 0 + ], + "command": { + "type": "solid3d_get_extrusion_face_info", + "object_id": "[uuid]", + "edge_id": "[uuid]" + } + }, + { + "cmdId": "[uuid]", + "range": [ + 611, + 632, + 0 + ], + "command": { + "type": "solid3d_get_opposite_edge", + "object_id": "[uuid]", + "edge_id": "[uuid]", + "face_id": "[uuid]" + } + }, + { + "cmdId": "[uuid]", + "range": [ + 611, + 632, + 0 + ], + "command": { + "type": "solid3d_get_next_adjacent_edge", + "object_id": "[uuid]", + "edge_id": "[uuid]", + "face_id": "[uuid]" + } + }, + { + "cmdId": "[uuid]", + "range": [ + 611, + 632, + 0 + ], + "command": { + "type": "enable_sketch_mode", + "entity_id": "[uuid]", + "ortho": false, + "animated": false, + "adjust_camera": false, + "planar_normal": null + } + }, + { + "cmdId": "[uuid]", + "range": [ + 611, + 632, + 0 + ], + "command": { + "type": "extrude", + "target": "[uuid]", + "distance": -40.0, + "faces": null + } + }, + { + "cmdId": "[uuid]", + "range": [ + 611, + 632, + 0 + ], + "command": { + "type": "sketch_mode_disable" + } + }, + { + "cmdId": "[uuid]", + "range": [ + 611, + 632, + 0 + ], + "command": { + "type": "object_bring_to_front", + "object_id": "[uuid]" + } + }, + { + "cmdId": "[uuid]", + "range": [ + 611, + 632, + 0 + ], + "command": { + "type": "solid3d_get_extrusion_face_info", + "object_id": "[uuid]", + "edge_id": "[uuid]" + } + }, + { + "cmdId": "[uuid]", + "range": [ + 611, + 632, + 0 + ], + "command": { + "type": "solid3d_get_opposite_edge", + "object_id": "[uuid]", + "edge_id": "[uuid]", + "face_id": "[uuid]" + } + }, + { + "cmdId": "[uuid]", + "range": [ + 611, + 632, + 0 + ], + "command": { + "type": "solid3d_get_next_adjacent_edge", + "object_id": "[uuid]", + "edge_id": "[uuid]", + "face_id": "[uuid]" + } + } +] diff --git a/src/wasm-lib/kcl/tests/ssi_pattern/artifact_graph_flowchart.snap b/src/wasm-lib/kcl/tests/ssi_pattern/artifact_graph_flowchart.snap new file mode 100644 index 000000000..8b2676347 --- /dev/null +++ b/src/wasm-lib/kcl/tests/ssi_pattern/artifact_graph_flowchart.snap @@ -0,0 +1,6 @@ +--- +source: kcl/src/simulation_tests.rs +description: Artifact graph flowchart ssi_pattern.kcl +extension: md +snapshot_kind: binary +--- diff --git a/src/wasm-lib/kcl/tests/ssi_pattern/artifact_graph_flowchart.snap.md b/src/wasm-lib/kcl/tests/ssi_pattern/artifact_graph_flowchart.snap.md new file mode 100644 index 000000000..88c048b74 --- /dev/null +++ b/src/wasm-lib/kcl/tests/ssi_pattern/artifact_graph_flowchart.snap.md @@ -0,0 +1,92 @@ +```mermaid +flowchart LR + subgraph path2 [Path] + 2["Path
[37, 71, 0]"] + 3["Segment
[77, 91, 0]"] + 4["Segment
[97, 122, 0]"] + 5["Segment
[128, 161, 0]"] + 6["Segment
[167, 183, 0]"] + 7["Segment
[189, 259, 0]"] + 8["Segment
[265, 272, 0]"] + 9[Solid2d] + end + subgraph path28 [Path] + 28["Path
[370, 421, 0]"] + 29["Segment
[370, 421, 0]"] + 30[Solid2d] + end + 1["Plane
[12, 31, 0]"] + 10["Sweep Extrusion
[287, 318, 0]"] + 11[Wall] + 12[Wall] + 13[Wall] + 14[Wall] + 15[Wall] + 16["Cap Start"] + 17["Cap End"] + 18["SweepEdge Opposite"] + 19["SweepEdge Adjacent"] + 20["SweepEdge Opposite"] + 21["SweepEdge Adjacent"] + 22["SweepEdge Opposite"] + 23["SweepEdge Adjacent"] + 24["SweepEdge Opposite"] + 25["SweepEdge Adjacent"] + 26["SweepEdge Opposite"] + 27["SweepEdge Adjacent"] + 31["Sweep Extrusion
[611, 632, 0]"] + 32[Wall] + 33["SweepEdge Opposite"] + 34["SweepEdge Adjacent"] + 1 --- 2 + 2 --- 3 + 2 --- 4 + 2 --- 5 + 2 --- 6 + 2 --- 7 + 2 --- 8 + 2 ---- 10 + 2 --- 9 + 3 --- 15 + 3 --- 26 + 3 --- 27 + 4 --- 14 + 4 --- 24 + 4 --- 25 + 5 --- 13 + 5 --- 22 + 5 --- 23 + 6 --- 12 + 6 --- 20 + 6 --- 21 + 7 --- 11 + 7 --- 18 + 7 --- 19 + 10 --- 11 + 10 --- 12 + 10 --- 13 + 10 --- 14 + 10 --- 15 + 10 --- 16 + 10 --- 17 + 10 --- 18 + 10 --- 19 + 10 --- 20 + 10 --- 21 + 10 --- 22 + 10 --- 23 + 10 --- 24 + 10 --- 25 + 10 --- 26 + 10 --- 27 + 11 --- 28 + 28 --- 29 + 28 ---- 31 + 28 --- 30 + 29 --- 32 + 29 --- 33 + 29 --- 34 + 31 --- 32 + 31 --- 33 + 31 --- 34 +``` diff --git a/src/wasm-lib/kcl/tests/ssi_pattern/ast.snap b/src/wasm-lib/kcl/tests/ssi_pattern/ast.snap new file mode 100644 index 000000000..73147c779 --- /dev/null +++ b/src/wasm-lib/kcl/tests/ssi_pattern/ast.snap @@ -0,0 +1,873 @@ +--- +source: kcl/src/simulation_tests.rs +description: Result of parsing ssi_pattern.kcl +--- +{ + "Ok": { + "body": [ + { + "declaration": { + "end": 272, + "id": { + "end": 9, + "name": "sketch001", + "start": 0, + "type": "Identifier" + }, + "init": { + "body": [ + { + "arguments": [ + { + "end": 30, + "raw": "'XZ'", + "start": 26, + "type": "Literal", + "type": "Literal", + "value": "XZ" + } + ], + "callee": { + "end": 25, + "name": "startSketchOn", + "start": 12, + "type": "Identifier" + }, + "end": 31, + "start": 12, + "type": "CallExpression", + "type": "CallExpression" + }, + { + "arguments": [ + { + "elements": [ + { + "argument": { + "end": 58, + "raw": "4.35", + "start": 54, + "type": "Literal", + "type": "Literal", + "value": { + "value": 4.35, + "suffix": "None" + } + }, + "end": 58, + "operator": "-", + "start": 53, + "type": "UnaryExpression", + "type": "UnaryExpression" + }, + { + "argument": { + "end": 66, + "raw": "12.26", + "start": 61, + "type": "Literal", + "type": "Literal", + "value": { + "value": 12.26, + "suffix": "None" + } + }, + "end": 66, + "operator": "-", + "start": 60, + "type": "UnaryExpression", + "type": "UnaryExpression" + } + ], + "end": 67, + "start": 52, + "type": "ArrayExpression", + "type": "ArrayExpression" + }, + { + "end": 70, + "start": 69, + "type": "PipeSubstitution", + "type": "PipeSubstitution" + } + ], + "callee": { + "end": 51, + "name": "startProfileAt", + "start": 37, + "type": "Identifier" + }, + "end": 71, + "start": 37, + "type": "CallExpression", + "type": "CallExpression" + }, + { + "arguments": [ + { + "end": 87, + "raw": "10.2", + "start": 83, + "type": "Literal", + "type": "Literal", + "value": { + "value": 10.2, + "suffix": "None" + } + }, + { + "end": 90, + "start": 89, + "type": "PipeSubstitution", + "type": "PipeSubstitution" + } + ], + "callee": { + "end": 82, + "name": "yLine", + "start": 77, + "type": "Identifier" + }, + "end": 91, + "start": 77, + "type": "CallExpression", + "type": "CallExpression" + }, + { + "arguments": [ + { + "type": "LabeledArg", + "label": { + "type": "Identifier", + "name": "end" + }, + "arg": { + "elements": [ + { + "end": 113, + "raw": "0.54", + "start": 109, + "type": "Literal", + "type": "Literal", + "value": { + "value": 0.54, + "suffix": "None" + } + }, + { + "argument": { + "end": 120, + "raw": "0.03", + "start": 116, + "type": "Literal", + "type": "Literal", + "value": { + "value": 0.03, + "suffix": "None" + } + }, + "end": 120, + "operator": "-", + "start": 115, + "type": "UnaryExpression", + "type": "UnaryExpression" + } + ], + "end": 121, + "start": 108, + "type": "ArrayExpression", + "type": "ArrayExpression" + } + } + ], + "callee": { + "end": 101, + "name": "line", + "start": 97, + "type": "Identifier" + }, + "end": 122, + "start": 97, + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null + }, + { + "arguments": [ + { + "elements": [ + { + "end": 149, + "raw": "20.4", + "start": 145, + "type": "Literal", + "type": "Literal", + "value": { + "value": 20.4, + "suffix": "None" + } + }, + { + "end": 156, + "raw": "14.61", + "start": 151, + "type": "Literal", + "type": "Literal", + "value": { + "value": 14.61, + "suffix": "None" + } + } + ], + "end": 157, + "start": 144, + "type": "ArrayExpression", + "type": "ArrayExpression" + }, + { + "end": 160, + "start": 159, + "type": "PipeSubstitution", + "type": "PipeSubstitution" + } + ], + "callee": { + "end": 143, + "name": "tangentialArcTo", + "start": 128, + "type": "Identifier" + }, + "end": 161, + "start": 128, + "type": "CallExpression", + "type": "CallExpression" + }, + { + "arguments": [ + { + "argument": { + "end": 179, + "raw": "26.76", + "start": 174, + "type": "Literal", + "type": "Literal", + "value": { + "value": 26.76, + "suffix": "None" + } + }, + "end": 179, + "operator": "-", + "start": 173, + "type": "UnaryExpression", + "type": "UnaryExpression" + }, + { + "end": 182, + "start": 181, + "type": "PipeSubstitution", + "type": "PipeSubstitution" + } + ], + "callee": { + "end": 172, + "name": "yLine", + "start": 167, + "type": "Identifier" + }, + "end": 183, + "start": 167, + "type": "CallExpression", + "type": "CallExpression" + }, + { + "arguments": [ + { + "type": "LabeledArg", + "label": { + "type": "Identifier", + "name": "endAbsolute" + }, + "arg": { + "elements": [ + { + "arguments": [ + { + "end": 224, + "start": 223, + "type": "PipeSubstitution", + "type": "PipeSubstitution" + } + ], + "callee": { + "end": 222, + "name": "profileStartX", + "start": 209, + "type": "Identifier" + }, + "end": 225, + "start": 209, + "type": "CallExpression", + "type": "CallExpression" + }, + { + "arguments": [ + { + "end": 242, + "start": 241, + "type": "PipeSubstitution", + "type": "PipeSubstitution" + } + ], + "callee": { + "end": 240, + "name": "profileStartY", + "start": 227, + "type": "Identifier" + }, + "end": 243, + "start": 227, + "type": "CallExpression", + "type": "CallExpression" + } + ], + "end": 244, + "start": 208, + "type": "ArrayExpression", + "type": "ArrayExpression" + } + }, + { + "type": "LabeledArg", + "label": { + "type": "Identifier", + "name": "tag" + }, + "arg": { + "end": 258, + "start": 252, + "type": "TagDeclarator", + "type": "TagDeclarator", + "value": "seg01" + } + } + ], + "callee": { + "end": 193, + "name": "line", + "start": 189, + "type": "Identifier" + }, + "end": 259, + "start": 189, + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null + }, + { + "arguments": [], + "callee": { + "end": 270, + "name": "close", + "start": 265, + "type": "Identifier" + }, + "end": 272, + "start": 265, + "type": "CallExpression", + "type": "CallExpression" + } + ], + "end": 272, + "start": 12, + "type": "PipeExpression", + "type": "PipeExpression" + }, + "start": 0, + "type": "VariableDeclarator" + }, + "end": 272, + "kind": "const", + "start": 0, + "type": "VariableDeclaration", + "type": "VariableDeclaration" + }, + { + "declaration": { + "end": 318, + "id": { + "end": 284, + "name": "extrude001", + "start": 274, + "type": "Identifier" + }, + "init": { + "arguments": [ + { + "type": "LabeledArg", + "label": { + "type": "Identifier", + "name": "length" + }, + "arg": { + "end": 317, + "raw": "50", + "start": 315, + "type": "Literal", + "type": "Literal", + "value": { + "value": 50.0, + "suffix": "None" + } + } + } + ], + "callee": { + "end": 294, + "name": "extrude", + "start": 287, + "type": "Identifier" + }, + "end": 318, + "start": 287, + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": { + "end": 304, + "name": "sketch001", + "start": 295, + "type": "Identifier", + "type": "Identifier" + } + }, + "start": 274, + "type": "VariableDeclarator" + }, + "end": 318, + "kind": "const", + "start": 274, + "type": "VariableDeclaration", + "type": "VariableDeclaration" + }, + { + "declaration": { + "end": 632, + "id": { + "end": 329, + "name": "sketch002", + "start": 320, + "type": "Identifier" + }, + "init": { + "body": [ + { + "arguments": [ + { + "end": 356, + "name": "extrude001", + "start": 346, + "type": "Identifier", + "type": "Identifier" + }, + { + "end": 363, + "name": "seg01", + "start": 358, + "type": "Identifier", + "type": "Identifier" + } + ], + "callee": { + "end": 345, + "name": "startSketchOn", + "start": 332, + "type": "Identifier" + }, + "end": 364, + "start": 332, + "type": "CallExpression", + "type": "CallExpression" + }, + { + "arguments": [ + { + "end": 417, + "properties": [ + { + "end": 401, + "key": { + "end": 385, + "name": "center", + "start": 379, + "type": "Identifier" + }, + "start": 379, + "type": "ObjectProperty", + "value": { + "elements": [ + { + "argument": { + "end": 394, + "raw": "2.08", + "start": 390, + "type": "Literal", + "type": "Literal", + "value": { + "value": 2.08, + "suffix": "None" + } + }, + "end": 394, + "operator": "-", + "start": 389, + "type": "UnaryExpression", + "type": "UnaryExpression" + }, + { + "end": 400, + "raw": "47.7", + "start": 396, + "type": "Literal", + "type": "Literal", + "value": { + "value": 47.7, + "suffix": "None" + } + } + ], + "end": 401, + "start": 388, + "type": "ArrayExpression", + "type": "ArrayExpression" + } + }, + { + "end": 415, + "key": { + "end": 409, + "name": "radius", + "start": 403, + "type": "Identifier" + }, + "start": 403, + "type": "ObjectProperty", + "value": { + "end": 415, + "raw": "1.4", + "start": 412, + "type": "Literal", + "type": "Literal", + "value": { + "value": 1.4, + "suffix": "None" + } + } + } + ], + "start": 377, + "type": "ObjectExpression", + "type": "ObjectExpression" + }, + { + "end": 420, + "start": 419, + "type": "PipeSubstitution", + "type": "PipeSubstitution" + } + ], + "callee": { + "end": 376, + "name": "circle", + "start": 370, + "type": "Identifier" + }, + "end": 421, + "start": 370, + "type": "CallExpression", + "type": "CallExpression" + }, + { + "arguments": [ + { + "type": "LabeledArg", + "label": { + "type": "Identifier", + "name": "instances" + }, + "arg": { + "end": 456, + "raw": "5", + "start": 455, + "type": "Literal", + "type": "Literal", + "value": { + "value": 5.0, + "suffix": "None" + } + } + }, + { + "type": "LabeledArg", + "label": { + "type": "Identifier", + "name": "distance" + }, + "arg": { + "end": 470, + "raw": "5", + "start": 469, + "type": "Literal", + "type": "Literal", + "value": { + "value": 5.0, + "suffix": "None" + } + } + }, + { + "type": "LabeledArg", + "label": { + "type": "Identifier", + "name": "axis" + }, + "arg": { + "elements": [ + { + "end": 481, + "raw": "1", + "start": 480, + "type": "Literal", + "type": "Literal", + "value": { + "value": 1.0, + "suffix": "None" + } + }, + { + "end": 484, + "raw": "0", + "start": 483, + "type": "Literal", + "type": "Literal", + "value": { + "value": 0.0, + "suffix": "None" + } + } + ], + "end": 485, + "start": 479, + "type": "ArrayExpression", + "type": "ArrayExpression" + } + } + ], + "callee": { + "end": 442, + "name": "patternLinear2d", + "start": 427, + "type": "Identifier" + }, + "end": 486, + "start": 427, + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null + }, + { + "arguments": [ + { + "type": "LabeledArg", + "label": { + "type": "Identifier", + "name": "instances" + }, + "arg": { + "end": 574, + "raw": "6", + "start": 573, + "type": "Literal", + "type": "Literal", + "value": { + "value": 6.0, + "suffix": "None" + } + } + }, + { + "type": "LabeledArg", + "label": { + "type": "Identifier", + "name": "distance" + }, + "arg": { + "end": 588, + "raw": "4", + "start": 587, + "type": "Literal", + "type": "Literal", + "value": { + "value": 4.0, + "suffix": "None" + } + } + }, + { + "type": "LabeledArg", + "label": { + "type": "Identifier", + "name": "axis" + }, + "arg": { + "elements": [ + { + "end": 599, + "raw": "0", + "start": 598, + "type": "Literal", + "type": "Literal", + "value": { + "value": 0.0, + "suffix": "None" + } + }, + { + "argument": { + "end": 603, + "raw": "1", + "start": 602, + "type": "Literal", + "type": "Literal", + "value": { + "value": 1.0, + "suffix": "None" + } + }, + "end": 603, + "operator": "-", + "start": 601, + "type": "UnaryExpression", + "type": "UnaryExpression" + } + ], + "end": 604, + "start": 597, + "type": "ArrayExpression", + "type": "ArrayExpression" + } + } + ], + "callee": { + "end": 560, + "name": "patternLinear2d", + "start": 545, + "type": "Identifier" + }, + "end": 605, + "start": 545, + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null + }, + { + "arguments": [ + { + "type": "LabeledArg", + "label": { + "type": "Identifier", + "name": "length" + }, + "arg": { + "argument": { + "end": 631, + "raw": "40", + "start": 629, + "type": "Literal", + "type": "Literal", + "value": { + "value": 40.0, + "suffix": "None" + } + }, + "end": 631, + "operator": "-", + "start": 628, + "type": "UnaryExpression", + "type": "UnaryExpression" + } + } + ], + "callee": { + "end": 618, + "name": "extrude", + "start": 611, + "type": "Identifier" + }, + "end": 632, + "start": 611, + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null + } + ], + "end": 632, + "nonCodeMeta": { + "nonCodeNodes": { + "2": [ + { + "end": 539, + "start": 488, + "type": "NonCodeNode", + "value": { + "type": "blockComment", + "value": "Instances was reduced from 12 to speed this up.", + "style": "line" + } + } + ] + }, + "startNodes": [] + }, + "start": 332, + "type": "PipeExpression", + "type": "PipeExpression" + }, + "start": 320, + "type": "VariableDeclarator" + }, + "end": 632, + "kind": "const", + "start": 320, + "type": "VariableDeclaration", + "type": "VariableDeclaration" + } + ], + "end": 633, + "nonCodeMeta": { + "nonCodeNodes": { + "0": [ + { + "end": 274, + "start": 272, + "type": "NonCodeNode", + "value": { + "type": "newLine" + } + } + ], + "1": [ + { + "end": 320, + "start": 318, + "type": "NonCodeNode", + "value": { + "type": "newLine" + } + } + ] + }, + "startNodes": [] + }, + "start": 0 + } +} diff --git a/src/wasm-lib/kcl/tests/ssi_pattern/input.kcl b/src/wasm-lib/kcl/tests/ssi_pattern/input.kcl new file mode 100644 index 000000000..fd7b10e98 --- /dev/null +++ b/src/wasm-lib/kcl/tests/ssi_pattern/input.kcl @@ -0,0 +1,17 @@ +sketch001 = startSketchOn('XZ') + |> startProfileAt([-4.35, -12.26], %) + |> yLine(10.2, %) + |> line(end = [0.54, -0.03]) + |> tangentialArcTo([20.4, 14.61], %) + |> yLine(-26.76, %) + |> line(endAbsolute = [profileStartX(%), profileStartY(%)], tag = $seg01) + |> close() + +extrude001 = extrude(sketch001, length = 50) + +sketch002 = startSketchOn(extrude001, seg01) + |> circle({ center = [-2.08, 47.7], radius = 1.4 }, %) + |> patternLinear2d(instances = 5, distance = 5, axis = [1, 0]) + // Instances was reduced from 12 to speed this up. + |> patternLinear2d(instances = 6, distance = 4, axis = [0, -1]) + |> extrude(length = -40) diff --git a/src/wasm-lib/kcl/tests/ssi_pattern/ops.snap b/src/wasm-lib/kcl/tests/ssi_pattern/ops.snap new file mode 100644 index 000000000..b7d8c76c8 --- /dev/null +++ b/src/wasm-lib/kcl/tests/ssi_pattern/ops.snap @@ -0,0 +1,95 @@ +--- +source: kcl/src/simulation_tests.rs +description: Operations executed ssi_pattern.kcl +--- +[ + { + "labeledArgs": { + "data": { + "sourceRange": [ + 26, + 30, + 0 + ] + } + }, + "name": "startSketchOn", + "sourceRange": [ + 12, + 31, + 0 + ], + "type": "StdLibCall", + "unlabeledArg": null + }, + { + "labeledArgs": { + "length": { + "sourceRange": [ + 315, + 317, + 0 + ] + } + }, + "name": "extrude", + "sourceRange": [ + 287, + 318, + 0 + ], + "type": "StdLibCall", + "unlabeledArg": { + "sourceRange": [ + 295, + 304, + 0 + ] + } + }, + { + "labeledArgs": { + "data": { + "sourceRange": [ + 346, + 356, + 0 + ] + }, + "tag": { + "sourceRange": [ + 358, + 363, + 0 + ] + } + }, + "name": "startSketchOn", + "sourceRange": [ + 332, + 364, + 0 + ], + "type": "StdLibCall", + "unlabeledArg": null + }, + { + "labeledArgs": { + "length": { + "sourceRange": [ + 628, + 631, + 0 + ] + } + }, + "name": "extrude", + "sourceRange": [ + 611, + 632, + 0 + ], + "type": "StdLibCall", + "unlabeledArg": null + } +] diff --git a/src/wasm-lib/kcl/tests/ssi_pattern/program_memory.snap b/src/wasm-lib/kcl/tests/ssi_pattern/program_memory.snap new file mode 100644 index 000000000..67a1e4556 --- /dev/null +++ b/src/wasm-lib/kcl/tests/ssi_pattern/program_memory.snap @@ -0,0 +1,14889 @@ +--- +source: kcl/src/simulation_tests.rs +description: Variables in memory after executing ssi_pattern.kcl +--- +{ + "HALF_TURN": { + "type": "Number", + "value": 180.0, + "__meta": [] + }, + "QUARTER_TURN": { + "type": "Number", + "value": 90.0, + "__meta": [] + }, + "THREE_QUARTER_TURN": { + "type": "Number", + "value": 270.0, + "__meta": [] + }, + "ZERO": { + "type": "Number", + "value": 0.0, + "__meta": [] + }, + "extrude001": { + "type": "Solid", + "value": { + "type": "Solid", + "id": "[uuid]", + "artifactId": "[uuid]", + "value": [ + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [ + 77, + 91, + 0 + ], + "tag": null, + "type": "extrudePlane" + }, + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [ + 97, + 122, + 0 + ], + "tag": null, + "type": "extrudePlane" + }, + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [ + 128, + 161, + 0 + ], + "tag": null, + "type": "extrudeArc" + }, + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [ + 167, + 183, + 0 + ], + "tag": null, + "type": "extrudePlane" + }, + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [ + 189, + 259, + 0 + ], + "tag": { + "end": 258, + "start": 252, + "type": "TagDeclarator", + "value": "seg01" + }, + "type": "extrudePlane" + } + ], + "sketch": { + "type": "Sketch", + "id": "[uuid]", + "paths": [ + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 77, + 91, + 0 + ] + }, + "from": [ + -4.35, + -12.26 + ], + "tag": null, + "to": [ + -4.35, + -2.06 + ], + "type": "ToPoint" + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 97, + 122, + 0 + ] + }, + "from": [ + -4.35, + -2.06 + ], + "tag": null, + "to": [ + -3.81, + -2.09 + ], + "type": "ToPoint" + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 128, + 161, + 0 + ] + }, + "ccw": true, + "center": [ + -2.478430620978426, + 21.878248822388485 + ], + "from": [ + -3.81, + -2.09 + ], + "tag": null, + "to": [ + 20.4, + 14.61 + ], + "type": "TangentialArcTo" + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 167, + 183, + 0 + ] + }, + "from": [ + 20.4, + 14.61 + ], + "tag": null, + "to": [ + 20.4, + -12.15 + ], + "type": "ToPoint" + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 189, + 259, + 0 + ] + }, + "from": [ + 20.4, + -12.15 + ], + "tag": { + "end": 258, + "start": 252, + "type": "TagDeclarator", + "value": "seg01" + }, + "to": [ + -4.35, + -12.26 + ], + "type": "ToPoint" + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 265, + 272, + 0 + ] + }, + "from": [ + -4.35, + -12.26 + ], + "tag": null, + "to": [ + -4.35, + -12.26 + ], + "type": "ToPoint" + } + ], + "on": { + "type": "plane", + "id": "[uuid]", + "artifactId": "[uuid]", + "value": "XZ", + "origin": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "xAxis": { + "x": 1.0, + "y": 0.0, + "z": 0.0 + }, + "yAxis": { + "x": 0.0, + "y": 0.0, + "z": 1.0 + }, + "zAxis": { + "x": 0.0, + "y": -1.0, + "z": 0.0 + }, + "units": { + "type": "Mm" + }, + "__meta": [] + }, + "start": { + "from": [ + -4.35, + -12.26 + ], + "to": [ + -4.35, + -12.26 + ], + "tag": null, + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 37, + 71, + 0 + ] + } + }, + "tags": { + "seg01": { + "type": "TagIdentifier", + "value": "seg01", + "info": { + "type": "TagEngineInfo", + "id": "[uuid]", + "sketch": "[uuid]", + "path": { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 189, + 259, + 0 + ] + }, + "from": [ + 20.4, + -12.150000000000002 + ], + "tag": { + "end": 258, + "start": 252, + "type": "TagDeclarator", + "value": "seg01" + }, + "to": [ + -4.35, + -12.26 + ], + "type": "ToPoint" + }, + "surface": { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [ + 189, + 259, + 0 + ], + "tag": { + "end": 258, + "start": 252, + "type": "TagDeclarator", + "value": "seg01" + }, + "type": "extrudePlane" + } + }, + "__meta": [ + { + "sourceRange": [ + 252, + 258, + 0 + ] + } + ] + } + }, + "artifactId": "[uuid]", + "originalId": "[uuid]", + "units": { + "type": "Mm" + }, + "__meta": [ + { + "sourceRange": [ + 37, + 71, + 0 + ] + } + ] + }, + "height": 50.0, + "startCapId": "[uuid]", + "endCapId": "[uuid]", + "units": { + "type": "Mm" + }, + "__meta": [ + { + "sourceRange": [ + 37, + 71, + 0 + ] + } + ] + } + }, + "seg01": { + "type": "TagIdentifier", + "type": "TagIdentifier", + "value": "seg01", + "info": { + "type": "TagEngineInfo", + "id": "[uuid]", + "sketch": "[uuid]", + "path": { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 189, + 259, + 0 + ] + }, + "from": [ + 20.4, + -12.150000000000002 + ], + "tag": { + "end": 258, + "start": 252, + "type": "TagDeclarator", + "value": "seg01" + }, + "to": [ + -4.35, + -12.26 + ], + "type": "ToPoint" + }, + "surface": { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [ + 189, + 259, + 0 + ], + "tag": { + "end": 258, + "start": 252, + "type": "TagDeclarator", + "value": "seg01" + }, + "type": "extrudePlane" + } + }, + "__meta": [ + { + "sourceRange": [ + 252, + 258, + 0 + ] + } + ] + }, + "sketch001": { + "type": "Sketch", + "value": { + "type": "Sketch", + "id": "[uuid]", + "paths": [ + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 77, + 91, + 0 + ] + }, + "from": [ + -4.35, + -12.26 + ], + "tag": null, + "to": [ + -4.35, + -2.06 + ], + "type": "ToPoint" + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 97, + 122, + 0 + ] + }, + "from": [ + -4.35, + -2.06 + ], + "tag": null, + "to": [ + -3.81, + -2.09 + ], + "type": "ToPoint" + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 128, + 161, + 0 + ] + }, + "ccw": true, + "center": [ + -2.478430620978426, + 21.878248822388485 + ], + "from": [ + -3.81, + -2.09 + ], + "tag": null, + "to": [ + 20.4, + 14.61 + ], + "type": "TangentialArcTo" + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 167, + 183, + 0 + ] + }, + "from": [ + 20.4, + 14.61 + ], + "tag": null, + "to": [ + 20.4, + -12.15 + ], + "type": "ToPoint" + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 189, + 259, + 0 + ] + }, + "from": [ + 20.4, + -12.15 + ], + "tag": { + "end": 258, + "start": 252, + "type": "TagDeclarator", + "value": "seg01" + }, + "to": [ + -4.35, + -12.26 + ], + "type": "ToPoint" + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 265, + 272, + 0 + ] + }, + "from": [ + -4.35, + -12.26 + ], + "tag": null, + "to": [ + -4.35, + -12.26 + ], + "type": "ToPoint" + } + ], + "on": { + "type": "plane", + "id": "[uuid]", + "artifactId": "[uuid]", + "value": "XZ", + "origin": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "xAxis": { + "x": 1.0, + "y": 0.0, + "z": 0.0 + }, + "yAxis": { + "x": 0.0, + "y": 0.0, + "z": 1.0 + }, + "zAxis": { + "x": 0.0, + "y": -1.0, + "z": 0.0 + }, + "units": { + "type": "Mm" + }, + "__meta": [] + }, + "start": { + "from": [ + -4.35, + -12.26 + ], + "to": [ + -4.35, + -12.26 + ], + "tag": null, + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 37, + 71, + 0 + ] + } + }, + "tags": { + "seg01": { + "type": "TagIdentifier", + "value": "seg01", + "info": { + "type": "TagEngineInfo", + "id": "[uuid]", + "sketch": "[uuid]", + "path": { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 189, + 259, + 0 + ] + }, + "from": [ + 20.4, + -12.150000000000002 + ], + "tag": { + "end": 258, + "start": 252, + "type": "TagDeclarator", + "value": "seg01" + }, + "to": [ + -4.35, + -12.26 + ], + "type": "ToPoint" + }, + "surface": { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [ + 189, + 259, + 0 + ], + "tag": { + "end": 258, + "start": 252, + "type": "TagDeclarator", + "value": "seg01" + }, + "type": "extrudePlane" + } + }, + "__meta": [ + { + "sourceRange": [ + 252, + 258, + 0 + ] + } + ] + } + }, + "artifactId": "[uuid]", + "originalId": "[uuid]", + "units": { + "type": "Mm" + }, + "__meta": [ + { + "sourceRange": [ + 37, + 71, + 0 + ] + } + ] + } + }, + "sketch002": { + "type": "Solids", + "value": [ + { + "type": "Solid", + "id": "[uuid]", + "artifactId": "[uuid]", + "value": [ + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [ + 370, + 421, + 0 + ], + "tag": null, + "type": "extrudeArc" + } + ], + "sketch": { + "type": "Sketch", + "id": "[uuid]", + "paths": [ + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 370, + 421, + 0 + ] + }, + "ccw": true, + "center": [ + -2.08, + 47.7 + ], + "from": [ + -0.68, + 47.7 + ], + "radius": 1.4, + "tag": null, + "to": [ + -0.68, + 47.7 + ], + "type": "Circle" + } + ], + "on": { + "type": "face", + "id": "[uuid]", + "artifactId": "[uuid]", + "value": "seg01", + "xAxis": { + "x": 1.0, + "y": 0.0, + "z": 0.0 + }, + "yAxis": { + "x": 0.0, + "y": 0.0, + "z": 1.0 + }, + "zAxis": { + "x": 0.0, + "y": -1.0, + "z": 0.0 + }, + "solid": { + "type": "Solid", + "id": "[uuid]", + "artifactId": "[uuid]", + "value": [ + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [ + 77, + 91, + 0 + ], + "tag": null, + "type": "extrudePlane" + }, + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [ + 97, + 122, + 0 + ], + "tag": null, + "type": "extrudePlane" + }, + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [ + 128, + 161, + 0 + ], + "tag": null, + "type": "extrudeArc" + }, + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [ + 167, + 183, + 0 + ], + "tag": null, + "type": "extrudePlane" + }, + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [ + 189, + 259, + 0 + ], + "tag": { + "end": 258, + "start": 252, + "type": "TagDeclarator", + "value": "seg01" + }, + "type": "extrudePlane" + } + ], + "sketch": { + "type": "Sketch", + "id": "[uuid]", + "paths": [ + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 77, + 91, + 0 + ] + }, + "from": [ + -4.35, + -12.26 + ], + "tag": null, + "to": [ + -4.35, + -2.06 + ], + "type": "ToPoint" + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 97, + 122, + 0 + ] + }, + "from": [ + -4.35, + -2.06 + ], + "tag": null, + "to": [ + -3.81, + -2.09 + ], + "type": "ToPoint" + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 128, + 161, + 0 + ] + }, + "ccw": true, + "center": [ + -2.478430620978426, + 21.878248822388485 + ], + "from": [ + -3.81, + -2.09 + ], + "tag": null, + "to": [ + 20.4, + 14.61 + ], + "type": "TangentialArcTo" + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 167, + 183, + 0 + ] + }, + "from": [ + 20.4, + 14.61 + ], + "tag": null, + "to": [ + 20.4, + -12.15 + ], + "type": "ToPoint" + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 189, + 259, + 0 + ] + }, + "from": [ + 20.4, + -12.15 + ], + "tag": { + "end": 258, + "start": 252, + "type": "TagDeclarator", + "value": "seg01" + }, + "to": [ + -4.35, + -12.26 + ], + "type": "ToPoint" + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 265, + 272, + 0 + ] + }, + "from": [ + -4.35, + -12.26 + ], + "tag": null, + "to": [ + -4.35, + -12.26 + ], + "type": "ToPoint" + } + ], + "on": { + "type": "plane", + "id": "[uuid]", + "artifactId": "[uuid]", + "value": "XZ", + "origin": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "xAxis": { + "x": 1.0, + "y": 0.0, + "z": 0.0 + }, + "yAxis": { + "x": 0.0, + "y": 0.0, + "z": 1.0 + }, + "zAxis": { + "x": 0.0, + "y": -1.0, + "z": 0.0 + }, + "units": { + "type": "Mm" + }, + "__meta": [] + }, + "start": { + "from": [ + -4.35, + -12.26 + ], + "to": [ + -4.35, + -12.26 + ], + "tag": null, + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 37, + 71, + 0 + ] + } + }, + "tags": { + "seg01": { + "type": "TagIdentifier", + "value": "seg01", + "info": { + "type": "TagEngineInfo", + "id": "[uuid]", + "sketch": "[uuid]", + "path": { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 189, + 259, + 0 + ] + }, + "from": [ + 20.4, + -12.150000000000002 + ], + "tag": { + "end": 258, + "start": 252, + "type": "TagDeclarator", + "value": "seg01" + }, + "to": [ + -4.35, + -12.26 + ], + "type": "ToPoint" + }, + "surface": { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [ + 189, + 259, + 0 + ], + "tag": { + "end": 258, + "start": 252, + "type": "TagDeclarator", + "value": "seg01" + }, + "type": "extrudePlane" + } + }, + "__meta": [ + { + "sourceRange": [ + 252, + 258, + 0 + ] + } + ] + } + }, + "artifactId": "[uuid]", + "originalId": "[uuid]", + "units": { + "type": "Mm" + }, + "__meta": [ + { + "sourceRange": [ + 37, + 71, + 0 + ] + } + ] + }, + "height": 50.0, + "startCapId": "[uuid]", + "endCapId": "[uuid]", + "units": { + "type": "Mm" + }, + "__meta": [ + { + "sourceRange": [ + 37, + 71, + 0 + ] + } + ] + }, + "units": { + "type": "Mm" + }, + "__meta": [ + { + "sourceRange": [ + 332, + 364, + 0 + ] + } + ] + }, + "start": { + "from": [ + -0.6800000000000002, + 47.7 + ], + "to": [ + -0.6800000000000002, + 47.7 + ], + "tag": null, + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 370, + 421, + 0 + ] + } + }, + "artifactId": "[uuid]", + "originalId": "[uuid]", + "units": { + "type": "Mm" + }, + "__meta": [ + { + "sourceRange": [ + 370, + 421, + 0 + ] + } + ] + }, + "height": -40.0, + "startCapId": null, + "endCapId": null, + "units": { + "type": "Mm" + }, + "__meta": [ + { + "sourceRange": [ + 370, + 421, + 0 + ] + } + ] + }, + { + "type": "Solid", + "id": "[uuid]", + "artifactId": "[uuid]", + "value": [ + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [ + 370, + 421, + 0 + ], + "tag": null, + "type": "extrudeArc" + } + ], + "sketch": { + "type": "Sketch", + "id": "[uuid]", + "paths": [ + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 370, + 421, + 0 + ] + }, + "ccw": true, + "center": [ + -2.08, + 47.7 + ], + "from": [ + -0.68, + 47.7 + ], + "radius": 1.4, + "tag": null, + "to": [ + -0.68, + 47.7 + ], + "type": "Circle" + } + ], + "on": { + "type": "face", + "id": "[uuid]", + "artifactId": "[uuid]", + "value": "seg01", + "xAxis": { + "x": 1.0, + "y": 0.0, + "z": 0.0 + }, + "yAxis": { + "x": 0.0, + "y": 0.0, + "z": 1.0 + }, + "zAxis": { + "x": 0.0, + "y": -1.0, + "z": 0.0 + }, + "solid": { + "type": "Solid", + "id": "[uuid]", + "artifactId": "[uuid]", + "value": [ + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [ + 77, + 91, + 0 + ], + "tag": null, + "type": "extrudePlane" + }, + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [ + 97, + 122, + 0 + ], + "tag": null, + "type": "extrudePlane" + }, + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [ + 128, + 161, + 0 + ], + "tag": null, + "type": "extrudeArc" + }, + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [ + 167, + 183, + 0 + ], + "tag": null, + "type": "extrudePlane" + }, + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [ + 189, + 259, + 0 + ], + "tag": { + "end": 258, + "start": 252, + "type": "TagDeclarator", + "value": "seg01" + }, + "type": "extrudePlane" + } + ], + "sketch": { + "type": "Sketch", + "id": "[uuid]", + "paths": [ + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 77, + 91, + 0 + ] + }, + "from": [ + -4.35, + -12.26 + ], + "tag": null, + "to": [ + -4.35, + -2.06 + ], + "type": "ToPoint" + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 97, + 122, + 0 + ] + }, + "from": [ + -4.35, + -2.06 + ], + "tag": null, + "to": [ + -3.81, + -2.09 + ], + "type": "ToPoint" + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 128, + 161, + 0 + ] + }, + "ccw": true, + "center": [ + -2.478430620978426, + 21.878248822388485 + ], + "from": [ + -3.81, + -2.09 + ], + "tag": null, + "to": [ + 20.4, + 14.61 + ], + "type": "TangentialArcTo" + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 167, + 183, + 0 + ] + }, + "from": [ + 20.4, + 14.61 + ], + "tag": null, + "to": [ + 20.4, + -12.15 + ], + "type": "ToPoint" + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 189, + 259, + 0 + ] + }, + "from": [ + 20.4, + -12.15 + ], + "tag": { + "end": 258, + "start": 252, + "type": "TagDeclarator", + "value": "seg01" + }, + "to": [ + -4.35, + -12.26 + ], + "type": "ToPoint" + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 265, + 272, + 0 + ] + }, + "from": [ + -4.35, + -12.26 + ], + "tag": null, + "to": [ + -4.35, + -12.26 + ], + "type": "ToPoint" + } + ], + "on": { + "type": "plane", + "id": "[uuid]", + "artifactId": "[uuid]", + "value": "XZ", + "origin": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "xAxis": { + "x": 1.0, + "y": 0.0, + "z": 0.0 + }, + "yAxis": { + "x": 0.0, + "y": 0.0, + "z": 1.0 + }, + "zAxis": { + "x": 0.0, + "y": -1.0, + "z": 0.0 + }, + "units": { + "type": "Mm" + }, + "__meta": [] + }, + "start": { + "from": [ + -4.35, + -12.26 + ], + "to": [ + -4.35, + -12.26 + ], + "tag": null, + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 37, + 71, + 0 + ] + } + }, + "tags": { + "seg01": { + "type": "TagIdentifier", + "value": "seg01", + "info": { + "type": "TagEngineInfo", + "id": "[uuid]", + "sketch": "[uuid]", + "path": { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 189, + 259, + 0 + ] + }, + "from": [ + 20.4, + -12.150000000000002 + ], + "tag": { + "end": 258, + "start": 252, + "type": "TagDeclarator", + "value": "seg01" + }, + "to": [ + -4.35, + -12.26 + ], + "type": "ToPoint" + }, + "surface": { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [ + 189, + 259, + 0 + ], + "tag": { + "end": 258, + "start": 252, + "type": "TagDeclarator", + "value": "seg01" + }, + "type": "extrudePlane" + } + }, + "__meta": [ + { + "sourceRange": [ + 252, + 258, + 0 + ] + } + ] + } + }, + "artifactId": "[uuid]", + "originalId": "[uuid]", + "units": { + "type": "Mm" + }, + "__meta": [ + { + "sourceRange": [ + 37, + 71, + 0 + ] + } + ] + }, + "height": 50.0, + "startCapId": "[uuid]", + "endCapId": "[uuid]", + "units": { + "type": "Mm" + }, + "__meta": [ + { + "sourceRange": [ + 37, + 71, + 0 + ] + } + ] + }, + "units": { + "type": "Mm" + }, + "__meta": [ + { + "sourceRange": [ + 332, + 364, + 0 + ] + } + ] + }, + "start": { + "from": [ + -0.6800000000000002, + 47.7 + ], + "to": [ + -0.6800000000000002, + 47.7 + ], + "tag": null, + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 370, + 421, + 0 + ] + } + }, + "artifactId": "[uuid]", + "originalId": "[uuid]", + "units": { + "type": "Mm" + }, + "__meta": [ + { + "sourceRange": [ + 370, + 421, + 0 + ] + } + ] + }, + "height": -40.0, + "startCapId": null, + "endCapId": null, + "units": { + "type": "Mm" + }, + "__meta": [ + { + "sourceRange": [ + 370, + 421, + 0 + ] + } + ] + }, + { + "type": "Solid", + "id": "[uuid]", + "artifactId": "[uuid]", + "value": [ + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [ + 370, + 421, + 0 + ], + "tag": null, + "type": "extrudeArc" + } + ], + "sketch": { + "type": "Sketch", + "id": "[uuid]", + "paths": [ + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 370, + 421, + 0 + ] + }, + "ccw": true, + "center": [ + -2.08, + 47.7 + ], + "from": [ + -0.68, + 47.7 + ], + "radius": 1.4, + "tag": null, + "to": [ + -0.68, + 47.7 + ], + "type": "Circle" + } + ], + "on": { + "type": "face", + "id": "[uuid]", + "artifactId": "[uuid]", + "value": "seg01", + "xAxis": { + "x": 1.0, + "y": 0.0, + "z": 0.0 + }, + "yAxis": { + "x": 0.0, + "y": 0.0, + "z": 1.0 + }, + "zAxis": { + "x": 0.0, + "y": -1.0, + "z": 0.0 + }, + "solid": { + "type": "Solid", + "id": "[uuid]", + "artifactId": "[uuid]", + "value": [ + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [ + 77, + 91, + 0 + ], + "tag": null, + "type": "extrudePlane" + }, + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [ + 97, + 122, + 0 + ], + "tag": null, + "type": "extrudePlane" + }, + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [ + 128, + 161, + 0 + ], + "tag": null, + "type": "extrudeArc" + }, + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [ + 167, + 183, + 0 + ], + "tag": null, + "type": "extrudePlane" + }, + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [ + 189, + 259, + 0 + ], + "tag": { + "end": 258, + "start": 252, + "type": "TagDeclarator", + "value": "seg01" + }, + "type": "extrudePlane" + } + ], + "sketch": { + "type": "Sketch", + "id": "[uuid]", + "paths": [ + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 77, + 91, + 0 + ] + }, + "from": [ + -4.35, + -12.26 + ], + "tag": null, + "to": [ + -4.35, + -2.06 + ], + "type": "ToPoint" + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 97, + 122, + 0 + ] + }, + "from": [ + -4.35, + -2.06 + ], + "tag": null, + "to": [ + -3.81, + -2.09 + ], + "type": "ToPoint" + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 128, + 161, + 0 + ] + }, + "ccw": true, + "center": [ + -2.478430620978426, + 21.878248822388485 + ], + "from": [ + -3.81, + -2.09 + ], + "tag": null, + "to": [ + 20.4, + 14.61 + ], + "type": "TangentialArcTo" + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 167, + 183, + 0 + ] + }, + "from": [ + 20.4, + 14.61 + ], + "tag": null, + "to": [ + 20.4, + -12.15 + ], + "type": "ToPoint" + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 189, + 259, + 0 + ] + }, + "from": [ + 20.4, + -12.15 + ], + "tag": { + "end": 258, + "start": 252, + "type": "TagDeclarator", + "value": "seg01" + }, + "to": [ + -4.35, + -12.26 + ], + "type": "ToPoint" + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 265, + 272, + 0 + ] + }, + "from": [ + -4.35, + -12.26 + ], + "tag": null, + "to": [ + -4.35, + -12.26 + ], + "type": "ToPoint" + } + ], + "on": { + "type": "plane", + "id": "[uuid]", + "artifactId": "[uuid]", + "value": "XZ", + "origin": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "xAxis": { + "x": 1.0, + "y": 0.0, + "z": 0.0 + }, + "yAxis": { + "x": 0.0, + "y": 0.0, + "z": 1.0 + }, + "zAxis": { + "x": 0.0, + "y": -1.0, + "z": 0.0 + }, + "units": { + "type": "Mm" + }, + "__meta": [] + }, + "start": { + "from": [ + -4.35, + -12.26 + ], + "to": [ + -4.35, + -12.26 + ], + "tag": null, + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 37, + 71, + 0 + ] + } + }, + "tags": { + "seg01": { + "type": "TagIdentifier", + "value": "seg01", + "info": { + "type": "TagEngineInfo", + "id": "[uuid]", + "sketch": "[uuid]", + "path": { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 189, + 259, + 0 + ] + }, + "from": [ + 20.4, + -12.150000000000002 + ], + "tag": { + "end": 258, + "start": 252, + "type": "TagDeclarator", + "value": "seg01" + }, + "to": [ + -4.35, + -12.26 + ], + "type": "ToPoint" + }, + "surface": { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [ + 189, + 259, + 0 + ], + "tag": { + "end": 258, + "start": 252, + "type": "TagDeclarator", + "value": "seg01" + }, + "type": "extrudePlane" + } + }, + "__meta": [ + { + "sourceRange": [ + 252, + 258, + 0 + ] + } + ] + } + }, + "artifactId": "[uuid]", + "originalId": "[uuid]", + "units": { + "type": "Mm" + }, + "__meta": [ + { + "sourceRange": [ + 37, + 71, + 0 + ] + } + ] + }, + "height": 50.0, + "startCapId": "[uuid]", + "endCapId": "[uuid]", + "units": { + "type": "Mm" + }, + "__meta": [ + { + "sourceRange": [ + 37, + 71, + 0 + ] + } + ] + }, + "units": { + "type": "Mm" + }, + "__meta": [ + { + "sourceRange": [ + 332, + 364, + 0 + ] + } + ] + }, + "start": { + "from": [ + -0.6800000000000002, + 47.7 + ], + "to": [ + -0.6800000000000002, + 47.7 + ], + "tag": null, + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 370, + 421, + 0 + ] + } + }, + "artifactId": "[uuid]", + "originalId": "[uuid]", + "units": { + "type": "Mm" + }, + "__meta": [ + { + "sourceRange": [ + 370, + 421, + 0 + ] + } + ] + }, + "height": -40.0, + "startCapId": null, + "endCapId": null, + "units": { + "type": "Mm" + }, + "__meta": [ + { + "sourceRange": [ + 370, + 421, + 0 + ] + } + ] + }, + { + "type": "Solid", + "id": "[uuid]", + "artifactId": "[uuid]", + "value": [ + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [ + 370, + 421, + 0 + ], + "tag": null, + "type": "extrudeArc" + } + ], + "sketch": { + "type": "Sketch", + "id": "[uuid]", + "paths": [ + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 370, + 421, + 0 + ] + }, + "ccw": true, + "center": [ + -2.08, + 47.7 + ], + "from": [ + -0.68, + 47.7 + ], + "radius": 1.4, + "tag": null, + "to": [ + -0.68, + 47.7 + ], + "type": "Circle" + } + ], + "on": { + "type": "face", + "id": "[uuid]", + "artifactId": "[uuid]", + "value": "seg01", + "xAxis": { + "x": 1.0, + "y": 0.0, + "z": 0.0 + }, + "yAxis": { + "x": 0.0, + "y": 0.0, + "z": 1.0 + }, + "zAxis": { + "x": 0.0, + "y": -1.0, + "z": 0.0 + }, + "solid": { + "type": "Solid", + "id": "[uuid]", + "artifactId": "[uuid]", + "value": [ + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [ + 77, + 91, + 0 + ], + "tag": null, + "type": "extrudePlane" + }, + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [ + 97, + 122, + 0 + ], + "tag": null, + "type": "extrudePlane" + }, + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [ + 128, + 161, + 0 + ], + "tag": null, + "type": "extrudeArc" + }, + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [ + 167, + 183, + 0 + ], + "tag": null, + "type": "extrudePlane" + }, + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [ + 189, + 259, + 0 + ], + "tag": { + "end": 258, + "start": 252, + "type": "TagDeclarator", + "value": "seg01" + }, + "type": "extrudePlane" + } + ], + "sketch": { + "type": "Sketch", + "id": "[uuid]", + "paths": [ + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 77, + 91, + 0 + ] + }, + "from": [ + -4.35, + -12.26 + ], + "tag": null, + "to": [ + -4.35, + -2.06 + ], + "type": "ToPoint" + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 97, + 122, + 0 + ] + }, + "from": [ + -4.35, + -2.06 + ], + "tag": null, + "to": [ + -3.81, + -2.09 + ], + "type": "ToPoint" + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 128, + 161, + 0 + ] + }, + "ccw": true, + "center": [ + -2.478430620978426, + 21.878248822388485 + ], + "from": [ + -3.81, + -2.09 + ], + "tag": null, + "to": [ + 20.4, + 14.61 + ], + "type": "TangentialArcTo" + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 167, + 183, + 0 + ] + }, + "from": [ + 20.4, + 14.61 + ], + "tag": null, + "to": [ + 20.4, + -12.15 + ], + "type": "ToPoint" + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 189, + 259, + 0 + ] + }, + "from": [ + 20.4, + -12.15 + ], + "tag": { + "end": 258, + "start": 252, + "type": "TagDeclarator", + "value": "seg01" + }, + "to": [ + -4.35, + -12.26 + ], + "type": "ToPoint" + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 265, + 272, + 0 + ] + }, + "from": [ + -4.35, + -12.26 + ], + "tag": null, + "to": [ + -4.35, + -12.26 + ], + "type": "ToPoint" + } + ], + "on": { + "type": "plane", + "id": "[uuid]", + "artifactId": "[uuid]", + "value": "XZ", + "origin": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "xAxis": { + "x": 1.0, + "y": 0.0, + "z": 0.0 + }, + "yAxis": { + "x": 0.0, + "y": 0.0, + "z": 1.0 + }, + "zAxis": { + "x": 0.0, + "y": -1.0, + "z": 0.0 + }, + "units": { + "type": "Mm" + }, + "__meta": [] + }, + "start": { + "from": [ + -4.35, + -12.26 + ], + "to": [ + -4.35, + -12.26 + ], + "tag": null, + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 37, + 71, + 0 + ] + } + }, + "tags": { + "seg01": { + "type": "TagIdentifier", + "value": "seg01", + "info": { + "type": "TagEngineInfo", + "id": "[uuid]", + "sketch": "[uuid]", + "path": { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 189, + 259, + 0 + ] + }, + "from": [ + 20.4, + -12.150000000000002 + ], + "tag": { + "end": 258, + "start": 252, + "type": "TagDeclarator", + "value": "seg01" + }, + "to": [ + -4.35, + -12.26 + ], + "type": "ToPoint" + }, + "surface": { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [ + 189, + 259, + 0 + ], + "tag": { + "end": 258, + "start": 252, + "type": "TagDeclarator", + "value": "seg01" + }, + "type": "extrudePlane" + } + }, + "__meta": [ + { + "sourceRange": [ + 252, + 258, + 0 + ] + } + ] + } + }, + "artifactId": "[uuid]", + "originalId": "[uuid]", + "units": { + "type": "Mm" + }, + "__meta": [ + { + "sourceRange": [ + 37, + 71, + 0 + ] + } + ] + }, + "height": 50.0, + "startCapId": "[uuid]", + "endCapId": "[uuid]", + "units": { + "type": "Mm" + }, + "__meta": [ + { + "sourceRange": [ + 37, + 71, + 0 + ] + } + ] + }, + "units": { + "type": "Mm" + }, + "__meta": [ + { + "sourceRange": [ + 332, + 364, + 0 + ] + } + ] + }, + "start": { + "from": [ + -0.6800000000000002, + 47.7 + ], + "to": [ + -0.6800000000000002, + 47.7 + ], + "tag": null, + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 370, + 421, + 0 + ] + } + }, + "artifactId": "[uuid]", + "originalId": "[uuid]", + "units": { + "type": "Mm" + }, + "__meta": [ + { + "sourceRange": [ + 370, + 421, + 0 + ] + } + ] + }, + "height": -40.0, + "startCapId": null, + "endCapId": null, + "units": { + "type": "Mm" + }, + "__meta": [ + { + "sourceRange": [ + 370, + 421, + 0 + ] + } + ] + }, + { + "type": "Solid", + "id": "[uuid]", + "artifactId": "[uuid]", + "value": [ + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [ + 370, + 421, + 0 + ], + "tag": null, + "type": "extrudeArc" + } + ], + "sketch": { + "type": "Sketch", + "id": "[uuid]", + "paths": [ + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 370, + 421, + 0 + ] + }, + "ccw": true, + "center": [ + -2.08, + 47.7 + ], + "from": [ + -0.68, + 47.7 + ], + "radius": 1.4, + "tag": null, + "to": [ + -0.68, + 47.7 + ], + "type": "Circle" + } + ], + "on": { + "type": "face", + "id": "[uuid]", + "artifactId": "[uuid]", + "value": "seg01", + "xAxis": { + "x": 1.0, + "y": 0.0, + "z": 0.0 + }, + "yAxis": { + "x": 0.0, + "y": 0.0, + "z": 1.0 + }, + "zAxis": { + "x": 0.0, + "y": -1.0, + "z": 0.0 + }, + "solid": { + "type": "Solid", + "id": "[uuid]", + "artifactId": "[uuid]", + "value": [ + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [ + 77, + 91, + 0 + ], + "tag": null, + "type": "extrudePlane" + }, + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [ + 97, + 122, + 0 + ], + "tag": null, + "type": "extrudePlane" + }, + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [ + 128, + 161, + 0 + ], + "tag": null, + "type": "extrudeArc" + }, + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [ + 167, + 183, + 0 + ], + "tag": null, + "type": "extrudePlane" + }, + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [ + 189, + 259, + 0 + ], + "tag": { + "end": 258, + "start": 252, + "type": "TagDeclarator", + "value": "seg01" + }, + "type": "extrudePlane" + } + ], + "sketch": { + "type": "Sketch", + "id": "[uuid]", + "paths": [ + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 77, + 91, + 0 + ] + }, + "from": [ + -4.35, + -12.26 + ], + "tag": null, + "to": [ + -4.35, + -2.06 + ], + "type": "ToPoint" + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 97, + 122, + 0 + ] + }, + "from": [ + -4.35, + -2.06 + ], + "tag": null, + "to": [ + -3.81, + -2.09 + ], + "type": "ToPoint" + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 128, + 161, + 0 + ] + }, + "ccw": true, + "center": [ + -2.478430620978426, + 21.878248822388485 + ], + "from": [ + -3.81, + -2.09 + ], + "tag": null, + "to": [ + 20.4, + 14.61 + ], + "type": "TangentialArcTo" + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 167, + 183, + 0 + ] + }, + "from": [ + 20.4, + 14.61 + ], + "tag": null, + "to": [ + 20.4, + -12.15 + ], + "type": "ToPoint" + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 189, + 259, + 0 + ] + }, + "from": [ + 20.4, + -12.15 + ], + "tag": { + "end": 258, + "start": 252, + "type": "TagDeclarator", + "value": "seg01" + }, + "to": [ + -4.35, + -12.26 + ], + "type": "ToPoint" + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 265, + 272, + 0 + ] + }, + "from": [ + -4.35, + -12.26 + ], + "tag": null, + "to": [ + -4.35, + -12.26 + ], + "type": "ToPoint" + } + ], + "on": { + "type": "plane", + "id": "[uuid]", + "artifactId": "[uuid]", + "value": "XZ", + "origin": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "xAxis": { + "x": 1.0, + "y": 0.0, + "z": 0.0 + }, + "yAxis": { + "x": 0.0, + "y": 0.0, + "z": 1.0 + }, + "zAxis": { + "x": 0.0, + "y": -1.0, + "z": 0.0 + }, + "units": { + "type": "Mm" + }, + "__meta": [] + }, + "start": { + "from": [ + -4.35, + -12.26 + ], + "to": [ + -4.35, + -12.26 + ], + "tag": null, + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 37, + 71, + 0 + ] + } + }, + "tags": { + "seg01": { + "type": "TagIdentifier", + "value": "seg01", + "info": { + "type": "TagEngineInfo", + "id": "[uuid]", + "sketch": "[uuid]", + "path": { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 189, + 259, + 0 + ] + }, + "from": [ + 20.4, + -12.150000000000002 + ], + "tag": { + "end": 258, + "start": 252, + "type": "TagDeclarator", + "value": "seg01" + }, + "to": [ + -4.35, + -12.26 + ], + "type": "ToPoint" + }, + "surface": { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [ + 189, + 259, + 0 + ], + "tag": { + "end": 258, + "start": 252, + "type": "TagDeclarator", + "value": "seg01" + }, + "type": "extrudePlane" + } + }, + "__meta": [ + { + "sourceRange": [ + 252, + 258, + 0 + ] + } + ] + } + }, + "artifactId": "[uuid]", + "originalId": "[uuid]", + "units": { + "type": "Mm" + }, + "__meta": [ + { + "sourceRange": [ + 37, + 71, + 0 + ] + } + ] + }, + "height": 50.0, + "startCapId": "[uuid]", + "endCapId": "[uuid]", + "units": { + "type": "Mm" + }, + "__meta": [ + { + "sourceRange": [ + 37, + 71, + 0 + ] + } + ] + }, + "units": { + "type": "Mm" + }, + "__meta": [ + { + "sourceRange": [ + 332, + 364, + 0 + ] + } + ] + }, + "start": { + "from": [ + -0.6800000000000002, + 47.7 + ], + "to": [ + -0.6800000000000002, + 47.7 + ], + "tag": null, + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 370, + 421, + 0 + ] + } + }, + "artifactId": "[uuid]", + "originalId": "[uuid]", + "units": { + "type": "Mm" + }, + "__meta": [ + { + "sourceRange": [ + 370, + 421, + 0 + ] + } + ] + }, + "height": -40.0, + "startCapId": null, + "endCapId": null, + "units": { + "type": "Mm" + }, + "__meta": [ + { + "sourceRange": [ + 370, + 421, + 0 + ] + } + ] + }, + { + "type": "Solid", + "id": "[uuid]", + "artifactId": "[uuid]", + "value": [ + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [ + 370, + 421, + 0 + ], + "tag": null, + "type": "extrudeArc" + } + ], + "sketch": { + "type": "Sketch", + "id": "[uuid]", + "paths": [ + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 370, + 421, + 0 + ] + }, + "ccw": true, + "center": [ + -2.08, + 47.7 + ], + "from": [ + -0.68, + 47.7 + ], + "radius": 1.4, + "tag": null, + "to": [ + -0.68, + 47.7 + ], + "type": "Circle" + } + ], + "on": { + "type": "face", + "id": "[uuid]", + "artifactId": "[uuid]", + "value": "seg01", + "xAxis": { + "x": 1.0, + "y": 0.0, + "z": 0.0 + }, + "yAxis": { + "x": 0.0, + "y": 0.0, + "z": 1.0 + }, + "zAxis": { + "x": 0.0, + "y": -1.0, + "z": 0.0 + }, + "solid": { + "type": "Solid", + "id": "[uuid]", + "artifactId": "[uuid]", + "value": [ + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [ + 77, + 91, + 0 + ], + "tag": null, + "type": "extrudePlane" + }, + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [ + 97, + 122, + 0 + ], + "tag": null, + "type": "extrudePlane" + }, + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [ + 128, + 161, + 0 + ], + "tag": null, + "type": "extrudeArc" + }, + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [ + 167, + 183, + 0 + ], + "tag": null, + "type": "extrudePlane" + }, + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [ + 189, + 259, + 0 + ], + "tag": { + "end": 258, + "start": 252, + "type": "TagDeclarator", + "value": "seg01" + }, + "type": "extrudePlane" + } + ], + "sketch": { + "type": "Sketch", + "id": "[uuid]", + "paths": [ + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 77, + 91, + 0 + ] + }, + "from": [ + -4.35, + -12.26 + ], + "tag": null, + "to": [ + -4.35, + -2.06 + ], + "type": "ToPoint" + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 97, + 122, + 0 + ] + }, + "from": [ + -4.35, + -2.06 + ], + "tag": null, + "to": [ + -3.81, + -2.09 + ], + "type": "ToPoint" + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 128, + 161, + 0 + ] + }, + "ccw": true, + "center": [ + -2.478430620978426, + 21.878248822388485 + ], + "from": [ + -3.81, + -2.09 + ], + "tag": null, + "to": [ + 20.4, + 14.61 + ], + "type": "TangentialArcTo" + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 167, + 183, + 0 + ] + }, + "from": [ + 20.4, + 14.61 + ], + "tag": null, + "to": [ + 20.4, + -12.15 + ], + "type": "ToPoint" + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 189, + 259, + 0 + ] + }, + "from": [ + 20.4, + -12.15 + ], + "tag": { + "end": 258, + "start": 252, + "type": "TagDeclarator", + "value": "seg01" + }, + "to": [ + -4.35, + -12.26 + ], + "type": "ToPoint" + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 265, + 272, + 0 + ] + }, + "from": [ + -4.35, + -12.26 + ], + "tag": null, + "to": [ + -4.35, + -12.26 + ], + "type": "ToPoint" + } + ], + "on": { + "type": "plane", + "id": "[uuid]", + "artifactId": "[uuid]", + "value": "XZ", + "origin": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "xAxis": { + "x": 1.0, + "y": 0.0, + "z": 0.0 + }, + "yAxis": { + "x": 0.0, + "y": 0.0, + "z": 1.0 + }, + "zAxis": { + "x": 0.0, + "y": -1.0, + "z": 0.0 + }, + "units": { + "type": "Mm" + }, + "__meta": [] + }, + "start": { + "from": [ + -4.35, + -12.26 + ], + "to": [ + -4.35, + -12.26 + ], + "tag": null, + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 37, + 71, + 0 + ] + } + }, + "tags": { + "seg01": { + "type": "TagIdentifier", + "value": "seg01", + "info": { + "type": "TagEngineInfo", + "id": "[uuid]", + "sketch": "[uuid]", + "path": { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 189, + 259, + 0 + ] + }, + "from": [ + 20.4, + -12.150000000000002 + ], + "tag": { + "end": 258, + "start": 252, + "type": "TagDeclarator", + "value": "seg01" + }, + "to": [ + -4.35, + -12.26 + ], + "type": "ToPoint" + }, + "surface": { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [ + 189, + 259, + 0 + ], + "tag": { + "end": 258, + "start": 252, + "type": "TagDeclarator", + "value": "seg01" + }, + "type": "extrudePlane" + } + }, + "__meta": [ + { + "sourceRange": [ + 252, + 258, + 0 + ] + } + ] + } + }, + "artifactId": "[uuid]", + "originalId": "[uuid]", + "units": { + "type": "Mm" + }, + "__meta": [ + { + "sourceRange": [ + 37, + 71, + 0 + ] + } + ] + }, + "height": 50.0, + "startCapId": "[uuid]", + "endCapId": "[uuid]", + "units": { + "type": "Mm" + }, + "__meta": [ + { + "sourceRange": [ + 37, + 71, + 0 + ] + } + ] + }, + "units": { + "type": "Mm" + }, + "__meta": [ + { + "sourceRange": [ + 332, + 364, + 0 + ] + } + ] + }, + "start": { + "from": [ + -0.6800000000000002, + 47.7 + ], + "to": [ + -0.6800000000000002, + 47.7 + ], + "tag": null, + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 370, + 421, + 0 + ] + } + }, + "artifactId": "[uuid]", + "originalId": "[uuid]", + "units": { + "type": "Mm" + }, + "__meta": [ + { + "sourceRange": [ + 370, + 421, + 0 + ] + } + ] + }, + "height": -40.0, + "startCapId": null, + "endCapId": null, + "units": { + "type": "Mm" + }, + "__meta": [ + { + "sourceRange": [ + 370, + 421, + 0 + ] + } + ] + }, + { + "type": "Solid", + "id": "[uuid]", + "artifactId": "[uuid]", + "value": [ + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [ + 370, + 421, + 0 + ], + "tag": null, + "type": "extrudeArc" + } + ], + "sketch": { + "type": "Sketch", + "id": "[uuid]", + "paths": [ + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 370, + 421, + 0 + ] + }, + "ccw": true, + "center": [ + -2.08, + 47.7 + ], + "from": [ + -0.68, + 47.7 + ], + "radius": 1.4, + "tag": null, + "to": [ + -0.68, + 47.7 + ], + "type": "Circle" + } + ], + "on": { + "type": "face", + "id": "[uuid]", + "artifactId": "[uuid]", + "value": "seg01", + "xAxis": { + "x": 1.0, + "y": 0.0, + "z": 0.0 + }, + "yAxis": { + "x": 0.0, + "y": 0.0, + "z": 1.0 + }, + "zAxis": { + "x": 0.0, + "y": -1.0, + "z": 0.0 + }, + "solid": { + "type": "Solid", + "id": "[uuid]", + "artifactId": "[uuid]", + "value": [ + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [ + 77, + 91, + 0 + ], + "tag": null, + "type": "extrudePlane" + }, + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [ + 97, + 122, + 0 + ], + "tag": null, + "type": "extrudePlane" + }, + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [ + 128, + 161, + 0 + ], + "tag": null, + "type": "extrudeArc" + }, + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [ + 167, + 183, + 0 + ], + "tag": null, + "type": "extrudePlane" + }, + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [ + 189, + 259, + 0 + ], + "tag": { + "end": 258, + "start": 252, + "type": "TagDeclarator", + "value": "seg01" + }, + "type": "extrudePlane" + } + ], + "sketch": { + "type": "Sketch", + "id": "[uuid]", + "paths": [ + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 77, + 91, + 0 + ] + }, + "from": [ + -4.35, + -12.26 + ], + "tag": null, + "to": [ + -4.35, + -2.06 + ], + "type": "ToPoint" + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 97, + 122, + 0 + ] + }, + "from": [ + -4.35, + -2.06 + ], + "tag": null, + "to": [ + -3.81, + -2.09 + ], + "type": "ToPoint" + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 128, + 161, + 0 + ] + }, + "ccw": true, + "center": [ + -2.478430620978426, + 21.878248822388485 + ], + "from": [ + -3.81, + -2.09 + ], + "tag": null, + "to": [ + 20.4, + 14.61 + ], + "type": "TangentialArcTo" + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 167, + 183, + 0 + ] + }, + "from": [ + 20.4, + 14.61 + ], + "tag": null, + "to": [ + 20.4, + -12.15 + ], + "type": "ToPoint" + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 189, + 259, + 0 + ] + }, + "from": [ + 20.4, + -12.15 + ], + "tag": { + "end": 258, + "start": 252, + "type": "TagDeclarator", + "value": "seg01" + }, + "to": [ + -4.35, + -12.26 + ], + "type": "ToPoint" + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 265, + 272, + 0 + ] + }, + "from": [ + -4.35, + -12.26 + ], + "tag": null, + "to": [ + -4.35, + -12.26 + ], + "type": "ToPoint" + } + ], + "on": { + "type": "plane", + "id": "[uuid]", + "artifactId": "[uuid]", + "value": "XZ", + "origin": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "xAxis": { + "x": 1.0, + "y": 0.0, + "z": 0.0 + }, + "yAxis": { + "x": 0.0, + "y": 0.0, + "z": 1.0 + }, + "zAxis": { + "x": 0.0, + "y": -1.0, + "z": 0.0 + }, + "units": { + "type": "Mm" + }, + "__meta": [] + }, + "start": { + "from": [ + -4.35, + -12.26 + ], + "to": [ + -4.35, + -12.26 + ], + "tag": null, + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 37, + 71, + 0 + ] + } + }, + "tags": { + "seg01": { + "type": "TagIdentifier", + "value": "seg01", + "info": { + "type": "TagEngineInfo", + "id": "[uuid]", + "sketch": "[uuid]", + "path": { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 189, + 259, + 0 + ] + }, + "from": [ + 20.4, + -12.150000000000002 + ], + "tag": { + "end": 258, + "start": 252, + "type": "TagDeclarator", + "value": "seg01" + }, + "to": [ + -4.35, + -12.26 + ], + "type": "ToPoint" + }, + "surface": { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [ + 189, + 259, + 0 + ], + "tag": { + "end": 258, + "start": 252, + "type": "TagDeclarator", + "value": "seg01" + }, + "type": "extrudePlane" + } + }, + "__meta": [ + { + "sourceRange": [ + 252, + 258, + 0 + ] + } + ] + } + }, + "artifactId": "[uuid]", + "originalId": "[uuid]", + "units": { + "type": "Mm" + }, + "__meta": [ + { + "sourceRange": [ + 37, + 71, + 0 + ] + } + ] + }, + "height": 50.0, + "startCapId": "[uuid]", + "endCapId": "[uuid]", + "units": { + "type": "Mm" + }, + "__meta": [ + { + "sourceRange": [ + 37, + 71, + 0 + ] + } + ] + }, + "units": { + "type": "Mm" + }, + "__meta": [ + { + "sourceRange": [ + 332, + 364, + 0 + ] + } + ] + }, + "start": { + "from": [ + -0.6800000000000002, + 47.7 + ], + "to": [ + -0.6800000000000002, + 47.7 + ], + "tag": null, + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 370, + 421, + 0 + ] + } + }, + "artifactId": "[uuid]", + "originalId": "[uuid]", + "units": { + "type": "Mm" + }, + "__meta": [ + { + "sourceRange": [ + 370, + 421, + 0 + ] + } + ] + }, + "height": -40.0, + "startCapId": null, + "endCapId": null, + "units": { + "type": "Mm" + }, + "__meta": [ + { + "sourceRange": [ + 370, + 421, + 0 + ] + } + ] + }, + { + "type": "Solid", + "id": "[uuid]", + "artifactId": "[uuid]", + "value": [ + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [ + 370, + 421, + 0 + ], + "tag": null, + "type": "extrudeArc" + } + ], + "sketch": { + "type": "Sketch", + "id": "[uuid]", + "paths": [ + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 370, + 421, + 0 + ] + }, + "ccw": true, + "center": [ + -2.08, + 47.7 + ], + "from": [ + -0.68, + 47.7 + ], + "radius": 1.4, + "tag": null, + "to": [ + -0.68, + 47.7 + ], + "type": "Circle" + } + ], + "on": { + "type": "face", + "id": "[uuid]", + "artifactId": "[uuid]", + "value": "seg01", + "xAxis": { + "x": 1.0, + "y": 0.0, + "z": 0.0 + }, + "yAxis": { + "x": 0.0, + "y": 0.0, + "z": 1.0 + }, + "zAxis": { + "x": 0.0, + "y": -1.0, + "z": 0.0 + }, + "solid": { + "type": "Solid", + "id": "[uuid]", + "artifactId": "[uuid]", + "value": [ + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [ + 77, + 91, + 0 + ], + "tag": null, + "type": "extrudePlane" + }, + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [ + 97, + 122, + 0 + ], + "tag": null, + "type": "extrudePlane" + }, + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [ + 128, + 161, + 0 + ], + "tag": null, + "type": "extrudeArc" + }, + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [ + 167, + 183, + 0 + ], + "tag": null, + "type": "extrudePlane" + }, + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [ + 189, + 259, + 0 + ], + "tag": { + "end": 258, + "start": 252, + "type": "TagDeclarator", + "value": "seg01" + }, + "type": "extrudePlane" + } + ], + "sketch": { + "type": "Sketch", + "id": "[uuid]", + "paths": [ + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 77, + 91, + 0 + ] + }, + "from": [ + -4.35, + -12.26 + ], + "tag": null, + "to": [ + -4.35, + -2.06 + ], + "type": "ToPoint" + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 97, + 122, + 0 + ] + }, + "from": [ + -4.35, + -2.06 + ], + "tag": null, + "to": [ + -3.81, + -2.09 + ], + "type": "ToPoint" + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 128, + 161, + 0 + ] + }, + "ccw": true, + "center": [ + -2.478430620978426, + 21.878248822388485 + ], + "from": [ + -3.81, + -2.09 + ], + "tag": null, + "to": [ + 20.4, + 14.61 + ], + "type": "TangentialArcTo" + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 167, + 183, + 0 + ] + }, + "from": [ + 20.4, + 14.61 + ], + "tag": null, + "to": [ + 20.4, + -12.15 + ], + "type": "ToPoint" + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 189, + 259, + 0 + ] + }, + "from": [ + 20.4, + -12.15 + ], + "tag": { + "end": 258, + "start": 252, + "type": "TagDeclarator", + "value": "seg01" + }, + "to": [ + -4.35, + -12.26 + ], + "type": "ToPoint" + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 265, + 272, + 0 + ] + }, + "from": [ + -4.35, + -12.26 + ], + "tag": null, + "to": [ + -4.35, + -12.26 + ], + "type": "ToPoint" + } + ], + "on": { + "type": "plane", + "id": "[uuid]", + "artifactId": "[uuid]", + "value": "XZ", + "origin": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "xAxis": { + "x": 1.0, + "y": 0.0, + "z": 0.0 + }, + "yAxis": { + "x": 0.0, + "y": 0.0, + "z": 1.0 + }, + "zAxis": { + "x": 0.0, + "y": -1.0, + "z": 0.0 + }, + "units": { + "type": "Mm" + }, + "__meta": [] + }, + "start": { + "from": [ + -4.35, + -12.26 + ], + "to": [ + -4.35, + -12.26 + ], + "tag": null, + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 37, + 71, + 0 + ] + } + }, + "tags": { + "seg01": { + "type": "TagIdentifier", + "value": "seg01", + "info": { + "type": "TagEngineInfo", + "id": "[uuid]", + "sketch": "[uuid]", + "path": { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 189, + 259, + 0 + ] + }, + "from": [ + 20.4, + -12.150000000000002 + ], + "tag": { + "end": 258, + "start": 252, + "type": "TagDeclarator", + "value": "seg01" + }, + "to": [ + -4.35, + -12.26 + ], + "type": "ToPoint" + }, + "surface": { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [ + 189, + 259, + 0 + ], + "tag": { + "end": 258, + "start": 252, + "type": "TagDeclarator", + "value": "seg01" + }, + "type": "extrudePlane" + } + }, + "__meta": [ + { + "sourceRange": [ + 252, + 258, + 0 + ] + } + ] + } + }, + "artifactId": "[uuid]", + "originalId": "[uuid]", + "units": { + "type": "Mm" + }, + "__meta": [ + { + "sourceRange": [ + 37, + 71, + 0 + ] + } + ] + }, + "height": 50.0, + "startCapId": "[uuid]", + "endCapId": "[uuid]", + "units": { + "type": "Mm" + }, + "__meta": [ + { + "sourceRange": [ + 37, + 71, + 0 + ] + } + ] + }, + "units": { + "type": "Mm" + }, + "__meta": [ + { + "sourceRange": [ + 332, + 364, + 0 + ] + } + ] + }, + "start": { + "from": [ + -0.6800000000000002, + 47.7 + ], + "to": [ + -0.6800000000000002, + 47.7 + ], + "tag": null, + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 370, + 421, + 0 + ] + } + }, + "artifactId": "[uuid]", + "originalId": "[uuid]", + "units": { + "type": "Mm" + }, + "__meta": [ + { + "sourceRange": [ + 370, + 421, + 0 + ] + } + ] + }, + "height": -40.0, + "startCapId": null, + "endCapId": null, + "units": { + "type": "Mm" + }, + "__meta": [ + { + "sourceRange": [ + 370, + 421, + 0 + ] + } + ] + }, + { + "type": "Solid", + "id": "[uuid]", + "artifactId": "[uuid]", + "value": [ + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [ + 370, + 421, + 0 + ], + "tag": null, + "type": "extrudeArc" + } + ], + "sketch": { + "type": "Sketch", + "id": "[uuid]", + "paths": [ + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 370, + 421, + 0 + ] + }, + "ccw": true, + "center": [ + -2.08, + 47.7 + ], + "from": [ + -0.68, + 47.7 + ], + "radius": 1.4, + "tag": null, + "to": [ + -0.68, + 47.7 + ], + "type": "Circle" + } + ], + "on": { + "type": "face", + "id": "[uuid]", + "artifactId": "[uuid]", + "value": "seg01", + "xAxis": { + "x": 1.0, + "y": 0.0, + "z": 0.0 + }, + "yAxis": { + "x": 0.0, + "y": 0.0, + "z": 1.0 + }, + "zAxis": { + "x": 0.0, + "y": -1.0, + "z": 0.0 + }, + "solid": { + "type": "Solid", + "id": "[uuid]", + "artifactId": "[uuid]", + "value": [ + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [ + 77, + 91, + 0 + ], + "tag": null, + "type": "extrudePlane" + }, + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [ + 97, + 122, + 0 + ], + "tag": null, + "type": "extrudePlane" + }, + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [ + 128, + 161, + 0 + ], + "tag": null, + "type": "extrudeArc" + }, + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [ + 167, + 183, + 0 + ], + "tag": null, + "type": "extrudePlane" + }, + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [ + 189, + 259, + 0 + ], + "tag": { + "end": 258, + "start": 252, + "type": "TagDeclarator", + "value": "seg01" + }, + "type": "extrudePlane" + } + ], + "sketch": { + "type": "Sketch", + "id": "[uuid]", + "paths": [ + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 77, + 91, + 0 + ] + }, + "from": [ + -4.35, + -12.26 + ], + "tag": null, + "to": [ + -4.35, + -2.06 + ], + "type": "ToPoint" + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 97, + 122, + 0 + ] + }, + "from": [ + -4.35, + -2.06 + ], + "tag": null, + "to": [ + -3.81, + -2.09 + ], + "type": "ToPoint" + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 128, + 161, + 0 + ] + }, + "ccw": true, + "center": [ + -2.478430620978426, + 21.878248822388485 + ], + "from": [ + -3.81, + -2.09 + ], + "tag": null, + "to": [ + 20.4, + 14.61 + ], + "type": "TangentialArcTo" + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 167, + 183, + 0 + ] + }, + "from": [ + 20.4, + 14.61 + ], + "tag": null, + "to": [ + 20.4, + -12.15 + ], + "type": "ToPoint" + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 189, + 259, + 0 + ] + }, + "from": [ + 20.4, + -12.15 + ], + "tag": { + "end": 258, + "start": 252, + "type": "TagDeclarator", + "value": "seg01" + }, + "to": [ + -4.35, + -12.26 + ], + "type": "ToPoint" + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 265, + 272, + 0 + ] + }, + "from": [ + -4.35, + -12.26 + ], + "tag": null, + "to": [ + -4.35, + -12.26 + ], + "type": "ToPoint" + } + ], + "on": { + "type": "plane", + "id": "[uuid]", + "artifactId": "[uuid]", + "value": "XZ", + "origin": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "xAxis": { + "x": 1.0, + "y": 0.0, + "z": 0.0 + }, + "yAxis": { + "x": 0.0, + "y": 0.0, + "z": 1.0 + }, + "zAxis": { + "x": 0.0, + "y": -1.0, + "z": 0.0 + }, + "units": { + "type": "Mm" + }, + "__meta": [] + }, + "start": { + "from": [ + -4.35, + -12.26 + ], + "to": [ + -4.35, + -12.26 + ], + "tag": null, + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 37, + 71, + 0 + ] + } + }, + "tags": { + "seg01": { + "type": "TagIdentifier", + "value": "seg01", + "info": { + "type": "TagEngineInfo", + "id": "[uuid]", + "sketch": "[uuid]", + "path": { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 189, + 259, + 0 + ] + }, + "from": [ + 20.4, + -12.150000000000002 + ], + "tag": { + "end": 258, + "start": 252, + "type": "TagDeclarator", + "value": "seg01" + }, + "to": [ + -4.35, + -12.26 + ], + "type": "ToPoint" + }, + "surface": { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [ + 189, + 259, + 0 + ], + "tag": { + "end": 258, + "start": 252, + "type": "TagDeclarator", + "value": "seg01" + }, + "type": "extrudePlane" + } + }, + "__meta": [ + { + "sourceRange": [ + 252, + 258, + 0 + ] + } + ] + } + }, + "artifactId": "[uuid]", + "originalId": "[uuid]", + "units": { + "type": "Mm" + }, + "__meta": [ + { + "sourceRange": [ + 37, + 71, + 0 + ] + } + ] + }, + "height": 50.0, + "startCapId": "[uuid]", + "endCapId": "[uuid]", + "units": { + "type": "Mm" + }, + "__meta": [ + { + "sourceRange": [ + 37, + 71, + 0 + ] + } + ] + }, + "units": { + "type": "Mm" + }, + "__meta": [ + { + "sourceRange": [ + 332, + 364, + 0 + ] + } + ] + }, + "start": { + "from": [ + -0.6800000000000002, + 47.7 + ], + "to": [ + -0.6800000000000002, + 47.7 + ], + "tag": null, + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 370, + 421, + 0 + ] + } + }, + "artifactId": "[uuid]", + "originalId": "[uuid]", + "units": { + "type": "Mm" + }, + "__meta": [ + { + "sourceRange": [ + 370, + 421, + 0 + ] + } + ] + }, + "height": -40.0, + "startCapId": null, + "endCapId": null, + "units": { + "type": "Mm" + }, + "__meta": [ + { + "sourceRange": [ + 370, + 421, + 0 + ] + } + ] + }, + { + "type": "Solid", + "id": "[uuid]", + "artifactId": "[uuid]", + "value": [ + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [ + 370, + 421, + 0 + ], + "tag": null, + "type": "extrudeArc" + } + ], + "sketch": { + "type": "Sketch", + "id": "[uuid]", + "paths": [ + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 370, + 421, + 0 + ] + }, + "ccw": true, + "center": [ + -2.08, + 47.7 + ], + "from": [ + -0.68, + 47.7 + ], + "radius": 1.4, + "tag": null, + "to": [ + -0.68, + 47.7 + ], + "type": "Circle" + } + ], + "on": { + "type": "face", + "id": "[uuid]", + "artifactId": "[uuid]", + "value": "seg01", + "xAxis": { + "x": 1.0, + "y": 0.0, + "z": 0.0 + }, + "yAxis": { + "x": 0.0, + "y": 0.0, + "z": 1.0 + }, + "zAxis": { + "x": 0.0, + "y": -1.0, + "z": 0.0 + }, + "solid": { + "type": "Solid", + "id": "[uuid]", + "artifactId": "[uuid]", + "value": [ + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [ + 77, + 91, + 0 + ], + "tag": null, + "type": "extrudePlane" + }, + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [ + 97, + 122, + 0 + ], + "tag": null, + "type": "extrudePlane" + }, + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [ + 128, + 161, + 0 + ], + "tag": null, + "type": "extrudeArc" + }, + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [ + 167, + 183, + 0 + ], + "tag": null, + "type": "extrudePlane" + }, + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [ + 189, + 259, + 0 + ], + "tag": { + "end": 258, + "start": 252, + "type": "TagDeclarator", + "value": "seg01" + }, + "type": "extrudePlane" + } + ], + "sketch": { + "type": "Sketch", + "id": "[uuid]", + "paths": [ + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 77, + 91, + 0 + ] + }, + "from": [ + -4.35, + -12.26 + ], + "tag": null, + "to": [ + -4.35, + -2.06 + ], + "type": "ToPoint" + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 97, + 122, + 0 + ] + }, + "from": [ + -4.35, + -2.06 + ], + "tag": null, + "to": [ + -3.81, + -2.09 + ], + "type": "ToPoint" + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 128, + 161, + 0 + ] + }, + "ccw": true, + "center": [ + -2.478430620978426, + 21.878248822388485 + ], + "from": [ + -3.81, + -2.09 + ], + "tag": null, + "to": [ + 20.4, + 14.61 + ], + "type": "TangentialArcTo" + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 167, + 183, + 0 + ] + }, + "from": [ + 20.4, + 14.61 + ], + "tag": null, + "to": [ + 20.4, + -12.15 + ], + "type": "ToPoint" + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 189, + 259, + 0 + ] + }, + "from": [ + 20.4, + -12.15 + ], + "tag": { + "end": 258, + "start": 252, + "type": "TagDeclarator", + "value": "seg01" + }, + "to": [ + -4.35, + -12.26 + ], + "type": "ToPoint" + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 265, + 272, + 0 + ] + }, + "from": [ + -4.35, + -12.26 + ], + "tag": null, + "to": [ + -4.35, + -12.26 + ], + "type": "ToPoint" + } + ], + "on": { + "type": "plane", + "id": "[uuid]", + "artifactId": "[uuid]", + "value": "XZ", + "origin": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "xAxis": { + "x": 1.0, + "y": 0.0, + "z": 0.0 + }, + "yAxis": { + "x": 0.0, + "y": 0.0, + "z": 1.0 + }, + "zAxis": { + "x": 0.0, + "y": -1.0, + "z": 0.0 + }, + "units": { + "type": "Mm" + }, + "__meta": [] + }, + "start": { + "from": [ + -4.35, + -12.26 + ], + "to": [ + -4.35, + -12.26 + ], + "tag": null, + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 37, + 71, + 0 + ] + } + }, + "tags": { + "seg01": { + "type": "TagIdentifier", + "value": "seg01", + "info": { + "type": "TagEngineInfo", + "id": "[uuid]", + "sketch": "[uuid]", + "path": { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 189, + 259, + 0 + ] + }, + "from": [ + 20.4, + -12.150000000000002 + ], + "tag": { + "end": 258, + "start": 252, + "type": "TagDeclarator", + "value": "seg01" + }, + "to": [ + -4.35, + -12.26 + ], + "type": "ToPoint" + }, + "surface": { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [ + 189, + 259, + 0 + ], + "tag": { + "end": 258, + "start": 252, + "type": "TagDeclarator", + "value": "seg01" + }, + "type": "extrudePlane" + } + }, + "__meta": [ + { + "sourceRange": [ + 252, + 258, + 0 + ] + } + ] + } + }, + "artifactId": "[uuid]", + "originalId": "[uuid]", + "units": { + "type": "Mm" + }, + "__meta": [ + { + "sourceRange": [ + 37, + 71, + 0 + ] + } + ] + }, + "height": 50.0, + "startCapId": "[uuid]", + "endCapId": "[uuid]", + "units": { + "type": "Mm" + }, + "__meta": [ + { + "sourceRange": [ + 37, + 71, + 0 + ] + } + ] + }, + "units": { + "type": "Mm" + }, + "__meta": [ + { + "sourceRange": [ + 332, + 364, + 0 + ] + } + ] + }, + "start": { + "from": [ + -0.6800000000000002, + 47.7 + ], + "to": [ + -0.6800000000000002, + 47.7 + ], + "tag": null, + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 370, + 421, + 0 + ] + } + }, + "artifactId": "[uuid]", + "originalId": "[uuid]", + "units": { + "type": "Mm" + }, + "__meta": [ + { + "sourceRange": [ + 370, + 421, + 0 + ] + } + ] + }, + "height": -40.0, + "startCapId": null, + "endCapId": null, + "units": { + "type": "Mm" + }, + "__meta": [ + { + "sourceRange": [ + 370, + 421, + 0 + ] + } + ] + }, + { + "type": "Solid", + "id": "[uuid]", + "artifactId": "[uuid]", + "value": [ + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [ + 370, + 421, + 0 + ], + "tag": null, + "type": "extrudeArc" + } + ], + "sketch": { + "type": "Sketch", + "id": "[uuid]", + "paths": [ + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 370, + 421, + 0 + ] + }, + "ccw": true, + "center": [ + -2.08, + 47.7 + ], + "from": [ + -0.68, + 47.7 + ], + "radius": 1.4, + "tag": null, + "to": [ + -0.68, + 47.7 + ], + "type": "Circle" + } + ], + "on": { + "type": "face", + "id": "[uuid]", + "artifactId": "[uuid]", + "value": "seg01", + "xAxis": { + "x": 1.0, + "y": 0.0, + "z": 0.0 + }, + "yAxis": { + "x": 0.0, + "y": 0.0, + "z": 1.0 + }, + "zAxis": { + "x": 0.0, + "y": -1.0, + "z": 0.0 + }, + "solid": { + "type": "Solid", + "id": "[uuid]", + "artifactId": "[uuid]", + "value": [ + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [ + 77, + 91, + 0 + ], + "tag": null, + "type": "extrudePlane" + }, + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [ + 97, + 122, + 0 + ], + "tag": null, + "type": "extrudePlane" + }, + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [ + 128, + 161, + 0 + ], + "tag": null, + "type": "extrudeArc" + }, + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [ + 167, + 183, + 0 + ], + "tag": null, + "type": "extrudePlane" + }, + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [ + 189, + 259, + 0 + ], + "tag": { + "end": 258, + "start": 252, + "type": "TagDeclarator", + "value": "seg01" + }, + "type": "extrudePlane" + } + ], + "sketch": { + "type": "Sketch", + "id": "[uuid]", + "paths": [ + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 77, + 91, + 0 + ] + }, + "from": [ + -4.35, + -12.26 + ], + "tag": null, + "to": [ + -4.35, + -2.06 + ], + "type": "ToPoint" + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 97, + 122, + 0 + ] + }, + "from": [ + -4.35, + -2.06 + ], + "tag": null, + "to": [ + -3.81, + -2.09 + ], + "type": "ToPoint" + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 128, + 161, + 0 + ] + }, + "ccw": true, + "center": [ + -2.478430620978426, + 21.878248822388485 + ], + "from": [ + -3.81, + -2.09 + ], + "tag": null, + "to": [ + 20.4, + 14.61 + ], + "type": "TangentialArcTo" + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 167, + 183, + 0 + ] + }, + "from": [ + 20.4, + 14.61 + ], + "tag": null, + "to": [ + 20.4, + -12.15 + ], + "type": "ToPoint" + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 189, + 259, + 0 + ] + }, + "from": [ + 20.4, + -12.15 + ], + "tag": { + "end": 258, + "start": 252, + "type": "TagDeclarator", + "value": "seg01" + }, + "to": [ + -4.35, + -12.26 + ], + "type": "ToPoint" + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 265, + 272, + 0 + ] + }, + "from": [ + -4.35, + -12.26 + ], + "tag": null, + "to": [ + -4.35, + -12.26 + ], + "type": "ToPoint" + } + ], + "on": { + "type": "plane", + "id": "[uuid]", + "artifactId": "[uuid]", + "value": "XZ", + "origin": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "xAxis": { + "x": 1.0, + "y": 0.0, + "z": 0.0 + }, + "yAxis": { + "x": 0.0, + "y": 0.0, + "z": 1.0 + }, + "zAxis": { + "x": 0.0, + "y": -1.0, + "z": 0.0 + }, + "units": { + "type": "Mm" + }, + "__meta": [] + }, + "start": { + "from": [ + -4.35, + -12.26 + ], + "to": [ + -4.35, + -12.26 + ], + "tag": null, + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 37, + 71, + 0 + ] + } + }, + "tags": { + "seg01": { + "type": "TagIdentifier", + "value": "seg01", + "info": { + "type": "TagEngineInfo", + "id": "[uuid]", + "sketch": "[uuid]", + "path": { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 189, + 259, + 0 + ] + }, + "from": [ + 20.4, + -12.150000000000002 + ], + "tag": { + "end": 258, + "start": 252, + "type": "TagDeclarator", + "value": "seg01" + }, + "to": [ + -4.35, + -12.26 + ], + "type": "ToPoint" + }, + "surface": { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [ + 189, + 259, + 0 + ], + "tag": { + "end": 258, + "start": 252, + "type": "TagDeclarator", + "value": "seg01" + }, + "type": "extrudePlane" + } + }, + "__meta": [ + { + "sourceRange": [ + 252, + 258, + 0 + ] + } + ] + } + }, + "artifactId": "[uuid]", + "originalId": "[uuid]", + "units": { + "type": "Mm" + }, + "__meta": [ + { + "sourceRange": [ + 37, + 71, + 0 + ] + } + ] + }, + "height": 50.0, + "startCapId": "[uuid]", + "endCapId": "[uuid]", + "units": { + "type": "Mm" + }, + "__meta": [ + { + "sourceRange": [ + 37, + 71, + 0 + ] + } + ] + }, + "units": { + "type": "Mm" + }, + "__meta": [ + { + "sourceRange": [ + 332, + 364, + 0 + ] + } + ] + }, + "start": { + "from": [ + -0.6800000000000002, + 47.7 + ], + "to": [ + -0.6800000000000002, + 47.7 + ], + "tag": null, + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 370, + 421, + 0 + ] + } + }, + "artifactId": "[uuid]", + "originalId": "[uuid]", + "units": { + "type": "Mm" + }, + "__meta": [ + { + "sourceRange": [ + 370, + 421, + 0 + ] + } + ] + }, + "height": -40.0, + "startCapId": null, + "endCapId": null, + "units": { + "type": "Mm" + }, + "__meta": [ + { + "sourceRange": [ + 370, + 421, + 0 + ] + } + ] + }, + { + "type": "Solid", + "id": "[uuid]", + "artifactId": "[uuid]", + "value": [ + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [ + 370, + 421, + 0 + ], + "tag": null, + "type": "extrudeArc" + } + ], + "sketch": { + "type": "Sketch", + "id": "[uuid]", + "paths": [ + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 370, + 421, + 0 + ] + }, + "ccw": true, + "center": [ + -2.08, + 47.7 + ], + "from": [ + -0.68, + 47.7 + ], + "radius": 1.4, + "tag": null, + "to": [ + -0.68, + 47.7 + ], + "type": "Circle" + } + ], + "on": { + "type": "face", + "id": "[uuid]", + "artifactId": "[uuid]", + "value": "seg01", + "xAxis": { + "x": 1.0, + "y": 0.0, + "z": 0.0 + }, + "yAxis": { + "x": 0.0, + "y": 0.0, + "z": 1.0 + }, + "zAxis": { + "x": 0.0, + "y": -1.0, + "z": 0.0 + }, + "solid": { + "type": "Solid", + "id": "[uuid]", + "artifactId": "[uuid]", + "value": [ + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [ + 77, + 91, + 0 + ], + "tag": null, + "type": "extrudePlane" + }, + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [ + 97, + 122, + 0 + ], + "tag": null, + "type": "extrudePlane" + }, + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [ + 128, + 161, + 0 + ], + "tag": null, + "type": "extrudeArc" + }, + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [ + 167, + 183, + 0 + ], + "tag": null, + "type": "extrudePlane" + }, + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [ + 189, + 259, + 0 + ], + "tag": { + "end": 258, + "start": 252, + "type": "TagDeclarator", + "value": "seg01" + }, + "type": "extrudePlane" + } + ], + "sketch": { + "type": "Sketch", + "id": "[uuid]", + "paths": [ + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 77, + 91, + 0 + ] + }, + "from": [ + -4.35, + -12.26 + ], + "tag": null, + "to": [ + -4.35, + -2.06 + ], + "type": "ToPoint" + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 97, + 122, + 0 + ] + }, + "from": [ + -4.35, + -2.06 + ], + "tag": null, + "to": [ + -3.81, + -2.09 + ], + "type": "ToPoint" + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 128, + 161, + 0 + ] + }, + "ccw": true, + "center": [ + -2.478430620978426, + 21.878248822388485 + ], + "from": [ + -3.81, + -2.09 + ], + "tag": null, + "to": [ + 20.4, + 14.61 + ], + "type": "TangentialArcTo" + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 167, + 183, + 0 + ] + }, + "from": [ + 20.4, + 14.61 + ], + "tag": null, + "to": [ + 20.4, + -12.15 + ], + "type": "ToPoint" + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 189, + 259, + 0 + ] + }, + "from": [ + 20.4, + -12.15 + ], + "tag": { + "end": 258, + "start": 252, + "type": "TagDeclarator", + "value": "seg01" + }, + "to": [ + -4.35, + -12.26 + ], + "type": "ToPoint" + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 265, + 272, + 0 + ] + }, + "from": [ + -4.35, + -12.26 + ], + "tag": null, + "to": [ + -4.35, + -12.26 + ], + "type": "ToPoint" + } + ], + "on": { + "type": "plane", + "id": "[uuid]", + "artifactId": "[uuid]", + "value": "XZ", + "origin": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "xAxis": { + "x": 1.0, + "y": 0.0, + "z": 0.0 + }, + "yAxis": { + "x": 0.0, + "y": 0.0, + "z": 1.0 + }, + "zAxis": { + "x": 0.0, + "y": -1.0, + "z": 0.0 + }, + "units": { + "type": "Mm" + }, + "__meta": [] + }, + "start": { + "from": [ + -4.35, + -12.26 + ], + "to": [ + -4.35, + -12.26 + ], + "tag": null, + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 37, + 71, + 0 + ] + } + }, + "tags": { + "seg01": { + "type": "TagIdentifier", + "value": "seg01", + "info": { + "type": "TagEngineInfo", + "id": "[uuid]", + "sketch": "[uuid]", + "path": { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 189, + 259, + 0 + ] + }, + "from": [ + 20.4, + -12.150000000000002 + ], + "tag": { + "end": 258, + "start": 252, + "type": "TagDeclarator", + "value": "seg01" + }, + "to": [ + -4.35, + -12.26 + ], + "type": "ToPoint" + }, + "surface": { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [ + 189, + 259, + 0 + ], + "tag": { + "end": 258, + "start": 252, + "type": "TagDeclarator", + "value": "seg01" + }, + "type": "extrudePlane" + } + }, + "__meta": [ + { + "sourceRange": [ + 252, + 258, + 0 + ] + } + ] + } + }, + "artifactId": "[uuid]", + "originalId": "[uuid]", + "units": { + "type": "Mm" + }, + "__meta": [ + { + "sourceRange": [ + 37, + 71, + 0 + ] + } + ] + }, + "height": 50.0, + "startCapId": "[uuid]", + "endCapId": "[uuid]", + "units": { + "type": "Mm" + }, + "__meta": [ + { + "sourceRange": [ + 37, + 71, + 0 + ] + } + ] + }, + "units": { + "type": "Mm" + }, + "__meta": [ + { + "sourceRange": [ + 332, + 364, + 0 + ] + } + ] + }, + "start": { + "from": [ + -0.6800000000000002, + 47.7 + ], + "to": [ + -0.6800000000000002, + 47.7 + ], + "tag": null, + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 370, + 421, + 0 + ] + } + }, + "artifactId": "[uuid]", + "originalId": "[uuid]", + "units": { + "type": "Mm" + }, + "__meta": [ + { + "sourceRange": [ + 370, + 421, + 0 + ] + } + ] + }, + "height": -40.0, + "startCapId": null, + "endCapId": null, + "units": { + "type": "Mm" + }, + "__meta": [ + { + "sourceRange": [ + 370, + 421, + 0 + ] + } + ] + }, + { + "type": "Solid", + "id": "[uuid]", + "artifactId": "[uuid]", + "value": [ + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [ + 370, + 421, + 0 + ], + "tag": null, + "type": "extrudeArc" + } + ], + "sketch": { + "type": "Sketch", + "id": "[uuid]", + "paths": [ + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 370, + 421, + 0 + ] + }, + "ccw": true, + "center": [ + -2.08, + 47.7 + ], + "from": [ + -0.68, + 47.7 + ], + "radius": 1.4, + "tag": null, + "to": [ + -0.68, + 47.7 + ], + "type": "Circle" + } + ], + "on": { + "type": "face", + "id": "[uuid]", + "artifactId": "[uuid]", + "value": "seg01", + "xAxis": { + "x": 1.0, + "y": 0.0, + "z": 0.0 + }, + "yAxis": { + "x": 0.0, + "y": 0.0, + "z": 1.0 + }, + "zAxis": { + "x": 0.0, + "y": -1.0, + "z": 0.0 + }, + "solid": { + "type": "Solid", + "id": "[uuid]", + "artifactId": "[uuid]", + "value": [ + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [ + 77, + 91, + 0 + ], + "tag": null, + "type": "extrudePlane" + }, + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [ + 97, + 122, + 0 + ], + "tag": null, + "type": "extrudePlane" + }, + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [ + 128, + 161, + 0 + ], + "tag": null, + "type": "extrudeArc" + }, + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [ + 167, + 183, + 0 + ], + "tag": null, + "type": "extrudePlane" + }, + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [ + 189, + 259, + 0 + ], + "tag": { + "end": 258, + "start": 252, + "type": "TagDeclarator", + "value": "seg01" + }, + "type": "extrudePlane" + } + ], + "sketch": { + "type": "Sketch", + "id": "[uuid]", + "paths": [ + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 77, + 91, + 0 + ] + }, + "from": [ + -4.35, + -12.26 + ], + "tag": null, + "to": [ + -4.35, + -2.06 + ], + "type": "ToPoint" + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 97, + 122, + 0 + ] + }, + "from": [ + -4.35, + -2.06 + ], + "tag": null, + "to": [ + -3.81, + -2.09 + ], + "type": "ToPoint" + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 128, + 161, + 0 + ] + }, + "ccw": true, + "center": [ + -2.478430620978426, + 21.878248822388485 + ], + "from": [ + -3.81, + -2.09 + ], + "tag": null, + "to": [ + 20.4, + 14.61 + ], + "type": "TangentialArcTo" + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 167, + 183, + 0 + ] + }, + "from": [ + 20.4, + 14.61 + ], + "tag": null, + "to": [ + 20.4, + -12.15 + ], + "type": "ToPoint" + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 189, + 259, + 0 + ] + }, + "from": [ + 20.4, + -12.15 + ], + "tag": { + "end": 258, + "start": 252, + "type": "TagDeclarator", + "value": "seg01" + }, + "to": [ + -4.35, + -12.26 + ], + "type": "ToPoint" + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 265, + 272, + 0 + ] + }, + "from": [ + -4.35, + -12.26 + ], + "tag": null, + "to": [ + -4.35, + -12.26 + ], + "type": "ToPoint" + } + ], + "on": { + "type": "plane", + "id": "[uuid]", + "artifactId": "[uuid]", + "value": "XZ", + "origin": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "xAxis": { + "x": 1.0, + "y": 0.0, + "z": 0.0 + }, + "yAxis": { + "x": 0.0, + "y": 0.0, + "z": 1.0 + }, + "zAxis": { + "x": 0.0, + "y": -1.0, + "z": 0.0 + }, + "units": { + "type": "Mm" + }, + "__meta": [] + }, + "start": { + "from": [ + -4.35, + -12.26 + ], + "to": [ + -4.35, + -12.26 + ], + "tag": null, + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 37, + 71, + 0 + ] + } + }, + "tags": { + "seg01": { + "type": "TagIdentifier", + "value": "seg01", + "info": { + "type": "TagEngineInfo", + "id": "[uuid]", + "sketch": "[uuid]", + "path": { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 189, + 259, + 0 + ] + }, + "from": [ + 20.4, + -12.150000000000002 + ], + "tag": { + "end": 258, + "start": 252, + "type": "TagDeclarator", + "value": "seg01" + }, + "to": [ + -4.35, + -12.26 + ], + "type": "ToPoint" + }, + "surface": { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [ + 189, + 259, + 0 + ], + "tag": { + "end": 258, + "start": 252, + "type": "TagDeclarator", + "value": "seg01" + }, + "type": "extrudePlane" + } + }, + "__meta": [ + { + "sourceRange": [ + 252, + 258, + 0 + ] + } + ] + } + }, + "artifactId": "[uuid]", + "originalId": "[uuid]", + "units": { + "type": "Mm" + }, + "__meta": [ + { + "sourceRange": [ + 37, + 71, + 0 + ] + } + ] + }, + "height": 50.0, + "startCapId": "[uuid]", + "endCapId": "[uuid]", + "units": { + "type": "Mm" + }, + "__meta": [ + { + "sourceRange": [ + 37, + 71, + 0 + ] + } + ] + }, + "units": { + "type": "Mm" + }, + "__meta": [ + { + "sourceRange": [ + 332, + 364, + 0 + ] + } + ] + }, + "start": { + "from": [ + -0.6800000000000002, + 47.7 + ], + "to": [ + -0.6800000000000002, + 47.7 + ], + "tag": null, + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 370, + 421, + 0 + ] + } + }, + "artifactId": "[uuid]", + "originalId": "[uuid]", + "units": { + "type": "Mm" + }, + "__meta": [ + { + "sourceRange": [ + 370, + 421, + 0 + ] + } + ] + }, + "height": -40.0, + "startCapId": null, + "endCapId": null, + "units": { + "type": "Mm" + }, + "__meta": [ + { + "sourceRange": [ + 370, + 421, + 0 + ] + } + ] + }, + { + "type": "Solid", + "id": "[uuid]", + "artifactId": "[uuid]", + "value": [ + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [ + 370, + 421, + 0 + ], + "tag": null, + "type": "extrudeArc" + } + ], + "sketch": { + "type": "Sketch", + "id": "[uuid]", + "paths": [ + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 370, + 421, + 0 + ] + }, + "ccw": true, + "center": [ + -2.08, + 47.7 + ], + "from": [ + -0.68, + 47.7 + ], + "radius": 1.4, + "tag": null, + "to": [ + -0.68, + 47.7 + ], + "type": "Circle" + } + ], + "on": { + "type": "face", + "id": "[uuid]", + "artifactId": "[uuid]", + "value": "seg01", + "xAxis": { + "x": 1.0, + "y": 0.0, + "z": 0.0 + }, + "yAxis": { + "x": 0.0, + "y": 0.0, + "z": 1.0 + }, + "zAxis": { + "x": 0.0, + "y": -1.0, + "z": 0.0 + }, + "solid": { + "type": "Solid", + "id": "[uuid]", + "artifactId": "[uuid]", + "value": [ + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [ + 77, + 91, + 0 + ], + "tag": null, + "type": "extrudePlane" + }, + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [ + 97, + 122, + 0 + ], + "tag": null, + "type": "extrudePlane" + }, + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [ + 128, + 161, + 0 + ], + "tag": null, + "type": "extrudeArc" + }, + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [ + 167, + 183, + 0 + ], + "tag": null, + "type": "extrudePlane" + }, + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [ + 189, + 259, + 0 + ], + "tag": { + "end": 258, + "start": 252, + "type": "TagDeclarator", + "value": "seg01" + }, + "type": "extrudePlane" + } + ], + "sketch": { + "type": "Sketch", + "id": "[uuid]", + "paths": [ + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 77, + 91, + 0 + ] + }, + "from": [ + -4.35, + -12.26 + ], + "tag": null, + "to": [ + -4.35, + -2.06 + ], + "type": "ToPoint" + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 97, + 122, + 0 + ] + }, + "from": [ + -4.35, + -2.06 + ], + "tag": null, + "to": [ + -3.81, + -2.09 + ], + "type": "ToPoint" + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 128, + 161, + 0 + ] + }, + "ccw": true, + "center": [ + -2.478430620978426, + 21.878248822388485 + ], + "from": [ + -3.81, + -2.09 + ], + "tag": null, + "to": [ + 20.4, + 14.61 + ], + "type": "TangentialArcTo" + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 167, + 183, + 0 + ] + }, + "from": [ + 20.4, + 14.61 + ], + "tag": null, + "to": [ + 20.4, + -12.15 + ], + "type": "ToPoint" + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 189, + 259, + 0 + ] + }, + "from": [ + 20.4, + -12.15 + ], + "tag": { + "end": 258, + "start": 252, + "type": "TagDeclarator", + "value": "seg01" + }, + "to": [ + -4.35, + -12.26 + ], + "type": "ToPoint" + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 265, + 272, + 0 + ] + }, + "from": [ + -4.35, + -12.26 + ], + "tag": null, + "to": [ + -4.35, + -12.26 + ], + "type": "ToPoint" + } + ], + "on": { + "type": "plane", + "id": "[uuid]", + "artifactId": "[uuid]", + "value": "XZ", + "origin": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "xAxis": { + "x": 1.0, + "y": 0.0, + "z": 0.0 + }, + "yAxis": { + "x": 0.0, + "y": 0.0, + "z": 1.0 + }, + "zAxis": { + "x": 0.0, + "y": -1.0, + "z": 0.0 + }, + "units": { + "type": "Mm" + }, + "__meta": [] + }, + "start": { + "from": [ + -4.35, + -12.26 + ], + "to": [ + -4.35, + -12.26 + ], + "tag": null, + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 37, + 71, + 0 + ] + } + }, + "tags": { + "seg01": { + "type": "TagIdentifier", + "value": "seg01", + "info": { + "type": "TagEngineInfo", + "id": "[uuid]", + "sketch": "[uuid]", + "path": { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 189, + 259, + 0 + ] + }, + "from": [ + 20.4, + -12.150000000000002 + ], + "tag": { + "end": 258, + "start": 252, + "type": "TagDeclarator", + "value": "seg01" + }, + "to": [ + -4.35, + -12.26 + ], + "type": "ToPoint" + }, + "surface": { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [ + 189, + 259, + 0 + ], + "tag": { + "end": 258, + "start": 252, + "type": "TagDeclarator", + "value": "seg01" + }, + "type": "extrudePlane" + } + }, + "__meta": [ + { + "sourceRange": [ + 252, + 258, + 0 + ] + } + ] + } + }, + "artifactId": "[uuid]", + "originalId": "[uuid]", + "units": { + "type": "Mm" + }, + "__meta": [ + { + "sourceRange": [ + 37, + 71, + 0 + ] + } + ] + }, + "height": 50.0, + "startCapId": "[uuid]", + "endCapId": "[uuid]", + "units": { + "type": "Mm" + }, + "__meta": [ + { + "sourceRange": [ + 37, + 71, + 0 + ] + } + ] + }, + "units": { + "type": "Mm" + }, + "__meta": [ + { + "sourceRange": [ + 332, + 364, + 0 + ] + } + ] + }, + "start": { + "from": [ + -0.6800000000000002, + 47.7 + ], + "to": [ + -0.6800000000000002, + 47.7 + ], + "tag": null, + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 370, + 421, + 0 + ] + } + }, + "artifactId": "[uuid]", + "originalId": "[uuid]", + "units": { + "type": "Mm" + }, + "__meta": [ + { + "sourceRange": [ + 370, + 421, + 0 + ] + } + ] + }, + "height": -40.0, + "startCapId": null, + "endCapId": null, + "units": { + "type": "Mm" + }, + "__meta": [ + { + "sourceRange": [ + 370, + 421, + 0 + ] + } + ] + }, + { + "type": "Solid", + "id": "[uuid]", + "artifactId": "[uuid]", + "value": [ + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [ + 370, + 421, + 0 + ], + "tag": null, + "type": "extrudeArc" + } + ], + "sketch": { + "type": "Sketch", + "id": "[uuid]", + "paths": [ + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 370, + 421, + 0 + ] + }, + "ccw": true, + "center": [ + -2.08, + 47.7 + ], + "from": [ + -0.68, + 47.7 + ], + "radius": 1.4, + "tag": null, + "to": [ + -0.68, + 47.7 + ], + "type": "Circle" + } + ], + "on": { + "type": "face", + "id": "[uuid]", + "artifactId": "[uuid]", + "value": "seg01", + "xAxis": { + "x": 1.0, + "y": 0.0, + "z": 0.0 + }, + "yAxis": { + "x": 0.0, + "y": 0.0, + "z": 1.0 + }, + "zAxis": { + "x": 0.0, + "y": -1.0, + "z": 0.0 + }, + "solid": { + "type": "Solid", + "id": "[uuid]", + "artifactId": "[uuid]", + "value": [ + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [ + 77, + 91, + 0 + ], + "tag": null, + "type": "extrudePlane" + }, + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [ + 97, + 122, + 0 + ], + "tag": null, + "type": "extrudePlane" + }, + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [ + 128, + 161, + 0 + ], + "tag": null, + "type": "extrudeArc" + }, + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [ + 167, + 183, + 0 + ], + "tag": null, + "type": "extrudePlane" + }, + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [ + 189, + 259, + 0 + ], + "tag": { + "end": 258, + "start": 252, + "type": "TagDeclarator", + "value": "seg01" + }, + "type": "extrudePlane" + } + ], + "sketch": { + "type": "Sketch", + "id": "[uuid]", + "paths": [ + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 77, + 91, + 0 + ] + }, + "from": [ + -4.35, + -12.26 + ], + "tag": null, + "to": [ + -4.35, + -2.06 + ], + "type": "ToPoint" + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 97, + 122, + 0 + ] + }, + "from": [ + -4.35, + -2.06 + ], + "tag": null, + "to": [ + -3.81, + -2.09 + ], + "type": "ToPoint" + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 128, + 161, + 0 + ] + }, + "ccw": true, + "center": [ + -2.478430620978426, + 21.878248822388485 + ], + "from": [ + -3.81, + -2.09 + ], + "tag": null, + "to": [ + 20.4, + 14.61 + ], + "type": "TangentialArcTo" + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 167, + 183, + 0 + ] + }, + "from": [ + 20.4, + 14.61 + ], + "tag": null, + "to": [ + 20.4, + -12.15 + ], + "type": "ToPoint" + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 189, + 259, + 0 + ] + }, + "from": [ + 20.4, + -12.15 + ], + "tag": { + "end": 258, + "start": 252, + "type": "TagDeclarator", + "value": "seg01" + }, + "to": [ + -4.35, + -12.26 + ], + "type": "ToPoint" + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 265, + 272, + 0 + ] + }, + "from": [ + -4.35, + -12.26 + ], + "tag": null, + "to": [ + -4.35, + -12.26 + ], + "type": "ToPoint" + } + ], + "on": { + "type": "plane", + "id": "[uuid]", + "artifactId": "[uuid]", + "value": "XZ", + "origin": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "xAxis": { + "x": 1.0, + "y": 0.0, + "z": 0.0 + }, + "yAxis": { + "x": 0.0, + "y": 0.0, + "z": 1.0 + }, + "zAxis": { + "x": 0.0, + "y": -1.0, + "z": 0.0 + }, + "units": { + "type": "Mm" + }, + "__meta": [] + }, + "start": { + "from": [ + -4.35, + -12.26 + ], + "to": [ + -4.35, + -12.26 + ], + "tag": null, + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 37, + 71, + 0 + ] + } + }, + "tags": { + "seg01": { + "type": "TagIdentifier", + "value": "seg01", + "info": { + "type": "TagEngineInfo", + "id": "[uuid]", + "sketch": "[uuid]", + "path": { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 189, + 259, + 0 + ] + }, + "from": [ + 20.4, + -12.150000000000002 + ], + "tag": { + "end": 258, + "start": 252, + "type": "TagDeclarator", + "value": "seg01" + }, + "to": [ + -4.35, + -12.26 + ], + "type": "ToPoint" + }, + "surface": { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [ + 189, + 259, + 0 + ], + "tag": { + "end": 258, + "start": 252, + "type": "TagDeclarator", + "value": "seg01" + }, + "type": "extrudePlane" + } + }, + "__meta": [ + { + "sourceRange": [ + 252, + 258, + 0 + ] + } + ] + } + }, + "artifactId": "[uuid]", + "originalId": "[uuid]", + "units": { + "type": "Mm" + }, + "__meta": [ + { + "sourceRange": [ + 37, + 71, + 0 + ] + } + ] + }, + "height": 50.0, + "startCapId": "[uuid]", + "endCapId": "[uuid]", + "units": { + "type": "Mm" + }, + "__meta": [ + { + "sourceRange": [ + 37, + 71, + 0 + ] + } + ] + }, + "units": { + "type": "Mm" + }, + "__meta": [ + { + "sourceRange": [ + 332, + 364, + 0 + ] + } + ] + }, + "start": { + "from": [ + -0.6800000000000002, + 47.7 + ], + "to": [ + -0.6800000000000002, + 47.7 + ], + "tag": null, + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 370, + 421, + 0 + ] + } + }, + "artifactId": "[uuid]", + "originalId": "[uuid]", + "units": { + "type": "Mm" + }, + "__meta": [ + { + "sourceRange": [ + 370, + 421, + 0 + ] + } + ] + }, + "height": -40.0, + "startCapId": null, + "endCapId": null, + "units": { + "type": "Mm" + }, + "__meta": [ + { + "sourceRange": [ + 370, + 421, + 0 + ] + } + ] + }, + { + "type": "Solid", + "id": "[uuid]", + "artifactId": "[uuid]", + "value": [ + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [ + 370, + 421, + 0 + ], + "tag": null, + "type": "extrudeArc" + } + ], + "sketch": { + "type": "Sketch", + "id": "[uuid]", + "paths": [ + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 370, + 421, + 0 + ] + }, + "ccw": true, + "center": [ + -2.08, + 47.7 + ], + "from": [ + -0.68, + 47.7 + ], + "radius": 1.4, + "tag": null, + "to": [ + -0.68, + 47.7 + ], + "type": "Circle" + } + ], + "on": { + "type": "face", + "id": "[uuid]", + "artifactId": "[uuid]", + "value": "seg01", + "xAxis": { + "x": 1.0, + "y": 0.0, + "z": 0.0 + }, + "yAxis": { + "x": 0.0, + "y": 0.0, + "z": 1.0 + }, + "zAxis": { + "x": 0.0, + "y": -1.0, + "z": 0.0 + }, + "solid": { + "type": "Solid", + "id": "[uuid]", + "artifactId": "[uuid]", + "value": [ + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [ + 77, + 91, + 0 + ], + "tag": null, + "type": "extrudePlane" + }, + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [ + 97, + 122, + 0 + ], + "tag": null, + "type": "extrudePlane" + }, + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [ + 128, + 161, + 0 + ], + "tag": null, + "type": "extrudeArc" + }, + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [ + 167, + 183, + 0 + ], + "tag": null, + "type": "extrudePlane" + }, + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [ + 189, + 259, + 0 + ], + "tag": { + "end": 258, + "start": 252, + "type": "TagDeclarator", + "value": "seg01" + }, + "type": "extrudePlane" + } + ], + "sketch": { + "type": "Sketch", + "id": "[uuid]", + "paths": [ + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 77, + 91, + 0 + ] + }, + "from": [ + -4.35, + -12.26 + ], + "tag": null, + "to": [ + -4.35, + -2.06 + ], + "type": "ToPoint" + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 97, + 122, + 0 + ] + }, + "from": [ + -4.35, + -2.06 + ], + "tag": null, + "to": [ + -3.81, + -2.09 + ], + "type": "ToPoint" + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 128, + 161, + 0 + ] + }, + "ccw": true, + "center": [ + -2.478430620978426, + 21.878248822388485 + ], + "from": [ + -3.81, + -2.09 + ], + "tag": null, + "to": [ + 20.4, + 14.61 + ], + "type": "TangentialArcTo" + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 167, + 183, + 0 + ] + }, + "from": [ + 20.4, + 14.61 + ], + "tag": null, + "to": [ + 20.4, + -12.15 + ], + "type": "ToPoint" + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 189, + 259, + 0 + ] + }, + "from": [ + 20.4, + -12.15 + ], + "tag": { + "end": 258, + "start": 252, + "type": "TagDeclarator", + "value": "seg01" + }, + "to": [ + -4.35, + -12.26 + ], + "type": "ToPoint" + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 265, + 272, + 0 + ] + }, + "from": [ + -4.35, + -12.26 + ], + "tag": null, + "to": [ + -4.35, + -12.26 + ], + "type": "ToPoint" + } + ], + "on": { + "type": "plane", + "id": "[uuid]", + "artifactId": "[uuid]", + "value": "XZ", + "origin": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "xAxis": { + "x": 1.0, + "y": 0.0, + "z": 0.0 + }, + "yAxis": { + "x": 0.0, + "y": 0.0, + "z": 1.0 + }, + "zAxis": { + "x": 0.0, + "y": -1.0, + "z": 0.0 + }, + "units": { + "type": "Mm" + }, + "__meta": [] + }, + "start": { + "from": [ + -4.35, + -12.26 + ], + "to": [ + -4.35, + -12.26 + ], + "tag": null, + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 37, + 71, + 0 + ] + } + }, + "tags": { + "seg01": { + "type": "TagIdentifier", + "value": "seg01", + "info": { + "type": "TagEngineInfo", + "id": "[uuid]", + "sketch": "[uuid]", + "path": { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 189, + 259, + 0 + ] + }, + "from": [ + 20.4, + -12.150000000000002 + ], + "tag": { + "end": 258, + "start": 252, + "type": "TagDeclarator", + "value": "seg01" + }, + "to": [ + -4.35, + -12.26 + ], + "type": "ToPoint" + }, + "surface": { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [ + 189, + 259, + 0 + ], + "tag": { + "end": 258, + "start": 252, + "type": "TagDeclarator", + "value": "seg01" + }, + "type": "extrudePlane" + } + }, + "__meta": [ + { + "sourceRange": [ + 252, + 258, + 0 + ] + } + ] + } + }, + "artifactId": "[uuid]", + "originalId": "[uuid]", + "units": { + "type": "Mm" + }, + "__meta": [ + { + "sourceRange": [ + 37, + 71, + 0 + ] + } + ] + }, + "height": 50.0, + "startCapId": "[uuid]", + "endCapId": "[uuid]", + "units": { + "type": "Mm" + }, + "__meta": [ + { + "sourceRange": [ + 37, + 71, + 0 + ] + } + ] + }, + "units": { + "type": "Mm" + }, + "__meta": [ + { + "sourceRange": [ + 332, + 364, + 0 + ] + } + ] + }, + "start": { + "from": [ + -0.6800000000000002, + 47.7 + ], + "to": [ + -0.6800000000000002, + 47.7 + ], + "tag": null, + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 370, + 421, + 0 + ] + } + }, + "artifactId": "[uuid]", + "originalId": "[uuid]", + "units": { + "type": "Mm" + }, + "__meta": [ + { + "sourceRange": [ + 370, + 421, + 0 + ] + } + ] + }, + "height": -40.0, + "startCapId": null, + "endCapId": null, + "units": { + "type": "Mm" + }, + "__meta": [ + { + "sourceRange": [ + 370, + 421, + 0 + ] + } + ] + }, + { + "type": "Solid", + "id": "[uuid]", + "artifactId": "[uuid]", + "value": [ + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [ + 370, + 421, + 0 + ], + "tag": null, + "type": "extrudeArc" + } + ], + "sketch": { + "type": "Sketch", + "id": "[uuid]", + "paths": [ + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 370, + 421, + 0 + ] + }, + "ccw": true, + "center": [ + -2.08, + 47.7 + ], + "from": [ + -0.68, + 47.7 + ], + "radius": 1.4, + "tag": null, + "to": [ + -0.68, + 47.7 + ], + "type": "Circle" + } + ], + "on": { + "type": "face", + "id": "[uuid]", + "artifactId": "[uuid]", + "value": "seg01", + "xAxis": { + "x": 1.0, + "y": 0.0, + "z": 0.0 + }, + "yAxis": { + "x": 0.0, + "y": 0.0, + "z": 1.0 + }, + "zAxis": { + "x": 0.0, + "y": -1.0, + "z": 0.0 + }, + "solid": { + "type": "Solid", + "id": "[uuid]", + "artifactId": "[uuid]", + "value": [ + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [ + 77, + 91, + 0 + ], + "tag": null, + "type": "extrudePlane" + }, + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [ + 97, + 122, + 0 + ], + "tag": null, + "type": "extrudePlane" + }, + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [ + 128, + 161, + 0 + ], + "tag": null, + "type": "extrudeArc" + }, + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [ + 167, + 183, + 0 + ], + "tag": null, + "type": "extrudePlane" + }, + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [ + 189, + 259, + 0 + ], + "tag": { + "end": 258, + "start": 252, + "type": "TagDeclarator", + "value": "seg01" + }, + "type": "extrudePlane" + } + ], + "sketch": { + "type": "Sketch", + "id": "[uuid]", + "paths": [ + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 77, + 91, + 0 + ] + }, + "from": [ + -4.35, + -12.26 + ], + "tag": null, + "to": [ + -4.35, + -2.06 + ], + "type": "ToPoint" + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 97, + 122, + 0 + ] + }, + "from": [ + -4.35, + -2.06 + ], + "tag": null, + "to": [ + -3.81, + -2.09 + ], + "type": "ToPoint" + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 128, + 161, + 0 + ] + }, + "ccw": true, + "center": [ + -2.478430620978426, + 21.878248822388485 + ], + "from": [ + -3.81, + -2.09 + ], + "tag": null, + "to": [ + 20.4, + 14.61 + ], + "type": "TangentialArcTo" + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 167, + 183, + 0 + ] + }, + "from": [ + 20.4, + 14.61 + ], + "tag": null, + "to": [ + 20.4, + -12.15 + ], + "type": "ToPoint" + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 189, + 259, + 0 + ] + }, + "from": [ + 20.4, + -12.15 + ], + "tag": { + "end": 258, + "start": 252, + "type": "TagDeclarator", + "value": "seg01" + }, + "to": [ + -4.35, + -12.26 + ], + "type": "ToPoint" + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 265, + 272, + 0 + ] + }, + "from": [ + -4.35, + -12.26 + ], + "tag": null, + "to": [ + -4.35, + -12.26 + ], + "type": "ToPoint" + } + ], + "on": { + "type": "plane", + "id": "[uuid]", + "artifactId": "[uuid]", + "value": "XZ", + "origin": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "xAxis": { + "x": 1.0, + "y": 0.0, + "z": 0.0 + }, + "yAxis": { + "x": 0.0, + "y": 0.0, + "z": 1.0 + }, + "zAxis": { + "x": 0.0, + "y": -1.0, + "z": 0.0 + }, + "units": { + "type": "Mm" + }, + "__meta": [] + }, + "start": { + "from": [ + -4.35, + -12.26 + ], + "to": [ + -4.35, + -12.26 + ], + "tag": null, + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 37, + 71, + 0 + ] + } + }, + "tags": { + "seg01": { + "type": "TagIdentifier", + "value": "seg01", + "info": { + "type": "TagEngineInfo", + "id": "[uuid]", + "sketch": "[uuid]", + "path": { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 189, + 259, + 0 + ] + }, + "from": [ + 20.4, + -12.150000000000002 + ], + "tag": { + "end": 258, + "start": 252, + "type": "TagDeclarator", + "value": "seg01" + }, + "to": [ + -4.35, + -12.26 + ], + "type": "ToPoint" + }, + "surface": { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [ + 189, + 259, + 0 + ], + "tag": { + "end": 258, + "start": 252, + "type": "TagDeclarator", + "value": "seg01" + }, + "type": "extrudePlane" + } + }, + "__meta": [ + { + "sourceRange": [ + 252, + 258, + 0 + ] + } + ] + } + }, + "artifactId": "[uuid]", + "originalId": "[uuid]", + "units": { + "type": "Mm" + }, + "__meta": [ + { + "sourceRange": [ + 37, + 71, + 0 + ] + } + ] + }, + "height": 50.0, + "startCapId": "[uuid]", + "endCapId": "[uuid]", + "units": { + "type": "Mm" + }, + "__meta": [ + { + "sourceRange": [ + 37, + 71, + 0 + ] + } + ] + }, + "units": { + "type": "Mm" + }, + "__meta": [ + { + "sourceRange": [ + 332, + 364, + 0 + ] + } + ] + }, + "start": { + "from": [ + -0.6800000000000002, + 47.7 + ], + "to": [ + -0.6800000000000002, + 47.7 + ], + "tag": null, + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 370, + 421, + 0 + ] + } + }, + "artifactId": "[uuid]", + "originalId": "[uuid]", + "units": { + "type": "Mm" + }, + "__meta": [ + { + "sourceRange": [ + 370, + 421, + 0 + ] + } + ] + }, + "height": -40.0, + "startCapId": null, + "endCapId": null, + "units": { + "type": "Mm" + }, + "__meta": [ + { + "sourceRange": [ + 370, + 421, + 0 + ] + } + ] + }, + { + "type": "Solid", + "id": "[uuid]", + "artifactId": "[uuid]", + "value": [ + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [ + 370, + 421, + 0 + ], + "tag": null, + "type": "extrudeArc" + } + ], + "sketch": { + "type": "Sketch", + "id": "[uuid]", + "paths": [ + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 370, + 421, + 0 + ] + }, + "ccw": true, + "center": [ + -2.08, + 47.7 + ], + "from": [ + -0.68, + 47.7 + ], + "radius": 1.4, + "tag": null, + "to": [ + -0.68, + 47.7 + ], + "type": "Circle" + } + ], + "on": { + "type": "face", + "id": "[uuid]", + "artifactId": "[uuid]", + "value": "seg01", + "xAxis": { + "x": 1.0, + "y": 0.0, + "z": 0.0 + }, + "yAxis": { + "x": 0.0, + "y": 0.0, + "z": 1.0 + }, + "zAxis": { + "x": 0.0, + "y": -1.0, + "z": 0.0 + }, + "solid": { + "type": "Solid", + "id": "[uuid]", + "artifactId": "[uuid]", + "value": [ + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [ + 77, + 91, + 0 + ], + "tag": null, + "type": "extrudePlane" + }, + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [ + 97, + 122, + 0 + ], + "tag": null, + "type": "extrudePlane" + }, + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [ + 128, + 161, + 0 + ], + "tag": null, + "type": "extrudeArc" + }, + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [ + 167, + 183, + 0 + ], + "tag": null, + "type": "extrudePlane" + }, + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [ + 189, + 259, + 0 + ], + "tag": { + "end": 258, + "start": 252, + "type": "TagDeclarator", + "value": "seg01" + }, + "type": "extrudePlane" + } + ], + "sketch": { + "type": "Sketch", + "id": "[uuid]", + "paths": [ + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 77, + 91, + 0 + ] + }, + "from": [ + -4.35, + -12.26 + ], + "tag": null, + "to": [ + -4.35, + -2.06 + ], + "type": "ToPoint" + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 97, + 122, + 0 + ] + }, + "from": [ + -4.35, + -2.06 + ], + "tag": null, + "to": [ + -3.81, + -2.09 + ], + "type": "ToPoint" + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 128, + 161, + 0 + ] + }, + "ccw": true, + "center": [ + -2.478430620978426, + 21.878248822388485 + ], + "from": [ + -3.81, + -2.09 + ], + "tag": null, + "to": [ + 20.4, + 14.61 + ], + "type": "TangentialArcTo" + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 167, + 183, + 0 + ] + }, + "from": [ + 20.4, + 14.61 + ], + "tag": null, + "to": [ + 20.4, + -12.15 + ], + "type": "ToPoint" + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 189, + 259, + 0 + ] + }, + "from": [ + 20.4, + -12.15 + ], + "tag": { + "end": 258, + "start": 252, + "type": "TagDeclarator", + "value": "seg01" + }, + "to": [ + -4.35, + -12.26 + ], + "type": "ToPoint" + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 265, + 272, + 0 + ] + }, + "from": [ + -4.35, + -12.26 + ], + "tag": null, + "to": [ + -4.35, + -12.26 + ], + "type": "ToPoint" + } + ], + "on": { + "type": "plane", + "id": "[uuid]", + "artifactId": "[uuid]", + "value": "XZ", + "origin": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "xAxis": { + "x": 1.0, + "y": 0.0, + "z": 0.0 + }, + "yAxis": { + "x": 0.0, + "y": 0.0, + "z": 1.0 + }, + "zAxis": { + "x": 0.0, + "y": -1.0, + "z": 0.0 + }, + "units": { + "type": "Mm" + }, + "__meta": [] + }, + "start": { + "from": [ + -4.35, + -12.26 + ], + "to": [ + -4.35, + -12.26 + ], + "tag": null, + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 37, + 71, + 0 + ] + } + }, + "tags": { + "seg01": { + "type": "TagIdentifier", + "value": "seg01", + "info": { + "type": "TagEngineInfo", + "id": "[uuid]", + "sketch": "[uuid]", + "path": { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 189, + 259, + 0 + ] + }, + "from": [ + 20.4, + -12.150000000000002 + ], + "tag": { + "end": 258, + "start": 252, + "type": "TagDeclarator", + "value": "seg01" + }, + "to": [ + -4.35, + -12.26 + ], + "type": "ToPoint" + }, + "surface": { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [ + 189, + 259, + 0 + ], + "tag": { + "end": 258, + "start": 252, + "type": "TagDeclarator", + "value": "seg01" + }, + "type": "extrudePlane" + } + }, + "__meta": [ + { + "sourceRange": [ + 252, + 258, + 0 + ] + } + ] + } + }, + "artifactId": "[uuid]", + "originalId": "[uuid]", + "units": { + "type": "Mm" + }, + "__meta": [ + { + "sourceRange": [ + 37, + 71, + 0 + ] + } + ] + }, + "height": 50.0, + "startCapId": "[uuid]", + "endCapId": "[uuid]", + "units": { + "type": "Mm" + }, + "__meta": [ + { + "sourceRange": [ + 37, + 71, + 0 + ] + } + ] + }, + "units": { + "type": "Mm" + }, + "__meta": [ + { + "sourceRange": [ + 332, + 364, + 0 + ] + } + ] + }, + "start": { + "from": [ + -0.6800000000000002, + 47.7 + ], + "to": [ + -0.6800000000000002, + 47.7 + ], + "tag": null, + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 370, + 421, + 0 + ] + } + }, + "artifactId": "[uuid]", + "originalId": "[uuid]", + "units": { + "type": "Mm" + }, + "__meta": [ + { + "sourceRange": [ + 370, + 421, + 0 + ] + } + ] + }, + "height": -40.0, + "startCapId": null, + "endCapId": null, + "units": { + "type": "Mm" + }, + "__meta": [ + { + "sourceRange": [ + 370, + 421, + 0 + ] + } + ] + }, + { + "type": "Solid", + "id": "[uuid]", + "artifactId": "[uuid]", + "value": [ + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [ + 370, + 421, + 0 + ], + "tag": null, + "type": "extrudeArc" + } + ], + "sketch": { + "type": "Sketch", + "id": "[uuid]", + "paths": [ + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 370, + 421, + 0 + ] + }, + "ccw": true, + "center": [ + -2.08, + 47.7 + ], + "from": [ + -0.68, + 47.7 + ], + "radius": 1.4, + "tag": null, + "to": [ + -0.68, + 47.7 + ], + "type": "Circle" + } + ], + "on": { + "type": "face", + "id": "[uuid]", + "artifactId": "[uuid]", + "value": "seg01", + "xAxis": { + "x": 1.0, + "y": 0.0, + "z": 0.0 + }, + "yAxis": { + "x": 0.0, + "y": 0.0, + "z": 1.0 + }, + "zAxis": { + "x": 0.0, + "y": -1.0, + "z": 0.0 + }, + "solid": { + "type": "Solid", + "id": "[uuid]", + "artifactId": "[uuid]", + "value": [ + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [ + 77, + 91, + 0 + ], + "tag": null, + "type": "extrudePlane" + }, + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [ + 97, + 122, + 0 + ], + "tag": null, + "type": "extrudePlane" + }, + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [ + 128, + 161, + 0 + ], + "tag": null, + "type": "extrudeArc" + }, + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [ + 167, + 183, + 0 + ], + "tag": null, + "type": "extrudePlane" + }, + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [ + 189, + 259, + 0 + ], + "tag": { + "end": 258, + "start": 252, + "type": "TagDeclarator", + "value": "seg01" + }, + "type": "extrudePlane" + } + ], + "sketch": { + "type": "Sketch", + "id": "[uuid]", + "paths": [ + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 77, + 91, + 0 + ] + }, + "from": [ + -4.35, + -12.26 + ], + "tag": null, + "to": [ + -4.35, + -2.06 + ], + "type": "ToPoint" + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 97, + 122, + 0 + ] + }, + "from": [ + -4.35, + -2.06 + ], + "tag": null, + "to": [ + -3.81, + -2.09 + ], + "type": "ToPoint" + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 128, + 161, + 0 + ] + }, + "ccw": true, + "center": [ + -2.478430620978426, + 21.878248822388485 + ], + "from": [ + -3.81, + -2.09 + ], + "tag": null, + "to": [ + 20.4, + 14.61 + ], + "type": "TangentialArcTo" + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 167, + 183, + 0 + ] + }, + "from": [ + 20.4, + 14.61 + ], + "tag": null, + "to": [ + 20.4, + -12.15 + ], + "type": "ToPoint" + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 189, + 259, + 0 + ] + }, + "from": [ + 20.4, + -12.15 + ], + "tag": { + "end": 258, + "start": 252, + "type": "TagDeclarator", + "value": "seg01" + }, + "to": [ + -4.35, + -12.26 + ], + "type": "ToPoint" + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 265, + 272, + 0 + ] + }, + "from": [ + -4.35, + -12.26 + ], + "tag": null, + "to": [ + -4.35, + -12.26 + ], + "type": "ToPoint" + } + ], + "on": { + "type": "plane", + "id": "[uuid]", + "artifactId": "[uuid]", + "value": "XZ", + "origin": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "xAxis": { + "x": 1.0, + "y": 0.0, + "z": 0.0 + }, + "yAxis": { + "x": 0.0, + "y": 0.0, + "z": 1.0 + }, + "zAxis": { + "x": 0.0, + "y": -1.0, + "z": 0.0 + }, + "units": { + "type": "Mm" + }, + "__meta": [] + }, + "start": { + "from": [ + -4.35, + -12.26 + ], + "to": [ + -4.35, + -12.26 + ], + "tag": null, + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 37, + 71, + 0 + ] + } + }, + "tags": { + "seg01": { + "type": "TagIdentifier", + "value": "seg01", + "info": { + "type": "TagEngineInfo", + "id": "[uuid]", + "sketch": "[uuid]", + "path": { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 189, + 259, + 0 + ] + }, + "from": [ + 20.4, + -12.150000000000002 + ], + "tag": { + "end": 258, + "start": 252, + "type": "TagDeclarator", + "value": "seg01" + }, + "to": [ + -4.35, + -12.26 + ], + "type": "ToPoint" + }, + "surface": { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [ + 189, + 259, + 0 + ], + "tag": { + "end": 258, + "start": 252, + "type": "TagDeclarator", + "value": "seg01" + }, + "type": "extrudePlane" + } + }, + "__meta": [ + { + "sourceRange": [ + 252, + 258, + 0 + ] + } + ] + } + }, + "artifactId": "[uuid]", + "originalId": "[uuid]", + "units": { + "type": "Mm" + }, + "__meta": [ + { + "sourceRange": [ + 37, + 71, + 0 + ] + } + ] + }, + "height": 50.0, + "startCapId": "[uuid]", + "endCapId": "[uuid]", + "units": { + "type": "Mm" + }, + "__meta": [ + { + "sourceRange": [ + 37, + 71, + 0 + ] + } + ] + }, + "units": { + "type": "Mm" + }, + "__meta": [ + { + "sourceRange": [ + 332, + 364, + 0 + ] + } + ] + }, + "start": { + "from": [ + -0.6800000000000002, + 47.7 + ], + "to": [ + -0.6800000000000002, + 47.7 + ], + "tag": null, + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 370, + 421, + 0 + ] + } + }, + "artifactId": "[uuid]", + "originalId": "[uuid]", + "units": { + "type": "Mm" + }, + "__meta": [ + { + "sourceRange": [ + 370, + 421, + 0 + ] + } + ] + }, + "height": -40.0, + "startCapId": null, + "endCapId": null, + "units": { + "type": "Mm" + }, + "__meta": [ + { + "sourceRange": [ + 370, + 421, + 0 + ] + } + ] + }, + { + "type": "Solid", + "id": "[uuid]", + "artifactId": "[uuid]", + "value": [ + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [ + 370, + 421, + 0 + ], + "tag": null, + "type": "extrudeArc" + } + ], + "sketch": { + "type": "Sketch", + "id": "[uuid]", + "paths": [ + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 370, + 421, + 0 + ] + }, + "ccw": true, + "center": [ + -2.08, + 47.7 + ], + "from": [ + -0.68, + 47.7 + ], + "radius": 1.4, + "tag": null, + "to": [ + -0.68, + 47.7 + ], + "type": "Circle" + } + ], + "on": { + "type": "face", + "id": "[uuid]", + "artifactId": "[uuid]", + "value": "seg01", + "xAxis": { + "x": 1.0, + "y": 0.0, + "z": 0.0 + }, + "yAxis": { + "x": 0.0, + "y": 0.0, + "z": 1.0 + }, + "zAxis": { + "x": 0.0, + "y": -1.0, + "z": 0.0 + }, + "solid": { + "type": "Solid", + "id": "[uuid]", + "artifactId": "[uuid]", + "value": [ + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [ + 77, + 91, + 0 + ], + "tag": null, + "type": "extrudePlane" + }, + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [ + 97, + 122, + 0 + ], + "tag": null, + "type": "extrudePlane" + }, + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [ + 128, + 161, + 0 + ], + "tag": null, + "type": "extrudeArc" + }, + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [ + 167, + 183, + 0 + ], + "tag": null, + "type": "extrudePlane" + }, + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [ + 189, + 259, + 0 + ], + "tag": { + "end": 258, + "start": 252, + "type": "TagDeclarator", + "value": "seg01" + }, + "type": "extrudePlane" + } + ], + "sketch": { + "type": "Sketch", + "id": "[uuid]", + "paths": [ + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 77, + 91, + 0 + ] + }, + "from": [ + -4.35, + -12.26 + ], + "tag": null, + "to": [ + -4.35, + -2.06 + ], + "type": "ToPoint" + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 97, + 122, + 0 + ] + }, + "from": [ + -4.35, + -2.06 + ], + "tag": null, + "to": [ + -3.81, + -2.09 + ], + "type": "ToPoint" + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 128, + 161, + 0 + ] + }, + "ccw": true, + "center": [ + -2.478430620978426, + 21.878248822388485 + ], + "from": [ + -3.81, + -2.09 + ], + "tag": null, + "to": [ + 20.4, + 14.61 + ], + "type": "TangentialArcTo" + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 167, + 183, + 0 + ] + }, + "from": [ + 20.4, + 14.61 + ], + "tag": null, + "to": [ + 20.4, + -12.15 + ], + "type": "ToPoint" + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 189, + 259, + 0 + ] + }, + "from": [ + 20.4, + -12.15 + ], + "tag": { + "end": 258, + "start": 252, + "type": "TagDeclarator", + "value": "seg01" + }, + "to": [ + -4.35, + -12.26 + ], + "type": "ToPoint" + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 265, + 272, + 0 + ] + }, + "from": [ + -4.35, + -12.26 + ], + "tag": null, + "to": [ + -4.35, + -12.26 + ], + "type": "ToPoint" + } + ], + "on": { + "type": "plane", + "id": "[uuid]", + "artifactId": "[uuid]", + "value": "XZ", + "origin": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "xAxis": { + "x": 1.0, + "y": 0.0, + "z": 0.0 + }, + "yAxis": { + "x": 0.0, + "y": 0.0, + "z": 1.0 + }, + "zAxis": { + "x": 0.0, + "y": -1.0, + "z": 0.0 + }, + "units": { + "type": "Mm" + }, + "__meta": [] + }, + "start": { + "from": [ + -4.35, + -12.26 + ], + "to": [ + -4.35, + -12.26 + ], + "tag": null, + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 37, + 71, + 0 + ] + } + }, + "tags": { + "seg01": { + "type": "TagIdentifier", + "value": "seg01", + "info": { + "type": "TagEngineInfo", + "id": "[uuid]", + "sketch": "[uuid]", + "path": { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 189, + 259, + 0 + ] + }, + "from": [ + 20.4, + -12.150000000000002 + ], + "tag": { + "end": 258, + "start": 252, + "type": "TagDeclarator", + "value": "seg01" + }, + "to": [ + -4.35, + -12.26 + ], + "type": "ToPoint" + }, + "surface": { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [ + 189, + 259, + 0 + ], + "tag": { + "end": 258, + "start": 252, + "type": "TagDeclarator", + "value": "seg01" + }, + "type": "extrudePlane" + } + }, + "__meta": [ + { + "sourceRange": [ + 252, + 258, + 0 + ] + } + ] + } + }, + "artifactId": "[uuid]", + "originalId": "[uuid]", + "units": { + "type": "Mm" + }, + "__meta": [ + { + "sourceRange": [ + 37, + 71, + 0 + ] + } + ] + }, + "height": 50.0, + "startCapId": "[uuid]", + "endCapId": "[uuid]", + "units": { + "type": "Mm" + }, + "__meta": [ + { + "sourceRange": [ + 37, + 71, + 0 + ] + } + ] + }, + "units": { + "type": "Mm" + }, + "__meta": [ + { + "sourceRange": [ + 332, + 364, + 0 + ] + } + ] + }, + "start": { + "from": [ + -0.6800000000000002, + 47.7 + ], + "to": [ + -0.6800000000000002, + 47.7 + ], + "tag": null, + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 370, + 421, + 0 + ] + } + }, + "artifactId": "[uuid]", + "originalId": "[uuid]", + "units": { + "type": "Mm" + }, + "__meta": [ + { + "sourceRange": [ + 370, + 421, + 0 + ] + } + ] + }, + "height": -40.0, + "startCapId": null, + "endCapId": null, + "units": { + "type": "Mm" + }, + "__meta": [ + { + "sourceRange": [ + 370, + 421, + 0 + ] + } + ] + }, + { + "type": "Solid", + "id": "[uuid]", + "artifactId": "[uuid]", + "value": [ + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [ + 370, + 421, + 0 + ], + "tag": null, + "type": "extrudeArc" + } + ], + "sketch": { + "type": "Sketch", + "id": "[uuid]", + "paths": [ + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 370, + 421, + 0 + ] + }, + "ccw": true, + "center": [ + -2.08, + 47.7 + ], + "from": [ + -0.68, + 47.7 + ], + "radius": 1.4, + "tag": null, + "to": [ + -0.68, + 47.7 + ], + "type": "Circle" + } + ], + "on": { + "type": "face", + "id": "[uuid]", + "artifactId": "[uuid]", + "value": "seg01", + "xAxis": { + "x": 1.0, + "y": 0.0, + "z": 0.0 + }, + "yAxis": { + "x": 0.0, + "y": 0.0, + "z": 1.0 + }, + "zAxis": { + "x": 0.0, + "y": -1.0, + "z": 0.0 + }, + "solid": { + "type": "Solid", + "id": "[uuid]", + "artifactId": "[uuid]", + "value": [ + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [ + 77, + 91, + 0 + ], + "tag": null, + "type": "extrudePlane" + }, + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [ + 97, + 122, + 0 + ], + "tag": null, + "type": "extrudePlane" + }, + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [ + 128, + 161, + 0 + ], + "tag": null, + "type": "extrudeArc" + }, + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [ + 167, + 183, + 0 + ], + "tag": null, + "type": "extrudePlane" + }, + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [ + 189, + 259, + 0 + ], + "tag": { + "end": 258, + "start": 252, + "type": "TagDeclarator", + "value": "seg01" + }, + "type": "extrudePlane" + } + ], + "sketch": { + "type": "Sketch", + "id": "[uuid]", + "paths": [ + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 77, + 91, + 0 + ] + }, + "from": [ + -4.35, + -12.26 + ], + "tag": null, + "to": [ + -4.35, + -2.06 + ], + "type": "ToPoint" + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 97, + 122, + 0 + ] + }, + "from": [ + -4.35, + -2.06 + ], + "tag": null, + "to": [ + -3.81, + -2.09 + ], + "type": "ToPoint" + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 128, + 161, + 0 + ] + }, + "ccw": true, + "center": [ + -2.478430620978426, + 21.878248822388485 + ], + "from": [ + -3.81, + -2.09 + ], + "tag": null, + "to": [ + 20.4, + 14.61 + ], + "type": "TangentialArcTo" + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 167, + 183, + 0 + ] + }, + "from": [ + 20.4, + 14.61 + ], + "tag": null, + "to": [ + 20.4, + -12.15 + ], + "type": "ToPoint" + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 189, + 259, + 0 + ] + }, + "from": [ + 20.4, + -12.15 + ], + "tag": { + "end": 258, + "start": 252, + "type": "TagDeclarator", + "value": "seg01" + }, + "to": [ + -4.35, + -12.26 + ], + "type": "ToPoint" + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 265, + 272, + 0 + ] + }, + "from": [ + -4.35, + -12.26 + ], + "tag": null, + "to": [ + -4.35, + -12.26 + ], + "type": "ToPoint" + } + ], + "on": { + "type": "plane", + "id": "[uuid]", + "artifactId": "[uuid]", + "value": "XZ", + "origin": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "xAxis": { + "x": 1.0, + "y": 0.0, + "z": 0.0 + }, + "yAxis": { + "x": 0.0, + "y": 0.0, + "z": 1.0 + }, + "zAxis": { + "x": 0.0, + "y": -1.0, + "z": 0.0 + }, + "units": { + "type": "Mm" + }, + "__meta": [] + }, + "start": { + "from": [ + -4.35, + -12.26 + ], + "to": [ + -4.35, + -12.26 + ], + "tag": null, + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 37, + 71, + 0 + ] + } + }, + "tags": { + "seg01": { + "type": "TagIdentifier", + "value": "seg01", + "info": { + "type": "TagEngineInfo", + "id": "[uuid]", + "sketch": "[uuid]", + "path": { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 189, + 259, + 0 + ] + }, + "from": [ + 20.4, + -12.150000000000002 + ], + "tag": { + "end": 258, + "start": 252, + "type": "TagDeclarator", + "value": "seg01" + }, + "to": [ + -4.35, + -12.26 + ], + "type": "ToPoint" + }, + "surface": { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [ + 189, + 259, + 0 + ], + "tag": { + "end": 258, + "start": 252, + "type": "TagDeclarator", + "value": "seg01" + }, + "type": "extrudePlane" + } + }, + "__meta": [ + { + "sourceRange": [ + 252, + 258, + 0 + ] + } + ] + } + }, + "artifactId": "[uuid]", + "originalId": "[uuid]", + "units": { + "type": "Mm" + }, + "__meta": [ + { + "sourceRange": [ + 37, + 71, + 0 + ] + } + ] + }, + "height": 50.0, + "startCapId": "[uuid]", + "endCapId": "[uuid]", + "units": { + "type": "Mm" + }, + "__meta": [ + { + "sourceRange": [ + 37, + 71, + 0 + ] + } + ] + }, + "units": { + "type": "Mm" + }, + "__meta": [ + { + "sourceRange": [ + 332, + 364, + 0 + ] + } + ] + }, + "start": { + "from": [ + -0.6800000000000002, + 47.7 + ], + "to": [ + -0.6800000000000002, + 47.7 + ], + "tag": null, + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 370, + 421, + 0 + ] + } + }, + "artifactId": "[uuid]", + "originalId": "[uuid]", + "units": { + "type": "Mm" + }, + "__meta": [ + { + "sourceRange": [ + 370, + 421, + 0 + ] + } + ] + }, + "height": -40.0, + "startCapId": null, + "endCapId": null, + "units": { + "type": "Mm" + }, + "__meta": [ + { + "sourceRange": [ + 370, + 421, + 0 + ] + } + ] + }, + { + "type": "Solid", + "id": "[uuid]", + "artifactId": "[uuid]", + "value": [ + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [ + 370, + 421, + 0 + ], + "tag": null, + "type": "extrudeArc" + } + ], + "sketch": { + "type": "Sketch", + "id": "[uuid]", + "paths": [ + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 370, + 421, + 0 + ] + }, + "ccw": true, + "center": [ + -2.08, + 47.7 + ], + "from": [ + -0.68, + 47.7 + ], + "radius": 1.4, + "tag": null, + "to": [ + -0.68, + 47.7 + ], + "type": "Circle" + } + ], + "on": { + "type": "face", + "id": "[uuid]", + "artifactId": "[uuid]", + "value": "seg01", + "xAxis": { + "x": 1.0, + "y": 0.0, + "z": 0.0 + }, + "yAxis": { + "x": 0.0, + "y": 0.0, + "z": 1.0 + }, + "zAxis": { + "x": 0.0, + "y": -1.0, + "z": 0.0 + }, + "solid": { + "type": "Solid", + "id": "[uuid]", + "artifactId": "[uuid]", + "value": [ + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [ + 77, + 91, + 0 + ], + "tag": null, + "type": "extrudePlane" + }, + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [ + 97, + 122, + 0 + ], + "tag": null, + "type": "extrudePlane" + }, + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [ + 128, + 161, + 0 + ], + "tag": null, + "type": "extrudeArc" + }, + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [ + 167, + 183, + 0 + ], + "tag": null, + "type": "extrudePlane" + }, + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [ + 189, + 259, + 0 + ], + "tag": { + "end": 258, + "start": 252, + "type": "TagDeclarator", + "value": "seg01" + }, + "type": "extrudePlane" + } + ], + "sketch": { + "type": "Sketch", + "id": "[uuid]", + "paths": [ + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 77, + 91, + 0 + ] + }, + "from": [ + -4.35, + -12.26 + ], + "tag": null, + "to": [ + -4.35, + -2.06 + ], + "type": "ToPoint" + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 97, + 122, + 0 + ] + }, + "from": [ + -4.35, + -2.06 + ], + "tag": null, + "to": [ + -3.81, + -2.09 + ], + "type": "ToPoint" + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 128, + 161, + 0 + ] + }, + "ccw": true, + "center": [ + -2.478430620978426, + 21.878248822388485 + ], + "from": [ + -3.81, + -2.09 + ], + "tag": null, + "to": [ + 20.4, + 14.61 + ], + "type": "TangentialArcTo" + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 167, + 183, + 0 + ] + }, + "from": [ + 20.4, + 14.61 + ], + "tag": null, + "to": [ + 20.4, + -12.15 + ], + "type": "ToPoint" + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 189, + 259, + 0 + ] + }, + "from": [ + 20.4, + -12.15 + ], + "tag": { + "end": 258, + "start": 252, + "type": "TagDeclarator", + "value": "seg01" + }, + "to": [ + -4.35, + -12.26 + ], + "type": "ToPoint" + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 265, + 272, + 0 + ] + }, + "from": [ + -4.35, + -12.26 + ], + "tag": null, + "to": [ + -4.35, + -12.26 + ], + "type": "ToPoint" + } + ], + "on": { + "type": "plane", + "id": "[uuid]", + "artifactId": "[uuid]", + "value": "XZ", + "origin": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "xAxis": { + "x": 1.0, + "y": 0.0, + "z": 0.0 + }, + "yAxis": { + "x": 0.0, + "y": 0.0, + "z": 1.0 + }, + "zAxis": { + "x": 0.0, + "y": -1.0, + "z": 0.0 + }, + "units": { + "type": "Mm" + }, + "__meta": [] + }, + "start": { + "from": [ + -4.35, + -12.26 + ], + "to": [ + -4.35, + -12.26 + ], + "tag": null, + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 37, + 71, + 0 + ] + } + }, + "tags": { + "seg01": { + "type": "TagIdentifier", + "value": "seg01", + "info": { + "type": "TagEngineInfo", + "id": "[uuid]", + "sketch": "[uuid]", + "path": { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 189, + 259, + 0 + ] + }, + "from": [ + 20.4, + -12.150000000000002 + ], + "tag": { + "end": 258, + "start": 252, + "type": "TagDeclarator", + "value": "seg01" + }, + "to": [ + -4.35, + -12.26 + ], + "type": "ToPoint" + }, + "surface": { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [ + 189, + 259, + 0 + ], + "tag": { + "end": 258, + "start": 252, + "type": "TagDeclarator", + "value": "seg01" + }, + "type": "extrudePlane" + } + }, + "__meta": [ + { + "sourceRange": [ + 252, + 258, + 0 + ] + } + ] + } + }, + "artifactId": "[uuid]", + "originalId": "[uuid]", + "units": { + "type": "Mm" + }, + "__meta": [ + { + "sourceRange": [ + 37, + 71, + 0 + ] + } + ] + }, + "height": 50.0, + "startCapId": "[uuid]", + "endCapId": "[uuid]", + "units": { + "type": "Mm" + }, + "__meta": [ + { + "sourceRange": [ + 37, + 71, + 0 + ] + } + ] + }, + "units": { + "type": "Mm" + }, + "__meta": [ + { + "sourceRange": [ + 332, + 364, + 0 + ] + } + ] + }, + "start": { + "from": [ + -0.6800000000000002, + 47.7 + ], + "to": [ + -0.6800000000000002, + 47.7 + ], + "tag": null, + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 370, + 421, + 0 + ] + } + }, + "artifactId": "[uuid]", + "originalId": "[uuid]", + "units": { + "type": "Mm" + }, + "__meta": [ + { + "sourceRange": [ + 370, + 421, + 0 + ] + } + ] + }, + "height": -40.0, + "startCapId": null, + "endCapId": null, + "units": { + "type": "Mm" + }, + "__meta": [ + { + "sourceRange": [ + 370, + 421, + 0 + ] + } + ] + }, + { + "type": "Solid", + "id": "[uuid]", + "artifactId": "[uuid]", + "value": [ + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [ + 370, + 421, + 0 + ], + "tag": null, + "type": "extrudeArc" + } + ], + "sketch": { + "type": "Sketch", + "id": "[uuid]", + "paths": [ + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 370, + 421, + 0 + ] + }, + "ccw": true, + "center": [ + -2.08, + 47.7 + ], + "from": [ + -0.68, + 47.7 + ], + "radius": 1.4, + "tag": null, + "to": [ + -0.68, + 47.7 + ], + "type": "Circle" + } + ], + "on": { + "type": "face", + "id": "[uuid]", + "artifactId": "[uuid]", + "value": "seg01", + "xAxis": { + "x": 1.0, + "y": 0.0, + "z": 0.0 + }, + "yAxis": { + "x": 0.0, + "y": 0.0, + "z": 1.0 + }, + "zAxis": { + "x": 0.0, + "y": -1.0, + "z": 0.0 + }, + "solid": { + "type": "Solid", + "id": "[uuid]", + "artifactId": "[uuid]", + "value": [ + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [ + 77, + 91, + 0 + ], + "tag": null, + "type": "extrudePlane" + }, + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [ + 97, + 122, + 0 + ], + "tag": null, + "type": "extrudePlane" + }, + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [ + 128, + 161, + 0 + ], + "tag": null, + "type": "extrudeArc" + }, + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [ + 167, + 183, + 0 + ], + "tag": null, + "type": "extrudePlane" + }, + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [ + 189, + 259, + 0 + ], + "tag": { + "end": 258, + "start": 252, + "type": "TagDeclarator", + "value": "seg01" + }, + "type": "extrudePlane" + } + ], + "sketch": { + "type": "Sketch", + "id": "[uuid]", + "paths": [ + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 77, + 91, + 0 + ] + }, + "from": [ + -4.35, + -12.26 + ], + "tag": null, + "to": [ + -4.35, + -2.06 + ], + "type": "ToPoint" + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 97, + 122, + 0 + ] + }, + "from": [ + -4.35, + -2.06 + ], + "tag": null, + "to": [ + -3.81, + -2.09 + ], + "type": "ToPoint" + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 128, + 161, + 0 + ] + }, + "ccw": true, + "center": [ + -2.478430620978426, + 21.878248822388485 + ], + "from": [ + -3.81, + -2.09 + ], + "tag": null, + "to": [ + 20.4, + 14.61 + ], + "type": "TangentialArcTo" + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 167, + 183, + 0 + ] + }, + "from": [ + 20.4, + 14.61 + ], + "tag": null, + "to": [ + 20.4, + -12.15 + ], + "type": "ToPoint" + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 189, + 259, + 0 + ] + }, + "from": [ + 20.4, + -12.15 + ], + "tag": { + "end": 258, + "start": 252, + "type": "TagDeclarator", + "value": "seg01" + }, + "to": [ + -4.35, + -12.26 + ], + "type": "ToPoint" + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 265, + 272, + 0 + ] + }, + "from": [ + -4.35, + -12.26 + ], + "tag": null, + "to": [ + -4.35, + -12.26 + ], + "type": "ToPoint" + } + ], + "on": { + "type": "plane", + "id": "[uuid]", + "artifactId": "[uuid]", + "value": "XZ", + "origin": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "xAxis": { + "x": 1.0, + "y": 0.0, + "z": 0.0 + }, + "yAxis": { + "x": 0.0, + "y": 0.0, + "z": 1.0 + }, + "zAxis": { + "x": 0.0, + "y": -1.0, + "z": 0.0 + }, + "units": { + "type": "Mm" + }, + "__meta": [] + }, + "start": { + "from": [ + -4.35, + -12.26 + ], + "to": [ + -4.35, + -12.26 + ], + "tag": null, + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 37, + 71, + 0 + ] + } + }, + "tags": { + "seg01": { + "type": "TagIdentifier", + "value": "seg01", + "info": { + "type": "TagEngineInfo", + "id": "[uuid]", + "sketch": "[uuid]", + "path": { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 189, + 259, + 0 + ] + }, + "from": [ + 20.4, + -12.150000000000002 + ], + "tag": { + "end": 258, + "start": 252, + "type": "TagDeclarator", + "value": "seg01" + }, + "to": [ + -4.35, + -12.26 + ], + "type": "ToPoint" + }, + "surface": { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [ + 189, + 259, + 0 + ], + "tag": { + "end": 258, + "start": 252, + "type": "TagDeclarator", + "value": "seg01" + }, + "type": "extrudePlane" + } + }, + "__meta": [ + { + "sourceRange": [ + 252, + 258, + 0 + ] + } + ] + } + }, + "artifactId": "[uuid]", + "originalId": "[uuid]", + "units": { + "type": "Mm" + }, + "__meta": [ + { + "sourceRange": [ + 37, + 71, + 0 + ] + } + ] + }, + "height": 50.0, + "startCapId": "[uuid]", + "endCapId": "[uuid]", + "units": { + "type": "Mm" + }, + "__meta": [ + { + "sourceRange": [ + 37, + 71, + 0 + ] + } + ] + }, + "units": { + "type": "Mm" + }, + "__meta": [ + { + "sourceRange": [ + 332, + 364, + 0 + ] + } + ] + }, + "start": { + "from": [ + -0.6800000000000002, + 47.7 + ], + "to": [ + -0.6800000000000002, + 47.7 + ], + "tag": null, + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 370, + 421, + 0 + ] + } + }, + "artifactId": "[uuid]", + "originalId": "[uuid]", + "units": { + "type": "Mm" + }, + "__meta": [ + { + "sourceRange": [ + 370, + 421, + 0 + ] + } + ] + }, + "height": -40.0, + "startCapId": null, + "endCapId": null, + "units": { + "type": "Mm" + }, + "__meta": [ + { + "sourceRange": [ + 370, + 421, + 0 + ] + } + ] + }, + { + "type": "Solid", + "id": "[uuid]", + "artifactId": "[uuid]", + "value": [ + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [ + 370, + 421, + 0 + ], + "tag": null, + "type": "extrudeArc" + } + ], + "sketch": { + "type": "Sketch", + "id": "[uuid]", + "paths": [ + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 370, + 421, + 0 + ] + }, + "ccw": true, + "center": [ + -2.08, + 47.7 + ], + "from": [ + -0.68, + 47.7 + ], + "radius": 1.4, + "tag": null, + "to": [ + -0.68, + 47.7 + ], + "type": "Circle" + } + ], + "on": { + "type": "face", + "id": "[uuid]", + "artifactId": "[uuid]", + "value": "seg01", + "xAxis": { + "x": 1.0, + "y": 0.0, + "z": 0.0 + }, + "yAxis": { + "x": 0.0, + "y": 0.0, + "z": 1.0 + }, + "zAxis": { + "x": 0.0, + "y": -1.0, + "z": 0.0 + }, + "solid": { + "type": "Solid", + "id": "[uuid]", + "artifactId": "[uuid]", + "value": [ + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [ + 77, + 91, + 0 + ], + "tag": null, + "type": "extrudePlane" + }, + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [ + 97, + 122, + 0 + ], + "tag": null, + "type": "extrudePlane" + }, + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [ + 128, + 161, + 0 + ], + "tag": null, + "type": "extrudeArc" + }, + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [ + 167, + 183, + 0 + ], + "tag": null, + "type": "extrudePlane" + }, + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [ + 189, + 259, + 0 + ], + "tag": { + "end": 258, + "start": 252, + "type": "TagDeclarator", + "value": "seg01" + }, + "type": "extrudePlane" + } + ], + "sketch": { + "type": "Sketch", + "id": "[uuid]", + "paths": [ + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 77, + 91, + 0 + ] + }, + "from": [ + -4.35, + -12.26 + ], + "tag": null, + "to": [ + -4.35, + -2.06 + ], + "type": "ToPoint" + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 97, + 122, + 0 + ] + }, + "from": [ + -4.35, + -2.06 + ], + "tag": null, + "to": [ + -3.81, + -2.09 + ], + "type": "ToPoint" + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 128, + 161, + 0 + ] + }, + "ccw": true, + "center": [ + -2.478430620978426, + 21.878248822388485 + ], + "from": [ + -3.81, + -2.09 + ], + "tag": null, + "to": [ + 20.4, + 14.61 + ], + "type": "TangentialArcTo" + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 167, + 183, + 0 + ] + }, + "from": [ + 20.4, + 14.61 + ], + "tag": null, + "to": [ + 20.4, + -12.15 + ], + "type": "ToPoint" + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 189, + 259, + 0 + ] + }, + "from": [ + 20.4, + -12.15 + ], + "tag": { + "end": 258, + "start": 252, + "type": "TagDeclarator", + "value": "seg01" + }, + "to": [ + -4.35, + -12.26 + ], + "type": "ToPoint" + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 265, + 272, + 0 + ] + }, + "from": [ + -4.35, + -12.26 + ], + "tag": null, + "to": [ + -4.35, + -12.26 + ], + "type": "ToPoint" + } + ], + "on": { + "type": "plane", + "id": "[uuid]", + "artifactId": "[uuid]", + "value": "XZ", + "origin": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "xAxis": { + "x": 1.0, + "y": 0.0, + "z": 0.0 + }, + "yAxis": { + "x": 0.0, + "y": 0.0, + "z": 1.0 + }, + "zAxis": { + "x": 0.0, + "y": -1.0, + "z": 0.0 + }, + "units": { + "type": "Mm" + }, + "__meta": [] + }, + "start": { + "from": [ + -4.35, + -12.26 + ], + "to": [ + -4.35, + -12.26 + ], + "tag": null, + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 37, + 71, + 0 + ] + } + }, + "tags": { + "seg01": { + "type": "TagIdentifier", + "value": "seg01", + "info": { + "type": "TagEngineInfo", + "id": "[uuid]", + "sketch": "[uuid]", + "path": { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 189, + 259, + 0 + ] + }, + "from": [ + 20.4, + -12.150000000000002 + ], + "tag": { + "end": 258, + "start": 252, + "type": "TagDeclarator", + "value": "seg01" + }, + "to": [ + -4.35, + -12.26 + ], + "type": "ToPoint" + }, + "surface": { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [ + 189, + 259, + 0 + ], + "tag": { + "end": 258, + "start": 252, + "type": "TagDeclarator", + "value": "seg01" + }, + "type": "extrudePlane" + } + }, + "__meta": [ + { + "sourceRange": [ + 252, + 258, + 0 + ] + } + ] + } + }, + "artifactId": "[uuid]", + "originalId": "[uuid]", + "units": { + "type": "Mm" + }, + "__meta": [ + { + "sourceRange": [ + 37, + 71, + 0 + ] + } + ] + }, + "height": 50.0, + "startCapId": "[uuid]", + "endCapId": "[uuid]", + "units": { + "type": "Mm" + }, + "__meta": [ + { + "sourceRange": [ + 37, + 71, + 0 + ] + } + ] + }, + "units": { + "type": "Mm" + }, + "__meta": [ + { + "sourceRange": [ + 332, + 364, + 0 + ] + } + ] + }, + "start": { + "from": [ + -0.6800000000000002, + 47.7 + ], + "to": [ + -0.6800000000000002, + 47.7 + ], + "tag": null, + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 370, + 421, + 0 + ] + } + }, + "artifactId": "[uuid]", + "originalId": "[uuid]", + "units": { + "type": "Mm" + }, + "__meta": [ + { + "sourceRange": [ + 370, + 421, + 0 + ] + } + ] + }, + "height": -40.0, + "startCapId": null, + "endCapId": null, + "units": { + "type": "Mm" + }, + "__meta": [ + { + "sourceRange": [ + 370, + 421, + 0 + ] + } + ] + }, + { + "type": "Solid", + "id": "[uuid]", + "artifactId": "[uuid]", + "value": [ + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [ + 370, + 421, + 0 + ], + "tag": null, + "type": "extrudeArc" + } + ], + "sketch": { + "type": "Sketch", + "id": "[uuid]", + "paths": [ + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 370, + 421, + 0 + ] + }, + "ccw": true, + "center": [ + -2.08, + 47.7 + ], + "from": [ + -0.68, + 47.7 + ], + "radius": 1.4, + "tag": null, + "to": [ + -0.68, + 47.7 + ], + "type": "Circle" + } + ], + "on": { + "type": "face", + "id": "[uuid]", + "artifactId": "[uuid]", + "value": "seg01", + "xAxis": { + "x": 1.0, + "y": 0.0, + "z": 0.0 + }, + "yAxis": { + "x": 0.0, + "y": 0.0, + "z": 1.0 + }, + "zAxis": { + "x": 0.0, + "y": -1.0, + "z": 0.0 + }, + "solid": { + "type": "Solid", + "id": "[uuid]", + "artifactId": "[uuid]", + "value": [ + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [ + 77, + 91, + 0 + ], + "tag": null, + "type": "extrudePlane" + }, + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [ + 97, + 122, + 0 + ], + "tag": null, + "type": "extrudePlane" + }, + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [ + 128, + 161, + 0 + ], + "tag": null, + "type": "extrudeArc" + }, + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [ + 167, + 183, + 0 + ], + "tag": null, + "type": "extrudePlane" + }, + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [ + 189, + 259, + 0 + ], + "tag": { + "end": 258, + "start": 252, + "type": "TagDeclarator", + "value": "seg01" + }, + "type": "extrudePlane" + } + ], + "sketch": { + "type": "Sketch", + "id": "[uuid]", + "paths": [ + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 77, + 91, + 0 + ] + }, + "from": [ + -4.35, + -12.26 + ], + "tag": null, + "to": [ + -4.35, + -2.06 + ], + "type": "ToPoint" + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 97, + 122, + 0 + ] + }, + "from": [ + -4.35, + -2.06 + ], + "tag": null, + "to": [ + -3.81, + -2.09 + ], + "type": "ToPoint" + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 128, + 161, + 0 + ] + }, + "ccw": true, + "center": [ + -2.478430620978426, + 21.878248822388485 + ], + "from": [ + -3.81, + -2.09 + ], + "tag": null, + "to": [ + 20.4, + 14.61 + ], + "type": "TangentialArcTo" + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 167, + 183, + 0 + ] + }, + "from": [ + 20.4, + 14.61 + ], + "tag": null, + "to": [ + 20.4, + -12.15 + ], + "type": "ToPoint" + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 189, + 259, + 0 + ] + }, + "from": [ + 20.4, + -12.15 + ], + "tag": { + "end": 258, + "start": 252, + "type": "TagDeclarator", + "value": "seg01" + }, + "to": [ + -4.35, + -12.26 + ], + "type": "ToPoint" + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 265, + 272, + 0 + ] + }, + "from": [ + -4.35, + -12.26 + ], + "tag": null, + "to": [ + -4.35, + -12.26 + ], + "type": "ToPoint" + } + ], + "on": { + "type": "plane", + "id": "[uuid]", + "artifactId": "[uuid]", + "value": "XZ", + "origin": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "xAxis": { + "x": 1.0, + "y": 0.0, + "z": 0.0 + }, + "yAxis": { + "x": 0.0, + "y": 0.0, + "z": 1.0 + }, + "zAxis": { + "x": 0.0, + "y": -1.0, + "z": 0.0 + }, + "units": { + "type": "Mm" + }, + "__meta": [] + }, + "start": { + "from": [ + -4.35, + -12.26 + ], + "to": [ + -4.35, + -12.26 + ], + "tag": null, + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 37, + 71, + 0 + ] + } + }, + "tags": { + "seg01": { + "type": "TagIdentifier", + "value": "seg01", + "info": { + "type": "TagEngineInfo", + "id": "[uuid]", + "sketch": "[uuid]", + "path": { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 189, + 259, + 0 + ] + }, + "from": [ + 20.4, + -12.150000000000002 + ], + "tag": { + "end": 258, + "start": 252, + "type": "TagDeclarator", + "value": "seg01" + }, + "to": [ + -4.35, + -12.26 + ], + "type": "ToPoint" + }, + "surface": { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [ + 189, + 259, + 0 + ], + "tag": { + "end": 258, + "start": 252, + "type": "TagDeclarator", + "value": "seg01" + }, + "type": "extrudePlane" + } + }, + "__meta": [ + { + "sourceRange": [ + 252, + 258, + 0 + ] + } + ] + } + }, + "artifactId": "[uuid]", + "originalId": "[uuid]", + "units": { + "type": "Mm" + }, + "__meta": [ + { + "sourceRange": [ + 37, + 71, + 0 + ] + } + ] + }, + "height": 50.0, + "startCapId": "[uuid]", + "endCapId": "[uuid]", + "units": { + "type": "Mm" + }, + "__meta": [ + { + "sourceRange": [ + 37, + 71, + 0 + ] + } + ] + }, + "units": { + "type": "Mm" + }, + "__meta": [ + { + "sourceRange": [ + 332, + 364, + 0 + ] + } + ] + }, + "start": { + "from": [ + -0.6800000000000002, + 47.7 + ], + "to": [ + -0.6800000000000002, + 47.7 + ], + "tag": null, + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 370, + 421, + 0 + ] + } + }, + "artifactId": "[uuid]", + "originalId": "[uuid]", + "units": { + "type": "Mm" + }, + "__meta": [ + { + "sourceRange": [ + 370, + 421, + 0 + ] + } + ] + }, + "height": -40.0, + "startCapId": null, + "endCapId": null, + "units": { + "type": "Mm" + }, + "__meta": [ + { + "sourceRange": [ + 370, + 421, + 0 + ] + } + ] + }, + { + "type": "Solid", + "id": "[uuid]", + "artifactId": "[uuid]", + "value": [ + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [ + 370, + 421, + 0 + ], + "tag": null, + "type": "extrudeArc" + } + ], + "sketch": { + "type": "Sketch", + "id": "[uuid]", + "paths": [ + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 370, + 421, + 0 + ] + }, + "ccw": true, + "center": [ + -2.08, + 47.7 + ], + "from": [ + -0.68, + 47.7 + ], + "radius": 1.4, + "tag": null, + "to": [ + -0.68, + 47.7 + ], + "type": "Circle" + } + ], + "on": { + "type": "face", + "id": "[uuid]", + "artifactId": "[uuid]", + "value": "seg01", + "xAxis": { + "x": 1.0, + "y": 0.0, + "z": 0.0 + }, + "yAxis": { + "x": 0.0, + "y": 0.0, + "z": 1.0 + }, + "zAxis": { + "x": 0.0, + "y": -1.0, + "z": 0.0 + }, + "solid": { + "type": "Solid", + "id": "[uuid]", + "artifactId": "[uuid]", + "value": [ + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [ + 77, + 91, + 0 + ], + "tag": null, + "type": "extrudePlane" + }, + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [ + 97, + 122, + 0 + ], + "tag": null, + "type": "extrudePlane" + }, + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [ + 128, + 161, + 0 + ], + "tag": null, + "type": "extrudeArc" + }, + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [ + 167, + 183, + 0 + ], + "tag": null, + "type": "extrudePlane" + }, + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [ + 189, + 259, + 0 + ], + "tag": { + "end": 258, + "start": 252, + "type": "TagDeclarator", + "value": "seg01" + }, + "type": "extrudePlane" + } + ], + "sketch": { + "type": "Sketch", + "id": "[uuid]", + "paths": [ + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 77, + 91, + 0 + ] + }, + "from": [ + -4.35, + -12.26 + ], + "tag": null, + "to": [ + -4.35, + -2.06 + ], + "type": "ToPoint" + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 97, + 122, + 0 + ] + }, + "from": [ + -4.35, + -2.06 + ], + "tag": null, + "to": [ + -3.81, + -2.09 + ], + "type": "ToPoint" + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 128, + 161, + 0 + ] + }, + "ccw": true, + "center": [ + -2.478430620978426, + 21.878248822388485 + ], + "from": [ + -3.81, + -2.09 + ], + "tag": null, + "to": [ + 20.4, + 14.61 + ], + "type": "TangentialArcTo" + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 167, + 183, + 0 + ] + }, + "from": [ + 20.4, + 14.61 + ], + "tag": null, + "to": [ + 20.4, + -12.15 + ], + "type": "ToPoint" + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 189, + 259, + 0 + ] + }, + "from": [ + 20.4, + -12.15 + ], + "tag": { + "end": 258, + "start": 252, + "type": "TagDeclarator", + "value": "seg01" + }, + "to": [ + -4.35, + -12.26 + ], + "type": "ToPoint" + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 265, + 272, + 0 + ] + }, + "from": [ + -4.35, + -12.26 + ], + "tag": null, + "to": [ + -4.35, + -12.26 + ], + "type": "ToPoint" + } + ], + "on": { + "type": "plane", + "id": "[uuid]", + "artifactId": "[uuid]", + "value": "XZ", + "origin": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "xAxis": { + "x": 1.0, + "y": 0.0, + "z": 0.0 + }, + "yAxis": { + "x": 0.0, + "y": 0.0, + "z": 1.0 + }, + "zAxis": { + "x": 0.0, + "y": -1.0, + "z": 0.0 + }, + "units": { + "type": "Mm" + }, + "__meta": [] + }, + "start": { + "from": [ + -4.35, + -12.26 + ], + "to": [ + -4.35, + -12.26 + ], + "tag": null, + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 37, + 71, + 0 + ] + } + }, + "tags": { + "seg01": { + "type": "TagIdentifier", + "value": "seg01", + "info": { + "type": "TagEngineInfo", + "id": "[uuid]", + "sketch": "[uuid]", + "path": { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 189, + 259, + 0 + ] + }, + "from": [ + 20.4, + -12.150000000000002 + ], + "tag": { + "end": 258, + "start": 252, + "type": "TagDeclarator", + "value": "seg01" + }, + "to": [ + -4.35, + -12.26 + ], + "type": "ToPoint" + }, + "surface": { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [ + 189, + 259, + 0 + ], + "tag": { + "end": 258, + "start": 252, + "type": "TagDeclarator", + "value": "seg01" + }, + "type": "extrudePlane" + } + }, + "__meta": [ + { + "sourceRange": [ + 252, + 258, + 0 + ] + } + ] + } + }, + "artifactId": "[uuid]", + "originalId": "[uuid]", + "units": { + "type": "Mm" + }, + "__meta": [ + { + "sourceRange": [ + 37, + 71, + 0 + ] + } + ] + }, + "height": 50.0, + "startCapId": "[uuid]", + "endCapId": "[uuid]", + "units": { + "type": "Mm" + }, + "__meta": [ + { + "sourceRange": [ + 37, + 71, + 0 + ] + } + ] + }, + "units": { + "type": "Mm" + }, + "__meta": [ + { + "sourceRange": [ + 332, + 364, + 0 + ] + } + ] + }, + "start": { + "from": [ + -0.6800000000000002, + 47.7 + ], + "to": [ + -0.6800000000000002, + 47.7 + ], + "tag": null, + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 370, + 421, + 0 + ] + } + }, + "artifactId": "[uuid]", + "originalId": "[uuid]", + "units": { + "type": "Mm" + }, + "__meta": [ + { + "sourceRange": [ + 370, + 421, + 0 + ] + } + ] + }, + "height": -40.0, + "startCapId": null, + "endCapId": null, + "units": { + "type": "Mm" + }, + "__meta": [ + { + "sourceRange": [ + 370, + 421, + 0 + ] + } + ] + }, + { + "type": "Solid", + "id": "[uuid]", + "artifactId": "[uuid]", + "value": [ + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [ + 370, + 421, + 0 + ], + "tag": null, + "type": "extrudeArc" + } + ], + "sketch": { + "type": "Sketch", + "id": "[uuid]", + "paths": [ + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 370, + 421, + 0 + ] + }, + "ccw": true, + "center": [ + -2.08, + 47.7 + ], + "from": [ + -0.68, + 47.7 + ], + "radius": 1.4, + "tag": null, + "to": [ + -0.68, + 47.7 + ], + "type": "Circle" + } + ], + "on": { + "type": "face", + "id": "[uuid]", + "artifactId": "[uuid]", + "value": "seg01", + "xAxis": { + "x": 1.0, + "y": 0.0, + "z": 0.0 + }, + "yAxis": { + "x": 0.0, + "y": 0.0, + "z": 1.0 + }, + "zAxis": { + "x": 0.0, + "y": -1.0, + "z": 0.0 + }, + "solid": { + "type": "Solid", + "id": "[uuid]", + "artifactId": "[uuid]", + "value": [ + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [ + 77, + 91, + 0 + ], + "tag": null, + "type": "extrudePlane" + }, + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [ + 97, + 122, + 0 + ], + "tag": null, + "type": "extrudePlane" + }, + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [ + 128, + 161, + 0 + ], + "tag": null, + "type": "extrudeArc" + }, + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [ + 167, + 183, + 0 + ], + "tag": null, + "type": "extrudePlane" + }, + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [ + 189, + 259, + 0 + ], + "tag": { + "end": 258, + "start": 252, + "type": "TagDeclarator", + "value": "seg01" + }, + "type": "extrudePlane" + } + ], + "sketch": { + "type": "Sketch", + "id": "[uuid]", + "paths": [ + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 77, + 91, + 0 + ] + }, + "from": [ + -4.35, + -12.26 + ], + "tag": null, + "to": [ + -4.35, + -2.06 + ], + "type": "ToPoint" + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 97, + 122, + 0 + ] + }, + "from": [ + -4.35, + -2.06 + ], + "tag": null, + "to": [ + -3.81, + -2.09 + ], + "type": "ToPoint" + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 128, + 161, + 0 + ] + }, + "ccw": true, + "center": [ + -2.478430620978426, + 21.878248822388485 + ], + "from": [ + -3.81, + -2.09 + ], + "tag": null, + "to": [ + 20.4, + 14.61 + ], + "type": "TangentialArcTo" + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 167, + 183, + 0 + ] + }, + "from": [ + 20.4, + 14.61 + ], + "tag": null, + "to": [ + 20.4, + -12.15 + ], + "type": "ToPoint" + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 189, + 259, + 0 + ] + }, + "from": [ + 20.4, + -12.15 + ], + "tag": { + "end": 258, + "start": 252, + "type": "TagDeclarator", + "value": "seg01" + }, + "to": [ + -4.35, + -12.26 + ], + "type": "ToPoint" + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 265, + 272, + 0 + ] + }, + "from": [ + -4.35, + -12.26 + ], + "tag": null, + "to": [ + -4.35, + -12.26 + ], + "type": "ToPoint" + } + ], + "on": { + "type": "plane", + "id": "[uuid]", + "artifactId": "[uuid]", + "value": "XZ", + "origin": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "xAxis": { + "x": 1.0, + "y": 0.0, + "z": 0.0 + }, + "yAxis": { + "x": 0.0, + "y": 0.0, + "z": 1.0 + }, + "zAxis": { + "x": 0.0, + "y": -1.0, + "z": 0.0 + }, + "units": { + "type": "Mm" + }, + "__meta": [] + }, + "start": { + "from": [ + -4.35, + -12.26 + ], + "to": [ + -4.35, + -12.26 + ], + "tag": null, + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 37, + 71, + 0 + ] + } + }, + "tags": { + "seg01": { + "type": "TagIdentifier", + "value": "seg01", + "info": { + "type": "TagEngineInfo", + "id": "[uuid]", + "sketch": "[uuid]", + "path": { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 189, + 259, + 0 + ] + }, + "from": [ + 20.4, + -12.150000000000002 + ], + "tag": { + "end": 258, + "start": 252, + "type": "TagDeclarator", + "value": "seg01" + }, + "to": [ + -4.35, + -12.26 + ], + "type": "ToPoint" + }, + "surface": { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [ + 189, + 259, + 0 + ], + "tag": { + "end": 258, + "start": 252, + "type": "TagDeclarator", + "value": "seg01" + }, + "type": "extrudePlane" + } + }, + "__meta": [ + { + "sourceRange": [ + 252, + 258, + 0 + ] + } + ] + } + }, + "artifactId": "[uuid]", + "originalId": "[uuid]", + "units": { + "type": "Mm" + }, + "__meta": [ + { + "sourceRange": [ + 37, + 71, + 0 + ] + } + ] + }, + "height": 50.0, + "startCapId": "[uuid]", + "endCapId": "[uuid]", + "units": { + "type": "Mm" + }, + "__meta": [ + { + "sourceRange": [ + 37, + 71, + 0 + ] + } + ] + }, + "units": { + "type": "Mm" + }, + "__meta": [ + { + "sourceRange": [ + 332, + 364, + 0 + ] + } + ] + }, + "start": { + "from": [ + -0.6800000000000002, + 47.7 + ], + "to": [ + -0.6800000000000002, + 47.7 + ], + "tag": null, + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 370, + 421, + 0 + ] + } + }, + "artifactId": "[uuid]", + "originalId": "[uuid]", + "units": { + "type": "Mm" + }, + "__meta": [ + { + "sourceRange": [ + 370, + 421, + 0 + ] + } + ] + }, + "height": -40.0, + "startCapId": null, + "endCapId": null, + "units": { + "type": "Mm" + }, + "__meta": [ + { + "sourceRange": [ + 370, + 421, + 0 + ] + } + ] + }, + { + "type": "Solid", + "id": "[uuid]", + "artifactId": "[uuid]", + "value": [ + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [ + 370, + 421, + 0 + ], + "tag": null, + "type": "extrudeArc" + } + ], + "sketch": { + "type": "Sketch", + "id": "[uuid]", + "paths": [ + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 370, + 421, + 0 + ] + }, + "ccw": true, + "center": [ + -2.08, + 47.7 + ], + "from": [ + -0.68, + 47.7 + ], + "radius": 1.4, + "tag": null, + "to": [ + -0.68, + 47.7 + ], + "type": "Circle" + } + ], + "on": { + "type": "face", + "id": "[uuid]", + "artifactId": "[uuid]", + "value": "seg01", + "xAxis": { + "x": 1.0, + "y": 0.0, + "z": 0.0 + }, + "yAxis": { + "x": 0.0, + "y": 0.0, + "z": 1.0 + }, + "zAxis": { + "x": 0.0, + "y": -1.0, + "z": 0.0 + }, + "solid": { + "type": "Solid", + "id": "[uuid]", + "artifactId": "[uuid]", + "value": [ + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [ + 77, + 91, + 0 + ], + "tag": null, + "type": "extrudePlane" + }, + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [ + 97, + 122, + 0 + ], + "tag": null, + "type": "extrudePlane" + }, + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [ + 128, + 161, + 0 + ], + "tag": null, + "type": "extrudeArc" + }, + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [ + 167, + 183, + 0 + ], + "tag": null, + "type": "extrudePlane" + }, + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [ + 189, + 259, + 0 + ], + "tag": { + "end": 258, + "start": 252, + "type": "TagDeclarator", + "value": "seg01" + }, + "type": "extrudePlane" + } + ], + "sketch": { + "type": "Sketch", + "id": "[uuid]", + "paths": [ + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 77, + 91, + 0 + ] + }, + "from": [ + -4.35, + -12.26 + ], + "tag": null, + "to": [ + -4.35, + -2.06 + ], + "type": "ToPoint" + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 97, + 122, + 0 + ] + }, + "from": [ + -4.35, + -2.06 + ], + "tag": null, + "to": [ + -3.81, + -2.09 + ], + "type": "ToPoint" + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 128, + 161, + 0 + ] + }, + "ccw": true, + "center": [ + -2.478430620978426, + 21.878248822388485 + ], + "from": [ + -3.81, + -2.09 + ], + "tag": null, + "to": [ + 20.4, + 14.61 + ], + "type": "TangentialArcTo" + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 167, + 183, + 0 + ] + }, + "from": [ + 20.4, + 14.61 + ], + "tag": null, + "to": [ + 20.4, + -12.15 + ], + "type": "ToPoint" + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 189, + 259, + 0 + ] + }, + "from": [ + 20.4, + -12.15 + ], + "tag": { + "end": 258, + "start": 252, + "type": "TagDeclarator", + "value": "seg01" + }, + "to": [ + -4.35, + -12.26 + ], + "type": "ToPoint" + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 265, + 272, + 0 + ] + }, + "from": [ + -4.35, + -12.26 + ], + "tag": null, + "to": [ + -4.35, + -12.26 + ], + "type": "ToPoint" + } + ], + "on": { + "type": "plane", + "id": "[uuid]", + "artifactId": "[uuid]", + "value": "XZ", + "origin": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "xAxis": { + "x": 1.0, + "y": 0.0, + "z": 0.0 + }, + "yAxis": { + "x": 0.0, + "y": 0.0, + "z": 1.0 + }, + "zAxis": { + "x": 0.0, + "y": -1.0, + "z": 0.0 + }, + "units": { + "type": "Mm" + }, + "__meta": [] + }, + "start": { + "from": [ + -4.35, + -12.26 + ], + "to": [ + -4.35, + -12.26 + ], + "tag": null, + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 37, + 71, + 0 + ] + } + }, + "tags": { + "seg01": { + "type": "TagIdentifier", + "value": "seg01", + "info": { + "type": "TagEngineInfo", + "id": "[uuid]", + "sketch": "[uuid]", + "path": { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 189, + 259, + 0 + ] + }, + "from": [ + 20.4, + -12.150000000000002 + ], + "tag": { + "end": 258, + "start": 252, + "type": "TagDeclarator", + "value": "seg01" + }, + "to": [ + -4.35, + -12.26 + ], + "type": "ToPoint" + }, + "surface": { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [ + 189, + 259, + 0 + ], + "tag": { + "end": 258, + "start": 252, + "type": "TagDeclarator", + "value": "seg01" + }, + "type": "extrudePlane" + } + }, + "__meta": [ + { + "sourceRange": [ + 252, + 258, + 0 + ] + } + ] + } + }, + "artifactId": "[uuid]", + "originalId": "[uuid]", + "units": { + "type": "Mm" + }, + "__meta": [ + { + "sourceRange": [ + 37, + 71, + 0 + ] + } + ] + }, + "height": 50.0, + "startCapId": "[uuid]", + "endCapId": "[uuid]", + "units": { + "type": "Mm" + }, + "__meta": [ + { + "sourceRange": [ + 37, + 71, + 0 + ] + } + ] + }, + "units": { + "type": "Mm" + }, + "__meta": [ + { + "sourceRange": [ + 332, + 364, + 0 + ] + } + ] + }, + "start": { + "from": [ + -0.6800000000000002, + 47.7 + ], + "to": [ + -0.6800000000000002, + 47.7 + ], + "tag": null, + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 370, + 421, + 0 + ] + } + }, + "artifactId": "[uuid]", + "originalId": "[uuid]", + "units": { + "type": "Mm" + }, + "__meta": [ + { + "sourceRange": [ + 370, + 421, + 0 + ] + } + ] + }, + "height": -40.0, + "startCapId": null, + "endCapId": null, + "units": { + "type": "Mm" + }, + "__meta": [ + { + "sourceRange": [ + 370, + 421, + 0 + ] + } + ] + }, + { + "type": "Solid", + "id": "[uuid]", + "artifactId": "[uuid]", + "value": [ + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [ + 370, + 421, + 0 + ], + "tag": null, + "type": "extrudeArc" + } + ], + "sketch": { + "type": "Sketch", + "id": "[uuid]", + "paths": [ + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 370, + 421, + 0 + ] + }, + "ccw": true, + "center": [ + -2.08, + 47.7 + ], + "from": [ + -0.68, + 47.7 + ], + "radius": 1.4, + "tag": null, + "to": [ + -0.68, + 47.7 + ], + "type": "Circle" + } + ], + "on": { + "type": "face", + "id": "[uuid]", + "artifactId": "[uuid]", + "value": "seg01", + "xAxis": { + "x": 1.0, + "y": 0.0, + "z": 0.0 + }, + "yAxis": { + "x": 0.0, + "y": 0.0, + "z": 1.0 + }, + "zAxis": { + "x": 0.0, + "y": -1.0, + "z": 0.0 + }, + "solid": { + "type": "Solid", + "id": "[uuid]", + "artifactId": "[uuid]", + "value": [ + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [ + 77, + 91, + 0 + ], + "tag": null, + "type": "extrudePlane" + }, + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [ + 97, + 122, + 0 + ], + "tag": null, + "type": "extrudePlane" + }, + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [ + 128, + 161, + 0 + ], + "tag": null, + "type": "extrudeArc" + }, + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [ + 167, + 183, + 0 + ], + "tag": null, + "type": "extrudePlane" + }, + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [ + 189, + 259, + 0 + ], + "tag": { + "end": 258, + "start": 252, + "type": "TagDeclarator", + "value": "seg01" + }, + "type": "extrudePlane" + } + ], + "sketch": { + "type": "Sketch", + "id": "[uuid]", + "paths": [ + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 77, + 91, + 0 + ] + }, + "from": [ + -4.35, + -12.26 + ], + "tag": null, + "to": [ + -4.35, + -2.06 + ], + "type": "ToPoint" + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 97, + 122, + 0 + ] + }, + "from": [ + -4.35, + -2.06 + ], + "tag": null, + "to": [ + -3.81, + -2.09 + ], + "type": "ToPoint" + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 128, + 161, + 0 + ] + }, + "ccw": true, + "center": [ + -2.478430620978426, + 21.878248822388485 + ], + "from": [ + -3.81, + -2.09 + ], + "tag": null, + "to": [ + 20.4, + 14.61 + ], + "type": "TangentialArcTo" + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 167, + 183, + 0 + ] + }, + "from": [ + 20.4, + 14.61 + ], + "tag": null, + "to": [ + 20.4, + -12.15 + ], + "type": "ToPoint" + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 189, + 259, + 0 + ] + }, + "from": [ + 20.4, + -12.15 + ], + "tag": { + "end": 258, + "start": 252, + "type": "TagDeclarator", + "value": "seg01" + }, + "to": [ + -4.35, + -12.26 + ], + "type": "ToPoint" + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 265, + 272, + 0 + ] + }, + "from": [ + -4.35, + -12.26 + ], + "tag": null, + "to": [ + -4.35, + -12.26 + ], + "type": "ToPoint" + } + ], + "on": { + "type": "plane", + "id": "[uuid]", + "artifactId": "[uuid]", + "value": "XZ", + "origin": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "xAxis": { + "x": 1.0, + "y": 0.0, + "z": 0.0 + }, + "yAxis": { + "x": 0.0, + "y": 0.0, + "z": 1.0 + }, + "zAxis": { + "x": 0.0, + "y": -1.0, + "z": 0.0 + }, + "units": { + "type": "Mm" + }, + "__meta": [] + }, + "start": { + "from": [ + -4.35, + -12.26 + ], + "to": [ + -4.35, + -12.26 + ], + "tag": null, + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 37, + 71, + 0 + ] + } + }, + "tags": { + "seg01": { + "type": "TagIdentifier", + "value": "seg01", + "info": { + "type": "TagEngineInfo", + "id": "[uuid]", + "sketch": "[uuid]", + "path": { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 189, + 259, + 0 + ] + }, + "from": [ + 20.4, + -12.150000000000002 + ], + "tag": { + "end": 258, + "start": 252, + "type": "TagDeclarator", + "value": "seg01" + }, + "to": [ + -4.35, + -12.26 + ], + "type": "ToPoint" + }, + "surface": { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [ + 189, + 259, + 0 + ], + "tag": { + "end": 258, + "start": 252, + "type": "TagDeclarator", + "value": "seg01" + }, + "type": "extrudePlane" + } + }, + "__meta": [ + { + "sourceRange": [ + 252, + 258, + 0 + ] + } + ] + } + }, + "artifactId": "[uuid]", + "originalId": "[uuid]", + "units": { + "type": "Mm" + }, + "__meta": [ + { + "sourceRange": [ + 37, + 71, + 0 + ] + } + ] + }, + "height": 50.0, + "startCapId": "[uuid]", + "endCapId": "[uuid]", + "units": { + "type": "Mm" + }, + "__meta": [ + { + "sourceRange": [ + 37, + 71, + 0 + ] + } + ] + }, + "units": { + "type": "Mm" + }, + "__meta": [ + { + "sourceRange": [ + 332, + 364, + 0 + ] + } + ] + }, + "start": { + "from": [ + -0.6800000000000002, + 47.7 + ], + "to": [ + -0.6800000000000002, + 47.7 + ], + "tag": null, + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 370, + 421, + 0 + ] + } + }, + "artifactId": "[uuid]", + "originalId": "[uuid]", + "units": { + "type": "Mm" + }, + "__meta": [ + { + "sourceRange": [ + 370, + 421, + 0 + ] + } + ] + }, + "height": -40.0, + "startCapId": null, + "endCapId": null, + "units": { + "type": "Mm" + }, + "__meta": [ + { + "sourceRange": [ + 370, + 421, + 0 + ] + } + ] + }, + { + "type": "Solid", + "id": "[uuid]", + "artifactId": "[uuid]", + "value": [ + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [ + 370, + 421, + 0 + ], + "tag": null, + "type": "extrudeArc" + } + ], + "sketch": { + "type": "Sketch", + "id": "[uuid]", + "paths": [ + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 370, + 421, + 0 + ] + }, + "ccw": true, + "center": [ + -2.08, + 47.7 + ], + "from": [ + -0.68, + 47.7 + ], + "radius": 1.4, + "tag": null, + "to": [ + -0.68, + 47.7 + ], + "type": "Circle" + } + ], + "on": { + "type": "face", + "id": "[uuid]", + "artifactId": "[uuid]", + "value": "seg01", + "xAxis": { + "x": 1.0, + "y": 0.0, + "z": 0.0 + }, + "yAxis": { + "x": 0.0, + "y": 0.0, + "z": 1.0 + }, + "zAxis": { + "x": 0.0, + "y": -1.0, + "z": 0.0 + }, + "solid": { + "type": "Solid", + "id": "[uuid]", + "artifactId": "[uuid]", + "value": [ + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [ + 77, + 91, + 0 + ], + "tag": null, + "type": "extrudePlane" + }, + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [ + 97, + 122, + 0 + ], + "tag": null, + "type": "extrudePlane" + }, + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [ + 128, + 161, + 0 + ], + "tag": null, + "type": "extrudeArc" + }, + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [ + 167, + 183, + 0 + ], + "tag": null, + "type": "extrudePlane" + }, + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [ + 189, + 259, + 0 + ], + "tag": { + "end": 258, + "start": 252, + "type": "TagDeclarator", + "value": "seg01" + }, + "type": "extrudePlane" + } + ], + "sketch": { + "type": "Sketch", + "id": "[uuid]", + "paths": [ + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 77, + 91, + 0 + ] + }, + "from": [ + -4.35, + -12.26 + ], + "tag": null, + "to": [ + -4.35, + -2.06 + ], + "type": "ToPoint" + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 97, + 122, + 0 + ] + }, + "from": [ + -4.35, + -2.06 + ], + "tag": null, + "to": [ + -3.81, + -2.09 + ], + "type": "ToPoint" + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 128, + 161, + 0 + ] + }, + "ccw": true, + "center": [ + -2.478430620978426, + 21.878248822388485 + ], + "from": [ + -3.81, + -2.09 + ], + "tag": null, + "to": [ + 20.4, + 14.61 + ], + "type": "TangentialArcTo" + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 167, + 183, + 0 + ] + }, + "from": [ + 20.4, + 14.61 + ], + "tag": null, + "to": [ + 20.4, + -12.15 + ], + "type": "ToPoint" + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 189, + 259, + 0 + ] + }, + "from": [ + 20.4, + -12.15 + ], + "tag": { + "end": 258, + "start": 252, + "type": "TagDeclarator", + "value": "seg01" + }, + "to": [ + -4.35, + -12.26 + ], + "type": "ToPoint" + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 265, + 272, + 0 + ] + }, + "from": [ + -4.35, + -12.26 + ], + "tag": null, + "to": [ + -4.35, + -12.26 + ], + "type": "ToPoint" + } + ], + "on": { + "type": "plane", + "id": "[uuid]", + "artifactId": "[uuid]", + "value": "XZ", + "origin": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "xAxis": { + "x": 1.0, + "y": 0.0, + "z": 0.0 + }, + "yAxis": { + "x": 0.0, + "y": 0.0, + "z": 1.0 + }, + "zAxis": { + "x": 0.0, + "y": -1.0, + "z": 0.0 + }, + "units": { + "type": "Mm" + }, + "__meta": [] + }, + "start": { + "from": [ + -4.35, + -12.26 + ], + "to": [ + -4.35, + -12.26 + ], + "tag": null, + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 37, + 71, + 0 + ] + } + }, + "tags": { + "seg01": { + "type": "TagIdentifier", + "value": "seg01", + "info": { + "type": "TagEngineInfo", + "id": "[uuid]", + "sketch": "[uuid]", + "path": { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 189, + 259, + 0 + ] + }, + "from": [ + 20.4, + -12.150000000000002 + ], + "tag": { + "end": 258, + "start": 252, + "type": "TagDeclarator", + "value": "seg01" + }, + "to": [ + -4.35, + -12.26 + ], + "type": "ToPoint" + }, + "surface": { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [ + 189, + 259, + 0 + ], + "tag": { + "end": 258, + "start": 252, + "type": "TagDeclarator", + "value": "seg01" + }, + "type": "extrudePlane" + } + }, + "__meta": [ + { + "sourceRange": [ + 252, + 258, + 0 + ] + } + ] + } + }, + "artifactId": "[uuid]", + "originalId": "[uuid]", + "units": { + "type": "Mm" + }, + "__meta": [ + { + "sourceRange": [ + 37, + 71, + 0 + ] + } + ] + }, + "height": 50.0, + "startCapId": "[uuid]", + "endCapId": "[uuid]", + "units": { + "type": "Mm" + }, + "__meta": [ + { + "sourceRange": [ + 37, + 71, + 0 + ] + } + ] + }, + "units": { + "type": "Mm" + }, + "__meta": [ + { + "sourceRange": [ + 332, + 364, + 0 + ] + } + ] + }, + "start": { + "from": [ + -0.6800000000000002, + 47.7 + ], + "to": [ + -0.6800000000000002, + 47.7 + ], + "tag": null, + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [ + 370, + 421, + 0 + ] + } + }, + "artifactId": "[uuid]", + "originalId": "[uuid]", + "units": { + "type": "Mm" + }, + "__meta": [ + { + "sourceRange": [ + 370, + 421, + 0 + ] + } + ] + }, + "height": -40.0, + "startCapId": null, + "endCapId": null, + "units": { + "type": "Mm" + }, + "__meta": [ + { + "sourceRange": [ + 370, + 421, + 0 + ] + } + ] + } + ] + } +} diff --git a/src/wasm-lib/kcl/tests/ssi_pattern/rendered_model.png b/src/wasm-lib/kcl/tests/ssi_pattern/rendered_model.png new file mode 100644 index 0000000000000000000000000000000000000000..0579f9bf02565cea8a24141608b1a521ecc82197 GIT binary patch literal 87295 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

3I<&L-LW8(TpyDA=gJTV2ewOGFp9 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 CaL Date: Thu, 13 Feb 2025 17:18:54 -0600 Subject: [PATCH 05/30] KCL: Allow comments in CallExpressionKw (#5381) Before, this would not parse: ``` line( end = [44.09, 306.95], // tag this for later tag = $hello ) ``` Now it does. --- src/lang/modifyAst.ts | 3 +- src/lang/std/sketch.ts | 2 + src/wasm-lib/kcl/src/parsing/ast/types/mod.rs | 6 +- src/wasm-lib/kcl/src/parsing/parser.rs | 71 +++++++++++---- ...hot_tests__kw_function_call_multiline.snap | 86 ++++++++++++++++++ ...function_call_multiline_with_comments.snap | 89 +++++++++++++++++++ 6 files changed, 238 insertions(+), 19 deletions(-) create mode 100644 src/wasm-lib/kcl/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_tests__kw_function_call_multiline.snap create mode 100644 src/wasm-lib/kcl/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_tests__kw_function_call_multiline_with_comments.snap diff --git a/src/lang/modifyAst.ts b/src/lang/modifyAst.ts index 0e8a1c705..65794afd9 100644 --- a/src/lang/modifyAst.ts +++ b/src/lang/modifyAst.ts @@ -964,6 +964,7 @@ export function createCallExpressionStdLibKw( end: 0, moduleId: 0, outerAttrs: [], + nonCodeMeta: nonCodeMetaEmpty(), callee: { type: 'Identifier', start: 0, @@ -1585,7 +1586,7 @@ export async function deleteFromSelection( return new Error('Selection not recognised, could not delete') } -const nonCodeMetaEmpty = () => { +export const nonCodeMetaEmpty = () => { return { nonCodeNodes: {}, startNodes: [], start: 0, end: 0 } } diff --git a/src/lang/std/sketch.ts b/src/lang/std/sketch.ts index ad0123c53..6b1a7d5b5 100644 --- a/src/lang/std/sketch.ts +++ b/src/lang/std/sketch.ts @@ -30,6 +30,7 @@ import { toolTips, ToolTip } from 'lang/langHelpers' import { createPipeExpression, mutateKwArg, + nonCodeMetaEmpty, splitPathAtPipeExpression, } from '../modifyAst' @@ -2509,6 +2510,7 @@ function addTagKw(): addTagFn { unlabeled: callExpr.node.arguments.length ? callExpr.node.arguments[0] : null, + nonCodeMeta: nonCodeMetaEmpty(), arguments: [], } const tagArg = findKwArg(ARG_TAG, primaryCallExp) diff --git a/src/wasm-lib/kcl/src/parsing/ast/types/mod.rs b/src/wasm-lib/kcl/src/parsing/ast/types/mod.rs index b857461df..8c3df8e14 100644 --- a/src/wasm-lib/kcl/src/parsing/ast/types/mod.rs +++ b/src/wasm-lib/kcl/src/parsing/ast/types/mod.rs @@ -1581,7 +1581,7 @@ pub struct CallExpression { #[derive(Debug, Clone, Deserialize, Serialize, PartialEq, ts_rs::TS, JsonSchema)] #[ts(export)] -#[serde(tag = "type")] +#[serde(rename_all = "camelCase", tag = "type")] pub struct CallExpressionKw { pub callee: Node, pub unlabeled: Option, @@ -1591,6 +1591,9 @@ pub struct CallExpressionKw { #[serde(default, skip_serializing_if = "Option::is_none")] #[ts(optional)] pub digest: Option, + + #[serde(default, skip_serializing_if = "NonCodeMeta::is_empty")] + pub non_code_meta: NonCodeMeta, } #[derive(Debug, Clone, Deserialize, Serialize, PartialEq, ts_rs::TS, JsonSchema)] @@ -1714,6 +1717,7 @@ impl CallExpressionKw { unlabeled, arguments, digest: None, + non_code_meta: Default::default(), })) } diff --git a/src/wasm-lib/kcl/src/parsing/parser.rs b/src/wasm-lib/kcl/src/parsing/parser.rs index fea2d26e1..aa403f986 100644 --- a/src/wasm-lib/kcl/src/parsing/parser.rs +++ b/src/wasm-lib/kcl/src/parsing/parser.rs @@ -882,6 +882,17 @@ fn property_separator(i: &mut TokenSlice) -> PResult<()> { .parse_next(i) } +/// Match something that separates the labeled arguments of a fn call. +fn labeled_arg_separator(i: &mut TokenSlice) -> PResult<()> { + alt(( + // Normally you need a comma. + comma_sep, + // But, if the argument list is ending, no need for a comma. + peek(preceded(opt(whitespace), close_paren)).void(), + )) + .parse_next(i) +} + /// Parse a KCL object value. pub(crate) fn object(i: &mut TokenSlice) -> PResult> { let open = open_brace(i)?; @@ -2496,14 +2507,6 @@ fn labeled_argument(i: &mut TokenSlice) -> PResult { .parse_next(i) } -/// Arguments are passed into a function, -/// preceded by the name of the parameter (the label). -fn labeled_arguments(i: &mut TokenSlice) -> PResult> { - separated(0.., labeled_argument, comma_sep) - .context(expected("function arguments")) - .parse_next(i) -} - /// A type of a function argument. /// This can be: /// - a primitive type, e.g. 'number' or 'string' or 'bool' @@ -2783,7 +2786,28 @@ fn fn_call_kw(i: &mut TokenSlice) -> PResult> { ignore_whitespace(i); let initial_unlabeled_arg = opt((expression, comma, opt(whitespace)).map(|(arg, _, _)| arg)).parse_next(i)?; - let args = labeled_arguments(i)?; + let args: Vec<_> = repeat( + 0.., + alt(( + terminated(non_code_node.map(NonCodeOr::NonCode), whitespace), + terminated(labeled_argument, labeled_arg_separator).map(NonCodeOr::Code), + )), + ) + .parse_next(i)?; + let (args, non_code_nodes): (Vec<_>, BTreeMap) = args.into_iter().enumerate().fold( + (Vec::new(), BTreeMap::new()), + |(mut args, mut non_code_nodes), (i, e)| { + match e { + NonCodeOr::NonCode(x) => { + non_code_nodes.insert(i, vec![x]); + } + NonCodeOr::Code(x) => { + args.push(x); + } + } + (args, non_code_nodes) + }, + ); if let Some(std_fn) = crate::std::get_stdlib_fn(&fn_name.name) { let just_args: Vec<_> = args.iter().collect(); typecheck_all_kw(std_fn, &just_args)?; @@ -2792,6 +2816,10 @@ fn fn_call_kw(i: &mut TokenSlice) -> PResult> { opt(comma_sep).parse_next(i)?; let end = close_paren.parse_next(i)?.end; + let non_code_meta = NonCodeMeta { + non_code_nodes, + ..Default::default() + }; Ok(Node { start: fn_name.start, end, @@ -2801,6 +2829,7 @@ fn fn_call_kw(i: &mut TokenSlice) -> PResult> { unlabeled: initial_unlabeled_arg, arguments: args, digest: None, + non_code_meta, }, outer_attrs: Vec::new(), }) @@ -4390,14 +4419,6 @@ let myBox = box([0,0], -3, -16, -10) crate::parsing::top_level_parse(some_program_string).unwrap(); } - #[test] - fn arg_labels() { - let input = r#"length: 3"#; - let module_id = ModuleId::default(); - let tokens = crate::parsing::token::lex(input, module_id).unwrap(); - super::labeled_arguments(&mut tokens.as_slice()).unwrap(); - } - #[test] fn kw_fn() { for input in ["val = foo(x, y = z)", "val = foo(y = z)"] { @@ -4879,6 +4900,22 @@ my14 = 4 ^ 2 - 3 ^ 2 * 2 r#"fn foo(x?: number = 2) { return 1 }"# ); snapshot_test!(kw_function_call_in_pipe, r#"val = 1 |> f(arg = x)"#); + snapshot_test!( + kw_function_call_multiline, + r#"val = f( + arg = x, + foo = x, + bar = x, + )"# + ); + snapshot_test!( + kw_function_call_multiline_with_comments, + r#"val = f( + arg = x, + // foo = x, + bar = x, + )"# + ); } #[allow(unused)] diff --git a/src/wasm-lib/kcl/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_tests__kw_function_call_multiline.snap b/src/wasm-lib/kcl/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_tests__kw_function_call_multiline.snap new file mode 100644 index 000000000..a96454ac4 --- /dev/null +++ b/src/wasm-lib/kcl/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_tests__kw_function_call_multiline.snap @@ -0,0 +1,86 @@ +--- +source: kcl/src/parsing/parser.rs +expression: actual +snapshot_kind: text +--- +{ + "body": [ + { + "declaration": { + "end": 87, + "id": { + "end": 3, + "name": "val", + "start": 0, + "type": "Identifier" + }, + "init": { + "arguments": [ + { + "type": "LabeledArg", + "label": { + "type": "Identifier", + "name": "arg" + }, + "arg": { + "end": 29, + "name": "x", + "start": 28, + "type": "Identifier", + "type": "Identifier" + } + }, + { + "type": "LabeledArg", + "label": { + "type": "Identifier", + "name": "foo" + }, + "arg": { + "end": 51, + "name": "x", + "start": 50, + "type": "Identifier", + "type": "Identifier" + } + }, + { + "type": "LabeledArg", + "label": { + "type": "Identifier", + "name": "bar" + }, + "arg": { + "end": 73, + "name": "x", + "start": 72, + "type": "Identifier", + "type": "Identifier" + } + } + ], + "callee": { + "end": 7, + "name": "f", + "start": 6, + "type": "Identifier" + }, + "end": 87, + "start": 6, + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null + }, + "start": 0, + "type": "VariableDeclarator" + }, + "end": 87, + "kind": "const", + "start": 0, + "type": "VariableDeclaration", + "type": "VariableDeclaration" + } + ], + "end": 87, + "start": 0 +} diff --git a/src/wasm-lib/kcl/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_tests__kw_function_call_multiline_with_comments.snap b/src/wasm-lib/kcl/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_tests__kw_function_call_multiline_with_comments.snap new file mode 100644 index 000000000..c2cf930b3 --- /dev/null +++ b/src/wasm-lib/kcl/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_tests__kw_function_call_multiline_with_comments.snap @@ -0,0 +1,89 @@ +--- +source: kcl/src/parsing/parser.rs +expression: actual +snapshot_kind: text +--- +{ + "body": [ + { + "declaration": { + "end": 90, + "id": { + "end": 3, + "name": "val", + "start": 0, + "type": "Identifier" + }, + "init": { + "arguments": [ + { + "type": "LabeledArg", + "label": { + "type": "Identifier", + "name": "arg" + }, + "arg": { + "end": 29, + "name": "x", + "start": 28, + "type": "Identifier", + "type": "Identifier" + } + }, + { + "type": "LabeledArg", + "label": { + "type": "Identifier", + "name": "bar" + }, + "arg": { + "end": 76, + "name": "x", + "start": 75, + "type": "Identifier", + "type": "Identifier" + } + } + ], + "callee": { + "end": 7, + "name": "f", + "start": 6, + "type": "Identifier" + }, + "end": 90, + "nonCodeMeta": { + "nonCodeNodes": { + "1": [ + { + "end": 55, + "start": 44, + "type": "NonCodeNode", + "value": { + "type": "blockComment", + "value": "foo = x,", + "style": "line" + } + } + ] + }, + "startNodes": [] + }, + "start": 6, + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null + }, + "start": 0, + "type": "VariableDeclarator" + }, + "end": 90, + "kind": "const", + "start": 0, + "type": "VariableDeclaration", + "type": "VariableDeclaration" + } + ], + "end": 90, + "start": 0 +} From 8c5662e45879e971d96246d0b269d3f08d968b1e Mon Sep 17 00:00:00 2001 From: Nick Cameron Date: Fri, 14 Feb 2025 13:03:23 +1300 Subject: [PATCH 06/30] Add type to KclValue::Number (#5380) Signed-off-by: Nick Cameron --- docs/kcl/std.json | 5300 +++++++++++++---- docs/kcl/types/KclValue.md | 1 + docs/kcl/types/NumericType.md | 250 + docs/kcl/types/UnitAngle.md | 47 + docs/kcl/types/UnitType.md | 186 + src/lang/executor.test.ts | 21 +- src/lib/kclHelpers.test.ts | 3 + src/wasm-lib/kcl/src/execution/exec_ast.rs | 59 +- src/wasm-lib/kcl/src/execution/kcl_value.rs | 113 +- src/wasm-lib/kcl/src/execution/memory.rs | 3 + src/wasm-lib/kcl/src/parsing/ast/types/mod.rs | 39 +- src/wasm-lib/kcl/src/parsing/parser.rs | 2 +- ...w_function_decl_with_default_and_type.snap | 6 +- ...kw_function_decl_with_default_no_type.snap | 6 +- src/wasm-lib/kcl/src/std/args.rs | 64 +- src/wasm-lib/kcl/src/std/assert.rs | 14 +- src/wasm-lib/kcl/src/std/convert.rs | 4 +- src/wasm-lib/kcl/src/std/math.rs | 8 +- src/wasm-lib/kcl/src/std/mod.rs | 12 +- src/wasm-lib/kcl/src/std/patterns.rs | 12 +- src/wasm-lib/kcl/src/std/sketch.rs | 9 +- .../kcl/tests/add_lots/program_memory.snap | 15 + .../kcl/tests/angled_line/program_memory.snap | 12 + .../tests/array_elem_pop/program_memory.snap | 66 + .../tests/array_elem_push/program_memory.snap | 120 + .../array_range_expr/program_memory.snap | 93 + .../program_memory.snap | 45 + .../program_memory.snap | 12 + .../program_memory.snap | 12 + .../program_memory.snap | 12 + .../program_memory.snap | 12 + .../program_memory.snap | 12 + .../basic_fillet_cube_end/program_memory.snap | 12 + .../program_memory.snap | 12 + .../program_memory.snap | 12 + .../program_memory.snap | 12 + .../program_memory.snap | 12 + .../program_memory.snap | 12 + .../boolean_logical_and/program_memory.snap | 48 + .../program_memory.snap | 30 + .../boolean_logical_or/program_memory.snap | 48 + .../circle_three_point/program_memory.snap | 12 + .../program_memory.snap | 12 + .../kcl/tests/comparisons/program_memory.snap | 12 + .../tests/computed_var/program_memory.snap | 93 + .../kcl/tests/cube/program_memory.snap | 12 + .../tests/double_map_fn/program_memory.snap | 30 + .../fillet-and-shell/program_memory.snap | 138 + .../tests/function_sketch/program_memory.snap | 12 + .../program_memory.snap | 12 + .../kcl/tests/helix_ccw/program_memory.snap | 12 + .../tests/helix_simple/program_memory.snap | 12 + .../kcl/tests/i_shape/program_memory.snap | 78 + .../kcl/tests/if_else/program_memory.snap | 39 + .../tests/import_constant/program_memory.snap | 21 + .../tests/import_export/program_memory.snap | 21 + .../tests/import_foreign/program_memory.snap | 12 + .../program_memory.snap | 12 + .../kcl/tests/import_glob/program_memory.snap | 21 + .../import_side_effect/program_memory.snap | 12 + .../tests/import_whole/program_memory.snap | 12 + .../tests/index_of_array/program_memory.snap | 60 + .../tests/kittycad_svg/program_memory.snap | 12 + .../kcl/tests/kw_fn/program_memory.snap | 18 + .../kcl/tests/kw_fn_with_defaults/ast.snap | 6 +- .../kw_fn_with_defaults/program_memory.snap | 31 +- .../program_memory.snap | 12 + .../mike_stress_test/program_memory.snap | 12 + .../tests/neg_xz_plane/program_memory.snap | 12 + .../kcl/tests/parametric/program_memory.snap | 78 + .../program_memory.snap | 81 + .../pentagon_fillet_sugar/program_memory.snap | 75 + .../kcl/tests/pipe_as_arg/program_memory.snap | 12 + .../kcl/tests/poop_chute/program_memory.snap | 102 + .../property_of_object/program_memory.snap | 84 + .../tests/riddle_small/program_memory.snap | 45 + .../program_memory.snap | 12 + .../program_memory.snap | 12 + .../sketch_in_object/program_memory.snap | 12 + .../tests/sketch_on_face/program_memory.snap | 12 + .../program_memory.snap | 90 + .../program_memory.snap | 12 + .../sketch_on_face_end/program_memory.snap | 12 + .../program_memory.snap | 12 + .../sketch_on_face_start/program_memory.snap | 12 + .../kcl/tests/ssi_pattern/program_memory.snap | 12 + .../tests/tan_arc_x_line/program_memory.snap | 57 + .../tests/tangential_arc/program_memory.snap | 12 + .../kcl/tests/xz_plane/program_memory.snap | 12 + 89 files changed, 7105 insertions(+), 1167 deletions(-) create mode 100644 docs/kcl/types/NumericType.md create mode 100644 docs/kcl/types/UnitAngle.md create mode 100644 docs/kcl/types/UnitType.md diff --git a/docs/kcl/std.json b/docs/kcl/std.json index 170fe6eb9..c9b5e9e6f 100644 --- a/docs/kcl/std.json +++ b/docs/kcl/std.json @@ -123221,6 +123221,7 @@ "type": "object", "required": [ "__meta", + "ty", "type", "value" ], @@ -123235,6 +123236,9 @@ "type": "number", "format": "double" }, + "ty": { + "$ref": "#/components/schemas/NumericType" + }, "__meta": { "type": "array", "items": { @@ -123694,6 +123698,354 @@ "maxItems": 3, "minItems": 3 }, + "NumericType": { + "oneOf": [ + { + "type": "object", + "oneOf": [ + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Count" + ] + } + } + }, + { + "type": "object", + "oneOf": [ + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Mm" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Cm" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "M" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Inches" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Feet" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Yards" + ] + } + } + } + ], + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Length" + ] + } + } + }, + { + "type": "object", + "oneOf": [ + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Degrees" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Radians" + ] + } + } + } + ], + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Angle" + ] + } + } + } + ], + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Known" + ] + } + } + }, + { + "type": "object", + "required": [ + "angle", + "len", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Default" + ] + }, + "len": { + "$ref": "#/components/schemas/UnitLen" + }, + "angle": { + "$ref": "#/components/schemas/UnitAngle" + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Any" + ] + } + } + } + ] + }, + "UnitLen": { + "oneOf": [ + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Mm" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Cm" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "M" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Inches" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Feet" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Yards" + ] + } + } + } + ] + }, + "UnitAngle": { + "oneOf": [ + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Degrees" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Radians" + ] + } + } + } + ] + }, "TagEngineInfo": { "description": "Engine information for a tag.", "type": "object", @@ -124631,94 +124983,6 @@ } } }, - "UnitLen": { - "oneOf": [ - { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Mm" - ] - } - } - }, - { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Cm" - ] - } - } - }, - { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "M" - ] - } - } - }, - { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Inches" - ] - } - } - }, - { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Feet" - ] - } - } - }, - { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Yards" - ] - } - } - } - ] - }, "Face": { "description": "A face.", "type": "object", @@ -125439,6 +125703,7 @@ "type": "object", "required": [ "__meta", + "ty", "type", "value" ], @@ -125453,6 +125718,9 @@ "type": "number", "format": "double" }, + "ty": { + "$ref": "#/components/schemas/NumericType" + }, "__meta": { "type": "array", "items": { @@ -125912,6 +126180,354 @@ "maxItems": 3, "minItems": 3 }, + "NumericType": { + "oneOf": [ + { + "type": "object", + "oneOf": [ + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Count" + ] + } + } + }, + { + "type": "object", + "oneOf": [ + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Mm" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Cm" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "M" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Inches" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Feet" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Yards" + ] + } + } + } + ], + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Length" + ] + } + } + }, + { + "type": "object", + "oneOf": [ + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Degrees" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Radians" + ] + } + } + } + ], + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Angle" + ] + } + } + } + ], + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Known" + ] + } + } + }, + { + "type": "object", + "required": [ + "angle", + "len", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Default" + ] + }, + "len": { + "$ref": "#/components/schemas/UnitLen" + }, + "angle": { + "$ref": "#/components/schemas/UnitAngle" + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Any" + ] + } + } + } + ] + }, + "UnitLen": { + "oneOf": [ + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Mm" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Cm" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "M" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Inches" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Feet" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Yards" + ] + } + } + } + ] + }, + "UnitAngle": { + "oneOf": [ + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Degrees" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Radians" + ] + } + } + } + ] + }, "TagEngineInfo": { "description": "Engine information for a tag.", "type": "object", @@ -126849,94 +127465,6 @@ } } }, - "UnitLen": { - "oneOf": [ - { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Mm" - ] - } - } - }, - { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Cm" - ] - } - } - }, - { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "M" - ] - } - } - }, - { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Inches" - ] - } - } - }, - { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Feet" - ] - } - } - }, - { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Yards" - ] - } - } - } - ] - }, "Face": { "description": "A face.", "type": "object", @@ -127661,6 +128189,7 @@ "type": "object", "required": [ "__meta", + "ty", "type", "value" ], @@ -127675,6 +128204,9 @@ "type": "number", "format": "double" }, + "ty": { + "$ref": "#/components/schemas/NumericType" + }, "__meta": { "type": "array", "items": { @@ -128134,6 +128666,354 @@ "maxItems": 3, "minItems": 3 }, + "NumericType": { + "oneOf": [ + { + "type": "object", + "oneOf": [ + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Count" + ] + } + } + }, + { + "type": "object", + "oneOf": [ + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Mm" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Cm" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "M" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Inches" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Feet" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Yards" + ] + } + } + } + ], + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Length" + ] + } + } + }, + { + "type": "object", + "oneOf": [ + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Degrees" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Radians" + ] + } + } + } + ], + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Angle" + ] + } + } + } + ], + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Known" + ] + } + } + }, + { + "type": "object", + "required": [ + "angle", + "len", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Default" + ] + }, + "len": { + "$ref": "#/components/schemas/UnitLen" + }, + "angle": { + "$ref": "#/components/schemas/UnitAngle" + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Any" + ] + } + } + } + ] + }, + "UnitLen": { + "oneOf": [ + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Mm" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Cm" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "M" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Inches" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Feet" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Yards" + ] + } + } + } + ] + }, + "UnitAngle": { + "oneOf": [ + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Degrees" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Radians" + ] + } + } + } + ] + }, "TagEngineInfo": { "description": "Engine information for a tag.", "type": "object", @@ -129071,94 +129951,6 @@ } } }, - "UnitLen": { - "oneOf": [ - { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Mm" - ] - } - } - }, - { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Cm" - ] - } - } - }, - { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "M" - ] - } - } - }, - { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Inches" - ] - } - } - }, - { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Feet" - ] - } - } - }, - { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Yards" - ] - } - } - } - ] - }, "Face": { "description": "A face.", "type": "object", @@ -194371,6 +195163,7 @@ "type": "object", "required": [ "__meta", + "ty", "type", "value" ], @@ -194385,6 +195178,9 @@ "type": "number", "format": "double" }, + "ty": { + "$ref": "#/components/schemas/NumericType" + }, "__meta": { "type": "array", "items": { @@ -194844,6 +195640,354 @@ "maxItems": 3, "minItems": 3 }, + "NumericType": { + "oneOf": [ + { + "type": "object", + "oneOf": [ + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Count" + ] + } + } + }, + { + "type": "object", + "oneOf": [ + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Mm" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Cm" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "M" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Inches" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Feet" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Yards" + ] + } + } + } + ], + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Length" + ] + } + } + }, + { + "type": "object", + "oneOf": [ + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Degrees" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Radians" + ] + } + } + } + ], + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Angle" + ] + } + } + } + ], + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Known" + ] + } + } + }, + { + "type": "object", + "required": [ + "angle", + "len", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Default" + ] + }, + "len": { + "$ref": "#/components/schemas/UnitLen" + }, + "angle": { + "$ref": "#/components/schemas/UnitAngle" + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Any" + ] + } + } + } + ] + }, + "UnitLen": { + "oneOf": [ + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Mm" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Cm" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "M" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Inches" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Feet" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Yards" + ] + } + } + } + ] + }, + "UnitAngle": { + "oneOf": [ + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Degrees" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Radians" + ] + } + } + } + ] + }, "TagEngineInfo": { "description": "Engine information for a tag.", "type": "object", @@ -195781,94 +196925,6 @@ } } }, - "UnitLen": { - "oneOf": [ - { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Mm" - ] - } - } - }, - { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Cm" - ] - } - } - }, - { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "M" - ] - } - } - }, - { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Inches" - ] - } - } - }, - { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Feet" - ] - } - } - }, - { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Yards" - ] - } - } - } - ] - }, "Face": { "description": "A face.", "type": "object", @@ -196588,6 +197644,7 @@ "type": "object", "required": [ "__meta", + "ty", "type", "value" ], @@ -196602,6 +197659,9 @@ "type": "number", "format": "double" }, + "ty": { + "$ref": "#/components/schemas/NumericType" + }, "__meta": { "type": "array", "items": { @@ -197061,6 +198121,354 @@ "maxItems": 3, "minItems": 3 }, + "NumericType": { + "oneOf": [ + { + "type": "object", + "oneOf": [ + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Count" + ] + } + } + }, + { + "type": "object", + "oneOf": [ + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Mm" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Cm" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "M" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Inches" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Feet" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Yards" + ] + } + } + } + ], + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Length" + ] + } + } + }, + { + "type": "object", + "oneOf": [ + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Degrees" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Radians" + ] + } + } + } + ], + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Angle" + ] + } + } + } + ], + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Known" + ] + } + } + }, + { + "type": "object", + "required": [ + "angle", + "len", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Default" + ] + }, + "len": { + "$ref": "#/components/schemas/UnitLen" + }, + "angle": { + "$ref": "#/components/schemas/UnitAngle" + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Any" + ] + } + } + } + ] + }, + "UnitLen": { + "oneOf": [ + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Mm" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Cm" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "M" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Inches" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Feet" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Yards" + ] + } + } + } + ] + }, + "UnitAngle": { + "oneOf": [ + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Degrees" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Radians" + ] + } + } + } + ] + }, "KclValue": { "description": "Any KCL value.", "oneOf": [ @@ -197119,6 +198527,7 @@ "type": "object", "required": [ "__meta", + "ty", "type", "value" ], @@ -197133,6 +198542,9 @@ "type": "number", "format": "double" }, + "ty": { + "$ref": "#/components/schemas/NumericType" + }, "__meta": { "type": "array", "items": { @@ -198501,94 +199913,6 @@ } } }, - "UnitLen": { - "oneOf": [ - { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Mm" - ] - } - } - }, - { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Cm" - ] - } - } - }, - { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "M" - ] - } - } - }, - { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Inches" - ] - } - } - }, - { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Feet" - ] - } - } - }, - { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Yards" - ] - } - } - } - ] - }, "Face": { "description": "A face.", "type": "object", @@ -204086,6 +205410,7 @@ "type": "object", "required": [ "__meta", + "ty", "type", "value" ], @@ -204100,6 +205425,9 @@ "type": "number", "format": "double" }, + "ty": { + "$ref": "#/components/schemas/NumericType" + }, "__meta": { "type": "array", "items": { @@ -204559,6 +205887,354 @@ "maxItems": 3, "minItems": 3 }, + "NumericType": { + "oneOf": [ + { + "type": "object", + "oneOf": [ + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Count" + ] + } + } + }, + { + "type": "object", + "oneOf": [ + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Mm" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Cm" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "M" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Inches" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Feet" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Yards" + ] + } + } + } + ], + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Length" + ] + } + } + }, + { + "type": "object", + "oneOf": [ + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Degrees" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Radians" + ] + } + } + } + ], + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Angle" + ] + } + } + } + ], + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Known" + ] + } + } + }, + { + "type": "object", + "required": [ + "angle", + "len", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Default" + ] + }, + "len": { + "$ref": "#/components/schemas/UnitLen" + }, + "angle": { + "$ref": "#/components/schemas/UnitAngle" + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Any" + ] + } + } + } + ] + }, + "UnitLen": { + "oneOf": [ + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Mm" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Cm" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "M" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Inches" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Feet" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Yards" + ] + } + } + } + ] + }, + "UnitAngle": { + "oneOf": [ + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Degrees" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Radians" + ] + } + } + } + ] + }, "TagEngineInfo": { "description": "Engine information for a tag.", "type": "object", @@ -205496,94 +207172,6 @@ } } }, - "UnitLen": { - "oneOf": [ - { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Mm" - ] - } - } - }, - { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Cm" - ] - } - } - }, - { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "M" - ] - } - } - }, - { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Inches" - ] - } - } - }, - { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Feet" - ] - } - } - }, - { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Yards" - ] - } - } - } - ] - }, "Face": { "description": "A face.", "type": "object", @@ -206301,6 +207889,7 @@ "type": "object", "required": [ "__meta", + "ty", "type", "value" ], @@ -206315,6 +207904,9 @@ "type": "number", "format": "double" }, + "ty": { + "$ref": "#/components/schemas/NumericType" + }, "__meta": { "type": "array", "items": { @@ -206804,6 +208396,7 @@ "type": "object", "required": [ "__meta", + "ty", "type", "value" ], @@ -206818,6 +208411,9 @@ "type": "number", "format": "double" }, + "ty": { + "$ref": "#/components/schemas/NumericType" + }, "__meta": { "type": "array", "items": { @@ -207277,6 +208873,354 @@ "maxItems": 3, "minItems": 3 }, + "NumericType": { + "oneOf": [ + { + "type": "object", + "oneOf": [ + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Count" + ] + } + } + }, + { + "type": "object", + "oneOf": [ + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Mm" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Cm" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "M" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Inches" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Feet" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Yards" + ] + } + } + } + ], + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Length" + ] + } + } + }, + { + "type": "object", + "oneOf": [ + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Degrees" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Radians" + ] + } + } + } + ], + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Angle" + ] + } + } + } + ], + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Known" + ] + } + } + }, + { + "type": "object", + "required": [ + "angle", + "len", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Default" + ] + }, + "len": { + "$ref": "#/components/schemas/UnitLen" + }, + "angle": { + "$ref": "#/components/schemas/UnitAngle" + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Any" + ] + } + } + } + ] + }, + "UnitLen": { + "oneOf": [ + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Mm" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Cm" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "M" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Inches" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Feet" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Yards" + ] + } + } + } + ] + }, + "UnitAngle": { + "oneOf": [ + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Degrees" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Radians" + ] + } + } + } + ] + }, "TagEngineInfo": { "description": "Engine information for a tag.", "type": "object", @@ -208214,94 +210158,6 @@ } } }, - "UnitLen": { - "oneOf": [ - { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Mm" - ] - } - } - }, - { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Cm" - ] - } - } - }, - { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "M" - ] - } - } - }, - { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Inches" - ] - } - } - }, - { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Feet" - ] - } - } - }, - { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Yards" - ] - } - } - } - ] - }, "Face": { "description": "A face.", "type": "object", @@ -209020,6 +210876,7 @@ "type": "object", "required": [ "__meta", + "ty", "type", "value" ], @@ -209034,6 +210891,9 @@ "type": "number", "format": "double" }, + "ty": { + "$ref": "#/components/schemas/NumericType" + }, "__meta": { "type": "array", "items": { @@ -209493,6 +211353,354 @@ "maxItems": 3, "minItems": 3 }, + "NumericType": { + "oneOf": [ + { + "type": "object", + "oneOf": [ + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Count" + ] + } + } + }, + { + "type": "object", + "oneOf": [ + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Mm" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Cm" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "M" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Inches" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Feet" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Yards" + ] + } + } + } + ], + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Length" + ] + } + } + }, + { + "type": "object", + "oneOf": [ + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Degrees" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Radians" + ] + } + } + } + ], + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Angle" + ] + } + } + } + ], + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Known" + ] + } + } + }, + { + "type": "object", + "required": [ + "angle", + "len", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Default" + ] + }, + "len": { + "$ref": "#/components/schemas/UnitLen" + }, + "angle": { + "$ref": "#/components/schemas/UnitAngle" + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Any" + ] + } + } + } + ] + }, + "UnitLen": { + "oneOf": [ + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Mm" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Cm" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "M" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Inches" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Feet" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Yards" + ] + } + } + } + ] + }, + "UnitAngle": { + "oneOf": [ + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Degrees" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Radians" + ] + } + } + } + ] + }, "KclValue": { "description": "Any KCL value.", "oneOf": [ @@ -209551,6 +211759,7 @@ "type": "object", "required": [ "__meta", + "ty", "type", "value" ], @@ -209565,6 +211774,9 @@ "type": "number", "format": "double" }, + "ty": { + "$ref": "#/components/schemas/NumericType" + }, "__meta": { "type": "array", "items": { @@ -210933,94 +213145,6 @@ } } }, - "UnitLen": { - "oneOf": [ - { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Mm" - ] - } - } - }, - { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Cm" - ] - } - } - }, - { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "M" - ] - } - } - }, - { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Inches" - ] - } - } - }, - { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Feet" - ] - } - } - }, - { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Yards" - ] - } - } - } - ] - }, "Face": { "description": "A face.", "type": "object", @@ -211757,6 +213881,7 @@ "type": "object", "required": [ "__meta", + "ty", "type", "value" ], @@ -211771,6 +213896,9 @@ "type": "number", "format": "double" }, + "ty": { + "$ref": "#/components/schemas/NumericType" + }, "__meta": { "type": "array", "items": { @@ -212230,6 +214358,354 @@ "maxItems": 3, "minItems": 3 }, + "NumericType": { + "oneOf": [ + { + "type": "object", + "oneOf": [ + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Count" + ] + } + } + }, + { + "type": "object", + "oneOf": [ + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Mm" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Cm" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "M" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Inches" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Feet" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Yards" + ] + } + } + } + ], + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Length" + ] + } + } + }, + { + "type": "object", + "oneOf": [ + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Degrees" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Radians" + ] + } + } + } + ], + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Angle" + ] + } + } + } + ], + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Known" + ] + } + } + }, + { + "type": "object", + "required": [ + "angle", + "len", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Default" + ] + }, + "len": { + "$ref": "#/components/schemas/UnitLen" + }, + "angle": { + "$ref": "#/components/schemas/UnitAngle" + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Any" + ] + } + } + } + ] + }, + "UnitLen": { + "oneOf": [ + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Mm" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Cm" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "M" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Inches" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Feet" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Yards" + ] + } + } + } + ] + }, + "UnitAngle": { + "oneOf": [ + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Degrees" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Radians" + ] + } + } + } + ] + }, "TagEngineInfo": { "description": "Engine information for a tag.", "type": "object", @@ -213167,94 +215643,6 @@ } } }, - "UnitLen": { - "oneOf": [ - { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Mm" - ] - } - } - }, - { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Cm" - ] - } - } - }, - { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "M" - ] - } - } - }, - { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Inches" - ] - } - } - }, - { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Feet" - ] - } - } - }, - { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Yards" - ] - } - } - } - ] - }, "Face": { "description": "A face.", "type": "object", @@ -213972,6 +216360,7 @@ "type": "object", "required": [ "__meta", + "ty", "type", "value" ], @@ -213986,6 +216375,9 @@ "type": "number", "format": "double" }, + "ty": { + "$ref": "#/components/schemas/NumericType" + }, "__meta": { "type": "array", "items": { @@ -214475,6 +216867,7 @@ "type": "object", "required": [ "__meta", + "ty", "type", "value" ], @@ -214489,6 +216882,9 @@ "type": "number", "format": "double" }, + "ty": { + "$ref": "#/components/schemas/NumericType" + }, "__meta": { "type": "array", "items": { @@ -214948,6 +217344,354 @@ "maxItems": 3, "minItems": 3 }, + "NumericType": { + "oneOf": [ + { + "type": "object", + "oneOf": [ + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Count" + ] + } + } + }, + { + "type": "object", + "oneOf": [ + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Mm" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Cm" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "M" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Inches" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Feet" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Yards" + ] + } + } + } + ], + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Length" + ] + } + } + }, + { + "type": "object", + "oneOf": [ + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Degrees" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Radians" + ] + } + } + } + ], + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Angle" + ] + } + } + } + ], + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Known" + ] + } + } + }, + { + "type": "object", + "required": [ + "angle", + "len", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Default" + ] + }, + "len": { + "$ref": "#/components/schemas/UnitLen" + }, + "angle": { + "$ref": "#/components/schemas/UnitAngle" + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Any" + ] + } + } + } + ] + }, + "UnitLen": { + "oneOf": [ + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Mm" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Cm" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "M" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Inches" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Feet" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Yards" + ] + } + } + } + ] + }, + "UnitAngle": { + "oneOf": [ + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Degrees" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Radians" + ] + } + } + } + ] + }, "TagEngineInfo": { "description": "Engine information for a tag.", "type": "object", @@ -215885,94 +218629,6 @@ } } }, - "UnitLen": { - "oneOf": [ - { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Mm" - ] - } - } - }, - { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Cm" - ] - } - } - }, - { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "M" - ] - } - } - }, - { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Inches" - ] - } - } - }, - { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Feet" - ] - } - } - }, - { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Yards" - ] - } - } - } - ] - }, "Face": { "description": "A face.", "type": "object", @@ -216693,6 +219349,7 @@ "type": "object", "required": [ "__meta", + "ty", "type", "value" ], @@ -216707,6 +219364,9 @@ "type": "number", "format": "double" }, + "ty": { + "$ref": "#/components/schemas/NumericType" + }, "__meta": { "type": "array", "items": { @@ -217166,6 +219826,354 @@ "maxItems": 3, "minItems": 3 }, + "NumericType": { + "oneOf": [ + { + "type": "object", + "oneOf": [ + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Count" + ] + } + } + }, + { + "type": "object", + "oneOf": [ + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Mm" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Cm" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "M" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Inches" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Feet" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Yards" + ] + } + } + } + ], + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Length" + ] + } + } + }, + { + "type": "object", + "oneOf": [ + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Degrees" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Radians" + ] + } + } + } + ], + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Angle" + ] + } + } + } + ], + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Known" + ] + } + } + }, + { + "type": "object", + "required": [ + "angle", + "len", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Default" + ] + }, + "len": { + "$ref": "#/components/schemas/UnitLen" + }, + "angle": { + "$ref": "#/components/schemas/UnitAngle" + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Any" + ] + } + } + } + ] + }, + "UnitLen": { + "oneOf": [ + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Mm" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Cm" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "M" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Inches" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Feet" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Yards" + ] + } + } + } + ] + }, + "UnitAngle": { + "oneOf": [ + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Degrees" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Radians" + ] + } + } + } + ] + }, "TagEngineInfo": { "description": "Engine information for a tag.", "type": "object", @@ -218103,94 +221111,6 @@ } } }, - "UnitLen": { - "oneOf": [ - { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Mm" - ] - } - } - }, - { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Cm" - ] - } - } - }, - { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "M" - ] - } - } - }, - { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Inches" - ] - } - } - }, - { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Feet" - ] - } - } - }, - { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Yards" - ] - } - } - } - ] - }, "Face": { "description": "A face.", "type": "object", @@ -218909,6 +221829,7 @@ "type": "object", "required": [ "__meta", + "ty", "type", "value" ], @@ -218923,6 +221844,9 @@ "type": "number", "format": "double" }, + "ty": { + "$ref": "#/components/schemas/NumericType" + }, "__meta": { "type": "array", "items": { @@ -219382,6 +222306,354 @@ "maxItems": 3, "minItems": 3 }, + "NumericType": { + "oneOf": [ + { + "type": "object", + "oneOf": [ + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Count" + ] + } + } + }, + { + "type": "object", + "oneOf": [ + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Mm" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Cm" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "M" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Inches" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Feet" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Yards" + ] + } + } + } + ], + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Length" + ] + } + } + }, + { + "type": "object", + "oneOf": [ + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Degrees" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Radians" + ] + } + } + } + ], + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Angle" + ] + } + } + } + ], + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Known" + ] + } + } + }, + { + "type": "object", + "required": [ + "angle", + "len", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Default" + ] + }, + "len": { + "$ref": "#/components/schemas/UnitLen" + }, + "angle": { + "$ref": "#/components/schemas/UnitAngle" + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Any" + ] + } + } + } + ] + }, + "UnitLen": { + "oneOf": [ + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Mm" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Cm" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "M" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Inches" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Feet" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Yards" + ] + } + } + } + ] + }, + "UnitAngle": { + "oneOf": [ + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Degrees" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Radians" + ] + } + } + } + ] + }, "KclValue": { "description": "Any KCL value.", "oneOf": [ @@ -219440,6 +222712,7 @@ "type": "object", "required": [ "__meta", + "ty", "type", "value" ], @@ -219454,6 +222727,9 @@ "type": "number", "format": "double" }, + "ty": { + "$ref": "#/components/schemas/NumericType" + }, "__meta": { "type": "array", "items": { @@ -220822,94 +224098,6 @@ } } }, - "UnitLen": { - "oneOf": [ - { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Mm" - ] - } - } - }, - { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Cm" - ] - } - } - }, - { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "M" - ] - } - } - }, - { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Inches" - ] - } - } - }, - { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Feet" - ] - } - } - }, - { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Yards" - ] - } - } - } - ] - }, "Face": { "description": "A face.", "type": "object", diff --git a/docs/kcl/types/KclValue.md b/docs/kcl/types/KclValue.md index 189bcc35e..93aaf7aad 100644 --- a/docs/kcl/types/KclValue.md +++ b/docs/kcl/types/KclValue.md @@ -59,6 +59,7 @@ Any KCL value. |----------|------|-------------|----------| | `type` |enum: `Number`| | No | | `value` |`number`| | No | +| `ty` |[`NumericType`](/docs/kcl/types/NumericType)| Any KCL value. | No | | `__meta` |`[` [`Metadata`](/docs/kcl/types/Metadata) `]`| | No | diff --git a/docs/kcl/types/NumericType.md b/docs/kcl/types/NumericType.md new file mode 100644 index 000000000..3e8386e1e --- /dev/null +++ b/docs/kcl/types/NumericType.md @@ -0,0 +1,250 @@ +--- +title: "NumericType" +excerpt: "" +layout: manual +--- + + + + + + +**This schema accepts exactly one of the following:** + + +**Type:** `object` + + + +**This schema accepts exactly one of the following:** + + +**Type:** `object` + + + + + +## Properties + +| Property | Type | Description | Required | +|----------|------|-------------|----------| +| `type` |enum: `Count`| | No | + + +---- + +**Type:** `object` + + + +**This schema accepts exactly one of the following:** + + +**Type:** `object` + + + + + +## Properties + +| Property | Type | Description | Required | +|----------|------|-------------|----------| +| `type` |enum: `Mm`| | No | + + +---- + +**Type:** `object` + + + + + +## Properties + +| Property | Type | Description | Required | +|----------|------|-------------|----------| +| `type` |enum: `Cm`| | No | + + +---- + +**Type:** `object` + + + + + +## Properties + +| Property | Type | Description | Required | +|----------|------|-------------|----------| +| `type` |enum: `M`| | No | + + +---- + +**Type:** `object` + + + + + +## Properties + +| Property | Type | Description | Required | +|----------|------|-------------|----------| +| `type` |enum: `Inches`| | No | + + +---- + +**Type:** `object` + + + + + +## Properties + +| Property | Type | Description | Required | +|----------|------|-------------|----------| +| `type` |enum: `Feet`| | No | + + +---- + +**Type:** `object` + + + + + +## Properties + +| Property | Type | Description | Required | +|----------|------|-------------|----------| +| `type` |enum: `Yards`| | No | + + +---- + + +## Properties + +| Property | Type | Description | Required | +|----------|------|-------------|----------| +| `type` |enum: `Length`| | No | + + +---- + +**Type:** `object` + + + +**This schema accepts exactly one of the following:** + + +**Type:** `object` + + + + + +## Properties + +| Property | Type | Description | Required | +|----------|------|-------------|----------| +| `type` |enum: `Degrees`| | No | + + +---- + +**Type:** `object` + + + + + +## Properties + +| Property | Type | Description | Required | +|----------|------|-------------|----------| +| `type` |enum: `Radians`| | No | + + +---- + + +## Properties + +| Property | Type | Description | Required | +|----------|------|-------------|----------| +| `type` |enum: `Angle`| | No | + + +---- + + +## Properties + +| Property | Type | Description | Required | +|----------|------|-------------|----------| +| `type` |enum: `Known`| | No | + + +---- + +**Type:** `object` + + + + + +## Properties + +| Property | Type | Description | Required | +|----------|------|-------------|----------| +| `type` |enum: `Default`| | No | +| `len` |[`UnitLen`](/docs/kcl/types/UnitLen)| | No | +| `angle` |[`UnitAngle`](/docs/kcl/types/UnitAngle)| | No | + + +---- + +**Type:** `object` + + + + + +## Properties + +| Property | Type | Description | Required | +|----------|------|-------------|----------| +| `type` |enum: `Unknown`| | No | + + +---- + +**Type:** `object` + + + + + +## Properties + +| Property | Type | Description | Required | +|----------|------|-------------|----------| +| `type` |enum: `Any`| | No | + + +---- + + + + diff --git a/docs/kcl/types/UnitAngle.md b/docs/kcl/types/UnitAngle.md new file mode 100644 index 000000000..b825cab92 --- /dev/null +++ b/docs/kcl/types/UnitAngle.md @@ -0,0 +1,47 @@ +--- +title: "UnitAngle" +excerpt: "" +layout: manual +--- + + + + + + +**This schema accepts exactly one of the following:** + + +**Type:** `object` + + + + + +## Properties + +| Property | Type | Description | Required | +|----------|------|-------------|----------| +| `type` |enum: `Degrees`| | No | + + +---- + +**Type:** `object` + + + + + +## Properties + +| Property | Type | Description | Required | +|----------|------|-------------|----------| +| `type` |enum: `Radians`| | No | + + +---- + + + + diff --git a/docs/kcl/types/UnitType.md b/docs/kcl/types/UnitType.md new file mode 100644 index 000000000..ed8f3f51e --- /dev/null +++ b/docs/kcl/types/UnitType.md @@ -0,0 +1,186 @@ +--- +title: "UnitType" +excerpt: "" +layout: manual +--- + + + + + + +**This schema accepts exactly one of the following:** + + +**Type:** `object` + + + + + +## Properties + +| Property | Type | Description | Required | +|----------|------|-------------|----------| +| `type` |enum: `Count`| | No | + + +---- + +**Type:** `object` + + + +**This schema accepts exactly one of the following:** + + +**Type:** `object` + + + + + +## Properties + +| Property | Type | Description | Required | +|----------|------|-------------|----------| +| `type` |enum: `Mm`| | No | + + +---- + +**Type:** `object` + + + + + +## Properties + +| Property | Type | Description | Required | +|----------|------|-------------|----------| +| `type` |enum: `Cm`| | No | + + +---- + +**Type:** `object` + + + + + +## Properties + +| Property | Type | Description | Required | +|----------|------|-------------|----------| +| `type` |enum: `M`| | No | + + +---- + +**Type:** `object` + + + + + +## Properties + +| Property | Type | Description | Required | +|----------|------|-------------|----------| +| `type` |enum: `Inches`| | No | + + +---- + +**Type:** `object` + + + + + +## Properties + +| Property | Type | Description | Required | +|----------|------|-------------|----------| +| `type` |enum: `Feet`| | No | + + +---- + +**Type:** `object` + + + + + +## Properties + +| Property | Type | Description | Required | +|----------|------|-------------|----------| +| `type` |enum: `Yards`| | No | + + +---- + + +## Properties + +| Property | Type | Description | Required | +|----------|------|-------------|----------| +| `type` |enum: `Length`| | No | + + +---- + +**Type:** `object` + + + +**This schema accepts exactly one of the following:** + + +**Type:** `object` + + + + + +## Properties + +| Property | Type | Description | Required | +|----------|------|-------------|----------| +| `type` |enum: `Degrees`| | No | + + +---- + +**Type:** `object` + + + + + +## Properties + +| Property | Type | Description | Required | +|----------|------|-------------|----------| +| `type` |enum: `Radians`| | No | + + +---- + + +## Properties + +| Property | Type | Description | Required | +|----------|------|-------------|----------| +| `type` |enum: `Angle`| | No | + + +---- + + + + diff --git a/src/lang/executor.test.ts b/src/lang/executor.test.ts index 789d7b0b9..a928c220b 100644 --- a/src/lang/executor.test.ts +++ b/src/lang/executor.test.ts @@ -239,6 +239,7 @@ const newVar = myVar + 1` expect(mem['three']).toEqual({ type: 'Number', value: 3, + ty: expect.any(Object), __meta: [ { sourceRange: [14, 15, 0], @@ -248,12 +249,23 @@ const newVar = myVar + 1` expect(mem['yo']).toEqual({ type: 'Array', value: [ - { type: 'Number', value: 1, __meta: [{ sourceRange: [28, 29, 0] }] }, + { + type: 'Number', + value: 1, + ty: expect.any(Object), + __meta: [{ sourceRange: [28, 29, 0] }], + }, { type: 'String', value: '2', __meta: [{ sourceRange: [31, 34, 0] }] }, - { type: 'Number', value: 3, __meta: [{ sourceRange: [14, 15, 0] }] }, + { + type: 'Number', + value: 3, + ty: expect.any(Object), + __meta: [{ sourceRange: [14, 15, 0] }], + }, { type: 'Number', value: 9, + ty: expect.any(Object), __meta: [{ sourceRange: [43, 44, 0] }, { sourceRange: [47, 48, 0] }], }, ], @@ -281,16 +293,19 @@ const newVar = myVar + 1` anum: { type: 'Number', value: 2, + ty: expect.any(Object), __meta: [{ sourceRange: [47, 48, 0] }], }, identifier: { type: 'Number', value: 3, + ty: expect.any(Object), __meta: [{ sourceRange: [14, 15, 0] }], }, binExp: { type: 'Number', value: 9, + ty: expect.any(Object), __meta: [{ sourceRange: [77, 78, 0] }, { sourceRange: [81, 82, 0] }], }, }, @@ -404,6 +419,7 @@ describe('testing math operators', () => { ], type: 'Number', value: 1, + ty: expect.any(Object), }, { __meta: [ @@ -413,6 +429,7 @@ describe('testing math operators', () => { ], type: 'Number', value: -3, + ty: expect.any(Object), }, ]) }) diff --git a/src/lib/kclHelpers.test.ts b/src/lib/kclHelpers.test.ts index 06cdbefed..90c42c017 100644 --- a/src/lib/kclHelpers.test.ts +++ b/src/lib/kclHelpers.test.ts @@ -14,6 +14,7 @@ describe('KCL expression calculations', () => { variables['x'] = { type: 'Number', value: 2, + ty: { type: 'Any' }, __meta: [], } const actual = await getCalculatedKclExpressionValue('1 + x', variables) @@ -32,6 +33,7 @@ describe('KCL expression calculations', () => { variables['y'] = { type: 'Number', value: 2, + ty: { type: 'Any' }, __meta: [], } const actual = await getCalculatedKclExpressionValue('1 + x', variables) @@ -44,6 +46,7 @@ describe('KCL expression calculations', () => { variables['x'] = { type: 'Number', value: 2, + ty: { type: 'Any' }, __meta: [], } const actual = await getCalculatedKclExpressionValue( diff --git a/src/wasm-lib/kcl/src/execution/exec_ast.rs b/src/wasm-lib/kcl/src/execution/exec_ast.rs index 910ae8186..a6fe87f93 100644 --- a/src/wasm-lib/kcl/src/execution/exec_ast.rs +++ b/src/wasm-lib/kcl/src/execution/exec_ast.rs @@ -9,8 +9,8 @@ use crate::{ execution::{ annotations, cad_op::{OpArg, Operation}, + kcl_value::NumericType, memory, - memory::ProgramMemory, state::ModuleState, BodyType, EnvironmentRef, ExecState, ExecutorContext, KclValue, MemoryFunction, Metadata, TagEngineInfo, TagIdentifier, @@ -437,7 +437,7 @@ impl ExecutorContext { ) -> Result { let item = match init { Expr::None(none) => KclValue::from(none), - Expr::Literal(literal) => KclValue::from(literal), + Expr::Literal(literal) => KclValue::from_literal((**literal).clone(), &exec_state.mod_local.settings), Expr::TagDeclarator(tag) => tag.execute(exec_state).await?, Expr::Identifier(identifier) => { let value = exec_state.memory().get(&identifier.name, identifier.into())?.clone(); @@ -518,7 +518,10 @@ impl BinaryPart { #[async_recursion] pub async fn get_result(&self, exec_state: &mut ExecState, ctx: &ExecutorContext) -> Result { match self { - BinaryPart::Literal(literal) => Ok(literal.into()), + BinaryPart::Literal(literal) => Ok(KclValue::from_literal( + (**literal).clone(), + &exec_state.mod_local.settings, + )), BinaryPart::Identifier(identifier) => { let value = exec_state.memory().get(&identifier.name, identifier.into())?; Ok(value.clone()) @@ -704,26 +707,32 @@ impl Node { BinaryOperator::Add => KclValue::Number { value: left + right, meta, + ty: NumericType::Unknown, }, BinaryOperator::Sub => KclValue::Number { value: left - right, meta, + ty: NumericType::Unknown, }, BinaryOperator::Mul => KclValue::Number { value: left * right, meta, + ty: NumericType::Unknown, }, BinaryOperator::Div => KclValue::Number { value: left / right, meta, + ty: NumericType::Unknown, }, BinaryOperator::Mod => KclValue::Number { value: left % right, meta, + ty: NumericType::Unknown, }, BinaryOperator::Pow => KclValue::Number { value: left.powf(right), meta, + ty: NumericType::Unknown, }, BinaryOperator::Neq => KclValue::Bool { value: left != right, @@ -786,11 +795,15 @@ impl Node { let value = &self.argument.get_result(exec_state, ctx).await?; match value { - KclValue::Number { value, meta: _ } => { + KclValue::Number { value, ty, .. } => { let meta = vec![Metadata { source_range: self.into(), }]; - Ok(KclValue::Number { value: -value, meta }) + Ok(KclValue::Number { + value: -value, + meta, + ty: ty.clone(), + }) } _ => Err(KclError::Semantic(KclErrorDetails { message: format!( @@ -1292,6 +1305,7 @@ impl Node { .into_iter() .map(|num| KclValue::Number { value: num as f64, + ty: NumericType::Unknown, meta: meta.clone(), }) .collect(), @@ -1449,7 +1463,7 @@ fn jvalue_to_prop(value: &KclValue, property_sr: Vec, name: &str) - })) }; match value { - KclValue::Number{value: num, meta:_} => { + KclValue::Number{value: num, .. } => { let num = *num; if num < 0.0 { return make_err(format!("'{num}' is negative, so you can't index an array with it")) @@ -1490,7 +1504,7 @@ impl Node { fn assign_args_to_params( function_expression: NodeRef<'_, FunctionExpression>, args: Vec, - fn_memory: &mut ProgramMemory, + exec_state: &mut ExecState, ) -> Result<(), KclError> { let num_args = function_expression.number_of_args(); let (min_params, max_params) = num_args.into_inner(); @@ -1510,12 +1524,15 @@ fn assign_args_to_params( return Err(err_wrong_number_args); } + let mem = &mut exec_state.global.memory; + let settings = &exec_state.mod_local.settings; + // Add the arguments to the memory. A new call frame should have already // been created. for (index, param) in function_expression.params.iter().enumerate() { if let Some(arg) = args.get(index) { // Argument was provided. - fn_memory.add( + mem.add( param.identifier.name.clone(), arg.value.clone(), (¶m.identifier).into(), @@ -1525,9 +1542,9 @@ fn assign_args_to_params( if let Some(ref default_val) = param.default_value { // If the corresponding parameter is optional, // then it's fine, the user doesn't need to supply it. - fn_memory.add( + mem.add( param.identifier.name.clone(), - default_val.clone().into(), + KclValue::from_default_param(default_val.clone(), settings), (¶m.identifier).into(), )?; } else { @@ -1543,18 +1560,21 @@ fn assign_args_to_params( fn assign_args_to_params_kw( function_expression: NodeRef<'_, FunctionExpression>, mut args: crate::std::args::KwArgs, - fn_memory: &mut ProgramMemory, + exec_state: &mut ExecState, ) -> Result<(), KclError> { // Add the arguments to the memory. A new call frame should have already // been created. let source_ranges = vec![function_expression.into()]; + let mem = &mut exec_state.global.memory; + let settings = &exec_state.mod_local.settings; + for param in function_expression.params.iter() { if param.labeled { let arg = args.labeled.get(¶m.identifier.name); let arg_val = match arg { Some(arg) => arg.value.clone(), None => match param.default_value { - Some(ref default_val) => KclValue::from(default_val.clone()), + Some(ref default_val) => KclValue::from_default_param(default_val.clone(), settings), None => { return Err(KclError::Semantic(KclErrorDetails { source_ranges, @@ -1566,7 +1586,7 @@ fn assign_args_to_params_kw( } }, }; - fn_memory.add(param.identifier.name.clone(), arg_val, (¶m.identifier).into())?; + mem.add(param.identifier.name.clone(), arg_val, (¶m.identifier).into())?; } else { let Some(unlabeled) = args.unlabeled.take() else { let param_name = ¶m.identifier.name; @@ -1583,7 +1603,7 @@ fn assign_args_to_params_kw( }) }); }; - fn_memory.add( + mem.add( param.identifier.name.clone(), unlabeled.value.clone(), (¶m.identifier).into(), @@ -1604,7 +1624,7 @@ pub(crate) async fn call_user_defined_function( // variables shadow variables in the parent scope. The new environment's // parent should be the environment of the closure. exec_state.mut_memory().push_new_env_for_call(memory); - if let Err(e) = assign_args_to_params(function_expression, args, exec_state.mut_memory()) { + if let Err(e) = assign_args_to_params(function_expression, args, exec_state) { exec_state.mut_memory().pop_env(); return Err(e); } @@ -1637,7 +1657,7 @@ pub(crate) async fn call_user_defined_function_kw( // variables shadow variables in the parent scope. The new environment's // parent should be the environment of the closure. exec_state.mut_memory().push_new_env_for_call(memory); - if let Err(e) = assign_args_to_params_kw(function_expression, args, exec_state.mut_memory()) { + if let Err(e) = assign_args_to_params_kw(function_expression, args, exec_state) { exec_state.mut_memory().pop_env(); return Err(e); } @@ -1701,7 +1721,7 @@ impl JsonSchema for FunctionParam<'_> { #[cfg(test)] mod test { use crate::{ - execution::parse_execute, + execution::{memory::ProgramMemory, parse_execute}, parsing::ast::types::{DefaultParamVal, Identifier, Parameter}, }; @@ -1713,6 +1733,7 @@ mod test { fn mem(number: usize) -> KclValue { KclValue::Number { value: number as f64, + ty: NumericType::count(), meta: Default::default(), } } @@ -1818,8 +1839,8 @@ mod test { digest: None, }); let args = args.into_iter().map(Arg::synthetic).collect(); - let mut actual = ProgramMemory::new(); - let actual = assign_args_to_params(func_expr, args, &mut actual).map(|_| actual); + let mut exec_state = ExecState::new(&Default::default()); + let actual = assign_args_to_params(func_expr, args, &mut exec_state).map(|_| exec_state.global.memory); assert_eq!( actual, expected, "failed test '{test_name}':\ngot {actual:?}\nbut expected\n{expected:?}" diff --git a/src/wasm-lib/kcl/src/execution/kcl_value.rs b/src/wasm-lib/kcl/src/execution/kcl_value.rs index 8b2a652d8..f8c007dcc 100644 --- a/src/wasm-lib/kcl/src/execution/kcl_value.rs +++ b/src/wasm-lib/kcl/src/execution/kcl_value.rs @@ -12,14 +12,16 @@ use crate::{ TagIdentifier, }, parsing::{ - ast::types::{FunctionExpression, KclNone, LiteralValue, TagDeclarator, TagNode}, + ast::types::{ + DefaultParamVal, FunctionExpression, KclNone, Literal, LiteralValue, Node, TagDeclarator, TagNode, + }, token::NumericSuffix, }, std::{args::Arg, FnAsArg}, ExecutorContext, KclError, ModuleId, SourceRange, }; -use super::memory::EnvironmentRef; +use super::{memory::EnvironmentRef, MetaSettings}; pub type KclObjectFields = HashMap; @@ -40,6 +42,7 @@ pub enum KclValue { }, Number { value: f64, + ty: NumericType, #[serde(rename = "__meta")] meta: Vec, }, @@ -210,7 +213,7 @@ impl KclValue { match self { KclValue::Uuid { value: _, meta } => meta.clone(), KclValue::Bool { value: _, meta } => meta.clone(), - KclValue::Number { value: _, meta } => meta.clone(), + KclValue::Number { meta, .. } => meta.clone(), KclValue::String { value: _, meta } => meta.clone(), KclValue::Array { value: _, meta } => meta.clone(), KclValue::Object { value: _, meta } => meta.clone(), @@ -298,14 +301,29 @@ impl KclValue { } } - pub(crate) fn from_literal(literal: LiteralValue, meta: Vec) -> Self { - match literal { - LiteralValue::Number { value, .. } => KclValue::Number { value, meta }, + pub(crate) fn from_literal(literal: Node, settings: &MetaSettings) -> Self { + let meta = vec![literal.metadata()]; + match literal.inner.value { + LiteralValue::Number { value, suffix } => KclValue::Number { + value, + meta, + ty: NumericType::from_parsed(suffix, settings), + }, LiteralValue::String(value) => KclValue::String { value, meta }, LiteralValue::Bool(value) => KclValue::Bool { value, meta }, } } + pub(crate) fn from_default_param(param: DefaultParamVal, settings: &MetaSettings) -> Self { + match param { + DefaultParamVal::Literal(lit) => Self::from_literal(lit, settings), + DefaultParamVal::KclNone(none) => KclValue::KclNone { + value: none, + meta: Default::default(), + }, + } + } + pub(crate) fn map_env_ref(&self, env_map: &HashMap) -> Self { let mut result = self.clone(); if let KclValue::Function { ref mut memory, .. } = result { @@ -318,20 +336,30 @@ impl KclValue { /// Put the number into a KCL value. pub const fn from_number(f: f64, meta: Vec) -> Self { - Self::Number { value: f, meta } + Self::Number { + value: f, + meta, + ty: NumericType::Unknown, + } + } + + pub const fn from_number_with_type(f: f64, ty: NumericType, meta: Vec) -> Self { + Self::Number { value: f, meta, ty } } /// Put the point into a KCL value. - pub fn from_point2d(p: [f64; 2], meta: Vec) -> Self { + pub fn from_point2d(p: [f64; 2], ty: NumericType, meta: Vec) -> Self { Self::Array { value: vec![ Self::Number { value: p[0], meta: meta.clone(), + ty: ty.clone(), }, Self::Number { value: p[1], meta: meta.clone(), + ty, }, ], meta, @@ -427,7 +455,7 @@ impl KclValue { } pub fn as_f64(&self) -> Option { - if let KclValue::Number { value, meta: _ } = &self { + if let KclValue::Number { value, .. } = &self { Some(*value) } else { None @@ -593,6 +621,73 @@ impl KclValue { } } +#[derive(Debug, Clone, Deserialize, Serialize, PartialEq, ts_rs::TS, JsonSchema)] +#[ts(export)] +#[serde(tag = "type")] +pub enum NumericType { + // Specified by the user (directly or indirectly) + Known(UnitType), + // Unspecified, using defaults + Default { len: UnitLen, angle: UnitAngle }, + // Exceeded the ability of the type system to track. + Unknown, + // Type info has been explicitly cast away. + Any, +} + +impl NumericType { + pub fn count() -> Self { + NumericType::Known(UnitType::Count) + } + + pub fn combine(self, other: &NumericType) -> NumericType { + if &self == other { + self + } else { + NumericType::Unknown + } + } + + pub fn from_parsed(suffix: NumericSuffix, settings: &super::MetaSettings) -> Self { + match suffix { + NumericSuffix::None => NumericType::Default { + len: settings.default_length_units, + angle: settings.default_angle_units, + }, + NumericSuffix::Count => NumericType::Known(UnitType::Count), + NumericSuffix::Mm => NumericType::Known(UnitType::Length(UnitLen::Mm)), + NumericSuffix::Cm => NumericType::Known(UnitType::Length(UnitLen::Cm)), + NumericSuffix::M => NumericType::Known(UnitType::Length(UnitLen::M)), + NumericSuffix::Inch => NumericType::Known(UnitType::Length(UnitLen::Inches)), + NumericSuffix::Ft => NumericType::Known(UnitType::Length(UnitLen::Feet)), + NumericSuffix::Yd => NumericType::Known(UnitType::Length(UnitLen::Yards)), + NumericSuffix::Deg => NumericType::Known(UnitType::Angle(UnitAngle::Degrees)), + NumericSuffix::Rad => NumericType::Known(UnitType::Angle(UnitAngle::Radians)), + } + } +} + +impl From for NumericType { + fn from(value: UnitLen) -> Self { + NumericType::Known(UnitType::Length(value)) + } +} + +impl From for NumericType { + fn from(value: UnitAngle) -> Self { + NumericType::Known(UnitType::Angle(value)) + } +} + +#[derive(Debug, Clone, Copy, Deserialize, Serialize, PartialEq, Eq, ts_rs::TS, JsonSchema)] +#[ts(export)] +#[serde(tag = "type")] +pub enum UnitType { + Count, + Length(UnitLen), + Angle(UnitAngle), +} + // TODO called UnitLen so as not to clash with UnitLength in settings) #[derive(Debug, Default, Clone, Copy, Deserialize, Serialize, PartialEq, ts_rs::TS, JsonSchema, Eq)] #[ts(export)] diff --git a/src/wasm-lib/kcl/src/execution/memory.rs b/src/wasm-lib/kcl/src/execution/memory.rs index 2a1fae04b..f36d5fb64 100644 --- a/src/wasm-lib/kcl/src/execution/memory.rs +++ b/src/wasm-lib/kcl/src/execution/memory.rs @@ -845,6 +845,8 @@ mod env { #[cfg(test)] mod test { + use crate::execution::kcl_value::NumericType; + use super::*; fn sr() -> SourceRange { @@ -854,6 +856,7 @@ mod test { fn val(value: i64) -> KclValue { KclValue::Number { value: value as f64, + ty: NumericType::count(), meta: Vec::new(), } } diff --git a/src/wasm-lib/kcl/src/parsing/ast/types/mod.rs b/src/wasm-lib/kcl/src/parsing/ast/types/mod.rs index 8c3df8e14..444e08cb4 100644 --- a/src/wasm-lib/kcl/src/parsing/ast/types/mod.rs +++ b/src/wasm-lib/kcl/src/parsing/ast/types/mod.rs @@ -2084,30 +2084,6 @@ impl Literal { } } -impl From> for KclValue { - fn from(literal: Node) -> Self { - let meta = vec![literal.metadata()]; - match literal.inner.value { - LiteralValue::Number { value, .. } => KclValue::Number { value, meta }, - LiteralValue::String(value) => KclValue::String { value, meta }, - LiteralValue::Bool(value) => KclValue::Bool { value, meta }, - } - } -} - -impl From<&Node> for KclValue { - fn from(literal: &Node) -> Self { - Self::from(literal.to_owned()) - } -} - -impl From<&BoxNode> for KclValue { - fn from(literal: &BoxNode) -> Self { - let b: &Node = literal; - Self::from(b) - } -} - #[derive(Debug, Clone, Deserialize, Serialize, PartialEq, ts_rs::TS, JsonSchema, Eq)] #[ts(export)] #[serde(tag = "type")] @@ -3092,20 +3068,7 @@ pub enum FnArgType { #[allow(clippy::large_enum_variant)] pub enum DefaultParamVal { KclNone(KclNone), - Literal(Literal), -} - -// TODO: This should actually take metadata. -impl From for KclValue { - fn from(v: DefaultParamVal) -> Self { - match v { - DefaultParamVal::KclNone(kcl_none) => Self::KclNone { - value: kcl_none, - meta: Default::default(), - }, - DefaultParamVal::Literal(literal) => Self::from_literal(literal.value, Vec::new()), - } - } + Literal(Node), } impl DefaultParamVal { diff --git a/src/wasm-lib/kcl/src/parsing/parser.rs b/src/wasm-lib/kcl/src/parsing/parser.rs index aa403f986..76dd46b78 100644 --- a/src/wasm-lib/kcl/src/parsing/parser.rs +++ b/src/wasm-lib/kcl/src/parsing/parser.rs @@ -2582,7 +2582,7 @@ fn parameter(i: &mut TokenSlice) -> PResult { arg_name, type_, default_value: match (question_mark.is_some(), default_literal) { - (true, Some(lit)) => Some(DefaultParamVal::Literal(lit.inner)), + (true, Some(lit)) => Some(DefaultParamVal::Literal(*lit)), (true, None) => Some(DefaultParamVal::none()), (false, None) => None, (false, Some(lit)) => { diff --git a/src/wasm-lib/kcl/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_tests__kw_function_decl_with_default_and_type.snap b/src/wasm-lib/kcl/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_tests__kw_function_decl_with_default_and_type.snap index e3cef2a14..4e04958ae 100644 --- a/src/wasm-lib/kcl/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_tests__kw_function_decl_with_default_and_type.snap +++ b/src/wasm-lib/kcl/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_tests__kw_function_decl_with_default_and_type.snap @@ -48,13 +48,15 @@ expression: actual "type": "Identifier" }, "default_value": { + "end": 21, + "raw": "2", + "start": 20, "type": "Literal", "type": "Literal", "value": { "value": 2.0, "suffix": "None" - }, - "raw": "2" + } } } ], diff --git a/src/wasm-lib/kcl/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_tests__kw_function_decl_with_default_no_type.snap b/src/wasm-lib/kcl/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_tests__kw_function_decl_with_default_no_type.snap index 8bacb1f9c..9cc8470d1 100644 --- a/src/wasm-lib/kcl/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_tests__kw_function_decl_with_default_no_type.snap +++ b/src/wasm-lib/kcl/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_tests__kw_function_decl_with_default_no_type.snap @@ -48,13 +48,15 @@ expression: actual "type": "Identifier" }, "default_value": { + "end": 13, + "raw": "2", + "start": 12, "type": "Literal", "type": "Literal", "value": { "value": 2.0, "suffix": "None" - }, - "raw": "2" + } } } ], diff --git a/src/wasm-lib/kcl/src/std/args.rs b/src/wasm-lib/kcl/src/std/args.rs index 2c2e03f45..d054d5ad9 100644 --- a/src/wasm-lib/kcl/src/std/args.rs +++ b/src/wasm-lib/kcl/src/std/args.rs @@ -8,8 +8,8 @@ use super::shapes::PolygonType; use crate::{ errors::{KclError, KclErrorDetails}, execution::{ - ExecState, ExecutorContext, ExtrudeSurface, Helix, KclObjectFields, KclValue, Metadata, Sketch, SketchSet, - SketchSurface, Solid, SolidSet, TagIdentifier, + kcl_value::NumericType, ExecState, ExecutorContext, ExtrudeSurface, Helix, KclObjectFields, KclValue, Metadata, + Sketch, SketchSet, SketchSurface, Solid, SolidSet, TagIdentifier, }, parsing::ast::types::TagNode, source_range::SourceRange, @@ -299,10 +299,12 @@ impl Args { let x = KclValue::Number { value: p[0], meta: vec![meta], + ty: NumericType::Unknown, }; let y = KclValue::Number { value: p[1], meta: vec![meta], + ty: NumericType::Unknown, }; Ok(KclValue::Array { value: vec![x, y], @@ -319,6 +321,16 @@ impl Args { ) } + pub(crate) fn make_user_val_from_f64_with_type(&self, f: f64, ty: NumericType) -> KclValue { + KclValue::from_number_with_type( + f, + ty, + vec![Metadata { + source_range: self.source_range, + }], + ) + } + pub(crate) fn make_user_val_from_f64_array(&self, f: Vec) -> Result { let array = f .into_iter() @@ -327,6 +339,7 @@ impl Args { meta: vec![Metadata { source_range: self.source_range, }], + ty: NumericType::Unknown, }) .collect::>(); Ok(KclValue::Array { @@ -341,6 +354,10 @@ impl Args { FromArgs::from_args(self, 0) } + pub(crate) fn get_number_with_type(&self) -> Result<(f64, NumericType), KclError> { + FromArgs::from_args(self, 0) + } + pub(crate) fn get_number_array(&self) -> Result, KclError> { let numbers = self .args @@ -358,8 +375,25 @@ impl Args { Ok(numbers) } - pub(crate) fn get_hypotenuse_leg(&self) -> Result<(f64, f64), KclError> { - let numbers = self.get_number_array()?; + pub(crate) fn get_number_array_with_types(&self) -> Result, KclError> { + let numbers = self + .args + .iter() + .map(|arg| { + let Some(num) = <(f64, NumericType)>::from_kcl_val(&arg.value) else { + return Err(KclError::Semantic(KclErrorDetails { + source_ranges: arg.source_ranges(), + message: format!("Expected a number but found {}", arg.value.human_friendly_type()), + })); + }; + Ok(num) + }) + .collect::>()?; + Ok(numbers) + } + + pub(crate) fn get_hypotenuse_leg(&self) -> Result<(f64, f64, NumericType), KclError> { + let numbers = self.get_number_array_with_types()?; if numbers.len() != 2 { return Err(KclError::Type(KclErrorDetails { @@ -368,7 +402,11 @@ impl Args { })); } - Ok((numbers[0], numbers[1])) + let mut numbers = numbers.into_iter(); + let (a, ta) = numbers.next().unwrap(); + let (b, tb) = numbers.next().unwrap(); + let ty = ta.combine(&tb); + Ok((a, b, ty)) } pub(crate) fn get_circle_args( @@ -1383,7 +1421,7 @@ impl<'a> FromKclValue<'a> for super::sketch::AngledLineData { impl<'a> FromKclValue<'a> for i64 { fn from_kcl_val(arg: &'a KclValue) -> Option { match arg { - KclValue::Number { value, meta: _ } => crate::try_f64_to_i64(*value), + KclValue::Number { value, .. } => crate::try_f64_to_i64(*value), _ => None, } } @@ -1419,7 +1457,7 @@ impl<'a> FromKclValue<'a> for uuid::Uuid { impl<'a> FromKclValue<'a> for u32 { fn from_kcl_val(arg: &'a KclValue) -> Option { match arg { - KclValue::Number { value, meta: _ } => crate::try_f64_to_u32(*value), + KclValue::Number { value, .. } => crate::try_f64_to_u32(*value), _ => None, } } @@ -1434,7 +1472,7 @@ impl<'a> FromKclValue<'a> for NonZeroU32 { impl<'a> FromKclValue<'a> for u64 { fn from_kcl_val(arg: &'a KclValue) -> Option { match arg { - KclValue::Number { value, meta: _ } => crate::try_f64_to_u64(*value), + KclValue::Number { value, .. } => crate::try_f64_to_u64(*value), _ => None, } } @@ -1442,7 +1480,15 @@ impl<'a> FromKclValue<'a> for u64 { impl<'a> FromKclValue<'a> for f64 { fn from_kcl_val(arg: &'a KclValue) -> Option { match arg { - KclValue::Number { value, meta: _ } => Some(*value), + KclValue::Number { value, .. } => Some(*value), + _ => None, + } + } +} +impl<'a> FromKclValue<'a> for (f64, NumericType) { + fn from_kcl_val(arg: &'a KclValue) -> Option { + match arg { + KclValue::Number { value, ty, .. } => Some((*value, ty.clone())), _ => None, } } diff --git a/src/wasm-lib/kcl/src/std/assert.rs b/src/wasm-lib/kcl/src/std/assert.rs index e8abd5dcc..66b61f691 100644 --- a/src/wasm-lib/kcl/src/std/assert.rs +++ b/src/wasm-lib/kcl/src/std/assert.rs @@ -5,7 +5,7 @@ use derive_docs::stdlib; use crate::{ errors::{KclError, KclErrorDetails}, - execution::{ExecState, KclValue}, + execution::{kcl_value::NumericType, ExecState, KclValue}, std::Args, }; @@ -24,7 +24,7 @@ async fn _assert(value: bool, message: &str, args: &Args) -> Result<(), KclError pub async fn assert(_exec_state: &mut ExecState, args: Args) -> Result { let (data, description): (bool, String) = args.get_data()?; inner_assert(data, &description, &args).await?; - Ok(args.make_user_val_from_f64(0.0)) // TODO: Add a new Void enum for fns that don't return anything. + Ok(args.make_user_val_from_f64_with_type(0.0, NumericType::count())) // TODO: Add a new Void enum for fns that don't return anything. } /// Check a value at runtime, and raise an error if the argument provided @@ -44,7 +44,7 @@ async fn inner_assert(data: bool, message: &str, args: &Args) -> Result<(), KclE pub async fn assert_lt(_exec_state: &mut ExecState, args: Args) -> Result { let (left, right, description): (f64, f64, String) = args.get_data()?; inner_assert_lt(left, right, &description, &args).await?; - Ok(args.make_user_val_from_f64(0.0)) // TODO: Add a new Void enum for fns that don't return anything. + Ok(args.make_user_val_from_f64_with_type(0.0, NumericType::count())) // TODO: Add a new Void enum for fns that don't return anything. } /// Check that a numerical value is less than to another at runtime, @@ -63,7 +63,7 @@ async fn inner_assert_lt(left: f64, right: f64, message: &str, args: &Args) -> R pub async fn assert_gt(_exec_state: &mut ExecState, args: Args) -> Result { let (left, right, description): (f64, f64, String) = args.get_data()?; inner_assert_gt(left, right, &description, &args).await?; - Ok(args.make_user_val_from_f64(0.0)) // TODO: Add a new Void enum for fns that don't return anything. + Ok(args.make_user_val_from_f64_with_type(0.0, NumericType::count())) // TODO: Add a new Void enum for fns that don't return anything. } /// Check that a numerical value equals another at runtime, @@ -96,7 +96,7 @@ async fn inner_assert_equal(left: f64, right: f64, epsilon: f64, message: &str, pub async fn assert_equal(_exec_state: &mut ExecState, args: Args) -> Result { let (left, right, epsilon, description): (f64, f64, f64, String) = args.get_data()?; inner_assert_equal(left, right, epsilon, &description, &args).await?; - Ok(args.make_user_val_from_f64(0.0)) // TODO: Add a new Void enum for fns that don't return anything. + Ok(args.make_user_val_from_f64_with_type(0.0, NumericType::count())) // TODO: Add a new Void enum for fns that don't return anything. } /// Check that a numerical value is greater than another at runtime, @@ -115,7 +115,7 @@ async fn inner_assert_gt(left: f64, right: f64, message: &str, args: &Args) -> R pub async fn assert_lte(_exec_state: &mut ExecState, args: Args) -> Result { let (left, right, description): (f64, f64, String) = args.get_data()?; inner_assert_lte(left, right, &description, &args).await?; - Ok(args.make_user_val_from_f64(0.0)) // TODO: Add a new Void enum for fns that don't return anything. + Ok(args.make_user_val_from_f64_with_type(0.0, NumericType::count())) // TODO: Add a new Void enum for fns that don't return anything. } /// Check that a numerical value is less than or equal to another at runtime, @@ -135,7 +135,7 @@ async fn inner_assert_lte(left: f64, right: f64, message: &str, args: &Args) -> pub async fn assert_gte(_exec_state: &mut ExecState, args: Args) -> Result { let (left, right, description): (f64, f64, String) = args.get_data()?; inner_assert_gte(left, right, &description, &args).await?; - Ok(args.make_user_val_from_f64(0.0)) // TODO: Add a new Void enum for fns that don't return anything. + Ok(args.make_user_val_from_f64_with_type(0.0, NumericType::count())) // TODO: Add a new Void enum for fns that don't return anything. } /// Check that a numerical value is greater than or equal to another at runtime, diff --git a/src/wasm-lib/kcl/src/std/convert.rs b/src/wasm-lib/kcl/src/std/convert.rs index 0dd7cc37e..3cb30a9f1 100644 --- a/src/wasm-lib/kcl/src/std/convert.rs +++ b/src/wasm-lib/kcl/src/std/convert.rs @@ -10,10 +10,10 @@ use crate::{ /// Converts a number to integer. pub async fn int(_exec_state: &mut ExecState, args: Args) -> Result { - let num = args.get_number()?; + let (num, ty) = args.get_number_with_type()?; let converted = inner_int(num)?; - Ok(args.make_user_val_from_f64(converted)) + Ok(args.make_user_val_from_f64_with_type(converted, ty)) } /// Convert a number to an integer. diff --git a/src/wasm-lib/kcl/src/std/math.rs b/src/wasm-lib/kcl/src/std/math.rs index f3f044399..45e8c80ed 100644 --- a/src/wasm-lib/kcl/src/std/math.rs +++ b/src/wasm-lib/kcl/src/std/math.rs @@ -6,7 +6,7 @@ use derive_docs::stdlib; use super::args::FromArgs; use crate::{ errors::{KclError, KclErrorDetails}, - execution::{ExecState, KclValue}, + execution::{kcl_value::NumericType, ExecState, KclValue}, std::Args, }; @@ -50,7 +50,7 @@ pub async fn cos(_exec_state: &mut ExecState, args: Args) -> Result Result Result Result { - let (hypotenuse, leg) = args.get_hypotenuse_leg()?; + let (hypotenuse, leg, ty) = args.get_hypotenuse_leg()?; let result = inner_leg_length(hypotenuse, leg); - Ok(KclValue::from_number(result, vec![args.into()])) + Ok(KclValue::from_number_with_type(result, ty, vec![args.into()])) } /// Compute the length of the given leg. @@ -248,9 +248,9 @@ fn inner_leg_length(hypotenuse: f64, leg: f64) -> f64 { /// Compute the angle of the given leg for x. pub async fn leg_angle_x(_exec_state: &mut ExecState, args: Args) -> Result { - let (hypotenuse, leg) = args.get_hypotenuse_leg()?; + let (hypotenuse, leg, ty) = args.get_hypotenuse_leg()?; let result = inner_leg_angle_x(hypotenuse, leg); - Ok(KclValue::from_number(result, vec![args.into()])) + Ok(KclValue::from_number_with_type(result, ty, vec![args.into()])) } /// Compute the angle of the given leg for x. @@ -268,9 +268,9 @@ fn inner_leg_angle_x(hypotenuse: f64, leg: f64) -> f64 { /// Compute the angle of the given leg for y. pub async fn leg_angle_y(_exec_state: &mut ExecState, args: Args) -> Result { - let (hypotenuse, leg) = args.get_hypotenuse_leg()?; + let (hypotenuse, leg, ty) = args.get_hypotenuse_leg()?; let result = inner_leg_angle_y(hypotenuse, leg); - Ok(KclValue::from_number(result, vec![args.into()])) + Ok(KclValue::from_number_with_type(result, ty, vec![args.into()])) } /// Compute the angle of the given leg for y. diff --git a/src/wasm-lib/kcl/src/std/patterns.rs b/src/wasm-lib/kcl/src/std/patterns.rs index feac49089..408b5ebdc 100644 --- a/src/wasm-lib/kcl/src/std/patterns.rs +++ b/src/wasm-lib/kcl/src/std/patterns.rs @@ -20,8 +20,8 @@ use super::{args::Arg, FnAsArg}; use crate::{ errors::{KclError, KclErrorDetails}, execution::{ - ExecState, FunctionParam, Geometries, Geometry, KclObjectFields, KclValue, Point2d, Point3d, Sketch, SketchSet, - Solid, SolidSet, + kcl_value::NumericType, ExecState, FunctionParam, Geometries, Geometry, KclObjectFields, KclValue, Point2d, + Point3d, Sketch, SketchSet, Solid, SolidSet, }, std::Args, SourceRange, @@ -448,6 +448,7 @@ async fn make_transform( // Call the transform fn for this repetition. let repetition_num = KclValue::Number { value: i.into(), + ty: NumericType::count(), meta: vec![source_range.into()], }; let transform_fn_args = vec![Arg::synthetic(repetition_num)]; @@ -530,7 +531,7 @@ fn transform_from_obj_fields( } if let Some(angle) = rot.get("angle") { match angle { - KclValue::Number { value: number, meta: _ } => { + KclValue::Number { value: number, .. } => { rotation.angle = Angle::from_degrees(*number); } _ => { @@ -679,6 +680,8 @@ impl GeometryTrait for Box { #[cfg(test)] mod tests { + use crate::execution::kcl_value::NumericType; + use super::*; #[test] @@ -688,14 +691,17 @@ mod tests { KclValue::Number { value: 1.1, meta: Default::default(), + ty: NumericType::Unknown, }, KclValue::Number { value: 2.2, meta: Default::default(), + ty: NumericType::Unknown, }, KclValue::Number { value: 3.3, meta: Default::default(), + ty: NumericType::Unknown, }, ], meta: Default::default(), diff --git a/src/wasm-lib/kcl/src/std/sketch.rs b/src/wasm-lib/kcl/src/std/sketch.rs index a14517872..98073a5f4 100644 --- a/src/wasm-lib/kcl/src/std/sketch.rs +++ b/src/wasm-lib/kcl/src/std/sketch.rs @@ -1388,8 +1388,9 @@ pub(crate) async fn inner_start_profile_at( /// Returns the X component of the sketch profile start point. pub async fn profile_start_x(_exec_state: &mut ExecState, args: Args) -> Result { let sketch: Sketch = args.get_sketch()?; + let ty = sketch.units.into(); let x = inner_profile_start_x(sketch)?; - Ok(args.make_user_val_from_f64(x)) + Ok(args.make_user_val_from_f64_with_type(x, ty)) } /// Extract the provided 2-dimensional sketch's profile's origin's 'x' @@ -1412,8 +1413,9 @@ pub(crate) fn inner_profile_start_x(sketch: Sketch) -> Result { /// Returns the Y component of the sketch profile start point. pub async fn profile_start_y(_exec_state: &mut ExecState, args: Args) -> Result { let sketch: Sketch = args.get_sketch()?; + let ty = sketch.units.into(); let x = inner_profile_start_y(sketch)?; - Ok(args.make_user_val_from_f64(x)) + Ok(args.make_user_val_from_f64_with_type(x, ty)) } /// Extract the provided 2-dimensional sketch's profile's origin's 'y' @@ -1435,8 +1437,9 @@ pub(crate) fn inner_profile_start_y(sketch: Sketch) -> Result { /// Returns the sketch profile start point. pub async fn profile_start(_exec_state: &mut ExecState, args: Args) -> Result { let sketch: Sketch = args.get_sketch()?; + let ty = sketch.units.into(); let point = inner_profile_start(sketch)?; - Ok(KclValue::from_point2d(point, args.into())) + Ok(KclValue::from_point2d(point, ty, args.into())) } /// Extract the provided 2-dimensional sketch's profile's origin diff --git a/src/wasm-lib/kcl/tests/add_lots/program_memory.snap b/src/wasm-lib/kcl/tests/add_lots/program_memory.snap index 25249ecf2..c63a6e8e6 100644 --- a/src/wasm-lib/kcl/tests/add_lots/program_memory.snap +++ b/src/wasm-lib/kcl/tests/add_lots/program_memory.snap @@ -6,21 +6,33 @@ description: Variables in memory after executing add_lots.kcl "HALF_TURN": { "type": "Number", "value": 180.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "QUARTER_TURN": { "type": "Number", "value": 90.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "THREE_QUARTER_TURN": { "type": "Number", "value": 270.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "ZERO": { "type": "Number", "value": 0.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "f": { @@ -95,6 +107,9 @@ description: Variables in memory after executing add_lots.kcl "x": { "type": "Number", "value": 10100.0, + "ty": { + "type": "Unknown" + }, "__meta": [ { "sourceRange": [ diff --git a/src/wasm-lib/kcl/tests/angled_line/program_memory.snap b/src/wasm-lib/kcl/tests/angled_line/program_memory.snap index 5c7f60efe..f621cc1b9 100644 --- a/src/wasm-lib/kcl/tests/angled_line/program_memory.snap +++ b/src/wasm-lib/kcl/tests/angled_line/program_memory.snap @@ -6,21 +6,33 @@ description: Variables in memory after executing angled_line.kcl "HALF_TURN": { "type": "Number", "value": 180.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "QUARTER_TURN": { "type": "Number", "value": 90.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "THREE_QUARTER_TURN": { "type": "Number", "value": 270.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "ZERO": { "type": "Number", "value": 0.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "part001": { diff --git a/src/wasm-lib/kcl/tests/array_elem_pop/program_memory.snap b/src/wasm-lib/kcl/tests/array_elem_pop/program_memory.snap index 22bfed15f..8a9f831d8 100644 --- a/src/wasm-lib/kcl/tests/array_elem_pop/program_memory.snap +++ b/src/wasm-lib/kcl/tests/array_elem_pop/program_memory.snap @@ -6,21 +6,33 @@ description: Variables in memory after executing array_elem_pop.kcl "HALF_TURN": { "type": "Number", "value": 180.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "QUARTER_TURN": { "type": "Number", "value": 90.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "THREE_QUARTER_TURN": { "type": "Number", "value": 270.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "ZERO": { "type": "Number", "value": 0.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "arr": { @@ -29,6 +41,15 @@ description: Variables in memory after executing array_elem_pop.kcl { "type": "Number", "value": 1.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + }, "__meta": [ { "sourceRange": [ @@ -42,6 +63,15 @@ description: Variables in memory after executing array_elem_pop.kcl { "type": "Number", "value": 2.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + }, "__meta": [ { "sourceRange": [ @@ -55,6 +85,15 @@ description: Variables in memory after executing array_elem_pop.kcl { "type": "Number", "value": 3.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + }, "__meta": [ { "sourceRange": [ @@ -82,6 +121,15 @@ description: Variables in memory after executing array_elem_pop.kcl { "type": "Number", "value": 1.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + }, "__meta": [ { "sourceRange": [ @@ -95,6 +143,15 @@ description: Variables in memory after executing array_elem_pop.kcl { "type": "Number", "value": 2.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + }, "__meta": [ { "sourceRange": [ @@ -122,6 +179,15 @@ description: Variables in memory after executing array_elem_pop.kcl { "type": "Number", "value": 1.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + }, "__meta": [ { "sourceRange": [ diff --git a/src/wasm-lib/kcl/tests/array_elem_push/program_memory.snap b/src/wasm-lib/kcl/tests/array_elem_push/program_memory.snap index adfc98f74..bba5bfa45 100644 --- a/src/wasm-lib/kcl/tests/array_elem_push/program_memory.snap +++ b/src/wasm-lib/kcl/tests/array_elem_push/program_memory.snap @@ -6,21 +6,33 @@ description: Variables in memory after executing array_elem_push.kcl "HALF_TURN": { "type": "Number", "value": 180.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "QUARTER_TURN": { "type": "Number", "value": 90.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "THREE_QUARTER_TURN": { "type": "Number", "value": 270.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "ZERO": { "type": "Number", "value": 0.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "arr": { @@ -29,6 +41,15 @@ description: Variables in memory after executing array_elem_push.kcl { "type": "Number", "value": 1.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + }, "__meta": [ { "sourceRange": [ @@ -42,6 +63,15 @@ description: Variables in memory after executing array_elem_push.kcl { "type": "Number", "value": 2.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + }, "__meta": [ { "sourceRange": [ @@ -55,6 +85,15 @@ description: Variables in memory after executing array_elem_push.kcl { "type": "Number", "value": 3.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + }, "__meta": [ { "sourceRange": [ @@ -82,6 +121,15 @@ description: Variables in memory after executing array_elem_push.kcl { "type": "Number", "value": 1.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + }, "__meta": [ { "sourceRange": [ @@ -95,6 +143,15 @@ description: Variables in memory after executing array_elem_push.kcl { "type": "Number", "value": 2.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + }, "__meta": [ { "sourceRange": [ @@ -108,6 +165,15 @@ description: Variables in memory after executing array_elem_push.kcl { "type": "Number", "value": 3.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + }, "__meta": [ { "sourceRange": [ @@ -121,6 +187,15 @@ description: Variables in memory after executing array_elem_push.kcl { "type": "Number", "value": 4.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + }, "__meta": [ { "sourceRange": [ @@ -148,6 +223,15 @@ description: Variables in memory after executing array_elem_push.kcl { "type": "Number", "value": 1.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + }, "__meta": [ { "sourceRange": [ @@ -161,6 +245,15 @@ description: Variables in memory after executing array_elem_push.kcl { "type": "Number", "value": 2.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + }, "__meta": [ { "sourceRange": [ @@ -174,6 +267,15 @@ description: Variables in memory after executing array_elem_push.kcl { "type": "Number", "value": 3.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + }, "__meta": [ { "sourceRange": [ @@ -187,6 +289,15 @@ description: Variables in memory after executing array_elem_push.kcl { "type": "Number", "value": 4.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + }, "__meta": [ { "sourceRange": [ @@ -200,6 +311,15 @@ description: Variables in memory after executing array_elem_push.kcl { "type": "Number", "value": 5.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + }, "__meta": [ { "sourceRange": [ diff --git a/src/wasm-lib/kcl/tests/array_range_expr/program_memory.snap b/src/wasm-lib/kcl/tests/array_range_expr/program_memory.snap index 7ecdae589..d72b00ce0 100644 --- a/src/wasm-lib/kcl/tests/array_range_expr/program_memory.snap +++ b/src/wasm-lib/kcl/tests/array_range_expr/program_memory.snap @@ -6,26 +6,41 @@ description: Variables in memory after executing array_range_expr.kcl "HALF_TURN": { "type": "Number", "value": 180.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "QUARTER_TURN": { "type": "Number", "value": 90.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "THREE_QUARTER_TURN": { "type": "Number", "value": 270.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "ZERO": { "type": "Number", "value": 0.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "five": { "type": "Number", "value": 5.0, + "ty": { + "type": "Unknown" + }, "__meta": [ { "sourceRange": [ @@ -39,6 +54,15 @@ description: Variables in memory after executing array_range_expr.kcl "four": { "type": "Number", "value": 4.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + }, "__meta": [ { "sourceRange": [ @@ -55,6 +79,9 @@ description: Variables in memory after executing array_range_expr.kcl { "type": "Number", "value": 0.0, + "ty": { + "type": "Unknown" + }, "__meta": [ { "sourceRange": [ @@ -68,6 +95,9 @@ description: Variables in memory after executing array_range_expr.kcl { "type": "Number", "value": 1.0, + "ty": { + "type": "Unknown" + }, "__meta": [ { "sourceRange": [ @@ -81,6 +111,9 @@ description: Variables in memory after executing array_range_expr.kcl { "type": "Number", "value": 2.0, + "ty": { + "type": "Unknown" + }, "__meta": [ { "sourceRange": [ @@ -94,6 +127,9 @@ description: Variables in memory after executing array_range_expr.kcl { "type": "Number", "value": 3.0, + "ty": { + "type": "Unknown" + }, "__meta": [ { "sourceRange": [ @@ -107,6 +143,9 @@ description: Variables in memory after executing array_range_expr.kcl { "type": "Number", "value": 4.0, + "ty": { + "type": "Unknown" + }, "__meta": [ { "sourceRange": [ @@ -134,6 +173,9 @@ description: Variables in memory after executing array_range_expr.kcl { "type": "Number", "value": 0.0, + "ty": { + "type": "Unknown" + }, "__meta": [ { "sourceRange": [ @@ -147,6 +189,9 @@ description: Variables in memory after executing array_range_expr.kcl { "type": "Number", "value": 1.0, + "ty": { + "type": "Unknown" + }, "__meta": [ { "sourceRange": [ @@ -160,6 +205,9 @@ description: Variables in memory after executing array_range_expr.kcl { "type": "Number", "value": 2.0, + "ty": { + "type": "Unknown" + }, "__meta": [ { "sourceRange": [ @@ -173,6 +221,9 @@ description: Variables in memory after executing array_range_expr.kcl { "type": "Number", "value": 3.0, + "ty": { + "type": "Unknown" + }, "__meta": [ { "sourceRange": [ @@ -186,6 +237,9 @@ description: Variables in memory after executing array_range_expr.kcl { "type": "Number", "value": 4.0, + "ty": { + "type": "Unknown" + }, "__meta": [ { "sourceRange": [ @@ -213,6 +267,9 @@ description: Variables in memory after executing array_range_expr.kcl { "type": "Number", "value": 0.0, + "ty": { + "type": "Unknown" + }, "__meta": [ { "sourceRange": [ @@ -226,6 +283,9 @@ description: Variables in memory after executing array_range_expr.kcl { "type": "Number", "value": 1.0, + "ty": { + "type": "Unknown" + }, "__meta": [ { "sourceRange": [ @@ -239,6 +299,9 @@ description: Variables in memory after executing array_range_expr.kcl { "type": "Number", "value": 2.0, + "ty": { + "type": "Unknown" + }, "__meta": [ { "sourceRange": [ @@ -252,6 +315,9 @@ description: Variables in memory after executing array_range_expr.kcl { "type": "Number", "value": 3.0, + "ty": { + "type": "Unknown" + }, "__meta": [ { "sourceRange": [ @@ -265,6 +331,9 @@ description: Variables in memory after executing array_range_expr.kcl { "type": "Number", "value": 4.0, + "ty": { + "type": "Unknown" + }, "__meta": [ { "sourceRange": [ @@ -278,6 +347,9 @@ description: Variables in memory after executing array_range_expr.kcl { "type": "Number", "value": 5.0, + "ty": { + "type": "Unknown" + }, "__meta": [ { "sourceRange": [ @@ -305,6 +377,9 @@ description: Variables in memory after executing array_range_expr.kcl { "type": "Number", "value": 1.0, + "ty": { + "type": "Unknown" + }, "__meta": [ { "sourceRange": [ @@ -318,6 +393,9 @@ description: Variables in memory after executing array_range_expr.kcl { "type": "Number", "value": 2.0, + "ty": { + "type": "Unknown" + }, "__meta": [ { "sourceRange": [ @@ -331,6 +409,9 @@ description: Variables in memory after executing array_range_expr.kcl { "type": "Number", "value": 3.0, + "ty": { + "type": "Unknown" + }, "__meta": [ { "sourceRange": [ @@ -344,6 +425,9 @@ description: Variables in memory after executing array_range_expr.kcl { "type": "Number", "value": 4.0, + "ty": { + "type": "Unknown" + }, "__meta": [ { "sourceRange": [ @@ -368,6 +452,15 @@ description: Variables in memory after executing array_range_expr.kcl "zero": { "type": "Number", "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + }, "__meta": [ { "sourceRange": [ diff --git a/src/wasm-lib/kcl/tests/array_range_negative_expr/program_memory.snap b/src/wasm-lib/kcl/tests/array_range_negative_expr/program_memory.snap index 04803a3e6..4764cc31e 100644 --- a/src/wasm-lib/kcl/tests/array_range_negative_expr/program_memory.snap +++ b/src/wasm-lib/kcl/tests/array_range_negative_expr/program_memory.snap @@ -6,21 +6,33 @@ description: Variables in memory after executing array_range_negative_expr.kcl "HALF_TURN": { "type": "Number", "value": 180.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "QUARTER_TURN": { "type": "Number", "value": 90.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "THREE_QUARTER_TURN": { "type": "Number", "value": 270.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "ZERO": { "type": "Number", "value": 0.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "xs": { @@ -29,6 +41,9 @@ description: Variables in memory after executing array_range_negative_expr.kcl { "type": "Number", "value": -5.0, + "ty": { + "type": "Unknown" + }, "__meta": [ { "sourceRange": [ @@ -42,6 +57,9 @@ description: Variables in memory after executing array_range_negative_expr.kcl { "type": "Number", "value": -4.0, + "ty": { + "type": "Unknown" + }, "__meta": [ { "sourceRange": [ @@ -55,6 +73,9 @@ description: Variables in memory after executing array_range_negative_expr.kcl { "type": "Number", "value": -3.0, + "ty": { + "type": "Unknown" + }, "__meta": [ { "sourceRange": [ @@ -68,6 +89,9 @@ description: Variables in memory after executing array_range_negative_expr.kcl { "type": "Number", "value": -2.0, + "ty": { + "type": "Unknown" + }, "__meta": [ { "sourceRange": [ @@ -81,6 +105,9 @@ description: Variables in memory after executing array_range_negative_expr.kcl { "type": "Number", "value": -1.0, + "ty": { + "type": "Unknown" + }, "__meta": [ { "sourceRange": [ @@ -94,6 +121,9 @@ description: Variables in memory after executing array_range_negative_expr.kcl { "type": "Number", "value": 0.0, + "ty": { + "type": "Unknown" + }, "__meta": [ { "sourceRange": [ @@ -107,6 +137,9 @@ description: Variables in memory after executing array_range_negative_expr.kcl { "type": "Number", "value": 1.0, + "ty": { + "type": "Unknown" + }, "__meta": [ { "sourceRange": [ @@ -120,6 +153,9 @@ description: Variables in memory after executing array_range_negative_expr.kcl { "type": "Number", "value": 2.0, + "ty": { + "type": "Unknown" + }, "__meta": [ { "sourceRange": [ @@ -133,6 +169,9 @@ description: Variables in memory after executing array_range_negative_expr.kcl { "type": "Number", "value": 3.0, + "ty": { + "type": "Unknown" + }, "__meta": [ { "sourceRange": [ @@ -146,6 +185,9 @@ description: Variables in memory after executing array_range_negative_expr.kcl { "type": "Number", "value": 4.0, + "ty": { + "type": "Unknown" + }, "__meta": [ { "sourceRange": [ @@ -159,6 +201,9 @@ description: Variables in memory after executing array_range_negative_expr.kcl { "type": "Number", "value": 5.0, + "ty": { + "type": "Unknown" + }, "__meta": [ { "sourceRange": [ diff --git a/src/wasm-lib/kcl/tests/artifact_graph_example_code1/program_memory.snap b/src/wasm-lib/kcl/tests/artifact_graph_example_code1/program_memory.snap index ffaca068d..45664a886 100644 --- a/src/wasm-lib/kcl/tests/artifact_graph_example_code1/program_memory.snap +++ b/src/wasm-lib/kcl/tests/artifact_graph_example_code1/program_memory.snap @@ -6,21 +6,33 @@ description: Variables in memory after executing artifact_graph_example_code1.kc "HALF_TURN": { "type": "Number", "value": 180.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "QUARTER_TURN": { "type": "Number", "value": 90.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "THREE_QUARTER_TURN": { "type": "Number", "value": 270.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "ZERO": { "type": "Number", "value": 0.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "extrude001": { diff --git a/src/wasm-lib/kcl/tests/artifact_graph_example_code_no_3d/program_memory.snap b/src/wasm-lib/kcl/tests/artifact_graph_example_code_no_3d/program_memory.snap index a76590f7f..630a91463 100644 --- a/src/wasm-lib/kcl/tests/artifact_graph_example_code_no_3d/program_memory.snap +++ b/src/wasm-lib/kcl/tests/artifact_graph_example_code_no_3d/program_memory.snap @@ -6,21 +6,33 @@ description: Variables in memory after executing artifact_graph_example_code_no_ "HALF_TURN": { "type": "Number", "value": 180.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "QUARTER_TURN": { "type": "Number", "value": 90.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "THREE_QUARTER_TURN": { "type": "Number", "value": 270.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "ZERO": { "type": "Number", "value": 0.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "rectangleSegmentA001": { diff --git a/src/wasm-lib/kcl/tests/artifact_graph_example_code_offset_planes/program_memory.snap b/src/wasm-lib/kcl/tests/artifact_graph_example_code_offset_planes/program_memory.snap index 3df19decf..73046b7c4 100644 --- a/src/wasm-lib/kcl/tests/artifact_graph_example_code_offset_planes/program_memory.snap +++ b/src/wasm-lib/kcl/tests/artifact_graph_example_code_offset_planes/program_memory.snap @@ -7,21 +7,33 @@ snapshot_kind: text "HALF_TURN": { "type": "Number", "value": 180.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "QUARTER_TURN": { "type": "Number", "value": 90.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "THREE_QUARTER_TURN": { "type": "Number", "value": 270.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "ZERO": { "type": "Number", "value": 0.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "offsetPlane001": { diff --git a/src/wasm-lib/kcl/tests/artifact_graph_sketch_on_face_etc/program_memory.snap b/src/wasm-lib/kcl/tests/artifact_graph_sketch_on_face_etc/program_memory.snap index 66b50b556..6dbaa2c4b 100644 --- a/src/wasm-lib/kcl/tests/artifact_graph_sketch_on_face_etc/program_memory.snap +++ b/src/wasm-lib/kcl/tests/artifact_graph_sketch_on_face_etc/program_memory.snap @@ -6,21 +6,33 @@ description: Variables in memory after executing artifact_graph_sketch_on_face_e "HALF_TURN": { "type": "Number", "value": 180.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "QUARTER_TURN": { "type": "Number", "value": 90.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "THREE_QUARTER_TURN": { "type": "Number", "value": 270.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "ZERO": { "type": "Number", "value": 0.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "extrude001": { diff --git a/src/wasm-lib/kcl/tests/basic_fillet_cube_close_opposite/program_memory.snap b/src/wasm-lib/kcl/tests/basic_fillet_cube_close_opposite/program_memory.snap index 6f47d4097..60ecd6420 100644 --- a/src/wasm-lib/kcl/tests/basic_fillet_cube_close_opposite/program_memory.snap +++ b/src/wasm-lib/kcl/tests/basic_fillet_cube_close_opposite/program_memory.snap @@ -6,21 +6,33 @@ description: Variables in memory after executing basic_fillet_cube_close_opposit "HALF_TURN": { "type": "Number", "value": 180.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "QUARTER_TURN": { "type": "Number", "value": 90.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "THREE_QUARTER_TURN": { "type": "Number", "value": 270.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "ZERO": { "type": "Number", "value": 0.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "part001": { diff --git a/src/wasm-lib/kcl/tests/basic_fillet_cube_end/program_memory.snap b/src/wasm-lib/kcl/tests/basic_fillet_cube_end/program_memory.snap index 258188eed..af72cb466 100644 --- a/src/wasm-lib/kcl/tests/basic_fillet_cube_end/program_memory.snap +++ b/src/wasm-lib/kcl/tests/basic_fillet_cube_end/program_memory.snap @@ -6,21 +6,33 @@ description: Variables in memory after executing basic_fillet_cube_end.kcl "HALF_TURN": { "type": "Number", "value": 180.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "QUARTER_TURN": { "type": "Number", "value": 90.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "THREE_QUARTER_TURN": { "type": "Number", "value": 270.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "ZERO": { "type": "Number", "value": 0.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "part001": { diff --git a/src/wasm-lib/kcl/tests/basic_fillet_cube_next_adjacent/program_memory.snap b/src/wasm-lib/kcl/tests/basic_fillet_cube_next_adjacent/program_memory.snap index 393d6330f..3c578a9a0 100644 --- a/src/wasm-lib/kcl/tests/basic_fillet_cube_next_adjacent/program_memory.snap +++ b/src/wasm-lib/kcl/tests/basic_fillet_cube_next_adjacent/program_memory.snap @@ -6,21 +6,33 @@ description: Variables in memory after executing basic_fillet_cube_next_adjacent "HALF_TURN": { "type": "Number", "value": 180.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "QUARTER_TURN": { "type": "Number", "value": 90.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "THREE_QUARTER_TURN": { "type": "Number", "value": 270.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "ZERO": { "type": "Number", "value": 0.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "part001": { diff --git a/src/wasm-lib/kcl/tests/basic_fillet_cube_previous_adjacent/program_memory.snap b/src/wasm-lib/kcl/tests/basic_fillet_cube_previous_adjacent/program_memory.snap index b6655029e..debf08fff 100644 --- a/src/wasm-lib/kcl/tests/basic_fillet_cube_previous_adjacent/program_memory.snap +++ b/src/wasm-lib/kcl/tests/basic_fillet_cube_previous_adjacent/program_memory.snap @@ -6,21 +6,33 @@ description: Variables in memory after executing basic_fillet_cube_previous_adja "HALF_TURN": { "type": "Number", "value": 180.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "QUARTER_TURN": { "type": "Number", "value": 90.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "THREE_QUARTER_TURN": { "type": "Number", "value": 270.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "ZERO": { "type": "Number", "value": 0.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "part001": { diff --git a/src/wasm-lib/kcl/tests/basic_fillet_cube_start/program_memory.snap b/src/wasm-lib/kcl/tests/basic_fillet_cube_start/program_memory.snap index 8cf7a5318..851019515 100644 --- a/src/wasm-lib/kcl/tests/basic_fillet_cube_start/program_memory.snap +++ b/src/wasm-lib/kcl/tests/basic_fillet_cube_start/program_memory.snap @@ -6,21 +6,33 @@ description: Variables in memory after executing basic_fillet_cube_start.kcl "HALF_TURN": { "type": "Number", "value": 180.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "QUARTER_TURN": { "type": "Number", "value": 90.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "THREE_QUARTER_TURN": { "type": "Number", "value": 270.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "ZERO": { "type": "Number", "value": 0.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "part001": { diff --git a/src/wasm-lib/kcl/tests/big_number_angle_to_match_length_x/program_memory.snap b/src/wasm-lib/kcl/tests/big_number_angle_to_match_length_x/program_memory.snap index a1dc49985..0595191ee 100644 --- a/src/wasm-lib/kcl/tests/big_number_angle_to_match_length_x/program_memory.snap +++ b/src/wasm-lib/kcl/tests/big_number_angle_to_match_length_x/program_memory.snap @@ -6,21 +6,33 @@ description: Variables in memory after executing big_number_angle_to_match_lengt "HALF_TURN": { "type": "Number", "value": 180.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "QUARTER_TURN": { "type": "Number", "value": 90.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "THREE_QUARTER_TURN": { "type": "Number", "value": 270.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "ZERO": { "type": "Number", "value": 0.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "part001": { diff --git a/src/wasm-lib/kcl/tests/big_number_angle_to_match_length_y/program_memory.snap b/src/wasm-lib/kcl/tests/big_number_angle_to_match_length_y/program_memory.snap index 8f8f0f068..4580b3b7c 100644 --- a/src/wasm-lib/kcl/tests/big_number_angle_to_match_length_y/program_memory.snap +++ b/src/wasm-lib/kcl/tests/big_number_angle_to_match_length_y/program_memory.snap @@ -6,21 +6,33 @@ description: Variables in memory after executing big_number_angle_to_match_lengt "HALF_TURN": { "type": "Number", "value": 180.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "QUARTER_TURN": { "type": "Number", "value": 90.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "THREE_QUARTER_TURN": { "type": "Number", "value": 270.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "ZERO": { "type": "Number", "value": 0.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "part001": { diff --git a/src/wasm-lib/kcl/tests/boolean_logical_and/program_memory.snap b/src/wasm-lib/kcl/tests/boolean_logical_and/program_memory.snap index 9026e8644..76c886430 100644 --- a/src/wasm-lib/kcl/tests/boolean_logical_and/program_memory.snap +++ b/src/wasm-lib/kcl/tests/boolean_logical_and/program_memory.snap @@ -6,26 +6,47 @@ description: Variables in memory after executing boolean_logical_and.kcl "HALF_TURN": { "type": "Number", "value": 180.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "QUARTER_TURN": { "type": "Number", "value": 90.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "THREE_QUARTER_TURN": { "type": "Number", "value": 270.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "ZERO": { "type": "Number", "value": 0.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "a": { "type": "Number", "value": 2.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + }, "__meta": [ { "sourceRange": [ @@ -59,6 +80,15 @@ description: Variables in memory after executing boolean_logical_and.kcl "b": { "type": "Number", "value": 2.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + }, "__meta": [ { "sourceRange": [ @@ -92,6 +122,15 @@ description: Variables in memory after executing boolean_logical_and.kcl "c": { "type": "Number", "value": 1.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + }, "__meta": [ { "sourceRange": [ @@ -125,6 +164,15 @@ description: Variables in memory after executing boolean_logical_and.kcl "d": { "type": "Number", "value": 2.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + }, "__meta": [ { "sourceRange": [ diff --git a/src/wasm-lib/kcl/tests/boolean_logical_multiple/program_memory.snap b/src/wasm-lib/kcl/tests/boolean_logical_multiple/program_memory.snap index 8f5b9e4b6..b455a4947 100644 --- a/src/wasm-lib/kcl/tests/boolean_logical_multiple/program_memory.snap +++ b/src/wasm-lib/kcl/tests/boolean_logical_multiple/program_memory.snap @@ -6,26 +6,47 @@ description: Variables in memory after executing boolean_logical_multiple.kcl "HALF_TURN": { "type": "Number", "value": 180.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "QUARTER_TURN": { "type": "Number", "value": 90.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "THREE_QUARTER_TURN": { "type": "Number", "value": 270.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "ZERO": { "type": "Number", "value": 0.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "i": { "type": "Number", "value": 1.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + }, "__meta": [ { "sourceRange": [ @@ -66,6 +87,15 @@ description: Variables in memory after executing boolean_logical_multiple.kcl "j": { "type": "Number", "value": 1.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + }, "__meta": [ { "sourceRange": [ diff --git a/src/wasm-lib/kcl/tests/boolean_logical_or/program_memory.snap b/src/wasm-lib/kcl/tests/boolean_logical_or/program_memory.snap index 03ff15f11..72ffb85ba 100644 --- a/src/wasm-lib/kcl/tests/boolean_logical_or/program_memory.snap +++ b/src/wasm-lib/kcl/tests/boolean_logical_or/program_memory.snap @@ -6,26 +6,47 @@ description: Variables in memory after executing boolean_logical_or.kcl "HALF_TURN": { "type": "Number", "value": 180.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "QUARTER_TURN": { "type": "Number", "value": 90.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "THREE_QUARTER_TURN": { "type": "Number", "value": 270.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "ZERO": { "type": "Number", "value": 0.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "a": { "type": "Number", "value": 1.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + }, "__meta": [ { "sourceRange": [ @@ -59,6 +80,15 @@ description: Variables in memory after executing boolean_logical_or.kcl "b": { "type": "Number", "value": 1.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + }, "__meta": [ { "sourceRange": [ @@ -92,6 +122,15 @@ description: Variables in memory after executing boolean_logical_or.kcl "c": { "type": "Number", "value": 1.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + }, "__meta": [ { "sourceRange": [ @@ -125,6 +164,15 @@ description: Variables in memory after executing boolean_logical_or.kcl "d": { "type": "Number", "value": 2.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + }, "__meta": [ { "sourceRange": [ diff --git a/src/wasm-lib/kcl/tests/circle_three_point/program_memory.snap b/src/wasm-lib/kcl/tests/circle_three_point/program_memory.snap index 0557a8239..abdf20d04 100644 --- a/src/wasm-lib/kcl/tests/circle_three_point/program_memory.snap +++ b/src/wasm-lib/kcl/tests/circle_three_point/program_memory.snap @@ -6,21 +6,33 @@ description: Variables in memory after executing circle_three_point.kcl "HALF_TURN": { "type": "Number", "value": 180.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "QUARTER_TURN": { "type": "Number", "value": 90.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "THREE_QUARTER_TURN": { "type": "Number", "value": 270.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "ZERO": { "type": "Number", "value": 0.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "sketch001": { diff --git a/src/wasm-lib/kcl/tests/circular_pattern3d_a_pattern/program_memory.snap b/src/wasm-lib/kcl/tests/circular_pattern3d_a_pattern/program_memory.snap index f59ccb403..f3f05ae8c 100644 --- a/src/wasm-lib/kcl/tests/circular_pattern3d_a_pattern/program_memory.snap +++ b/src/wasm-lib/kcl/tests/circular_pattern3d_a_pattern/program_memory.snap @@ -6,21 +6,33 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "HALF_TURN": { "type": "Number", "value": 180.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "QUARTER_TURN": { "type": "Number", "value": 90.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "THREE_QUARTER_TURN": { "type": "Number", "value": 270.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "ZERO": { "type": "Number", "value": 0.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "exampleSketch": { diff --git a/src/wasm-lib/kcl/tests/comparisons/program_memory.snap b/src/wasm-lib/kcl/tests/comparisons/program_memory.snap index d700aacb5..154243e8b 100644 --- a/src/wasm-lib/kcl/tests/comparisons/program_memory.snap +++ b/src/wasm-lib/kcl/tests/comparisons/program_memory.snap @@ -6,21 +6,33 @@ description: Variables in memory after executing comparisons.kcl "HALF_TURN": { "type": "Number", "value": 180.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "QUARTER_TURN": { "type": "Number", "value": 90.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "THREE_QUARTER_TURN": { "type": "Number", "value": 270.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "ZERO": { "type": "Number", "value": 0.0, + "ty": { + "type": "Unknown" + }, "__meta": [] } } diff --git a/src/wasm-lib/kcl/tests/computed_var/program_memory.snap b/src/wasm-lib/kcl/tests/computed_var/program_memory.snap index 559a57075..52ac36087 100644 --- a/src/wasm-lib/kcl/tests/computed_var/program_memory.snap +++ b/src/wasm-lib/kcl/tests/computed_var/program_memory.snap @@ -6,21 +6,33 @@ description: Variables in memory after executing computed_var.kcl "HALF_TURN": { "type": "Number", "value": 180.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "QUARTER_TURN": { "type": "Number", "value": 90.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "THREE_QUARTER_TURN": { "type": "Number", "value": 270.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "ZERO": { "type": "Number", "value": 0.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "arr": { @@ -29,6 +41,15 @@ description: Variables in memory after executing computed_var.kcl { "type": "Number", "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + }, "__meta": [ { "sourceRange": [ @@ -42,6 +63,15 @@ description: Variables in memory after executing computed_var.kcl { "type": "Number", "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + }, "__meta": [ { "sourceRange": [ @@ -55,6 +85,15 @@ description: Variables in memory after executing computed_var.kcl { "type": "Number", "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + }, "__meta": [ { "sourceRange": [ @@ -68,6 +107,15 @@ description: Variables in memory after executing computed_var.kcl { "type": "Number", "value": 10.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + }, "__meta": [ { "sourceRange": [ @@ -92,6 +140,15 @@ description: Variables in memory after executing computed_var.kcl "i": { "type": "Number", "value": 3.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + }, "__meta": [ { "sourceRange": [ @@ -108,6 +165,15 @@ description: Variables in memory after executing computed_var.kcl "bar": { "type": "Number", "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + }, "__meta": [ { "sourceRange": [ @@ -121,6 +187,15 @@ description: Variables in memory after executing computed_var.kcl "foo": { "type": "Number", "value": 1.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + }, "__meta": [ { "sourceRange": [ @@ -145,6 +220,15 @@ description: Variables in memory after executing computed_var.kcl "one": { "type": "Number", "value": 1.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + }, "__meta": [ { "sourceRange": [ @@ -171,6 +255,15 @@ description: Variables in memory after executing computed_var.kcl "ten": { "type": "Number", "value": 10.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + }, "__meta": [ { "sourceRange": [ diff --git a/src/wasm-lib/kcl/tests/cube/program_memory.snap b/src/wasm-lib/kcl/tests/cube/program_memory.snap index 9d273de37..38d93257e 100644 --- a/src/wasm-lib/kcl/tests/cube/program_memory.snap +++ b/src/wasm-lib/kcl/tests/cube/program_memory.snap @@ -6,21 +6,33 @@ description: Variables in memory after executing cube.kcl "HALF_TURN": { "type": "Number", "value": 180.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "QUARTER_TURN": { "type": "Number", "value": 90.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "THREE_QUARTER_TURN": { "type": "Number", "value": 270.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "ZERO": { "type": "Number", "value": 0.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "cube": { diff --git a/src/wasm-lib/kcl/tests/double_map_fn/program_memory.snap b/src/wasm-lib/kcl/tests/double_map_fn/program_memory.snap index e9cd254ce..c53a0bd9b 100644 --- a/src/wasm-lib/kcl/tests/double_map_fn/program_memory.snap +++ b/src/wasm-lib/kcl/tests/double_map_fn/program_memory.snap @@ -6,21 +6,33 @@ description: Variables in memory after executing double_map_fn.kcl "HALF_TURN": { "type": "Number", "value": 180.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "QUARTER_TURN": { "type": "Number", "value": 90.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "THREE_QUARTER_TURN": { "type": "Number", "value": 270.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "ZERO": { "type": "Number", "value": 0.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "increment": { @@ -98,6 +110,9 @@ description: Variables in memory after executing double_map_fn.kcl { "type": "Number", "value": 0.0, + "ty": { + "type": "Unknown" + }, "__meta": [ { "sourceRange": [ @@ -111,6 +126,9 @@ description: Variables in memory after executing double_map_fn.kcl { "type": "Number", "value": 1.0, + "ty": { + "type": "Unknown" + }, "__meta": [ { "sourceRange": [ @@ -124,6 +142,9 @@ description: Variables in memory after executing double_map_fn.kcl { "type": "Number", "value": 2.0, + "ty": { + "type": "Unknown" + }, "__meta": [ { "sourceRange": [ @@ -151,6 +172,9 @@ description: Variables in memory after executing double_map_fn.kcl { "type": "Number", "value": 2.0, + "ty": { + "type": "Unknown" + }, "__meta": [ { "sourceRange": [ @@ -178,6 +202,9 @@ description: Variables in memory after executing double_map_fn.kcl { "type": "Number", "value": 3.0, + "ty": { + "type": "Unknown" + }, "__meta": [ { "sourceRange": [ @@ -205,6 +232,9 @@ description: Variables in memory after executing double_map_fn.kcl { "type": "Number", "value": 4.0, + "ty": { + "type": "Unknown" + }, "__meta": [ { "sourceRange": [ diff --git a/src/wasm-lib/kcl/tests/fillet-and-shell/program_memory.snap b/src/wasm-lib/kcl/tests/fillet-and-shell/program_memory.snap index 9cf610ba2..80b0482f4 100644 --- a/src/wasm-lib/kcl/tests/fillet-and-shell/program_memory.snap +++ b/src/wasm-lib/kcl/tests/fillet-and-shell/program_memory.snap @@ -6,26 +6,47 @@ description: Variables in memory after executing fillet-and-shell.kcl "HALF_TURN": { "type": "Number", "value": 180.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "QUARTER_TURN": { "type": "Number", "value": 90.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "THREE_QUARTER_TURN": { "type": "Number", "value": 270.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "ZERO": { "type": "Number", "value": 0.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "border": { "type": "Number", "value": 4.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + }, "__meta": [ { "sourceRange": [ @@ -565,6 +586,15 @@ description: Variables in memory after executing fillet-and-shell.kcl "caseHeight": { "type": "Number", "value": 8.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + }, "__meta": [ { "sourceRange": [ @@ -578,6 +608,9 @@ description: Variables in memory after executing fillet-and-shell.kcl "caseLength": { "type": "Number", "value": 73.0, + "ty": { + "type": "Unknown" + }, "__meta": [ { "sourceRange": [ @@ -605,6 +638,15 @@ description: Variables in memory after executing fillet-and-shell.kcl "caseThickness": { "type": "Number", "value": 1.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + }, "__meta": [ { "sourceRange": [ @@ -618,6 +660,9 @@ description: Variables in memory after executing fillet-and-shell.kcl "caseWidth": { "type": "Number", "value": 38.0, + "ty": { + "type": "Unknown" + }, "__meta": [ { "sourceRange": [ @@ -645,6 +690,15 @@ description: Variables in memory after executing fillet-and-shell.kcl "connectorPadding": { "type": "Number", "value": 4.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + }, "__meta": [ { "sourceRange": [ @@ -898,6 +952,9 @@ description: Variables in memory after executing fillet-and-shell.kcl "lengthBetweenScrews": { "type": "Number", "value": 58.0, + "ty": { + "type": "Unknown" + }, "__meta": [ { "sourceRange": [ @@ -1300,6 +1357,15 @@ description: Variables in memory after executing fillet-and-shell.kcl "microUsb1Distance": { "type": "Number", "value": 41.4, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + }, "__meta": [ { "sourceRange": [ @@ -1313,6 +1379,15 @@ description: Variables in memory after executing fillet-and-shell.kcl "microUsb2Distance": { "type": "Number", "value": 54.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + }, "__meta": [ { "sourceRange": [ @@ -1326,6 +1401,15 @@ description: Variables in memory after executing fillet-and-shell.kcl "microUsbWidth": { "type": "Number", "value": 7.4, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + }, "__meta": [ { "sourceRange": [ @@ -1339,6 +1423,15 @@ description: Variables in memory after executing fillet-and-shell.kcl "miniHdmiDistance": { "type": "Number", "value": 12.4, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + }, "__meta": [ { "sourceRange": [ @@ -1504,6 +1597,15 @@ description: Variables in memory after executing fillet-and-shell.kcl "miniHdmiWidth": { "type": "Number", "value": 11.2, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + }, "__meta": [ { "sourceRange": [ @@ -1517,6 +1619,15 @@ description: Variables in memory after executing fillet-and-shell.kcl "rpizLength": { "type": "Number", "value": 65.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + }, "__meta": [ { "sourceRange": [ @@ -1530,6 +1641,15 @@ description: Variables in memory after executing fillet-and-shell.kcl "rpizWidth": { "type": "Number", "value": 30.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + }, "__meta": [ { "sourceRange": [ @@ -1543,6 +1663,15 @@ description: Variables in memory after executing fillet-and-shell.kcl "screwHeight": { "type": "Number", "value": 4.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + }, "__meta": [ { "sourceRange": [ @@ -1556,6 +1685,15 @@ description: Variables in memory after executing fillet-and-shell.kcl "widthBetweenScrews": { "type": "Number", "value": 23.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + }, "__meta": [ { "sourceRange": [ diff --git a/src/wasm-lib/kcl/tests/function_sketch/program_memory.snap b/src/wasm-lib/kcl/tests/function_sketch/program_memory.snap index 3499588a5..e45cddedc 100644 --- a/src/wasm-lib/kcl/tests/function_sketch/program_memory.snap +++ b/src/wasm-lib/kcl/tests/function_sketch/program_memory.snap @@ -6,21 +6,33 @@ description: Variables in memory after executing function_sketch.kcl "HALF_TURN": { "type": "Number", "value": 180.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "QUARTER_TURN": { "type": "Number", "value": 90.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "THREE_QUARTER_TURN": { "type": "Number", "value": 270.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "ZERO": { "type": "Number", "value": 0.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "box": { diff --git a/src/wasm-lib/kcl/tests/function_sketch_with_position/program_memory.snap b/src/wasm-lib/kcl/tests/function_sketch_with_position/program_memory.snap index 1ede90311..f71e82395 100644 --- a/src/wasm-lib/kcl/tests/function_sketch_with_position/program_memory.snap +++ b/src/wasm-lib/kcl/tests/function_sketch_with_position/program_memory.snap @@ -6,21 +6,33 @@ description: Variables in memory after executing function_sketch_with_position.k "HALF_TURN": { "type": "Number", "value": 180.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "QUARTER_TURN": { "type": "Number", "value": 90.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "THREE_QUARTER_TURN": { "type": "Number", "value": 270.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "ZERO": { "type": "Number", "value": 0.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "box": { diff --git a/src/wasm-lib/kcl/tests/helix_ccw/program_memory.snap b/src/wasm-lib/kcl/tests/helix_ccw/program_memory.snap index 3a7d731a7..d0d3f2e44 100644 --- a/src/wasm-lib/kcl/tests/helix_ccw/program_memory.snap +++ b/src/wasm-lib/kcl/tests/helix_ccw/program_memory.snap @@ -6,21 +6,33 @@ description: Variables in memory after executing helix_ccw.kcl "HALF_TURN": { "type": "Number", "value": 180.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "QUARTER_TURN": { "type": "Number", "value": 90.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "THREE_QUARTER_TURN": { "type": "Number", "value": 270.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "ZERO": { "type": "Number", "value": 0.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "part001": { diff --git a/src/wasm-lib/kcl/tests/helix_simple/program_memory.snap b/src/wasm-lib/kcl/tests/helix_simple/program_memory.snap index 61a4decc4..d96e3f2d9 100644 --- a/src/wasm-lib/kcl/tests/helix_simple/program_memory.snap +++ b/src/wasm-lib/kcl/tests/helix_simple/program_memory.snap @@ -6,21 +6,33 @@ description: Variables in memory after executing helix_simple.kcl "HALF_TURN": { "type": "Number", "value": 180.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "QUARTER_TURN": { "type": "Number", "value": 90.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "THREE_QUARTER_TURN": { "type": "Number", "value": 270.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "ZERO": { "type": "Number", "value": 0.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "edge001": { diff --git a/src/wasm-lib/kcl/tests/i_shape/program_memory.snap b/src/wasm-lib/kcl/tests/i_shape/program_memory.snap index c38214f49..85803ec33 100644 --- a/src/wasm-lib/kcl/tests/i_shape/program_memory.snap +++ b/src/wasm-lib/kcl/tests/i_shape/program_memory.snap @@ -6,21 +6,33 @@ description: Variables in memory after executing i_shape.kcl "HALF_TURN": { "type": "Number", "value": 180.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "QUARTER_TURN": { "type": "Number", "value": 90.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "THREE_QUARTER_TURN": { "type": "Number", "value": 270.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "ZERO": { "type": "Number", "value": 0.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "brace_base": { @@ -658,6 +670,15 @@ description: Variables in memory after executing i_shape.kcl "corner_radius": { "type": "Number", "value": 5.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + }, "__meta": [ { "sourceRange": [ @@ -674,6 +695,15 @@ description: Variables in memory after executing i_shape.kcl { "type": "Number", "value": 22.8, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + }, "__meta": [ { "sourceRange": [ @@ -687,6 +717,15 @@ description: Variables in memory after executing i_shape.kcl { "type": "Number", "value": 10.7, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + }, "__meta": [ { "sourceRange": [ @@ -700,6 +739,15 @@ description: Variables in memory after executing i_shape.kcl { "type": "Number", "value": 16.4, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + }, "__meta": [ { "sourceRange": [ @@ -713,6 +761,15 @@ description: Variables in memory after executing i_shape.kcl { "type": "Number", "value": 18.5, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + }, "__meta": [ { "sourceRange": [ @@ -1655,6 +1712,15 @@ description: Variables in memory after executing i_shape.kcl "hand_thickness": { "type": "Number", "value": 24.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + }, "__meta": [ { "sourceRange": [ @@ -1940,6 +2006,15 @@ description: Variables in memory after executing i_shape.kcl "length": { "type": "Number", "value": 120.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + }, "__meta": [ { "sourceRange": [ @@ -1953,6 +2028,9 @@ description: Variables in memory after executing i_shape.kcl "width": { "type": "Number", "value": 68.4, + "ty": { + "type": "Unknown" + }, "__meta": [ { "sourceRange": [ diff --git a/src/wasm-lib/kcl/tests/if_else/program_memory.snap b/src/wasm-lib/kcl/tests/if_else/program_memory.snap index b1b247184..50128b38c 100644 --- a/src/wasm-lib/kcl/tests/if_else/program_memory.snap +++ b/src/wasm-lib/kcl/tests/if_else/program_memory.snap @@ -6,26 +6,47 @@ description: Variables in memory after executing if_else.kcl "HALF_TURN": { "type": "Number", "value": 180.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "QUARTER_TURN": { "type": "Number", "value": 90.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "THREE_QUARTER_TURN": { "type": "Number", "value": 270.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "ZERO": { "type": "Number", "value": 0.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "a": { "type": "Number", "value": 3.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + }, "__meta": [ { "sourceRange": [ @@ -39,6 +60,15 @@ description: Variables in memory after executing if_else.kcl "b": { "type": "Number", "value": 4.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + }, "__meta": [ { "sourceRange": [ @@ -52,6 +82,15 @@ description: Variables in memory after executing if_else.kcl "c": { "type": "Number", "value": 5.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + }, "__meta": [ { "sourceRange": [ diff --git a/src/wasm-lib/kcl/tests/import_constant/program_memory.snap b/src/wasm-lib/kcl/tests/import_constant/program_memory.snap index 84d065389..b05ae18ac 100644 --- a/src/wasm-lib/kcl/tests/import_constant/program_memory.snap +++ b/src/wasm-lib/kcl/tests/import_constant/program_memory.snap @@ -6,26 +6,47 @@ description: Variables in memory after executing import_constant.kcl "HALF_TURN": { "type": "Number", "value": 180.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "QUARTER_TURN": { "type": "Number", "value": 90.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "THREE_QUARTER_TURN": { "type": "Number", "value": 270.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "ZERO": { "type": "Number", "value": 0.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "three": { "type": "Number", "value": 3.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + }, "__meta": [ { "sourceRange": [ diff --git a/src/wasm-lib/kcl/tests/import_export/program_memory.snap b/src/wasm-lib/kcl/tests/import_export/program_memory.snap index 4bad48a1e..1494d1d3d 100644 --- a/src/wasm-lib/kcl/tests/import_export/program_memory.snap +++ b/src/wasm-lib/kcl/tests/import_export/program_memory.snap @@ -6,26 +6,47 @@ description: Variables in memory after executing import_export.kcl "HALF_TURN": { "type": "Number", "value": 180.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "QUARTER_TURN": { "type": "Number", "value": 90.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "THREE_QUARTER_TURN": { "type": "Number", "value": 270.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "ZERO": { "type": "Number", "value": 0.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "three": { "type": "Number", "value": 3.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + }, "__meta": [ { "sourceRange": [ diff --git a/src/wasm-lib/kcl/tests/import_foreign/program_memory.snap b/src/wasm-lib/kcl/tests/import_foreign/program_memory.snap index 245fea9a4..c6ec1c52e 100644 --- a/src/wasm-lib/kcl/tests/import_foreign/program_memory.snap +++ b/src/wasm-lib/kcl/tests/import_foreign/program_memory.snap @@ -6,21 +6,33 @@ description: Variables in memory after executing import_foreign.kcl "HALF_TURN": { "type": "Number", "value": 180.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "QUARTER_TURN": { "type": "Number", "value": 90.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "THREE_QUARTER_TURN": { "type": "Number", "value": 270.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "ZERO": { "type": "Number", "value": 0.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "cube": { diff --git a/src/wasm-lib/kcl/tests/import_function_not_sketch/program_memory.snap b/src/wasm-lib/kcl/tests/import_function_not_sketch/program_memory.snap index 9afbd8a56..462f85f39 100644 --- a/src/wasm-lib/kcl/tests/import_function_not_sketch/program_memory.snap +++ b/src/wasm-lib/kcl/tests/import_function_not_sketch/program_memory.snap @@ -6,21 +6,33 @@ description: Variables in memory after executing import_function_not_sketch.kcl "HALF_TURN": { "type": "Number", "value": 180.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "QUARTER_TURN": { "type": "Number", "value": 90.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "THREE_QUARTER_TURN": { "type": "Number", "value": 270.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "ZERO": { "type": "Number", "value": 0.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "one": { diff --git a/src/wasm-lib/kcl/tests/import_glob/program_memory.snap b/src/wasm-lib/kcl/tests/import_glob/program_memory.snap index eb51466a1..3337f2d81 100644 --- a/src/wasm-lib/kcl/tests/import_glob/program_memory.snap +++ b/src/wasm-lib/kcl/tests/import_glob/program_memory.snap @@ -6,21 +6,33 @@ description: Variables in memory after executing import_glob.kcl "HALF_TURN": { "type": "Number", "value": 180.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "QUARTER_TURN": { "type": "Number", "value": 90.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "THREE_QUARTER_TURN": { "type": "Number", "value": 270.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "ZERO": { "type": "Number", "value": 0.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "foo": { @@ -75,6 +87,15 @@ description: Variables in memory after executing import_glob.kcl "three": { "type": "Number", "value": 3.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + }, "__meta": [ { "sourceRange": [ diff --git a/src/wasm-lib/kcl/tests/import_side_effect/program_memory.snap b/src/wasm-lib/kcl/tests/import_side_effect/program_memory.snap index 93dc933d0..870dffbc4 100644 --- a/src/wasm-lib/kcl/tests/import_side_effect/program_memory.snap +++ b/src/wasm-lib/kcl/tests/import_side_effect/program_memory.snap @@ -6,21 +6,33 @@ description: Variables in memory after executing import_side_effect.kcl "HALF_TURN": { "type": "Number", "value": 180.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "QUARTER_TURN": { "type": "Number", "value": 90.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "THREE_QUARTER_TURN": { "type": "Number", "value": 270.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "ZERO": { "type": "Number", "value": 0.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "foo": { diff --git a/src/wasm-lib/kcl/tests/import_whole/program_memory.snap b/src/wasm-lib/kcl/tests/import_whole/program_memory.snap index 93fd446e4..bdaa358d2 100644 --- a/src/wasm-lib/kcl/tests/import_whole/program_memory.snap +++ b/src/wasm-lib/kcl/tests/import_whole/program_memory.snap @@ -6,21 +6,33 @@ description: Variables in memory after executing import_whole.kcl "HALF_TURN": { "type": "Number", "value": 180.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "QUARTER_TURN": { "type": "Number", "value": 90.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "THREE_QUARTER_TURN": { "type": "Number", "value": 270.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "ZERO": { "type": "Number", "value": 0.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "bar": { diff --git a/src/wasm-lib/kcl/tests/index_of_array/program_memory.snap b/src/wasm-lib/kcl/tests/index_of_array/program_memory.snap index ba91f6e15..751e171b2 100644 --- a/src/wasm-lib/kcl/tests/index_of_array/program_memory.snap +++ b/src/wasm-lib/kcl/tests/index_of_array/program_memory.snap @@ -6,21 +6,33 @@ description: Variables in memory after executing index_of_array.kcl "HALF_TURN": { "type": "Number", "value": 180.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "QUARTER_TURN": { "type": "Number", "value": 90.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "THREE_QUARTER_TURN": { "type": "Number", "value": 270.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "ZERO": { "type": "Number", "value": 0.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "arr": { @@ -29,6 +41,15 @@ description: Variables in memory after executing index_of_array.kcl { "type": "Number", "value": 90.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + }, "__meta": [ { "sourceRange": [ @@ -42,6 +63,15 @@ description: Variables in memory after executing index_of_array.kcl { "type": "Number", "value": 91.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + }, "__meta": [ { "sourceRange": [ @@ -55,6 +85,15 @@ description: Variables in memory after executing index_of_array.kcl { "type": "Number", "value": 92.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + }, "__meta": [ { "sourceRange": [ @@ -79,6 +118,9 @@ description: Variables in memory after executing index_of_array.kcl "i": { "type": "Number", "value": 1.0, + "ty": { + "type": "Unknown" + }, "__meta": [ { "sourceRange": [ @@ -92,6 +134,15 @@ description: Variables in memory after executing index_of_array.kcl "result0": { "type": "Number", "value": 91.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + }, "__meta": [ { "sourceRange": [ @@ -105,6 +156,15 @@ description: Variables in memory after executing index_of_array.kcl "result1": { "type": "Number", "value": 91.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + }, "__meta": [ { "sourceRange": [ diff --git a/src/wasm-lib/kcl/tests/kittycad_svg/program_memory.snap b/src/wasm-lib/kcl/tests/kittycad_svg/program_memory.snap index 9257aae5b..48b79bf57 100644 --- a/src/wasm-lib/kcl/tests/kittycad_svg/program_memory.snap +++ b/src/wasm-lib/kcl/tests/kittycad_svg/program_memory.snap @@ -6,21 +6,33 @@ description: Variables in memory after executing kittycad_svg.kcl "HALF_TURN": { "type": "Number", "value": 180.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "QUARTER_TURN": { "type": "Number", "value": 90.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "THREE_QUARTER_TURN": { "type": "Number", "value": 270.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "ZERO": { "type": "Number", "value": 0.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "svg": { diff --git a/src/wasm-lib/kcl/tests/kw_fn/program_memory.snap b/src/wasm-lib/kcl/tests/kw_fn/program_memory.snap index 5f40f3838..3e0a2c7f0 100644 --- a/src/wasm-lib/kcl/tests/kw_fn/program_memory.snap +++ b/src/wasm-lib/kcl/tests/kw_fn/program_memory.snap @@ -6,21 +6,33 @@ description: Variables in memory after executing kw_fn.kcl "HALF_TURN": { "type": "Number", "value": 180.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "QUARTER_TURN": { "type": "Number", "value": 90.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "THREE_QUARTER_TURN": { "type": "Number", "value": 270.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "ZERO": { "type": "Number", "value": 0.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "add": { @@ -171,6 +183,9 @@ description: Variables in memory after executing kw_fn.kcl "three": { "type": "Number", "value": 3.0, + "ty": { + "type": "Unknown" + }, "__meta": [ { "sourceRange": [ @@ -191,6 +206,9 @@ description: Variables in memory after executing kw_fn.kcl "two": { "type": "Number", "value": 2.0, + "ty": { + "type": "Unknown" + }, "__meta": [ { "sourceRange": [ diff --git a/src/wasm-lib/kcl/tests/kw_fn_with_defaults/ast.snap b/src/wasm-lib/kcl/tests/kw_fn_with_defaults/ast.snap index 6b5e11317..af5d44645 100644 --- a/src/wasm-lib/kcl/tests/kw_fn_with_defaults/ast.snap +++ b/src/wasm-lib/kcl/tests/kw_fn_with_defaults/ast.snap @@ -69,13 +69,15 @@ description: Result of parsing kw_fn_with_defaults.kcl "type": "Identifier" }, "default_value": { + "end": 24, + "raw": "1", + "start": 23, "type": "Literal", "type": "Literal", "value": { "value": 1.0, "suffix": "None" - }, - "raw": "1" + } } } ], diff --git a/src/wasm-lib/kcl/tests/kw_fn_with_defaults/program_memory.snap b/src/wasm-lib/kcl/tests/kw_fn_with_defaults/program_memory.snap index 0f256522f..5af8c4d16 100644 --- a/src/wasm-lib/kcl/tests/kw_fn_with_defaults/program_memory.snap +++ b/src/wasm-lib/kcl/tests/kw_fn_with_defaults/program_memory.snap @@ -6,21 +6,33 @@ description: Variables in memory after executing kw_fn_with_defaults.kcl "HALF_TURN": { "type": "Number", "value": 180.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "QUARTER_TURN": { "type": "Number", "value": 90.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "THREE_QUARTER_TURN": { "type": "Number", "value": 270.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "ZERO": { "type": "Number", "value": 0.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "increment": { @@ -80,13 +92,15 @@ description: Variables in memory after executing kw_fn_with_defaults.kcl "type": "Identifier" }, "default_value": { + "end": 24, + "raw": "1", + "start": 23, "type": "Literal", "type": "Literal", "value": { "value": 1.0, "suffix": "None" - }, - "raw": "1" + } } } ], @@ -110,6 +124,9 @@ description: Variables in memory after executing kw_fn_with_defaults.kcl "twentyOne": { "type": "Number", "value": 21.0, + "ty": { + "type": "Unknown" + }, "__meta": [ { "sourceRange": [ @@ -130,6 +147,9 @@ description: Variables in memory after executing kw_fn_with_defaults.kcl "two": { "type": "Number", "value": 2.0, + "ty": { + "type": "Unknown" + }, "__meta": [ { "sourceRange": [ @@ -137,6 +157,13 @@ description: Variables in memory after executing kw_fn_with_defaults.kcl 64, 0 ] + }, + { + "sourceRange": [ + 23, + 24, + 0 + ] } ] } diff --git a/src/wasm-lib/kcl/tests/linear_pattern3d_a_pattern/program_memory.snap b/src/wasm-lib/kcl/tests/linear_pattern3d_a_pattern/program_memory.snap index 28f34e761..2623f11b5 100644 --- a/src/wasm-lib/kcl/tests/linear_pattern3d_a_pattern/program_memory.snap +++ b/src/wasm-lib/kcl/tests/linear_pattern3d_a_pattern/program_memory.snap @@ -6,21 +6,33 @@ description: Variables in memory after executing linear_pattern3d_a_pattern.kcl "HALF_TURN": { "type": "Number", "value": 180.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "QUARTER_TURN": { "type": "Number", "value": 90.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "THREE_QUARTER_TURN": { "type": "Number", "value": 270.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "ZERO": { "type": "Number", "value": 0.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "exampleSketch": { diff --git a/src/wasm-lib/kcl/tests/mike_stress_test/program_memory.snap b/src/wasm-lib/kcl/tests/mike_stress_test/program_memory.snap index 0075bfb43..091136907 100644 --- a/src/wasm-lib/kcl/tests/mike_stress_test/program_memory.snap +++ b/src/wasm-lib/kcl/tests/mike_stress_test/program_memory.snap @@ -6,21 +6,33 @@ description: Variables in memory after executing mike_stress_test.kcl "HALF_TURN": { "type": "Number", "value": 180.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "QUARTER_TURN": { "type": "Number", "value": 90.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "THREE_QUARTER_TURN": { "type": "Number", "value": 270.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "ZERO": { "type": "Number", "value": 0.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "part001": { diff --git a/src/wasm-lib/kcl/tests/neg_xz_plane/program_memory.snap b/src/wasm-lib/kcl/tests/neg_xz_plane/program_memory.snap index bca1e3b3e..a92518a25 100644 --- a/src/wasm-lib/kcl/tests/neg_xz_plane/program_memory.snap +++ b/src/wasm-lib/kcl/tests/neg_xz_plane/program_memory.snap @@ -6,21 +6,33 @@ description: Variables in memory after executing neg_xz_plane.kcl "HALF_TURN": { "type": "Number", "value": 180.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "QUARTER_TURN": { "type": "Number", "value": 90.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "THREE_QUARTER_TURN": { "type": "Number", "value": 270.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "ZERO": { "type": "Number", "value": 0.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "part001": { diff --git a/src/wasm-lib/kcl/tests/parametric/program_memory.snap b/src/wasm-lib/kcl/tests/parametric/program_memory.snap index acbccbe32..c979f98f4 100644 --- a/src/wasm-lib/kcl/tests/parametric/program_memory.snap +++ b/src/wasm-lib/kcl/tests/parametric/program_memory.snap @@ -6,6 +6,15 @@ description: Variables in memory after executing parametric.kcl "FOS": { "type": "Number", "value": 2.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + }, "__meta": [ { "sourceRange": [ @@ -19,21 +28,33 @@ description: Variables in memory after executing parametric.kcl "HALF_TURN": { "type": "Number", "value": 180.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "QUARTER_TURN": { "type": "Number", "value": 90.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "THREE_QUARTER_TURN": { "type": "Number", "value": 270.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "ZERO": { "type": "Number", "value": 0.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "bracket": { @@ -319,6 +340,15 @@ description: Variables in memory after executing parametric.kcl "distance": { "type": "Number", "value": 6.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + }, "__meta": [ { "sourceRange": [ @@ -332,6 +362,15 @@ description: Variables in memory after executing parametric.kcl "leg1": { "type": "Number", "value": 5.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + }, "__meta": [ { "sourceRange": [ @@ -345,6 +384,15 @@ description: Variables in memory after executing parametric.kcl "leg2": { "type": "Number", "value": 8.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + }, "__meta": [ { "sourceRange": [ @@ -358,6 +406,15 @@ description: Variables in memory after executing parametric.kcl "p": { "type": "Number", "value": 150.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + }, "__meta": [ { "sourceRange": [ @@ -371,6 +428,15 @@ description: Variables in memory after executing parametric.kcl "sigmaAllow": { "type": "Number", "value": 35000.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + }, "__meta": [ { "sourceRange": [ @@ -384,6 +450,9 @@ description: Variables in memory after executing parametric.kcl "thickness": { "type": "Number", "value": 0.1851640199545103, + "ty": { + "type": "Unknown" + }, "__meta": [ { "sourceRange": [ @@ -397,6 +466,15 @@ description: Variables in memory after executing parametric.kcl "width": { "type": "Number", "value": 9.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + }, "__meta": [ { "sourceRange": [ diff --git a/src/wasm-lib/kcl/tests/parametric_with_tan_arc/program_memory.snap b/src/wasm-lib/kcl/tests/parametric_with_tan_arc/program_memory.snap index d0689dc22..1a1824945 100644 --- a/src/wasm-lib/kcl/tests/parametric_with_tan_arc/program_memory.snap +++ b/src/wasm-lib/kcl/tests/parametric_with_tan_arc/program_memory.snap @@ -6,6 +6,15 @@ description: Variables in memory after executing parametric_with_tan_arc.kcl "FOS": { "type": "Number", "value": 2.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + }, "__meta": [ { "sourceRange": [ @@ -19,21 +28,33 @@ description: Variables in memory after executing parametric_with_tan_arc.kcl "HALF_TURN": { "type": "Number", "value": 180.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "QUARTER_TURN": { "type": "Number", "value": 90.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "THREE_QUARTER_TURN": { "type": "Number", "value": 270.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "ZERO": { "type": "Number", "value": 0.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "bracket": { @@ -391,6 +412,15 @@ description: Variables in memory after executing parametric_with_tan_arc.kcl "distance": { "type": "Number", "value": 12.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + }, "__meta": [ { "sourceRange": [ @@ -404,6 +434,9 @@ description: Variables in memory after executing parametric_with_tan_arc.kcl "filletR": { "type": "Number", "value": 0.7236272269866327, + "ty": { + "type": "Unknown" + }, "__meta": [ { "sourceRange": [ @@ -424,6 +457,15 @@ description: Variables in memory after executing parametric_with_tan_arc.kcl "p": { "type": "Number", "value": 150.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + }, "__meta": [ { "sourceRange": [ @@ -437,6 +479,15 @@ description: Variables in memory after executing parametric_with_tan_arc.kcl "shelfMountL": { "type": "Number", "value": 9.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + }, "__meta": [ { "sourceRange": [ @@ -450,6 +501,15 @@ description: Variables in memory after executing parametric_with_tan_arc.kcl "sigmaAllow": { "type": "Number", "value": 15000.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + }, "__meta": [ { "sourceRange": [ @@ -463,6 +523,9 @@ description: Variables in memory after executing parametric_with_tan_arc.kcl "thickness": { "type": "Number", "value": 0.36181361349331637, + "ty": { + "type": "Unknown" + }, "__meta": [ { "sourceRange": [ @@ -476,6 +539,15 @@ description: Variables in memory after executing parametric_with_tan_arc.kcl "wallMountL": { "type": "Number", "value": 8.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + }, "__meta": [ { "sourceRange": [ @@ -489,6 +561,15 @@ description: Variables in memory after executing parametric_with_tan_arc.kcl "width": { "type": "Number", "value": 11.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + }, "__meta": [ { "sourceRange": [ diff --git a/src/wasm-lib/kcl/tests/pentagon_fillet_sugar/program_memory.snap b/src/wasm-lib/kcl/tests/pentagon_fillet_sugar/program_memory.snap index 628d81ddf..bf65da2ee 100644 --- a/src/wasm-lib/kcl/tests/pentagon_fillet_sugar/program_memory.snap +++ b/src/wasm-lib/kcl/tests/pentagon_fillet_sugar/program_memory.snap @@ -6,21 +6,33 @@ description: Variables in memory after executing pentagon_fillet_sugar.kcl "HALF_TURN": { "type": "Number", "value": 180.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "QUARTER_TURN": { "type": "Number", "value": 90.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "THREE_QUARTER_TURN": { "type": "Number", "value": 270.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "ZERO": { "type": "Number", "value": 0.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "a": { @@ -1447,6 +1459,15 @@ description: Variables in memory after executing pentagon_fillet_sugar.kcl "angleEnd": { "type": "Number", "value": 360.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + }, "__meta": [ { "sourceRange": [ @@ -1460,6 +1481,15 @@ description: Variables in memory after executing pentagon_fillet_sugar.kcl "angleStart": { "type": "Number", "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + }, "__meta": [ { "sourceRange": [ @@ -1473,6 +1503,15 @@ description: Variables in memory after executing pentagon_fillet_sugar.kcl "radius": { "type": "Number", "value": 80.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + }, "__meta": [ { "sourceRange": [ @@ -3390,6 +3429,15 @@ description: Variables in memory after executing pentagon_fillet_sugar.kcl "plumbusLen": { "type": "Number", "value": 100.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + }, "__meta": [ { "sourceRange": [ @@ -3403,6 +3451,15 @@ description: Variables in memory after executing pentagon_fillet_sugar.kcl "radius": { "type": "Number", "value": 80.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + }, "__meta": [ { "sourceRange": [ @@ -3416,6 +3473,15 @@ description: Variables in memory after executing pentagon_fillet_sugar.kcl "triangleHeight": { "type": "Number", "value": 200.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + }, "__meta": [ { "sourceRange": [ @@ -3429,6 +3495,15 @@ description: Variables in memory after executing pentagon_fillet_sugar.kcl "triangleLen": { "type": "Number", "value": 500.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + }, "__meta": [ { "sourceRange": [ diff --git a/src/wasm-lib/kcl/tests/pipe_as_arg/program_memory.snap b/src/wasm-lib/kcl/tests/pipe_as_arg/program_memory.snap index d10ddf0c8..0b2bd3c7b 100644 --- a/src/wasm-lib/kcl/tests/pipe_as_arg/program_memory.snap +++ b/src/wasm-lib/kcl/tests/pipe_as_arg/program_memory.snap @@ -6,21 +6,33 @@ description: Variables in memory after executing pipe_as_arg.kcl "HALF_TURN": { "type": "Number", "value": 180.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "QUARTER_TURN": { "type": "Number", "value": 90.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "THREE_QUARTER_TURN": { "type": "Number", "value": 270.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "ZERO": { "type": "Number", "value": 0.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "cube": { diff --git a/src/wasm-lib/kcl/tests/poop_chute/program_memory.snap b/src/wasm-lib/kcl/tests/poop_chute/program_memory.snap index f30dcb68f..e76448396 100644 --- a/src/wasm-lib/kcl/tests/poop_chute/program_memory.snap +++ b/src/wasm-lib/kcl/tests/poop_chute/program_memory.snap @@ -6,6 +6,15 @@ description: Variables in memory after executing poop_chute.kcl "Fx": { "type": "Number", "value": 0.5, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + }, "__meta": [ { "sourceRange": [ @@ -19,6 +28,15 @@ description: Variables in memory after executing poop_chute.kcl "Fy": { "type": "Number", "value": 0.5, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + }, "__meta": [ { "sourceRange": [ @@ -32,26 +50,47 @@ description: Variables in memory after executing poop_chute.kcl "HALF_TURN": { "type": "Number", "value": 180.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "QUARTER_TURN": { "type": "Number", "value": 90.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "THREE_QUARTER_TURN": { "type": "Number", "value": 270.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "ZERO": { "type": "Number", "value": 0.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "back_length": { "type": "Number", "value": 7.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + }, "__meta": [ { "sourceRange": [ @@ -65,6 +104,15 @@ description: Variables in memory after executing poop_chute.kcl "back_walls_width": { "type": "Number", "value": 2.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + }, "__meta": [ { "sourceRange": [ @@ -78,6 +126,15 @@ description: Variables in memory after executing poop_chute.kcl "exit_height": { "type": "Number", "value": 1.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + }, "__meta": [ { "sourceRange": [ @@ -91,6 +148,15 @@ description: Variables in memory after executing poop_chute.kcl "filletRadius": { "type": "Number", "value": 0.05, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + }, "__meta": [ { "sourceRange": [ @@ -104,6 +170,15 @@ description: Variables in memory after executing poop_chute.kcl "front_length": { "type": "Number", "value": 6.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + }, "__meta": [ { "sourceRange": [ @@ -117,6 +192,15 @@ description: Variables in memory after executing poop_chute.kcl "front_walls_width": { "type": "Number", "value": 2.5, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + }, "__meta": [ { "sourceRange": [ @@ -130,6 +214,15 @@ description: Variables in memory after executing poop_chute.kcl "height": { "type": "Number", "value": 5.5, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + }, "__meta": [ { "sourceRange": [ @@ -1797,6 +1890,15 @@ description: Variables in memory after executing poop_chute.kcl "wall_thickness": { "type": "Number", "value": 0.125, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + }, "__meta": [ { "sourceRange": [ diff --git a/src/wasm-lib/kcl/tests/property_of_object/program_memory.snap b/src/wasm-lib/kcl/tests/property_of_object/program_memory.snap index d00ad0c21..77972a22c 100644 --- a/src/wasm-lib/kcl/tests/property_of_object/program_memory.snap +++ b/src/wasm-lib/kcl/tests/property_of_object/program_memory.snap @@ -6,21 +6,33 @@ description: Variables in memory after executing property_of_object.kcl "HALF_TURN": { "type": "Number", "value": 180.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "QUARTER_TURN": { "type": "Number", "value": 90.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "THREE_QUARTER_TURN": { "type": "Number", "value": 270.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "ZERO": { "type": "Number", "value": 0.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "obj": { @@ -29,6 +41,15 @@ description: Variables in memory after executing property_of_object.kcl "bar": { "type": "Number", "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + }, "__meta": [ { "sourceRange": [ @@ -42,6 +63,15 @@ description: Variables in memory after executing property_of_object.kcl "foo": { "type": "Number", "value": 1.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + }, "__meta": [ { "sourceRange": [ @@ -72,6 +102,15 @@ description: Variables in memory after executing property_of_object.kcl "bar": { "type": "Number", "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + }, "__meta": [ { "sourceRange": [ @@ -85,6 +124,15 @@ description: Variables in memory after executing property_of_object.kcl "foo": { "type": "Number", "value": 1.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + }, "__meta": [ { "sourceRange": [ @@ -120,6 +168,15 @@ description: Variables in memory after executing property_of_object.kcl "one_a": { "type": "Number", "value": 1.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + }, "__meta": [ { "sourceRange": [ @@ -133,6 +190,15 @@ description: Variables in memory after executing property_of_object.kcl "one_b": { "type": "Number", "value": 1.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + }, "__meta": [ { "sourceRange": [ @@ -146,6 +212,15 @@ description: Variables in memory after executing property_of_object.kcl "one_c": { "type": "Number", "value": 1.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + }, "__meta": [ { "sourceRange": [ @@ -159,6 +234,15 @@ description: Variables in memory after executing property_of_object.kcl "one_d": { "type": "Number", "value": 1.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + }, "__meta": [ { "sourceRange": [ diff --git a/src/wasm-lib/kcl/tests/riddle_small/program_memory.snap b/src/wasm-lib/kcl/tests/riddle_small/program_memory.snap index a6bd4710e..6f14b4027 100644 --- a/src/wasm-lib/kcl/tests/riddle_small/program_memory.snap +++ b/src/wasm-lib/kcl/tests/riddle_small/program_memory.snap @@ -6,6 +6,15 @@ description: Variables in memory after executing riddle_small.kcl "ANSWER": { "type": "Number", "value": 41803.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + }, "__meta": [ { "sourceRange": [ @@ -19,26 +28,41 @@ description: Variables in memory after executing riddle_small.kcl "HALF_TURN": { "type": "Number", "value": 180.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "QUARTER_TURN": { "type": "Number", "value": 90.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "THREE_QUARTER_TURN": { "type": "Number", "value": 270.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "ZERO": { "type": "Number", "value": 0.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "ox": { "type": "Number", "value": -26.0, + "ty": { + "type": "Unknown" + }, "__meta": [ { "sourceRange": [ @@ -87,6 +111,9 @@ description: Variables in memory after executing riddle_small.kcl "oy": { "type": "Number", "value": 34.0, + "ty": { + "type": "Unknown" + }, "__meta": [ { "sourceRange": [ @@ -454,6 +481,15 @@ description: Variables in memory after executing riddle_small.kcl "xs": { "type": "Number", "value": 205804.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + }, "__meta": [ { "sourceRange": [ @@ -467,6 +503,15 @@ description: Variables in memory after executing riddle_small.kcl "ys": { "type": "Number", "value": 71816.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + }, "__meta": [ { "sourceRange": [ diff --git a/src/wasm-lib/kcl/tests/sketch-on-chamfer-two-times-different-order/program_memory.snap b/src/wasm-lib/kcl/tests/sketch-on-chamfer-two-times-different-order/program_memory.snap index de46a0c5d..cddca24dd 100644 --- a/src/wasm-lib/kcl/tests/sketch-on-chamfer-two-times-different-order/program_memory.snap +++ b/src/wasm-lib/kcl/tests/sketch-on-chamfer-two-times-different-order/program_memory.snap @@ -6,21 +6,33 @@ description: Variables in memory after executing sketch-on-chamfer-two-times-dif "HALF_TURN": { "type": "Number", "value": 180.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "QUARTER_TURN": { "type": "Number", "value": 90.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "THREE_QUARTER_TURN": { "type": "Number", "value": 270.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "ZERO": { "type": "Number", "value": 0.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "extrude001": { diff --git a/src/wasm-lib/kcl/tests/sketch-on-chamfer-two-times/program_memory.snap b/src/wasm-lib/kcl/tests/sketch-on-chamfer-two-times/program_memory.snap index 2c95878ab..cf175bc8a 100644 --- a/src/wasm-lib/kcl/tests/sketch-on-chamfer-two-times/program_memory.snap +++ b/src/wasm-lib/kcl/tests/sketch-on-chamfer-two-times/program_memory.snap @@ -6,21 +6,33 @@ description: Variables in memory after executing sketch-on-chamfer-two-times.kcl "HALF_TURN": { "type": "Number", "value": 180.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "QUARTER_TURN": { "type": "Number", "value": 90.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "THREE_QUARTER_TURN": { "type": "Number", "value": 270.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "ZERO": { "type": "Number", "value": 0.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "extrude001": { diff --git a/src/wasm-lib/kcl/tests/sketch_in_object/program_memory.snap b/src/wasm-lib/kcl/tests/sketch_in_object/program_memory.snap index 58d0f0da2..35838259a 100644 --- a/src/wasm-lib/kcl/tests/sketch_in_object/program_memory.snap +++ b/src/wasm-lib/kcl/tests/sketch_in_object/program_memory.snap @@ -6,21 +6,33 @@ description: Variables in memory after executing sketch_in_object.kcl "HALF_TURN": { "type": "Number", "value": 180.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "QUARTER_TURN": { "type": "Number", "value": 90.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "THREE_QUARTER_TURN": { "type": "Number", "value": 270.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "ZERO": { "type": "Number", "value": 0.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "test": { diff --git a/src/wasm-lib/kcl/tests/sketch_on_face/program_memory.snap b/src/wasm-lib/kcl/tests/sketch_on_face/program_memory.snap index 418cae93d..759851e01 100644 --- a/src/wasm-lib/kcl/tests/sketch_on_face/program_memory.snap +++ b/src/wasm-lib/kcl/tests/sketch_on_face/program_memory.snap @@ -6,21 +6,33 @@ description: Variables in memory after executing sketch_on_face.kcl "HALF_TURN": { "type": "Number", "value": 180.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "QUARTER_TURN": { "type": "Number", "value": 90.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "THREE_QUARTER_TURN": { "type": "Number", "value": 270.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "ZERO": { "type": "Number", "value": 0.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "here": { diff --git a/src/wasm-lib/kcl/tests/sketch_on_face_after_fillets_referencing_face/program_memory.snap b/src/wasm-lib/kcl/tests/sketch_on_face_after_fillets_referencing_face/program_memory.snap index 8c3d79948..1cedd0d96 100644 --- a/src/wasm-lib/kcl/tests/sketch_on_face_after_fillets_referencing_face/program_memory.snap +++ b/src/wasm-lib/kcl/tests/sketch_on_face_after_fillets_referencing_face/program_memory.snap @@ -6,6 +6,15 @@ description: Variables in memory after executing sketch_on_face_after_fillets_re "FOS": { "type": "Number", "value": 2.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + }, "__meta": [ { "sourceRange": [ @@ -19,11 +28,23 @@ description: Variables in memory after executing sketch_on_face_after_fillets_re "HALF_TURN": { "type": "Number", "value": 180.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "L": { "type": "Number", "value": 12.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + }, "__meta": [ { "sourceRange": [ @@ -37,6 +58,9 @@ description: Variables in memory after executing sketch_on_face_after_fillets_re "M": { "type": "Number", "value": 1800.0, + "ty": { + "type": "Unknown" + }, "__meta": [ { "sourceRange": [ @@ -64,16 +88,25 @@ description: Variables in memory after executing sketch_on_face_after_fillets_re "QUARTER_TURN": { "type": "Number", "value": 90.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "THREE_QUARTER_TURN": { "type": "Number", "value": 270.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "ZERO": { "type": "Number", "value": 0.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "bracket": { @@ -584,6 +617,15 @@ description: Variables in memory after executing sketch_on_face_after_fillets_re "filletR": { "type": "Number", "value": 0.25, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + }, "__meta": [ { "sourceRange": [ @@ -717,6 +759,15 @@ description: Variables in memory after executing sketch_on_face_after_fillets_re "p": { "type": "Number", "value": 300.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + }, "__meta": [ { "sourceRange": [ @@ -790,6 +841,15 @@ description: Variables in memory after executing sketch_on_face_after_fillets_re "shelfMountL": { "type": "Number", "value": 8.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + }, "__meta": [ { "sourceRange": [ @@ -803,6 +863,15 @@ description: Variables in memory after executing sketch_on_face_after_fillets_re "sigmaAllow": { "type": "Number", "value": 35000.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + }, "__meta": [ { "sourceRange": [ @@ -1559,6 +1628,9 @@ description: Variables in memory after executing sketch_on_face_after_fillets_re "thickness": { "type": "Number", "value": 0.32071349029490925, + "ty": { + "type": "Unknown" + }, "__meta": [ { "sourceRange": [ @@ -1572,6 +1644,15 @@ description: Variables in memory after executing sketch_on_face_after_fillets_re "wallMountL": { "type": "Number", "value": 6.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + }, "__meta": [ { "sourceRange": [ @@ -1585,6 +1666,15 @@ description: Variables in memory after executing sketch_on_face_after_fillets_re "width": { "type": "Number", "value": 6.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + }, "__meta": [ { "sourceRange": [ diff --git a/src/wasm-lib/kcl/tests/sketch_on_face_circle_tagged/program_memory.snap b/src/wasm-lib/kcl/tests/sketch_on_face_circle_tagged/program_memory.snap index e923b6f7b..ebc888211 100644 --- a/src/wasm-lib/kcl/tests/sketch_on_face_circle_tagged/program_memory.snap +++ b/src/wasm-lib/kcl/tests/sketch_on_face_circle_tagged/program_memory.snap @@ -6,21 +6,33 @@ description: Variables in memory after executing sketch_on_face_circle_tagged.kc "HALF_TURN": { "type": "Number", "value": 180.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "QUARTER_TURN": { "type": "Number", "value": 90.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "THREE_QUARTER_TURN": { "type": "Number", "value": 270.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "ZERO": { "type": "Number", "value": 0.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "cube": { diff --git a/src/wasm-lib/kcl/tests/sketch_on_face_end/program_memory.snap b/src/wasm-lib/kcl/tests/sketch_on_face_end/program_memory.snap index d8a03c7de..c88d0e8df 100644 --- a/src/wasm-lib/kcl/tests/sketch_on_face_end/program_memory.snap +++ b/src/wasm-lib/kcl/tests/sketch_on_face_end/program_memory.snap @@ -6,21 +6,33 @@ description: Variables in memory after executing sketch_on_face_end.kcl "HALF_TURN": { "type": "Number", "value": 180.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "QUARTER_TURN": { "type": "Number", "value": 90.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "THREE_QUARTER_TURN": { "type": "Number", "value": 270.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "ZERO": { "type": "Number", "value": 0.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "cube": { diff --git a/src/wasm-lib/kcl/tests/sketch_on_face_end_negative_extrude/program_memory.snap b/src/wasm-lib/kcl/tests/sketch_on_face_end_negative_extrude/program_memory.snap index 24cc67a53..9eb777236 100644 --- a/src/wasm-lib/kcl/tests/sketch_on_face_end_negative_extrude/program_memory.snap +++ b/src/wasm-lib/kcl/tests/sketch_on_face_end_negative_extrude/program_memory.snap @@ -6,21 +6,33 @@ description: Variables in memory after executing sketch_on_face_end_negative_ext "HALF_TURN": { "type": "Number", "value": 180.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "QUARTER_TURN": { "type": "Number", "value": 90.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "THREE_QUARTER_TURN": { "type": "Number", "value": 270.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "ZERO": { "type": "Number", "value": 0.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "cube": { diff --git a/src/wasm-lib/kcl/tests/sketch_on_face_start/program_memory.snap b/src/wasm-lib/kcl/tests/sketch_on_face_start/program_memory.snap index d33f7621b..1794fba6d 100644 --- a/src/wasm-lib/kcl/tests/sketch_on_face_start/program_memory.snap +++ b/src/wasm-lib/kcl/tests/sketch_on_face_start/program_memory.snap @@ -6,21 +6,33 @@ description: Variables in memory after executing sketch_on_face_start.kcl "HALF_TURN": { "type": "Number", "value": 180.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "QUARTER_TURN": { "type": "Number", "value": 90.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "THREE_QUARTER_TURN": { "type": "Number", "value": 270.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "ZERO": { "type": "Number", "value": 0.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "cube": { diff --git a/src/wasm-lib/kcl/tests/ssi_pattern/program_memory.snap b/src/wasm-lib/kcl/tests/ssi_pattern/program_memory.snap index 67a1e4556..b66d92470 100644 --- a/src/wasm-lib/kcl/tests/ssi_pattern/program_memory.snap +++ b/src/wasm-lib/kcl/tests/ssi_pattern/program_memory.snap @@ -6,21 +6,33 @@ description: Variables in memory after executing ssi_pattern.kcl "HALF_TURN": { "type": "Number", "value": 180.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "QUARTER_TURN": { "type": "Number", "value": 90.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "THREE_QUARTER_TURN": { "type": "Number", "value": 270.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "ZERO": { "type": "Number", "value": 0.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "extrude001": { diff --git a/src/wasm-lib/kcl/tests/tan_arc_x_line/program_memory.snap b/src/wasm-lib/kcl/tests/tan_arc_x_line/program_memory.snap index 5ec6e6fe1..25f0c6296 100644 --- a/src/wasm-lib/kcl/tests/tan_arc_x_line/program_memory.snap +++ b/src/wasm-lib/kcl/tests/tan_arc_x_line/program_memory.snap @@ -6,26 +6,47 @@ description: Variables in memory after executing tan_arc_x_line.kcl "HALF_TURN": { "type": "Number", "value": 180.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "QUARTER_TURN": { "type": "Number", "value": 90.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "THREE_QUARTER_TURN": { "type": "Number", "value": 270.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "ZERO": { "type": "Number", "value": 0.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "angleOffset": { "type": "Number", "value": 135.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + }, "__meta": [ { "sourceRange": [ @@ -39,6 +60,15 @@ description: Variables in memory after executing tan_arc_x_line.kcl "angleStart": { "type": "Number", "value": 110.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + }, "__meta": [ { "sourceRange": [ @@ -202,6 +232,15 @@ description: Variables in memory after executing tan_arc_x_line.kcl "r": { "type": "Number", "value": 1.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + }, "__meta": [ { "sourceRange": [ @@ -215,6 +254,15 @@ description: Variables in memory after executing tan_arc_x_line.kcl "startX": { "type": "Number", "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + }, "__meta": [ { "sourceRange": [ @@ -228,6 +276,15 @@ description: Variables in memory after executing tan_arc_x_line.kcl "startY": { "type": "Number", "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + }, "__meta": [ { "sourceRange": [ diff --git a/src/wasm-lib/kcl/tests/tangential_arc/program_memory.snap b/src/wasm-lib/kcl/tests/tangential_arc/program_memory.snap index 4bcb61be3..017fc3f2c 100644 --- a/src/wasm-lib/kcl/tests/tangential_arc/program_memory.snap +++ b/src/wasm-lib/kcl/tests/tangential_arc/program_memory.snap @@ -6,21 +6,33 @@ description: Variables in memory after executing tangential_arc.kcl "HALF_TURN": { "type": "Number", "value": 180.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "QUARTER_TURN": { "type": "Number", "value": 90.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "THREE_QUARTER_TURN": { "type": "Number", "value": 270.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "ZERO": { "type": "Number", "value": 0.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "boxSketch": { diff --git a/src/wasm-lib/kcl/tests/xz_plane/program_memory.snap b/src/wasm-lib/kcl/tests/xz_plane/program_memory.snap index 0833df3a1..a448660c3 100644 --- a/src/wasm-lib/kcl/tests/xz_plane/program_memory.snap +++ b/src/wasm-lib/kcl/tests/xz_plane/program_memory.snap @@ -6,21 +6,33 @@ description: Variables in memory after executing xz_plane.kcl "HALF_TURN": { "type": "Number", "value": 180.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "QUARTER_TURN": { "type": "Number", "value": 90.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "THREE_QUARTER_TURN": { "type": "Number", "value": 270.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "ZERO": { "type": "Number", "value": 0.0, + "ty": { + "type": "Unknown" + }, "__meta": [] }, "part001": { From 834f7133d8d96ed0e68120d9464ad55faa6638ed Mon Sep 17 00:00:00 2001 From: Kurt Hutten Date: Sat, 15 Feb 2025 00:57:04 +1100 Subject: [PATCH 07/30] Allow multiple profiles in the same sketch (#5196) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Revert "Revert multi-profile (#4812)" This reverts commit efe8089b08dd8bdade517f04ace2c81a5e096434. * fix poor 1000ms wait UX * A snapshot a day keeps the bugs away! 📷🐛 (OS: ubuntu-latest-8-cores) * trigger CI * Add Rust side artifacts for startSketchOn face or plane (#4834) * Add Rust side artifacts for startSketchOn face or plane * move ast digging --------- Co-authored-by: Kurt Hutten Irev-Dev * lint * lint * A snapshot a day keeps the bugs away! 📷🐛 (OS: namespace-profile-macos-8-cores) * A snapshot a day keeps the bugs away! 📷🐛 (OS: namespace-profile-ubuntu-8-cores) * A snapshot a day keeps the bugs away! 📷🐛 (OS: windows-16-cores) * trigger CI * chore: disabled file watcher which prevents faster file write (#4835) * A snapshot a day keeps the bugs away! 📷🐛 (OS: namespace-profile-ubuntu-8-cores) * partial fixes * A snapshot a day keeps the bugs away! 📷🐛 (OS: namespace-profile-ubuntu-8-cores) * Trigger CI * A snapshot a day keeps the bugs away! 📷🐛 (OS: namespace-profile-ubuntu-8-cores) * Trigger CI * Fix up all the tests * Fix partial execution * wip * WIP * wip * rust changes to make three point confrom to same as others since we're not ready with name params yet * most of the fix for 3 point circle * get overlays working for circle three point * fmt * fix types * cargo fmt * add face codef ref for walls and caps * fix sketch on face after updates to rust side artifact graph * some things needed for multi-profile tests * bad attempts at fixing rust * more * more * fix rust * more rust fixes * overlay fix * remove duplicate test * A snapshot a day keeps the bugs away! 📷🐛 (OS: namespace-profile-ubuntu-8-cores) * lint and typing * maybe fix a unit test * small thing * fix circ dep * fix unit test * fix some tests * fix sweep point-and-click test * fix more tests and add a fix me * fix more tests * fix electron specific test * tsc * more test tweaks * update docs * commint snaps? * is clippy happy now? * clippy again * test works now without me changing anything big-fixed-itself * small bug * make three point have cross hair to make it consistent with othe rtools * fix up state diagram * fmt * add draft point for first click of three point circ * 1 test for three point circle * 2 test for three point circle * clean up * A snapshot a day keeps the bugs away! 📷🐛 (OS: namespace-profile-ubuntu-8-cores) * A snapshot a day keeps the bugs away! 📷🐛 (OS: namespace-profile-ubuntu-8-cores) * remove bad doc comment * remove test skip * remove onboarding test changes * Update src/lang/modifyAst.ts Co-authored-by: Jonathan Tran * Update output from simulation tests * Fix to use correct source ranges This also reduces cloning. * Change back to skipping face cap none and both * Update output after changing back to skipping none and both * Fix clippy warning * fix profile start snap bug * add path ids to cap * fix going into edit sketch * make other startSketchOn's work * fix snapshot test * explain function name * Update src/lib/rectangleTool.ts Co-authored-by: Frank Noirot * rename error * remove file tree from diff * Update src/clientSideScene/segments.ts Co-authored-by: Frank Noirot * nit * Prevent double write to KCL code on revolve * Update output after adding cap-to-path graph edge * Fix edit/select sketch-on-cap via feature tree * clean up for face codeRef * fix changing tools part way through circle/rect tools * fix delete of circle profile * fix close profiles * fix closing profile bug (tangentArcTo being ignored) * remove stale comment * Delete paths associated with sketch when the sketch plane is deleted * Add support for deleting sketches on caps (not walls) * get delet working for walls * make delet of extrusions work for multi profile * A snapshot a day keeps the bugs away! 📷🐛 (OS: namespace-profile-ubuntu-8-cores) * Delete the sketch statement too on the cap and wall cases * Don't write to file in `split-sketch-pipe-if-needed` unless necessary * Don't wait for file write to complete within `updateEditorWithAstAndWriteToFile` It is already debounced internally. If we await it, we will have to wait for a debounced timeout * docs * fix circ dep * tsc * fix selection enter sketch weirdness * test fixes * comment out and fixme for delete related tests * add skip wins * try and get last test to pass --------- Co-authored-by: github-actions[bot] Co-authored-by: Jonathan Tran Co-authored-by: Kevin Nadro Co-authored-by: Pierre Jacquier Co-authored-by: 49lf Co-authored-by: Frank Noirot Co-authored-by: Frank Noirot --- docs/kcl/appearance.md | 2 +- docs/kcl/std.json | 18276 +++++++++++++++- docs/kcl/types/Face.md | 4 +- docs/kcl/types/Path.md | 23 + docs/kcl/types/Plane.md | 4 +- docs/kcl/types/SketchSurface.md | 8 +- e2e/playwright/basic-sketch.spec.ts | 27 +- ...on-all-planes-and-their-back-sides.spec.ts | 3 +- e2e/playwright/feature-tree-pane.spec.ts | 68 +- e2e/playwright/fixtures/sceneFixture.ts | 77 +- e2e/playwright/fixtures/toolbarFixture.ts | 25 + e2e/playwright/point-click.spec.ts | 274 +- e2e/playwright/sketch-tests.spec.ts | 1276 +- e2e/playwright/snapshot-tests.spec.ts | 33 +- ...scale-Inch-scale-1-Google-Chrome-linux.png | Bin 55088 -> 55941 bytes ...scale-Inch-scale-2-Google-Chrome-linux.png | Bin 53136 -> 54774 bytes ...Millimeter-scale-1-Google-Chrome-linux.png | Bin 60908 -> 61586 bytes ...Millimeter-scale-2-Google-Chrome-linux.png | Bin 54841 -> 56518 bytes ...hould-look-right-1-Google-Chrome-linux.png | Bin 48816 -> 50407 bytes ...hould-look-right-1-Google-Chrome-linux.png | Bin 45160 -> 46797 bytes ...hould-look-right-1-Google-Chrome-linux.png | Bin 42567 -> 44237 bytes ...hould-look-right-2-Google-Chrome-linux.png | Bin 45191 -> 46953 bytes ...ld-be-stable--XY-1-Google-Chrome-linux.png | Bin 50166 -> 50179 bytes ...ld-be-stable--XZ-1-Google-Chrome-linux.png | Bin 56420 -> 56431 bytes ...test-network-and-connection-issues.spec.ts | 47 +- e2e/playwright/testing-constraints.spec.ts | 6 +- e2e/playwright/testing-selections.spec.ts | 386 +- e2e/playwright/various.spec.ts | 36 +- src/Toolbar.tsx | 9 +- src/clientSideScene/ClientSideSceneComp.tsx | 57 +- src/clientSideScene/sceneEntities.ts | 1708 +- src/clientSideScene/sceneInfra.ts | 31 +- src/clientSideScene/segments.ts | 269 +- src/components/ModelingMachineProvider.tsx | 562 +- .../ModelingPanes/FeatureTreePane.tsx | 9 +- src/components/Spinner.tsx | 7 +- src/components/Toolbar/Intersect.tsx | 5 + .../Toolbar/RemoveConstrainingValues.tsx | 2 +- src/components/Toolbar/SetAbsDistance.tsx | 5 +- src/components/Toolbar/SetAngleBetween.tsx | 5 + .../Toolbar/SetHorzVertDistance.tsx | 12 +- src/components/Toolbar/setAngleLength.tsx | 18 +- src/lang/KclSingleton.ts | 2 +- src/lang/codeManager.ts | 4 +- src/lang/langHelpers.ts | 3 +- src/lang/modifyAst.test.ts | 341 +- src/lang/modifyAst.ts | 543 +- src/lang/modifyAst/addRevolve.ts | 79 +- src/lang/queryAst.ts | 77 +- src/lang/queryAstNodePathUtils.ts | 1 + src/lang/std/artifactGraph.ts | 326 +- .../sketchOnFaceOnFaceEtc.png | Bin 582435 -> 573284 bytes src/lang/std/sketch.ts | 370 +- src/lang/std/sketchcombos.ts | 146 +- src/lang/std/stdTypes.ts | 21 +- src/lang/util.ts | 91 +- .../modelingCommandConfig.ts | 2 +- src/lib/rectangleTool.test.ts | 6 +- src/lib/rectangleTool.ts | 23 +- src/lib/selections.ts | 47 +- src/lib/toolbar.ts | 55 +- src/lib/trap.ts | 4 + src/machines/modelingMachine.ts | 1023 +- src/wasm-lib/kcl/src/execution/artifact.rs | 68 +- src/wasm-lib/kcl/src/execution/geometry.rs | 47 +- src/wasm-lib/kcl/src/std/extrude.rs | 3 +- src/wasm-lib/kcl/src/std/shapes.rs | 74 +- .../artifact_graph_flowchart.snap.md | 4 +- .../circle_three_point/program_memory.snap | 20 +- .../serial_test_example_appearance0.png | Bin 64068 -> 55902 bytes .../artifact_graph_flowchart.snap.md | 4 +- .../artifact_graph_flowchart.snap.md | 4 +- .../artifact_graph_flowchart.snap.md | 4 +- .../artifact_graph_flowchart.snap.md | 4 +- 74 files changed, 23720 insertions(+), 2950 deletions(-) diff --git a/docs/kcl/appearance.md b/docs/kcl/appearance.md index 1a2fbaba6..34fd068db 100644 --- a/docs/kcl/appearance.md +++ b/docs/kcl/appearance.md @@ -43,7 +43,7 @@ example = extrude(exampleSketch, length = 5) |> appearance(color = '#ff0000') ``` -![Rendered example of appearance 0](data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABQAAAALQCAYAAADPfd1WAAD6C0lEQVR4Ae3AA6AkWZbG8f937o3IzKdyS2Oubdu2bdu2bdu2bWmMnpZKr54yMyLu+Xa3anqmhztr1a8+6EEP4qqrrrrqqquuuuqqq6666qqrrrrqqquu+j+JylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/iuCqq6666qqrrrrqqv9Xrrnmmgdz1VVXXXXVVVddddX/F5Tjx49z1VVXXXXVVVddddX/fS/2Yi/22p/7uZ/7W9dcc82DH/zgB7/0P/zDP/wOV1111VVXXXXVVVf9X0c5fvw4V1111VVXXXXVVVf93/ZiL/Zir/25n/u5v7W5uXn8IQ95yEtfc801D97c3Dz+D//wD7/DVVddddVVV1111VX/l1GOHz/OVVddddVVV1111VX/d73O67zOe3/SJ33STz3jr/6K49dfD8Cf/fAPH3/z93iP1wb4h3/4h9/hqquuuuqqq6666qr/qyjHjx/nqquuuuqqq6666qr/m17ndV7nvT/8wz/8u57xV3/F93/ER/Ca7/u+APz0F34hy/193vw93uO1Af7hH/7hd7jqqquuuuqqq6666v8iKlddddVVV1111VVX/Z/0Oq/zOu/94R/+4d/1jL/6K77/Iz6CB9q9+27+5pd+CYB3er/3+2yAH/3RH/0crrrqqquuuuqqq676v4bKVVddddVVV1111VX/57zO67zOe3/4h3/4dz3jr/6K7/+Ij+B5SOzefTd/80u/BMA7vd/7fTbAj/7oj34OV1111VVXXXXVVVf9X0Llqquuuuqqq6666qr/U97xHd/xs97pnd7ps//mF3+Rn//CL+QFkti9+27+5pd+CYB3er/3+2yAH/3RH/0crrrqqquuuuqqq676v4LKVVddddVVV1111VX/Z3z4h3/4d73O67zOe//NL/4iP/+FX8gDiWcTYK7Yvftufuc7vxOAd3q/9/tsgB/90R/9HK666qqrrrrqqquu+r+AylVXXXXVVVddddVV/yd8+Id/+He9zuu8znv/zS/+Ij//hV/IA4nnJcAS2AD89nd+JwDv9H7v99kAP/qjP/o5XHXVVVddddVVV131vx2Vq6666qqrrrrqqqv+1/vwD//w73qd13md9/6bX/xFfv4Lv5AHEv8CCWwE/PZ3ficA7/R+7/fZAD/6oz/6OVx11VVXXXXVVVdd9b8Zlauuuuqqq6666qqr/lf78A//8O96ndd5nff+m1/8RX7+C7+QBxIvnAADSGAj4Le/8zsBeKf3e7/PBvjRH/3Rz+Gqq6666qqrrrrqqv+tqFx11VVXXXXVVVdd9b/W537u5/7Wi73Yi732z37BF/C3v/RLiGcTz0k8fwIMIIGNgN/+zu8E4J3e7/0++5prrnnw13/9178PV1111VVXXXXVVVf9b0Tlqquuuuqqq6666qr/lT73cz/3t17sxV7stX/2C76Av/2lX0K8YOI5CTDPJsA8m4Df/s7vBOB13u/93hvg67/+69+Hq6666qqrrrrqqqv+t6Fy1VVXXXXVVVddddX/Op/7uZ/7Wy/2Yi/22j/7BV/A3/7SLyGek/iXCTDPJsAS2Nzvt7/zOwF4nfd7v/cG+Pqv//r34aqrrrrqqquuuuqq/02oXHXVVVddddVVV131v8rnfu7n/taLvdiLvfbPfsEX8Le/9EuI5ySek3jBBJjnIoGNAAO//Z3fCcDrvN/7vTfA13/9178PV1111VVXXXXVVVf9b0Fw1VVXXXXVVVddddX/Gp/7uZ/7Wy/2Yi/22t/3ER/B3/7SLyGek3hO4l9HPJMEgLjit7/zO/mpL/gCXud1Xue9v+mbvunpXHXVVVddddVVV131vwXBVVddddVVV1111VX/K3zu537ub73Yi73Ya3/fR3wEz/irv0I8J/GcxHMSz594TuKZJADEFX/9i7/IT33BF3DNNdc8+Ju+6ZuezlVXXXXVVVddddVV/xsQXHXVVVddddVVV131P97nfu7n/taLvdiLvfb3fcRH8Iy/+iuem3hO4jmJ5ySek3hO4jmJK/76F3+Rn/qCL+Caa6558Dd90zc9nauuuuqqq6666qqr/qcjuOqqq6666qqrrrrqf7TP/dzP/a0Xe7EXe+3v+4iP4Bl/9VcAiBedeP7EcxLPSQAS9xNX/PUv/iI/9QVfwDXXXPPgb/qmb3o6V1111VVXXXXVVVf9T0Zw1VVXXXXVVVddddX/SNdcc82DP/dzP/e3XuzFXuy1v+8jPoJn/NVfASCek3hO4kUnnpN4PiSe21//4i/yXR/+4VxzzTUP/qZv+qanX3PNNQ/mqquuuuqqq6666qr/iQiuuuqqq6666qqrrvof55prrnnwh3/4h3/Xi73Yi732933ER/CMv/orAMRzEs9JPCfxLxMvmHgmCQDxbLf+1V/xVW//9lxzzTUP/pzP+Zzfuuaaax7MVVddddVVV1111VX/0xBcddVVV1111VVXXfU/yjXXXPPgD//wD/+uF3uxF3vt7/uIj+AZf/VXAIjnJJ6TeE7iOYkXjXhO4pkkAMSz7d59N1/19m/PNddc8+DP+ZzP+a1rrrnmwVx11VVXXXXVVVdd9T8JwVVXXXXVVVddddVV/2Ncc801D/7wD//w73qxF3ux1/6+j/gInvFXf8XzI56TeE7iOYnnJJ6TeE7iOYnnJJ5t9+67+aq3f3uuueaaB3/O53zOb11zzTUP5qqrrrrqqquuuuqq/ykIrrrqqquuuuqqq676H+Gaa6558Id/+Id/140nT772933ER/CMv/or7ideMPGcxHMSz594TuI5ieckAIn7iWfbvftuvvLt356+tQd/zud8zm9dc801D+aqq6666qqrrrrqqv8JCK666qqrrrrqqquu+m93zTXXPPibvumbnn7jyZOv/XNf+IU846/+ivuJ5yT+44jnJJ6TeE4CkHh+Lt19N9/5ER9B39qDP+dzPue3rrnmmgdz1VVXXXXVVVddddV/N4Krrrrqqquuuuqqq/5bXXPNNQ/+pm/6pqfv3n03P/eFX8gz/uqvuJ94TuI5iecknpP4l4nnJF4EEgDiOV26+26+8yM+gr61B3/O53zOb11zzTUP5qqrrrrqqquuuuqq/04EV1111VVXXXXVVVf9t7nmmmse/E3f9E1P3737bn7uC7+QZ/zVX3E/8ZzEcxLPSTwn8ZzEv414TuKZJADEc7p0991850d8BH1rD/6cz/mc37rmmmsezFVXXXXVVVddddVV/10Irrrqqquuuuqqq676b3HNNdc8+Ju+6Zuevnv33fzcF34hz/irv+J+4jmJ5ySek3hO4jkJQOJ+4jmJ5ySek3hO4jmJ53Tp7rv5zo/4CPrWHvw5n/M5v3XNNdc8mKuuuuqqq6666qqr/jsQXHXVVVddddVVV131X+7FXuzFXvubvumbnr5799183Tu8A8/4q7/iBRHPSTwn8ZzEcxLPn3hO4jmJ5ySekwAk7iee0+7dd/OdH/ER9K09+HM+53N+68Ve7MVem6uuuuqqq6666qqr/qsRXHXVVVddddVVV131X+rFXuzFXvtzP/dzf2v37rv5und4B8RzEi868ZzEcxLPJPH8iOcknpN4TuI5CUDi+RGwe/fdfOdHfAR9aw/+8A//8O96sRd7sdfmqquuuuqqq6666qr/SgRXXXXVVVddddVVV/2XebEXe7HX/tzP/dzf2r37br7uHd4B8ZzEcxLPSfwbSPxriOckXgQSAOI5Cdi9+26+8yM+gr61B3/4h3/4d73Yi73Ya3PVVVddddVVV1111X8Vgquuuuqqq6666qqr/ku82Iu92Gt/7ud+7m/t3n03X/cO74B4TuI5iecknpN4TuI5CUDifuL5E/864jmJZ5IAEM9JwO7dd/OdH/ER9K09+MM/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IAlJSEISkpCEJCQhienCBe76ru9i9w//kPu92Iu92Gtz1VVXXXXVVf86VK666qqrrrrqX+Ed3/EdP4tn2r/nHp70y7/MI97ojUDi30P8+4j/XuLfR/wXkwAQ/z3Ev434zyeJfw3xryTxohL/sQRsXHcdAEf33AMAEg8k/hUknpt44cSLSOK5iX898UwSDySei8QLIp4/8QASL4gk/iXiuUiIf5l4JgkA8VwkHki8EBIA4gEkxAsnnkkCQLxwkni+JADEcxLPh8QDiWeSuJ940QhA4l9L/Msk8R9hPHeO8fx5ulOnuOaaax78ju/4jp/1oz/6o5/DVVddddVVV71oqFx11VVXXXXVv8LZs2efwTNtX3cdr/XJn8xVV1111VVXXfVf5x/+4R9+h6uuuuqqq6560VG56qqrrrrqqn+F3/qt3/ruM2fOPOiaa655MFddddVVV1111X+p++6779Z/+Id/+G2uuuqqq6666kWHHvSgB3HVVVddddVVV1111VVXXXXVVVddddVVV/2fROWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r+IfAZ1wwNR0rvi9AAAAAElFTkSuQmCC) +![Rendered example of appearance 0](data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABQAAAALQCAYAAADPfd1WAADaJUlEQVR4Ae3AA6AkWZbG8f937o3IzKdyS2Oubdu2bdu2bdu2bWmMnpZKr54yMyLu+Xa3anqmhztr1a8+6EEP4qqrrrrqqquuuuqqq6666qqrrrrqqquu+j+JylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/iuCqq6666qqrrrrqqv9Xrrnmmgdz1VVXXXXVVVddddX/F5Tjx49z1VVXXXXVVVddddX/fS/2Yi/22p/7uZ/7W9dcc82DH/zgB7/0P/zDP/wOV1111VVXXXXVVVf9X0c5fvw4V1111VVXXXXVVVf93/ZiL/Zir/25n/u5v7W5uXn8IQ95yEtfc801D97c3Dz+D//wD7/DVVddddVVV1111VX/l1GOHz/OVVddddVVV1111VX/d73O67zOe3/SJ33ST53/i79g44YbALjtB37g+Gu/13u9NsA//MM//A5XXXXVVVddddVVV/1fRTl+/DhXXXXVVVddddVVV/3f9Dqv8zrv/eEf/uHfdf4v/oI/+aAP4hEf+IEA/OVnfzbjwQGv/V7v9doA//AP//A7XHXVVVddddVVV131fxGVq6666qqrrrrqqqv+T3qd13md9/7wD//w7zr/F3/Bn3zQByGebXn33dz2cz8HwDt94Ad+NsCP/uiPfg5XXXXVVVddddVVV/1fQ+Wqq6666qqrrrrqqv9zXud1Xue9P/zDP/y7zv/FX/AnH/RBiOd1dPfd3PZzPwfAO33gB342wI/+6I9+DlddddVVV1111VVX/V9C5aqrrrrqqquuuuqq/1Pe8R3f8bPe6Z3e6bPv+Lmf428/53MQz5+Ao7vv5raf+zkA3ukDP/CzAX70R3/0c7jqqquuuuqqq6666v8KKlddddVVV1111VVX/Z/x4R/+4d/1Oq/zOu99x8/9HH/7OZ/DA4nnJeDo7rt5wrd+KwDv9IEf+NkAP/qjP/o5XHXVVVddddVVV131fwGVq6666qqrrrrqqqv+T/jwD//w73qd13md977j536Ov/2czwFAPH8CzBUCDDzhW78VgHf6wA/8bIAf/dEf/Ryuuuqqq6666qqrrvrfjspVV1111VVXXXXVVf/rffiHf/h3vc7rvM573/FzP8fffs7nACCeTTwvAeYKAQae8K3fCsA7feAHfjbAj/7oj34OV1111VVXXXXVVVf9b0blqquuuuqqq6666qr/1T78wz/8u17ndV7nve/4uZ/jbz/ncwAQzyZeMAHmOT3hW78VgHf6wA/8bIAf/dEf/Ryuuuqqq6666qqrrvrfispVV1111VVXXXXVVf9rfe7nfu5vvdiLvdhr/81nfzZ3/vzPAyCeTTybeDYB5goBBgSYK57wrd8KwDt94Ad+9jXXXPPgr//6r38frrrqqquuuuqqq67634jKVVddddVVV1111VX/K33u537ub73Yi73Ya//NZ382d/78zwMgnk08m3heAsxzEmCueMK3fisAr/OBH/jeAF//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G8S/j/j3Ef8xxL+P+PcT/34CxL+PAAHi30+AAPEfQ4AA8YK1u+9m/7M/m9XP/Rz3e7EXe7HX5qqrrrrqqqv+dahcddVVV1111b/CO77jO34WzzTcdRfnf+7nOPnmb84LI/5jiP9ZxP884j+G+J9F/McQ/3OI/x7dDTcAMN51FwDi30/89xP/PuK/l/jvJ/79xP8M4j+G+J+h3X037a67KDfcwDXXXPPgd3zHd/ysH/3RH/0crrrqqquuuupFQ+Wqq6666qqr/hXOnj37DJ6pv+EGHvTZn81VV1111VVXXfVf5x/+4R9+h6uuuuqqq6560VG56qqrrrrqqn+F3/qt3/ruM2fOPOiaa655MFddddVVV1111X+p++6779Z/+Id/+G2uuuqqq6666kWHHvSgB3HVVVddddVVV1111VVXXXXVVVddddVVV/2fROWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r+IfAXMLAp2sFH9NAAAAAElFTkSuQmCC) ```js // Add color to a revolved solid. diff --git a/docs/kcl/std.json b/docs/kcl/std.json index c9b5e9e6f..2597a4677 100644 --- a/docs/kcl/std.json +++ b/docs/kcl/std.json @@ -436,6 +436,94 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CircleThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -1296,6 +1384,94 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CircleThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -2225,6 +2401,94 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CircleThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -2805,7 +3069,7 @@ ] }, "xAxis": { - "description": "What should the plane’s X axis be?", + "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -2813,7 +3077,7 @@ ] }, "yAxis": { - "description": "What should the plane’s Y axis be?", + "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -2879,7 +3143,7 @@ "type": "string" }, "xAxis": { - "description": "What should the face’s X axis be?", + "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -2887,7 +3151,7 @@ ] }, "yAxis": { - "description": "What should the face’s Y axis be?", + "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -3745,6 +4009,94 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CircleThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -4605,6 +4957,94 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CircleThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -5534,6 +5974,94 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CircleThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -6114,7 +6642,7 @@ ] }, "xAxis": { - "description": "What should the plane’s X axis be?", + "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -6122,7 +6650,7 @@ ] }, "yAxis": { - "description": "What should the plane’s Y axis be?", + "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -6188,7 +6716,7 @@ "type": "string" }, "xAxis": { - "description": "What should the face’s X axis be?", + "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -6196,7 +6724,7 @@ ] }, "yAxis": { - "description": "What should the face’s Y axis be?", + "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -7107,6 +7635,94 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CircleThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -7485,7 +8101,7 @@ ] }, "xAxis": { - "description": "What should the plane’s X axis be?", + "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -7493,7 +8109,7 @@ ] }, "yAxis": { - "description": "What should the plane’s Y axis be?", + "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -7559,7 +8175,7 @@ "type": "string" }, "xAxis": { - "description": "What should the face’s X axis be?", + "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -7567,7 +8183,7 @@ ] }, "yAxis": { - "description": "What should the face’s Y axis be?", + "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -8582,6 +9198,94 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CircleThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -8960,7 +9664,7 @@ ] }, "xAxis": { - "description": "What should the plane’s X axis be?", + "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -8968,7 +9672,7 @@ ] }, "yAxis": { - "description": "What should the plane’s Y axis be?", + "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -9034,7 +9738,7 @@ "type": "string" }, "xAxis": { - "description": "What should the face’s X axis be?", + "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -9042,7 +9746,7 @@ ] }, "yAxis": { - "description": "What should the face’s Y axis be?", + "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -10122,6 +10826,94 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CircleThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -10500,7 +11292,7 @@ ] }, "xAxis": { - "description": "What should the plane’s X axis be?", + "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -10508,7 +11300,7 @@ ] }, "yAxis": { - "description": "What should the plane’s Y axis be?", + "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -10574,7 +11366,7 @@ "type": "string" }, "xAxis": { - "description": "What should the face’s X axis be?", + "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -10582,7 +11374,7 @@ ] }, "yAxis": { - "description": "What should the face’s Y axis be?", + "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -11719,6 +12511,94 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CircleThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -12097,7 +12977,7 @@ ] }, "xAxis": { - "description": "What should the plane’s X axis be?", + "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -12105,7 +12985,7 @@ ] }, "yAxis": { - "description": "What should the plane’s Y axis be?", + "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -12171,7 +13051,7 @@ "type": "string" }, "xAxis": { - "description": "What should the face’s X axis be?", + "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -12179,7 +13059,7 @@ ] }, "yAxis": { - "description": "What should the face’s Y axis be?", + "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -13194,6 +14074,94 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CircleThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -13572,7 +14540,7 @@ ] }, "xAxis": { - "description": "What should the plane’s X axis be?", + "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -13580,7 +14548,7 @@ ] }, "yAxis": { - "description": "What should the plane’s Y axis be?", + "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -13646,7 +14614,7 @@ "type": "string" }, "xAxis": { - "description": "What should the face’s X axis be?", + "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -13654,7 +14622,7 @@ ] }, "yAxis": { - "description": "What should the face’s Y axis be?", + "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -14734,6 +15702,94 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CircleThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -15112,7 +16168,7 @@ ] }, "xAxis": { - "description": "What should the plane’s X axis be?", + "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -15120,7 +16176,7 @@ ] }, "yAxis": { - "description": "What should the plane’s Y axis be?", + "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -15186,7 +16242,7 @@ "type": "string" }, "xAxis": { - "description": "What should the face’s X axis be?", + "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -15194,7 +16250,7 @@ ] }, "yAxis": { - "description": "What should the face’s Y axis be?", + "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -16331,6 +17387,94 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CircleThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -16709,7 +17853,7 @@ ] }, "xAxis": { - "description": "What should the plane’s X axis be?", + "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -16717,7 +17861,7 @@ ] }, "yAxis": { - "description": "What should the plane’s Y axis be?", + "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -16783,7 +17927,7 @@ "type": "string" }, "xAxis": { - "description": "What should the face’s X axis be?", + "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -16791,7 +17935,7 @@ ] }, "yAxis": { - "description": "What should the face’s Y axis be?", + "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -17806,6 +18950,94 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CircleThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -18184,7 +19416,7 @@ ] }, "xAxis": { - "description": "What should the plane’s X axis be?", + "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -18192,7 +19424,7 @@ ] }, "yAxis": { - "description": "What should the plane’s Y axis be?", + "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -18258,7 +19490,7 @@ "type": "string" }, "xAxis": { - "description": "What should the face’s X axis be?", + "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -18266,7 +19498,7 @@ ] }, "yAxis": { - "description": "What should the face’s Y axis be?", + "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -19346,6 +20578,94 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CircleThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -19724,7 +21044,7 @@ ] }, "xAxis": { - "description": "What should the plane’s X axis be?", + "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -19732,7 +21052,7 @@ ] }, "yAxis": { - "description": "What should the plane’s Y axis be?", + "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -19798,7 +21118,7 @@ "type": "string" }, "xAxis": { - "description": "What should the face’s X axis be?", + "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -19806,7 +21126,7 @@ ] }, "yAxis": { - "description": "What should the face’s Y axis be?", + "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -20919,6 +22239,94 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CircleThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -21874,6 +23282,94 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CircleThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -22454,7 +23950,7 @@ ] }, "xAxis": { - "description": "What should the plane’s X axis be?", + "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -22462,7 +23958,7 @@ ] }, "yAxis": { - "description": "What should the plane’s Y axis be?", + "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -22528,7 +24024,7 @@ "type": "string" }, "xAxis": { - "description": "What should the face’s X axis be?", + "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -22536,7 +24032,7 @@ ] }, "yAxis": { - "description": "What should the face’s Y axis be?", + "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -23349,6 +24845,94 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CircleThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -23929,7 +25513,7 @@ ] }, "xAxis": { - "description": "What should the plane’s X axis be?", + "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -23937,7 +25521,7 @@ ] }, "yAxis": { - "description": "What should the plane’s Y axis be?", + "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -24003,7 +25587,7 @@ "type": "string" }, "xAxis": { - "description": "What should the face’s X axis be?", + "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -24011,7 +25595,7 @@ ] }, "yAxis": { - "description": "What should the face’s Y axis be?", + "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -24825,6 +26409,94 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CircleThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -25203,7 +26875,7 @@ ] }, "xAxis": { - "description": "What should the plane’s X axis be?", + "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -25211,7 +26883,7 @@ ] }, "yAxis": { - "description": "What should the plane’s Y axis be?", + "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -25277,7 +26949,7 @@ "type": "string" }, "xAxis": { - "description": "What should the face’s X axis be?", + "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -25285,7 +26957,7 @@ ] }, "yAxis": { - "description": "What should the face’s Y axis be?", + "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -26407,6 +28079,94 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CircleThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -26785,7 +28545,7 @@ ] }, "xAxis": { - "description": "What should the plane’s X axis be?", + "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -26793,7 +28553,7 @@ ] }, "yAxis": { - "description": "What should the plane’s Y axis be?", + "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -26859,7 +28619,7 @@ "type": "string" }, "xAxis": { - "description": "What should the face’s X axis be?", + "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -26867,7 +28627,7 @@ ] }, "yAxis": { - "description": "What should the face’s Y axis be?", + "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -27882,6 +29642,94 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CircleThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -28260,7 +30108,7 @@ ] }, "xAxis": { - "description": "What should the plane’s X axis be?", + "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -28268,7 +30116,7 @@ ] }, "yAxis": { - "description": "What should the plane’s Y axis be?", + "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -28334,7 +30182,7 @@ "type": "string" }, "xAxis": { - "description": "What should the face’s X axis be?", + "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -28342,7 +30190,7 @@ ] }, "yAxis": { - "description": "What should the face’s Y axis be?", + "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -29422,6 +31270,94 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CircleThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -29800,7 +31736,7 @@ ] }, "xAxis": { - "description": "What should the plane’s X axis be?", + "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -29808,7 +31744,7 @@ ] }, "yAxis": { - "description": "What should the plane’s Y axis be?", + "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -29874,7 +31810,7 @@ "type": "string" }, "xAxis": { - "description": "What should the face’s X axis be?", + "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -29882,7 +31818,7 @@ ] }, "yAxis": { - "description": "What should the face’s Y axis be?", + "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -31004,6 +32940,94 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CircleThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -31382,7 +33406,7 @@ ] }, "xAxis": { - "description": "What should the plane’s X axis be?", + "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -31390,7 +33414,7 @@ ] }, "yAxis": { - "description": "What should the plane’s Y axis be?", + "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -31456,7 +33480,7 @@ "type": "string" }, "xAxis": { - "description": "What should the face’s X axis be?", + "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -31464,7 +33488,7 @@ ] }, "yAxis": { - "description": "What should the face’s Y axis be?", + "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -32479,6 +34503,94 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CircleThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -32857,7 +34969,7 @@ ] }, "xAxis": { - "description": "What should the plane’s X axis be?", + "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -32865,7 +34977,7 @@ ] }, "yAxis": { - "description": "What should the plane’s Y axis be?", + "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -32931,7 +35043,7 @@ "type": "string" }, "xAxis": { - "description": "What should the face’s X axis be?", + "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -32939,7 +35051,7 @@ ] }, "yAxis": { - "description": "What should the face’s Y axis be?", + "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -34019,6 +36131,94 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CircleThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -34397,7 +36597,7 @@ ] }, "xAxis": { - "description": "What should the plane’s X axis be?", + "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -34405,7 +36605,7 @@ ] }, "yAxis": { - "description": "What should the plane’s Y axis be?", + "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -34471,7 +36671,7 @@ "type": "string" }, "xAxis": { - "description": "What should the face’s X axis be?", + "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -34479,7 +36679,7 @@ ] }, "yAxis": { - "description": "What should the face’s Y axis be?", + "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -35913,6 +38113,94 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CircleThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -36248,7 +38536,7 @@ ] }, "xAxis": { - "description": "What should the plane’s X axis be?", + "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -36256,7 +38544,7 @@ ] }, "yAxis": { - "description": "What should the plane’s Y axis be?", + "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -36322,7 +38610,7 @@ "type": "string" }, "xAxis": { - "description": "What should the face’s X axis be?", + "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -36330,7 +38618,7 @@ ] }, "yAxis": { - "description": "What should the face’s Y axis be?", + "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -37384,6 +39672,94 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CircleThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -37719,7 +40095,7 @@ ] }, "xAxis": { - "description": "What should the plane’s X axis be?", + "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -37727,7 +40103,7 @@ ] }, "yAxis": { - "description": "What should the plane’s Y axis be?", + "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -37793,7 +40169,7 @@ "type": "string" }, "xAxis": { - "description": "What should the face’s X axis be?", + "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -37801,7 +40177,7 @@ ] }, "yAxis": { - "description": "What should the face’s Y axis be?", + "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -38857,6 +41233,94 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CircleThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -39192,7 +41656,7 @@ ] }, "xAxis": { - "description": "What should the plane’s X axis be?", + "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -39200,7 +41664,7 @@ ] }, "yAxis": { - "description": "What should the plane’s Y axis be?", + "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -39266,7 +41730,7 @@ "type": "string" }, "xAxis": { - "description": "What should the face’s X axis be?", + "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -39274,7 +41738,7 @@ ] }, "yAxis": { - "description": "What should the face’s Y axis be?", + "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -40329,6 +42793,94 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CircleThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -40664,7 +43216,7 @@ ] }, "xAxis": { - "description": "What should the plane’s X axis be?", + "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -40672,7 +43224,7 @@ ] }, "yAxis": { - "description": "What should the plane’s Y axis be?", + "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -40738,7 +43290,7 @@ "type": "string" }, "xAxis": { - "description": "What should the face’s X axis be?", + "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -40746,7 +43298,7 @@ ] }, "yAxis": { - "description": "What should the face’s Y axis be?", + "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -41906,6 +44458,94 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CircleThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -42241,7 +44881,7 @@ ] }, "xAxis": { - "description": "What should the plane’s X axis be?", + "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -42249,7 +44889,7 @@ ] }, "yAxis": { - "description": "What should the plane’s Y axis be?", + "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -42315,7 +44955,7 @@ "type": "string" }, "xAxis": { - "description": "What should the face’s X axis be?", + "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -42323,7 +44963,7 @@ ] }, "yAxis": { - "description": "What should the face’s Y axis be?", + "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -43242,6 +45882,94 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CircleThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -43620,7 +46348,7 @@ ] }, "xAxis": { - "description": "What should the plane’s X axis be?", + "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -43628,7 +46356,7 @@ ] }, "yAxis": { - "description": "What should the plane’s Y axis be?", + "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -43694,7 +46422,7 @@ "type": "string" }, "xAxis": { - "description": "What should the face’s X axis be?", + "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -43702,7 +46430,7 @@ ] }, "yAxis": { - "description": "What should the face’s Y axis be?", + "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -44717,6 +47445,94 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CircleThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -45095,7 +47911,7 @@ ] }, "xAxis": { - "description": "What should the plane’s X axis be?", + "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -45103,7 +47919,7 @@ ] }, "yAxis": { - "description": "What should the plane’s Y axis be?", + "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -45169,7 +47985,7 @@ "type": "string" }, "xAxis": { - "description": "What should the face’s X axis be?", + "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -45177,7 +47993,7 @@ ] }, "yAxis": { - "description": "What should the face’s Y axis be?", + "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -46257,6 +49073,94 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CircleThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -46635,7 +49539,7 @@ ] }, "xAxis": { - "description": "What should the plane’s X axis be?", + "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -46643,7 +49547,7 @@ ] }, "yAxis": { - "description": "What should the plane’s Y axis be?", + "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -46709,7 +49613,7 @@ "type": "string" }, "xAxis": { - "description": "What should the face’s X axis be?", + "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -46717,7 +49621,7 @@ ] }, "yAxis": { - "description": "What should the face’s Y axis be?", + "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -47849,6 +50753,94 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CircleThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -48227,7 +51219,7 @@ ] }, "xAxis": { - "description": "What should the plane’s X axis be?", + "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -48235,7 +51227,7 @@ ] }, "yAxis": { - "description": "What should the plane’s Y axis be?", + "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -48301,7 +51293,7 @@ "type": "string" }, "xAxis": { - "description": "What should the face’s X axis be?", + "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -48309,7 +51301,7 @@ ] }, "yAxis": { - "description": "What should the face’s Y axis be?", + "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -49324,6 +52316,94 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CircleThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -49702,7 +52782,7 @@ ] }, "xAxis": { - "description": "What should the plane’s X axis be?", + "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -49710,7 +52790,7 @@ ] }, "yAxis": { - "description": "What should the plane’s Y axis be?", + "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -49776,7 +52856,7 @@ "type": "string" }, "xAxis": { - "description": "What should the face’s X axis be?", + "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -49784,7 +52864,7 @@ ] }, "yAxis": { - "description": "What should the face’s Y axis be?", + "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -50864,6 +53944,94 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CircleThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -51242,7 +54410,7 @@ ] }, "xAxis": { - "description": "What should the plane’s X axis be?", + "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -51250,7 +54418,7 @@ ] }, "yAxis": { - "description": "What should the plane’s Y axis be?", + "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -51316,7 +54484,7 @@ "type": "string" }, "xAxis": { - "description": "What should the face’s X axis be?", + "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -51324,7 +54492,7 @@ ] }, "yAxis": { - "description": "What should the face’s Y axis be?", + "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -52989,6 +56157,94 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CircleThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -53367,7 +56623,7 @@ ] }, "xAxis": { - "description": "What should the plane’s X axis be?", + "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -53375,7 +56631,7 @@ ] }, "yAxis": { - "description": "What should the plane’s Y axis be?", + "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -53441,7 +56697,7 @@ "type": "string" }, "xAxis": { - "description": "What should the face’s X axis be?", + "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -53449,7 +56705,7 @@ ] }, "yAxis": { - "description": "What should the face’s Y axis be?", + "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -54464,6 +57720,94 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CircleThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -54842,7 +58186,7 @@ ] }, "xAxis": { - "description": "What should the plane’s X axis be?", + "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -54850,7 +58194,7 @@ ] }, "yAxis": { - "description": "What should the plane’s Y axis be?", + "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -54916,7 +58260,7 @@ "type": "string" }, "xAxis": { - "description": "What should the face’s X axis be?", + "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -54924,7 +58268,7 @@ ] }, "yAxis": { - "description": "What should the face’s Y axis be?", + "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -56004,6 +59348,94 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CircleThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -56382,7 +59814,7 @@ ] }, "xAxis": { - "description": "What should the plane’s X axis be?", + "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -56390,7 +59822,7 @@ ] }, "yAxis": { - "description": "What should the plane’s Y axis be?", + "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -56456,7 +59888,7 @@ "type": "string" }, "xAxis": { - "description": "What should the face’s X axis be?", + "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -56464,7 +59896,7 @@ ] }, "yAxis": { - "description": "What should the face’s Y axis be?", + "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -57630,6 +61062,94 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CircleThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -58607,6 +62127,94 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CircleThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -59264,7 +62872,7 @@ ] }, "xAxis": { - "description": "What should the plane’s X axis be?", + "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -59272,7 +62880,7 @@ ] }, "yAxis": { - "description": "What should the plane’s Y axis be?", + "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -59338,7 +62946,7 @@ "type": "string" }, "xAxis": { - "description": "What should the face’s X axis be?", + "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -59346,7 +62954,7 @@ ] }, "yAxis": { - "description": "What should the face’s Y axis be?", + "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -60100,6 +63708,94 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CircleThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -60757,7 +64453,7 @@ ] }, "xAxis": { - "description": "What should the plane’s X axis be?", + "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -60765,7 +64461,7 @@ ] }, "yAxis": { - "description": "What should the plane’s Y axis be?", + "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -60831,7 +64527,7 @@ "type": "string" }, "xAxis": { - "description": "What should the face’s X axis be?", + "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -60839,7 +64535,7 @@ ] }, "yAxis": { - "description": "What should the face’s Y axis be?", + "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -61885,6 +65581,94 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CircleThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -62220,7 +66004,7 @@ ] }, "xAxis": { - "description": "What should the plane’s X axis be?", + "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -62228,7 +66012,7 @@ ] }, "yAxis": { - "description": "What should the plane’s Y axis be?", + "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -62294,7 +66078,7 @@ "type": "string" }, "xAxis": { - "description": "What should the face’s X axis be?", + "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -62302,7 +66086,7 @@ ] }, "yAxis": { - "description": "What should the face’s Y axis be?", + "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -62879,7 +66663,7 @@ ] }, "xAxis": { - "description": "What should the plane’s X axis be?", + "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -62887,7 +66671,7 @@ ] }, "yAxis": { - "description": "What should the plane’s Y axis be?", + "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -62953,7 +66737,7 @@ "type": "string" }, "xAxis": { - "description": "What should the face’s X axis be?", + "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -62961,7 +66745,7 @@ ] }, "yAxis": { - "description": "What should the face’s Y axis be?", + "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -63803,6 +67587,94 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CircleThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -64354,7 +68226,7 @@ ] }, "xAxis": { - "description": "What should the plane’s X axis be?", + "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -64362,7 +68234,7 @@ ] }, "yAxis": { - "description": "What should the plane’s Y axis be?", + "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -64428,7 +68300,7 @@ "type": "string" }, "xAxis": { - "description": "What should the face’s X axis be?", + "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -64436,7 +68308,7 @@ ] }, "yAxis": { - "description": "What should the face’s Y axis be?", + "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -65278,6 +69150,94 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CircleThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -66121,6 +70081,94 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CircleThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -66499,7 +70547,7 @@ ] }, "xAxis": { - "description": "What should the plane’s X axis be?", + "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -66507,7 +70555,7 @@ ] }, "yAxis": { - "description": "What should the plane’s Y axis be?", + "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -66573,7 +70621,7 @@ "type": "string" }, "xAxis": { - "description": "What should the face’s X axis be?", + "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -66581,7 +70629,7 @@ ] }, "yAxis": { - "description": "What should the face’s Y axis be?", + "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -67443,7 +71491,7 @@ ] }, "xAxis": { - "description": "What should the plane’s X axis be?", + "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -67451,7 +71499,7 @@ ] }, "yAxis": { - "description": "What should the plane’s Y axis be?", + "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -67517,7 +71565,7 @@ "type": "string" }, "xAxis": { - "description": "What should the face’s X axis be?", + "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -67525,7 +71573,7 @@ ] }, "yAxis": { - "description": "What should the face’s Y axis be?", + "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -68367,6 +72415,94 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CircleThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -68919,7 +73055,7 @@ ] }, "xAxis": { - "description": "What should the plane’s X axis be?", + "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -68927,7 +73063,7 @@ ] }, "yAxis": { - "description": "What should the plane’s Y axis be?", + "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -68993,7 +73129,7 @@ "type": "string" }, "xAxis": { - "description": "What should the face’s X axis be?", + "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -69001,7 +73137,7 @@ ] }, "yAxis": { - "description": "What should the face’s Y axis be?", + "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -69843,6 +73979,94 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CircleThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -70687,6 +74911,94 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CircleThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -71065,7 +75377,7 @@ ] }, "xAxis": { - "description": "What should the plane’s X axis be?", + "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -71073,7 +75385,7 @@ ] }, "yAxis": { - "description": "What should the plane’s Y axis be?", + "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -71139,7 +75451,7 @@ "type": "string" }, "xAxis": { - "description": "What should the face’s X axis be?", + "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -71147,7 +75459,7 @@ ] }, "yAxis": { - "description": "What should the face’s Y axis be?", + "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -72240,6 +76552,94 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CircleThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -72618,7 +77018,7 @@ ] }, "xAxis": { - "description": "What should the plane’s X axis be?", + "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -72626,7 +77026,7 @@ ] }, "yAxis": { - "description": "What should the plane’s Y axis be?", + "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -72692,7 +77092,7 @@ "type": "string" }, "xAxis": { - "description": "What should the face’s X axis be?", + "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -72700,7 +77100,7 @@ ] }, "yAxis": { - "description": "What should the face’s Y axis be?", + "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -73716,6 +78116,94 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CircleThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -74094,7 +78582,7 @@ ] }, "xAxis": { - "description": "What should the plane’s X axis be?", + "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -74102,7 +78590,7 @@ ] }, "yAxis": { - "description": "What should the plane’s Y axis be?", + "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -74168,7 +78656,7 @@ "type": "string" }, "xAxis": { - "description": "What should the face’s X axis be?", + "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -74176,7 +78664,7 @@ ] }, "yAxis": { - "description": "What should the face’s Y axis be?", + "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -75257,6 +79745,94 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CircleThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -75635,7 +80211,7 @@ ] }, "xAxis": { - "description": "What should the plane’s X axis be?", + "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -75643,7 +80219,7 @@ ] }, "yAxis": { - "description": "What should the plane’s Y axis be?", + "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -75709,7 +80285,7 @@ "type": "string" }, "xAxis": { - "description": "What should the face’s X axis be?", + "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -75717,7 +80293,7 @@ ] }, "yAxis": { - "description": "What should the face’s Y axis be?", + "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -76941,6 +81517,94 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CircleThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -77319,7 +81983,7 @@ ] }, "xAxis": { - "description": "What should the plane’s X axis be?", + "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -77327,7 +81991,7 @@ ] }, "yAxis": { - "description": "What should the plane’s Y axis be?", + "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -77393,7 +82057,7 @@ "type": "string" }, "xAxis": { - "description": "What should the face’s X axis be?", + "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -77401,7 +82065,7 @@ ] }, "yAxis": { - "description": "What should the face’s Y axis be?", + "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -78413,6 +83077,94 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CircleThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -78791,7 +83543,7 @@ ] }, "xAxis": { - "description": "What should the plane’s X axis be?", + "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -78799,7 +83551,7 @@ ] }, "yAxis": { - "description": "What should the plane’s Y axis be?", + "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -78865,7 +83617,7 @@ "type": "string" }, "xAxis": { - "description": "What should the face’s X axis be?", + "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -78873,7 +83625,7 @@ ] }, "yAxis": { - "description": "What should the face’s Y axis be?", + "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -80296,6 +85048,94 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CircleThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -80631,7 +85471,7 @@ ] }, "xAxis": { - "description": "What should the plane’s X axis be?", + "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -80639,7 +85479,7 @@ ] }, "yAxis": { - "description": "What should the plane’s Y axis be?", + "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -80705,7 +85545,7 @@ "type": "string" }, "xAxis": { - "description": "What should the face’s X axis be?", + "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -80713,7 +85553,7 @@ ] }, "yAxis": { - "description": "What should the face’s Y axis be?", + "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -81583,6 +86423,94 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CircleThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -82560,6 +87488,94 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CircleThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -83217,7 +88233,7 @@ ] }, "xAxis": { - "description": "What should the plane’s X axis be?", + "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -83225,7 +88241,7 @@ ] }, "yAxis": { - "description": "What should the plane’s Y axis be?", + "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -83291,7 +88307,7 @@ "type": "string" }, "xAxis": { - "description": "What should the face’s X axis be?", + "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -83299,7 +88315,7 @@ ] }, "yAxis": { - "description": "What should the face’s Y axis be?", + "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -84053,6 +89069,94 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CircleThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -84710,7 +89814,7 @@ ] }, "xAxis": { - "description": "What should the plane’s X axis be?", + "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -84718,7 +89822,7 @@ ] }, "yAxis": { - "description": "What should the plane’s Y axis be?", + "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -84784,7 +89888,7 @@ "type": "string" }, "xAxis": { - "description": "What should the face’s X axis be?", + "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -84792,7 +89896,7 @@ ] }, "yAxis": { - "description": "What should the face’s Y axis be?", + "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -85838,6 +90942,94 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CircleThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -86173,7 +91365,7 @@ ] }, "xAxis": { - "description": "What should the plane’s X axis be?", + "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -86181,7 +91373,7 @@ ] }, "yAxis": { - "description": "What should the plane’s Y axis be?", + "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -86247,7 +91439,7 @@ "type": "string" }, "xAxis": { - "description": "What should the face’s X axis be?", + "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -86255,7 +91447,7 @@ ] }, "yAxis": { - "description": "What should the face’s Y axis be?", + "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -87148,6 +92340,94 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CircleThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -88057,6 +93337,94 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CircleThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -88966,6 +94334,94 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CircleThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -90054,6 +95510,94 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CircleThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -91045,6 +96589,94 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CircleThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -92484,6 +98116,94 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CircleThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -92819,7 +98539,7 @@ ] }, "xAxis": { - "description": "What should the plane’s X axis be?", + "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -92827,7 +98547,7 @@ ] }, "yAxis": { - "description": "What should the plane’s Y axis be?", + "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -92893,7 +98613,7 @@ "type": "string" }, "xAxis": { - "description": "What should the face’s X axis be?", + "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -92901,7 +98621,7 @@ ] }, "yAxis": { - "description": "What should the face’s Y axis be?", + "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -94029,6 +99749,94 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CircleThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -94364,7 +100172,7 @@ ] }, "xAxis": { - "description": "What should the plane’s X axis be?", + "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -94372,7 +100180,7 @@ ] }, "yAxis": { - "description": "What should the plane’s Y axis be?", + "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -94438,7 +100246,7 @@ "type": "string" }, "xAxis": { - "description": "What should the face’s X axis be?", + "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -94446,7 +100254,7 @@ ] }, "yAxis": { - "description": "What should the face’s Y axis be?", + "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -95309,6 +101117,94 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CircleThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -95687,7 +101583,7 @@ ] }, "xAxis": { - "description": "What should the plane’s X axis be?", + "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -95695,7 +101591,7 @@ ] }, "yAxis": { - "description": "What should the plane’s Y axis be?", + "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -95761,7 +101657,7 @@ "type": "string" }, "xAxis": { - "description": "What should the face’s X axis be?", + "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -95769,7 +101665,7 @@ ] }, "yAxis": { - "description": "What should the face’s Y axis be?", + "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -96849,6 +102745,94 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CircleThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -97227,7 +103211,7 @@ ] }, "xAxis": { - "description": "What should the plane’s X axis be?", + "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -97235,7 +103219,7 @@ ] }, "yAxis": { - "description": "What should the plane’s Y axis be?", + "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -97301,7 +103285,7 @@ "type": "string" }, "xAxis": { - "description": "What should the face’s X axis be?", + "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -97309,7 +103293,7 @@ ] }, "yAxis": { - "description": "What should the face’s Y axis be?", + "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -98390,6 +104374,94 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CircleThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -98768,7 +104840,7 @@ ] }, "xAxis": { - "description": "What should the plane’s X axis be?", + "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -98776,7 +104848,7 @@ ] }, "yAxis": { - "description": "What should the plane’s Y axis be?", + "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -98842,7 +104914,7 @@ "type": "string" }, "xAxis": { - "description": "What should the face’s X axis be?", + "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -98850,7 +104922,7 @@ ] }, "yAxis": { - "description": "What should the face’s Y axis be?", + "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -100266,6 +106338,94 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CircleThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -100601,7 +106761,7 @@ ] }, "xAxis": { - "description": "What should the plane’s X axis be?", + "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -100609,7 +106769,7 @@ ] }, "yAxis": { - "description": "What should the plane’s Y axis be?", + "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -100675,7 +106835,7 @@ "type": "string" }, "xAxis": { - "description": "What should the face’s X axis be?", + "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -100683,7 +106843,7 @@ ] }, "yAxis": { - "description": "What should the face’s Y axis be?", + "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -101811,6 +107971,94 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CircleThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -102146,7 +108394,7 @@ ] }, "xAxis": { - "description": "What should the plane’s X axis be?", + "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -102154,7 +108402,7 @@ ] }, "yAxis": { - "description": "What should the plane’s Y axis be?", + "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -102220,7 +108468,7 @@ "type": "string" }, "xAxis": { - "description": "What should the face’s X axis be?", + "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -102228,7 +108476,7 @@ ] }, "yAxis": { - "description": "What should the face’s Y axis be?", + "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -103549,6 +109797,94 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CircleThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -103927,7 +110263,7 @@ ] }, "xAxis": { - "description": "What should the plane’s X axis be?", + "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -103935,7 +110271,7 @@ ] }, "yAxis": { - "description": "What should the plane’s Y axis be?", + "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -104001,7 +110337,7 @@ "type": "string" }, "xAxis": { - "description": "What should the face’s X axis be?", + "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -104009,7 +110345,7 @@ ] }, "yAxis": { - "description": "What should the face’s Y axis be?", + "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -105117,6 +111453,94 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CircleThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -105495,7 +111919,7 @@ ] }, "xAxis": { - "description": "What should the plane’s X axis be?", + "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -105503,7 +111927,7 @@ ] }, "yAxis": { - "description": "What should the plane’s Y axis be?", + "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -105569,7 +111993,7 @@ "type": "string" }, "xAxis": { - "description": "What should the face’s X axis be?", + "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -105577,7 +112001,7 @@ ] }, "yAxis": { - "description": "What should the face’s Y axis be?", + "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -106850,6 +113274,94 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CircleThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -107228,7 +113740,7 @@ ] }, "xAxis": { - "description": "What should the plane’s X axis be?", + "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -107236,7 +113748,7 @@ ] }, "yAxis": { - "description": "What should the plane’s Y axis be?", + "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -107302,7 +113814,7 @@ "type": "string" }, "xAxis": { - "description": "What should the face’s X axis be?", + "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -107310,7 +113822,7 @@ ] }, "yAxis": { - "description": "What should the face’s Y axis be?", + "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -108328,6 +114840,94 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CircleThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -108706,7 +115306,7 @@ ] }, "xAxis": { - "description": "What should the plane’s X axis be?", + "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -108714,7 +115314,7 @@ ] }, "yAxis": { - "description": "What should the plane’s Y axis be?", + "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -108780,7 +115380,7 @@ "type": "string" }, "xAxis": { - "description": "What should the face’s X axis be?", + "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -108788,7 +115388,7 @@ ] }, "yAxis": { - "description": "What should the face’s Y axis be?", + "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -109805,6 +116405,94 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CircleThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -110183,7 +116871,7 @@ ] }, "xAxis": { - "description": "What should the plane’s X axis be?", + "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -110191,7 +116879,7 @@ ] }, "yAxis": { - "description": "What should the plane’s Y axis be?", + "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -110257,7 +116945,7 @@ "type": "string" }, "xAxis": { - "description": "What should the face’s X axis be?", + "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -110265,7 +116953,7 @@ ] }, "yAxis": { - "description": "What should the face’s Y axis be?", + "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -111281,6 +117969,94 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CircleThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -111659,7 +118435,7 @@ ] }, "xAxis": { - "description": "What should the plane’s X axis be?", + "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -111667,7 +118443,7 @@ ] }, "yAxis": { - "description": "What should the plane’s Y axis be?", + "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -111733,7 +118509,7 @@ "type": "string" }, "xAxis": { - "description": "What should the face’s X axis be?", + "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -111741,7 +118517,7 @@ ] }, "yAxis": { - "description": "What should the face’s Y axis be?", + "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -112822,6 +119598,94 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CircleThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -113200,7 +120064,7 @@ ] }, "xAxis": { - "description": "What should the plane’s X axis be?", + "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -113208,7 +120072,7 @@ ] }, "yAxis": { - "description": "What should the plane’s Y axis be?", + "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -113274,7 +120138,7 @@ "type": "string" }, "xAxis": { - "description": "What should the face’s X axis be?", + "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -113282,7 +120146,7 @@ ] }, "yAxis": { - "description": "What should the face’s Y axis be?", + "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -114423,6 +121287,94 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CircleThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -114801,7 +121753,7 @@ ] }, "xAxis": { - "description": "What should the plane’s X axis be?", + "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -114809,7 +121761,7 @@ ] }, "yAxis": { - "description": "What should the plane’s Y axis be?", + "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -114875,7 +121827,7 @@ "type": "string" }, "xAxis": { - "description": "What should the face’s X axis be?", + "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -114883,7 +121835,7 @@ ] }, "yAxis": { - "description": "What should the face’s Y axis be?", + "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -115896,6 +122848,94 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CircleThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -116274,7 +123314,7 @@ ] }, "xAxis": { - "description": "What should the plane’s X axis be?", + "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -116282,7 +123322,7 @@ ] }, "yAxis": { - "description": "What should the plane’s Y axis be?", + "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -116348,7 +123388,7 @@ "type": "string" }, "xAxis": { - "description": "What should the face’s X axis be?", + "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -116356,7 +123396,7 @@ ] }, "yAxis": { - "description": "What should the face’s Y axis be?", + "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -117367,6 +124407,94 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CircleThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -117745,7 +124873,7 @@ ] }, "xAxis": { - "description": "What should the plane’s X axis be?", + "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -117753,7 +124881,7 @@ ] }, "yAxis": { - "description": "What should the plane’s Y axis be?", + "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -117819,7 +124947,7 @@ "type": "string" }, "xAxis": { - "description": "What should the face’s X axis be?", + "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -117827,7 +124955,7 @@ ] }, "yAxis": { - "description": "What should the face’s Y axis be?", + "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -118841,6 +125969,94 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CircleThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -119219,7 +126435,7 @@ ] }, "xAxis": { - "description": "What should the plane’s X axis be?", + "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -119227,7 +126443,7 @@ ] }, "yAxis": { - "description": "What should the plane’s Y axis be?", + "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -119293,7 +126509,7 @@ "type": "string" }, "xAxis": { - "description": "What should the face’s X axis be?", + "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -119301,7 +126517,7 @@ ] }, "yAxis": { - "description": "What should the face’s Y axis be?", + "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -120313,6 +127529,94 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CircleThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -120691,7 +127995,7 @@ ] }, "xAxis": { - "description": "What should the plane’s X axis be?", + "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -120699,7 +128003,7 @@ ] }, "yAxis": { - "description": "What should the plane’s Y axis be?", + "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -120765,7 +128069,7 @@ "type": "string" }, "xAxis": { - "description": "What should the face’s X axis be?", + "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -120773,7 +128077,7 @@ ] }, "yAxis": { - "description": "What should the face’s Y axis be?", + "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -122090,6 +129394,94 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CircleThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -122425,7 +129817,7 @@ ] }, "xAxis": { - "description": "What should the plane’s X axis be?", + "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -122433,7 +129825,7 @@ ] }, "yAxis": { - "description": "What should the plane’s Y axis be?", + "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -122499,7 +129891,7 @@ "type": "string" }, "xAxis": { - "description": "What should the face’s X axis be?", + "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -122507,7 +129899,7 @@ ] }, "yAxis": { - "description": "What should the face’s Y axis be?", + "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -124361,6 +131753,94 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CircleThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -124903,7 +132383,7 @@ ] }, "xAxis": { - "description": "What should the plane’s X axis be?", + "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -124911,7 +132391,7 @@ ] }, "yAxis": { - "description": "What should the plane’s Y axis be?", + "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -125016,7 +132496,7 @@ "type": "string" }, "xAxis": { - "description": "What should the face’s X axis be?", + "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -125024,7 +132504,7 @@ ] }, "yAxis": { - "description": "What should the face’s Y axis be?", + "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -125258,7 +132738,7 @@ ] }, "xAxis": { - "description": "What should the plane’s X axis be?", + "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -125266,7 +132746,7 @@ ] }, "yAxis": { - "description": "What should the plane’s Y axis be?", + "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -125332,7 +132812,7 @@ "type": "string" }, "xAxis": { - "description": "What should the face’s X axis be?", + "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -125340,7 +132820,7 @@ ] }, "yAxis": { - "description": "What should the face’s Y axis be?", + "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -126843,6 +134323,94 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CircleThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -127385,7 +134953,7 @@ ] }, "xAxis": { - "description": "What should the plane’s X axis be?", + "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -127393,7 +134961,7 @@ ] }, "yAxis": { - "description": "What should the plane’s Y axis be?", + "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -127498,7 +135066,7 @@ "type": "string" }, "xAxis": { - "description": "What should the face’s X axis be?", + "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -127506,7 +135074,7 @@ ] }, "yAxis": { - "description": "What should the face’s Y axis be?", + "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -127740,7 +135308,7 @@ ] }, "xAxis": { - "description": "What should the plane’s X axis be?", + "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -127748,7 +135316,7 @@ ] }, "yAxis": { - "description": "What should the plane’s Y axis be?", + "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -127814,7 +135382,7 @@ "type": "string" }, "xAxis": { - "description": "What should the face’s X axis be?", + "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -127822,7 +135390,7 @@ ] }, "yAxis": { - "description": "What should the face’s Y axis be?", + "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -129329,6 +136897,94 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CircleThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -129871,7 +137527,7 @@ ] }, "xAxis": { - "description": "What should the plane’s X axis be?", + "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -129879,7 +137535,7 @@ ] }, "yAxis": { - "description": "What should the plane’s Y axis be?", + "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -129984,7 +137640,7 @@ "type": "string" }, "xAxis": { - "description": "What should the face’s X axis be?", + "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -129992,7 +137648,7 @@ ] }, "yAxis": { - "description": "What should the face’s Y axis be?", + "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -130226,7 +137882,7 @@ ] }, "xAxis": { - "description": "What should the plane’s X axis be?", + "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -130234,7 +137890,7 @@ ] }, "yAxis": { - "description": "What should the plane’s Y axis be?", + "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -130300,7 +137956,7 @@ "type": "string" }, "xAxis": { - "description": "What should the face’s X axis be?", + "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -130308,7 +137964,7 @@ ] }, "yAxis": { - "description": "What should the face’s Y axis be?", + "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -131182,6 +138838,94 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CircleThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -132279,6 +140023,94 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CircleThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -132859,7 +140691,7 @@ ] }, "xAxis": { - "description": "What should the plane’s X axis be?", + "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -132867,7 +140699,7 @@ ] }, "yAxis": { - "description": "What should the plane’s Y axis be?", + "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -132933,7 +140765,7 @@ "type": "string" }, "xAxis": { - "description": "What should the face’s X axis be?", + "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -132941,7 +140773,7 @@ ] }, "yAxis": { - "description": "What should the face’s Y axis be?", + "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -133762,6 +141594,94 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CircleThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -134140,7 +142060,7 @@ ] }, "xAxis": { - "description": "What should the plane’s X axis be?", + "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -134148,7 +142068,7 @@ ] }, "yAxis": { - "description": "What should the plane’s Y axis be?", + "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -134214,7 +142134,7 @@ "type": "string" }, "xAxis": { - "description": "What should the face’s X axis be?", + "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -134222,7 +142142,7 @@ ] }, "yAxis": { - "description": "What should the face’s Y axis be?", + "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -135035,7 +142955,7 @@ ] }, "xAxis": { - "description": "What should the plane’s X axis be?", + "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -135043,7 +142963,7 @@ ] }, "yAxis": { - "description": "What should the plane’s Y axis be?", + "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -135641,6 +143561,94 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CircleThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -136019,7 +144027,7 @@ ] }, "xAxis": { - "description": "What should the plane’s X axis be?", + "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -136027,7 +144035,7 @@ ] }, "yAxis": { - "description": "What should the plane’s Y axis be?", + "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -136093,7 +144101,7 @@ "type": "string" }, "xAxis": { - "description": "What should the face’s X axis be?", + "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -136101,7 +144109,7 @@ ] }, "yAxis": { - "description": "What should the face’s Y axis be?", + "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -137114,6 +145122,94 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CircleThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -137492,7 +145588,7 @@ ] }, "xAxis": { - "description": "What should the plane’s X axis be?", + "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -137500,7 +145596,7 @@ ] }, "yAxis": { - "description": "What should the plane’s Y axis be?", + "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -137566,7 +145662,7 @@ "type": "string" }, "xAxis": { - "description": "What should the face’s X axis be?", + "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -137574,7 +145670,7 @@ ] }, "yAxis": { - "description": "What should the face’s Y axis be?", + "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -138591,6 +146687,94 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CircleThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -138969,7 +147153,7 @@ ] }, "xAxis": { - "description": "What should the plane’s X axis be?", + "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -138977,7 +147161,7 @@ ] }, "yAxis": { - "description": "What should the plane’s Y axis be?", + "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -139043,7 +147227,7 @@ "type": "string" }, "xAxis": { - "description": "What should the face’s X axis be?", + "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -139051,7 +147235,7 @@ ] }, "yAxis": { - "description": "What should the face’s Y axis be?", + "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -140063,6 +148247,94 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CircleThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -140441,7 +148713,7 @@ ] }, "xAxis": { - "description": "What should the plane’s X axis be?", + "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -140449,7 +148721,7 @@ ] }, "yAxis": { - "description": "What should the plane’s Y axis be?", + "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -140515,7 +148787,7 @@ "type": "string" }, "xAxis": { - "description": "What should the face’s X axis be?", + "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -140523,7 +148795,7 @@ ] }, "yAxis": { - "description": "What should the face’s Y axis be?", + "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -141534,6 +149806,94 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CircleThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -141912,7 +150272,7 @@ ] }, "xAxis": { - "description": "What should the plane’s X axis be?", + "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -141920,7 +150280,7 @@ ] }, "yAxis": { - "description": "What should the plane’s Y axis be?", + "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -141986,7 +150346,7 @@ "type": "string" }, "xAxis": { - "description": "What should the face’s X axis be?", + "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -141994,7 +150354,7 @@ ] }, "yAxis": { - "description": "What should the face’s Y axis be?", + "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -143006,6 +151366,94 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CircleThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -143384,7 +151832,7 @@ ] }, "xAxis": { - "description": "What should the plane’s X axis be?", + "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -143392,7 +151840,7 @@ ] }, "yAxis": { - "description": "What should the plane’s Y axis be?", + "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -143458,7 +151906,7 @@ "type": "string" }, "xAxis": { - "description": "What should the face’s X axis be?", + "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -143466,7 +151914,7 @@ ] }, "yAxis": { - "description": "What should the face’s Y axis be?", + "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -144553,6 +153001,94 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CircleThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -144931,7 +153467,7 @@ ] }, "xAxis": { - "description": "What should the plane’s X axis be?", + "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -144939,7 +153475,7 @@ ] }, "yAxis": { - "description": "What should the plane’s Y axis be?", + "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -145005,7 +153541,7 @@ "type": "string" }, "xAxis": { - "description": "What should the face’s X axis be?", + "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -145013,7 +153549,7 @@ ] }, "yAxis": { - "description": "What should the face’s Y axis be?", + "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -146374,6 +154910,94 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CircleThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -146709,7 +155333,7 @@ ] }, "xAxis": { - "description": "What should the plane’s X axis be?", + "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -146717,7 +155341,7 @@ ] }, "yAxis": { - "description": "What should the plane’s Y axis be?", + "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -146783,7 +155407,7 @@ "type": "string" }, "xAxis": { - "description": "What should the face’s X axis be?", + "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -146791,7 +155415,7 @@ ] }, "yAxis": { - "description": "What should the face’s Y axis be?", + "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -147847,6 +156471,94 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CircleThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -148182,7 +156894,7 @@ ] }, "xAxis": { - "description": "What should the plane’s X axis be?", + "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -148190,7 +156902,7 @@ ] }, "yAxis": { - "description": "What should the plane’s Y axis be?", + "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -148256,7 +156968,7 @@ "type": "string" }, "xAxis": { - "description": "What should the face’s X axis be?", + "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -148264,7 +156976,7 @@ ] }, "yAxis": { - "description": "What should the face’s Y axis be?", + "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -149324,6 +158036,94 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CircleThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -149659,7 +158459,7 @@ ] }, "xAxis": { - "description": "What should the plane’s X axis be?", + "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -149667,7 +158467,7 @@ ] }, "yAxis": { - "description": "What should the plane’s Y axis be?", + "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -149733,7 +158533,7 @@ "type": "string" }, "xAxis": { - "description": "What should the face’s X axis be?", + "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -149741,7 +158541,7 @@ ] }, "yAxis": { - "description": "What should the face’s Y axis be?", + "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -150801,6 +159601,94 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CircleThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -151136,7 +160024,7 @@ ] }, "xAxis": { - "description": "What should the plane’s X axis be?", + "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -151144,7 +160032,7 @@ ] }, "yAxis": { - "description": "What should the plane’s Y axis be?", + "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -151210,7 +160098,7 @@ "type": "string" }, "xAxis": { - "description": "What should the face’s X axis be?", + "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -151218,7 +160106,7 @@ ] }, "yAxis": { - "description": "What should the face’s Y axis be?", + "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -152273,6 +161161,94 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CircleThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -152608,7 +161584,7 @@ ] }, "xAxis": { - "description": "What should the plane’s X axis be?", + "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -152616,7 +161592,7 @@ ] }, "yAxis": { - "description": "What should the plane’s Y axis be?", + "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -152682,7 +161658,7 @@ "type": "string" }, "xAxis": { - "description": "What should the face’s X axis be?", + "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -152690,7 +161666,7 @@ ] }, "yAxis": { - "description": "What should the face’s Y axis be?", + "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -153744,6 +162720,94 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CircleThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -154079,7 +163143,7 @@ ] }, "xAxis": { - "description": "What should the plane’s X axis be?", + "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -154087,7 +163151,7 @@ ] }, "yAxis": { - "description": "What should the plane’s Y axis be?", + "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -154153,7 +163217,7 @@ "type": "string" }, "xAxis": { - "description": "What should the face’s X axis be?", + "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -154161,7 +163225,7 @@ ] }, "yAxis": { - "description": "What should the face’s Y axis be?", + "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -155216,6 +164280,94 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CircleThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -155551,7 +164703,7 @@ ] }, "xAxis": { - "description": "What should the plane’s X axis be?", + "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -155559,7 +164711,7 @@ ] }, "yAxis": { - "description": "What should the plane’s Y axis be?", + "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -155625,7 +164777,7 @@ "type": "string" }, "xAxis": { - "description": "What should the face’s X axis be?", + "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -155633,7 +164785,7 @@ ] }, "yAxis": { - "description": "What should the face’s Y axis be?", + "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -156767,6 +165919,94 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CircleThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -157102,7 +166342,7 @@ ] }, "xAxis": { - "description": "What should the plane’s X axis be?", + "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -157110,7 +166350,7 @@ ] }, "yAxis": { - "description": "What should the plane’s Y axis be?", + "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -157176,7 +166416,7 @@ "type": "string" }, "xAxis": { - "description": "What should the face’s X axis be?", + "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -157184,7 +166424,7 @@ ] }, "yAxis": { - "description": "What should the face’s Y axis be?", + "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -157970,6 +167210,94 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CircleThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -158348,7 +167676,7 @@ ] }, "xAxis": { - "description": "What should the plane’s X axis be?", + "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -158356,7 +167684,7 @@ ] }, "yAxis": { - "description": "What should the plane’s Y axis be?", + "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -158422,7 +167750,7 @@ "type": "string" }, "xAxis": { - "description": "What should the face’s X axis be?", + "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -158430,7 +167758,7 @@ ] }, "yAxis": { - "description": "What should the face’s Y axis be?", + "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -159443,6 +168771,94 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CircleThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -159821,7 +169237,7 @@ ] }, "xAxis": { - "description": "What should the plane’s X axis be?", + "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -159829,7 +169245,7 @@ ] }, "yAxis": { - "description": "What should the plane’s Y axis be?", + "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -159895,7 +169311,7 @@ "type": "string" }, "xAxis": { - "description": "What should the face’s X axis be?", + "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -159903,7 +169319,7 @@ ] }, "yAxis": { - "description": "What should the face’s Y axis be?", + "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -160915,6 +170331,94 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CircleThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -161293,7 +170797,7 @@ ] }, "xAxis": { - "description": "What should the plane’s X axis be?", + "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -161301,7 +170805,7 @@ ] }, "yAxis": { - "description": "What should the plane’s Y axis be?", + "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -161367,7 +170871,7 @@ "type": "string" }, "xAxis": { - "description": "What should the face’s X axis be?", + "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -161375,7 +170879,7 @@ ] }, "yAxis": { - "description": "What should the face’s Y axis be?", + "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -162392,6 +171896,94 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CircleThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -162770,7 +172362,7 @@ ] }, "xAxis": { - "description": "What should the plane’s X axis be?", + "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -162778,7 +172370,7 @@ ] }, "yAxis": { - "description": "What should the plane’s Y axis be?", + "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -162844,7 +172436,7 @@ "type": "string" }, "xAxis": { - "description": "What should the face’s X axis be?", + "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -162852,7 +172444,7 @@ ] }, "yAxis": { - "description": "What should the face’s Y axis be?", + "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -163864,6 +173456,94 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CircleThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -164242,7 +173922,7 @@ ] }, "xAxis": { - "description": "What should the plane’s X axis be?", + "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -164250,7 +173930,7 @@ ] }, "yAxis": { - "description": "What should the plane’s Y axis be?", + "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -164316,7 +173996,7 @@ "type": "string" }, "xAxis": { - "description": "What should the face’s X axis be?", + "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -164324,7 +174004,7 @@ ] }, "yAxis": { - "description": "What should the face’s Y axis be?", + "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -165411,6 +175091,94 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CircleThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -165789,7 +175557,7 @@ ] }, "xAxis": { - "description": "What should the plane’s X axis be?", + "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -165797,7 +175565,7 @@ ] }, "yAxis": { - "description": "What should the plane’s Y axis be?", + "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -165863,7 +175631,7 @@ "type": "string" }, "xAxis": { - "description": "What should the face’s X axis be?", + "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -165871,7 +175639,7 @@ ] }, "yAxis": { - "description": "What should the face’s Y axis be?", + "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -167232,6 +177000,94 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CircleThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -167567,7 +177423,7 @@ ] }, "xAxis": { - "description": "What should the plane’s X axis be?", + "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -167575,7 +177431,7 @@ ] }, "yAxis": { - "description": "What should the plane’s Y axis be?", + "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -167641,7 +177497,7 @@ "type": "string" }, "xAxis": { - "description": "What should the face’s X axis be?", + "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -167649,7 +177505,7 @@ ] }, "yAxis": { - "description": "What should the face’s Y axis be?", + "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -168705,6 +178561,94 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CircleThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -169040,7 +178984,7 @@ ] }, "xAxis": { - "description": "What should the plane’s X axis be?", + "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -169048,7 +178992,7 @@ ] }, "yAxis": { - "description": "What should the plane’s Y axis be?", + "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -169114,7 +179058,7 @@ "type": "string" }, "xAxis": { - "description": "What should the face’s X axis be?", + "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -169122,7 +179066,7 @@ ] }, "yAxis": { - "description": "What should the face’s Y axis be?", + "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -170177,6 +180121,94 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CircleThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -170512,7 +180544,7 @@ ] }, "xAxis": { - "description": "What should the plane’s X axis be?", + "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -170520,7 +180552,7 @@ ] }, "yAxis": { - "description": "What should the plane’s Y axis be?", + "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -170586,7 +180618,7 @@ "type": "string" }, "xAxis": { - "description": "What should the face’s X axis be?", + "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -170594,7 +180626,7 @@ ] }, "yAxis": { - "description": "What should the face’s Y axis be?", + "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -171654,6 +181686,94 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CircleThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -171989,7 +182109,7 @@ ] }, "xAxis": { - "description": "What should the plane’s X axis be?", + "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -171997,7 +182117,7 @@ ] }, "yAxis": { - "description": "What should the plane’s Y axis be?", + "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -172063,7 +182183,7 @@ "type": "string" }, "xAxis": { - "description": "What should the face’s X axis be?", + "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -172071,7 +182191,7 @@ ] }, "yAxis": { - "description": "What should the face’s Y axis be?", + "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -173126,6 +183246,94 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CircleThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -173461,7 +183669,7 @@ ] }, "xAxis": { - "description": "What should the plane’s X axis be?", + "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -173469,7 +183677,7 @@ ] }, "yAxis": { - "description": "What should the plane’s Y axis be?", + "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -173535,7 +183743,7 @@ "type": "string" }, "xAxis": { - "description": "What should the face’s X axis be?", + "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -173543,7 +183751,7 @@ ] }, "yAxis": { - "description": "What should the face’s Y axis be?", + "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -174677,6 +184885,94 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CircleThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -175012,7 +185308,7 @@ ] }, "xAxis": { - "description": "What should the plane’s X axis be?", + "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -175020,7 +185316,7 @@ ] }, "yAxis": { - "description": "What should the plane’s Y axis be?", + "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -175086,7 +185382,7 @@ "type": "string" }, "xAxis": { - "description": "What should the face’s X axis be?", + "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -175094,7 +185390,7 @@ ] }, "yAxis": { - "description": "What should the face’s Y axis be?", + "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -176189,6 +186485,94 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CircleThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -176524,7 +186908,7 @@ ] }, "xAxis": { - "description": "What should the plane’s X axis be?", + "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -176532,7 +186916,7 @@ ] }, "yAxis": { - "description": "What should the plane’s Y axis be?", + "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -176598,7 +186982,7 @@ "type": "string" }, "xAxis": { - "description": "What should the face’s X axis be?", + "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -176606,7 +186990,7 @@ ] }, "yAxis": { - "description": "What should the face’s Y axis be?", + "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -177662,6 +188046,94 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CircleThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -177997,7 +188469,7 @@ ] }, "xAxis": { - "description": "What should the plane’s X axis be?", + "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -178005,7 +188477,7 @@ ] }, "yAxis": { - "description": "What should the plane’s Y axis be?", + "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -178071,7 +188543,7 @@ "type": "string" }, "xAxis": { - "description": "What should the face’s X axis be?", + "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -178079,7 +188551,7 @@ ] }, "yAxis": { - "description": "What should the face’s Y axis be?", + "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -179133,6 +189605,94 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CircleThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -179468,7 +190028,7 @@ ] }, "xAxis": { - "description": "What should the plane’s X axis be?", + "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -179476,7 +190036,7 @@ ] }, "yAxis": { - "description": "What should the plane’s Y axis be?", + "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -179542,7 +190102,7 @@ "type": "string" }, "xAxis": { - "description": "What should the face’s X axis be?", + "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -179550,7 +190110,7 @@ ] }, "yAxis": { - "description": "What should the face’s Y axis be?", + "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -180605,6 +191165,94 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CircleThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -180940,7 +191588,7 @@ ] }, "xAxis": { - "description": "What should the plane’s X axis be?", + "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -180948,7 +191596,7 @@ ] }, "yAxis": { - "description": "What should the plane’s Y axis be?", + "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -181014,7 +191662,7 @@ "type": "string" }, "xAxis": { - "description": "What should the face’s X axis be?", + "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -181022,7 +191670,7 @@ ] }, "yAxis": { - "description": "What should the face’s Y axis be?", + "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -182156,6 +192804,94 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CircleThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -182491,7 +193227,7 @@ ] }, "xAxis": { - "description": "What should the plane’s X axis be?", + "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -182499,7 +193235,7 @@ ] }, "yAxis": { - "description": "What should the plane’s Y axis be?", + "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -182565,7 +193301,7 @@ "type": "string" }, "xAxis": { - "description": "What should the face’s X axis be?", + "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -182573,7 +193309,7 @@ ] }, "yAxis": { - "description": "What should the face’s Y axis be?", + "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -183364,6 +194100,94 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CircleThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -183742,7 +194566,7 @@ ] }, "xAxis": { - "description": "What should the plane’s X axis be?", + "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -183750,7 +194574,7 @@ ] }, "yAxis": { - "description": "What should the plane’s Y axis be?", + "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -183816,7 +194640,7 @@ "type": "string" }, "xAxis": { - "description": "What should the face’s X axis be?", + "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -183824,7 +194648,7 @@ ] }, "yAxis": { - "description": "What should the face’s Y axis be?", + "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -184837,6 +195661,94 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CircleThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -185215,7 +196127,7 @@ ] }, "xAxis": { - "description": "What should the plane’s X axis be?", + "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -185223,7 +196135,7 @@ ] }, "yAxis": { - "description": "What should the plane’s Y axis be?", + "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -185289,7 +196201,7 @@ "type": "string" }, "xAxis": { - "description": "What should the face’s X axis be?", + "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -185297,7 +196209,7 @@ ] }, "yAxis": { - "description": "What should the face’s Y axis be?", + "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -186308,6 +197220,94 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CircleThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -186686,7 +197686,7 @@ ] }, "xAxis": { - "description": "What should the plane’s X axis be?", + "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -186694,7 +197694,7 @@ ] }, "yAxis": { - "description": "What should the plane’s Y axis be?", + "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -186760,7 +197760,7 @@ "type": "string" }, "xAxis": { - "description": "What should the face’s X axis be?", + "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -186768,7 +197768,7 @@ ] }, "yAxis": { - "description": "What should the face’s Y axis be?", + "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -187780,6 +198780,94 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CircleThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -188158,7 +199246,7 @@ ] }, "xAxis": { - "description": "What should the plane’s X axis be?", + "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -188166,7 +199254,7 @@ ] }, "yAxis": { - "description": "What should the plane’s Y axis be?", + "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -188232,7 +199320,7 @@ "type": "string" }, "xAxis": { - "description": "What should the face’s X axis be?", + "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -188240,7 +199328,7 @@ ] }, "yAxis": { - "description": "What should the face’s Y axis be?", + "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -189327,6 +200415,94 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CircleThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -189705,7 +200881,7 @@ ] }, "xAxis": { - "description": "What should the plane’s X axis be?", + "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -189713,7 +200889,7 @@ ] }, "yAxis": { - "description": "What should the plane’s Y axis be?", + "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -189779,7 +200955,7 @@ "type": "string" }, "xAxis": { - "description": "What should the face’s X axis be?", + "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -189787,7 +200963,7 @@ ] }, "yAxis": { - "description": "What should the face’s Y axis be?", + "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -190653,7 +201829,7 @@ ] }, "xAxis": { - "description": "What should the plane’s X axis be?", + "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -190661,7 +201837,7 @@ ] }, "yAxis": { - "description": "What should the plane’s Y axis be?", + "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -190727,7 +201903,7 @@ "type": "string" }, "xAxis": { - "description": "What should the face’s X axis be?", + "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -190735,7 +201911,7 @@ ] }, "yAxis": { - "description": "What should the face’s Y axis be?", + "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -191577,6 +202753,94 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CircleThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -192128,7 +203392,7 @@ ] }, "xAxis": { - "description": "What should the plane’s X axis be?", + "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -192136,7 +203400,7 @@ ] }, "yAxis": { - "description": "What should the plane’s Y axis be?", + "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -192202,7 +203466,7 @@ "type": "string" }, "xAxis": { - "description": "What should the face’s X axis be?", + "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -192210,7 +203474,7 @@ ] }, "yAxis": { - "description": "What should the face’s Y axis be?", + "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -193052,6 +204316,94 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CircleThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -193895,6 +205247,94 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CircleThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -194273,7 +205713,7 @@ ] }, "xAxis": { - "description": "What should the plane’s X axis be?", + "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -194281,7 +205721,7 @@ ] }, "yAxis": { - "description": "What should the plane’s Y axis be?", + "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -194347,7 +205787,7 @@ "type": "string" }, "xAxis": { - "description": "What should the face’s X axis be?", + "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -194355,7 +205795,7 @@ ] }, "yAxis": { - "description": "What should the face’s Y axis be?", + "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -196303,6 +207743,94 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CircleThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -196845,7 +208373,7 @@ ] }, "xAxis": { - "description": "What should the plane’s X axis be?", + "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -196853,7 +208381,7 @@ ] }, "yAxis": { - "description": "What should the plane’s Y axis be?", + "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -196958,7 +208486,7 @@ "type": "string" }, "xAxis": { - "description": "What should the face’s X axis be?", + "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -196966,7 +208494,7 @@ ] }, "yAxis": { - "description": "What should the face’s Y axis be?", + "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -197200,7 +208728,7 @@ ] }, "xAxis": { - "description": "What should the plane’s X axis be?", + "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -197208,7 +208736,7 @@ ] }, "yAxis": { - "description": "What should the plane’s Y axis be?", + "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -197274,7 +208802,7 @@ "type": "string" }, "xAxis": { - "description": "What should the face’s X axis be?", + "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -197282,7 +208810,7 @@ ] }, "yAxis": { - "description": "What should the face’s Y axis be?", + "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -199291,6 +210819,94 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CircleThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -199833,7 +211449,7 @@ ] }, "xAxis": { - "description": "What should the plane’s X axis be?", + "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -199841,7 +211457,7 @@ ] }, "yAxis": { - "description": "What should the plane’s Y axis be?", + "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -199946,7 +211562,7 @@ "type": "string" }, "xAxis": { - "description": "What should the face’s X axis be?", + "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -199954,7 +211570,7 @@ ] }, "yAxis": { - "description": "What should the face’s Y axis be?", + "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -200188,7 +211804,7 @@ ] }, "xAxis": { - "description": "What should the plane’s X axis be?", + "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -200196,7 +211812,7 @@ ] }, "yAxis": { - "description": "What should the plane’s Y axis be?", + "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -200262,7 +211878,7 @@ "type": "string" }, "xAxis": { - "description": "What should the face’s X axis be?", + "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -200270,7 +211886,7 @@ ] }, "yAxis": { - "description": "What should the face’s Y axis be?", + "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -200990,6 +212606,94 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CircleThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -201368,7 +213072,7 @@ ] }, "xAxis": { - "description": "What should the plane’s X axis be?", + "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -201376,7 +213080,7 @@ ] }, "yAxis": { - "description": "What should the plane’s Y axis be?", + "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -201442,7 +213146,7 @@ "type": "string" }, "xAxis": { - "description": "What should the face’s X axis be?", + "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -201450,7 +213154,7 @@ ] }, "yAxis": { - "description": "What should the face’s Y axis be?", + "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -202562,6 +214266,94 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CircleThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -202940,7 +214732,7 @@ ] }, "xAxis": { - "description": "What should the plane’s X axis be?", + "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -202948,7 +214740,7 @@ ] }, "yAxis": { - "description": "What should the plane’s Y axis be?", + "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -203014,7 +214806,7 @@ "type": "string" }, "xAxis": { - "description": "What should the face’s X axis be?", + "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -203022,7 +214814,7 @@ ] }, "yAxis": { - "description": "What should the face’s Y axis be?", + "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -204129,6 +215921,94 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CircleThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -204507,7 +216387,7 @@ ] }, "xAxis": { - "description": "What should the plane’s X axis be?", + "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -204515,7 +216395,7 @@ ] }, "yAxis": { - "description": "What should the plane’s Y axis be?", + "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -204581,7 +216461,7 @@ "type": "string" }, "xAxis": { - "description": "What should the face’s X axis be?", + "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -204589,7 +216469,7 @@ ] }, "yAxis": { - "description": "What should the face’s Y axis be?", + "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -206550,6 +218430,94 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CircleThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -207092,7 +219060,7 @@ ] }, "xAxis": { - "description": "What should the plane’s X axis be?", + "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -207100,7 +219068,7 @@ ] }, "yAxis": { - "description": "What should the plane’s Y axis be?", + "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -207205,7 +219173,7 @@ "type": "string" }, "xAxis": { - "description": "What should the face’s X axis be?", + "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -207213,7 +219181,7 @@ ] }, "yAxis": { - "description": "What should the face’s Y axis be?", + "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -207447,7 +219415,7 @@ ] }, "xAxis": { - "description": "What should the plane’s X axis be?", + "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -207455,7 +219423,7 @@ ] }, "yAxis": { - "description": "What should the plane’s Y axis be?", + "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -207521,7 +219489,7 @@ "type": "string" }, "xAxis": { - "description": "What should the face’s X axis be?", + "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -207529,7 +219497,7 @@ ] }, "yAxis": { - "description": "What should the face’s Y axis be?", + "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -209536,6 +221504,94 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CircleThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -210078,7 +222134,7 @@ ] }, "xAxis": { - "description": "What should the plane’s X axis be?", + "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -210086,7 +222142,7 @@ ] }, "yAxis": { - "description": "What should the plane’s Y axis be?", + "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -210191,7 +222247,7 @@ "type": "string" }, "xAxis": { - "description": "What should the face’s X axis be?", + "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -210199,7 +222255,7 @@ ] }, "yAxis": { - "description": "What should the face’s Y axis be?", + "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -210433,7 +222489,7 @@ ] }, "xAxis": { - "description": "What should the plane’s X axis be?", + "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -210441,7 +222497,7 @@ ] }, "yAxis": { - "description": "What should the plane’s Y axis be?", + "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -210507,7 +222563,7 @@ "type": "string" }, "xAxis": { - "description": "What should the face’s X axis be?", + "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -210515,7 +222571,7 @@ ] }, "yAxis": { - "description": "What should the face’s Y axis be?", + "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -212523,6 +224579,94 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CircleThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -213065,7 +225209,7 @@ ] }, "xAxis": { - "description": "What should the plane’s X axis be?", + "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -213073,7 +225217,7 @@ ] }, "yAxis": { - "description": "What should the plane’s Y axis be?", + "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -213178,7 +225322,7 @@ "type": "string" }, "xAxis": { - "description": "What should the face’s X axis be?", + "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -213186,7 +225330,7 @@ ] }, "yAxis": { - "description": "What should the face’s Y axis be?", + "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -213420,7 +225564,7 @@ ] }, "xAxis": { - "description": "What should the plane’s X axis be?", + "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -213428,7 +225572,7 @@ ] }, "yAxis": { - "description": "What should the plane’s Y axis be?", + "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -213494,7 +225638,7 @@ "type": "string" }, "xAxis": { - "description": "What should the face’s X axis be?", + "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -213502,7 +225646,7 @@ ] }, "yAxis": { - "description": "What should the face’s Y axis be?", + "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -215021,6 +227165,94 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CircleThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -215563,7 +227795,7 @@ ] }, "xAxis": { - "description": "What should the plane’s X axis be?", + "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -215571,7 +227803,7 @@ ] }, "yAxis": { - "description": "What should the plane’s Y axis be?", + "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -215676,7 +227908,7 @@ "type": "string" }, "xAxis": { - "description": "What should the face’s X axis be?", + "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -215684,7 +227916,7 @@ ] }, "yAxis": { - "description": "What should the face’s Y axis be?", + "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -215918,7 +228150,7 @@ ] }, "xAxis": { - "description": "What should the plane’s X axis be?", + "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -215926,7 +228158,7 @@ ] }, "yAxis": { - "description": "What should the plane’s Y axis be?", + "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -215992,7 +228224,7 @@ "type": "string" }, "xAxis": { - "description": "What should the face’s X axis be?", + "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -216000,7 +228232,7 @@ ] }, "yAxis": { - "description": "What should the face’s Y axis be?", + "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -218007,6 +230239,94 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CircleThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -218549,7 +230869,7 @@ ] }, "xAxis": { - "description": "What should the plane’s X axis be?", + "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -218557,7 +230877,7 @@ ] }, "yAxis": { - "description": "What should the plane’s Y axis be?", + "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -218662,7 +230982,7 @@ "type": "string" }, "xAxis": { - "description": "What should the face’s X axis be?", + "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -218670,7 +230990,7 @@ ] }, "yAxis": { - "description": "What should the face’s Y axis be?", + "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -218904,7 +231224,7 @@ ] }, "xAxis": { - "description": "What should the plane’s X axis be?", + "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -218912,7 +231232,7 @@ ] }, "yAxis": { - "description": "What should the plane’s Y axis be?", + "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -218978,7 +231298,7 @@ "type": "string" }, "xAxis": { - "description": "What should the face’s X axis be?", + "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -218986,7 +231306,7 @@ ] }, "yAxis": { - "description": "What should the face’s Y axis be?", + "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -220489,6 +232809,94 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CircleThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -221031,7 +233439,7 @@ ] }, "xAxis": { - "description": "What should the plane’s X axis be?", + "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -221039,7 +233447,7 @@ ] }, "yAxis": { - "description": "What should the plane’s Y axis be?", + "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -221144,7 +233552,7 @@ "type": "string" }, "xAxis": { - "description": "What should the face’s X axis be?", + "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -221152,7 +233560,7 @@ ] }, "yAxis": { - "description": "What should the face’s Y axis be?", + "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -221386,7 +233794,7 @@ ] }, "xAxis": { - "description": "What should the plane’s X axis be?", + "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -221394,7 +233802,7 @@ ] }, "yAxis": { - "description": "What should the plane’s Y axis be?", + "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -221460,7 +233868,7 @@ "type": "string" }, "xAxis": { - "description": "What should the face’s X axis be?", + "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -221468,7 +233876,7 @@ ] }, "yAxis": { - "description": "What should the face’s Y axis be?", + "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -223476,6 +235884,94 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CircleThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -224018,7 +236514,7 @@ ] }, "xAxis": { - "description": "What should the plane’s X axis be?", + "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -224026,7 +236522,7 @@ ] }, "yAxis": { - "description": "What should the plane’s Y axis be?", + "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -224131,7 +236627,7 @@ "type": "string" }, "xAxis": { - "description": "What should the face’s X axis be?", + "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -224139,7 +236635,7 @@ ] }, "yAxis": { - "description": "What should the face’s Y axis be?", + "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -224373,7 +236869,7 @@ ] }, "xAxis": { - "description": "What should the plane’s X axis be?", + "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -224381,7 +236877,7 @@ ] }, "yAxis": { - "description": "What should the plane’s Y axis be?", + "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -224447,7 +236943,7 @@ "type": "string" }, "xAxis": { - "description": "What should the face’s X axis be?", + "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -224455,7 +236951,7 @@ ] }, "yAxis": { - "description": "What should the face’s Y axis be?", + "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -225313,6 +237809,94 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CircleThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -226378,6 +238962,94 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CircleThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -226958,7 +239630,7 @@ ] }, "xAxis": { - "description": "What should the plane’s X axis be?", + "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -226966,7 +239638,7 @@ ] }, "yAxis": { - "description": "What should the plane’s Y axis be?", + "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -227032,7 +239704,7 @@ "type": "string" }, "xAxis": { - "description": "What should the face’s X axis be?", + "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -227040,7 +239712,7 @@ ] }, "yAxis": { - "description": "What should the face’s Y axis be?", + "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -228164,6 +240836,94 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CircleThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -228499,7 +241259,7 @@ ] }, "xAxis": { - "description": "What should the plane’s X axis be?", + "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -228507,7 +241267,7 @@ ] }, "yAxis": { - "description": "What should the plane’s Y axis be?", + "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -228573,7 +241333,7 @@ "type": "string" }, "xAxis": { - "description": "What should the face’s X axis be?", + "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -228581,7 +241341,7 @@ ] }, "yAxis": { - "description": "What should the face’s Y axis be?", + "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -229452,6 +242212,94 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CircleThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -230362,6 +243210,94 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CircleThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -231277,6 +244213,94 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CircleThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -232187,6 +245211,94 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CircleThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -233097,6 +246209,94 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CircleThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -234007,6 +247207,94 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CircleThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -234922,6 +248210,94 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CircleThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -235832,6 +249208,94 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CircleThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -237092,6 +250556,94 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CircleThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -237427,7 +250979,7 @@ ] }, "xAxis": { - "description": "What should the plane’s X axis be?", + "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -237435,7 +250987,7 @@ ] }, "yAxis": { - "description": "What should the plane’s Y axis be?", + "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -237501,7 +251053,7 @@ "type": "string" }, "xAxis": { - "description": "What should the face’s X axis be?", + "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -237509,7 +251061,7 @@ ] }, "yAxis": { - "description": "What should the face’s Y axis be?", + "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -238564,6 +252116,94 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CircleThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -238899,7 +252539,7 @@ ] }, "xAxis": { - "description": "What should the plane’s X axis be?", + "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -238907,7 +252547,7 @@ ] }, "yAxis": { - "description": "What should the plane’s Y axis be?", + "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -238973,7 +252613,7 @@ "type": "string" }, "xAxis": { - "description": "What should the face’s X axis be?", + "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -238981,7 +252621,7 @@ ] }, "yAxis": { - "description": "What should the face’s Y axis be?", + "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -240038,6 +253678,94 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CircleThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -240373,7 +254101,7 @@ ] }, "xAxis": { - "description": "What should the plane’s X axis be?", + "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -240381,7 +254109,7 @@ ] }, "yAxis": { - "description": "What should the plane’s Y axis be?", + "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -240447,7 +254175,7 @@ "type": "string" }, "xAxis": { - "description": "What should the face’s X axis be?", + "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -240455,7 +254183,7 @@ ] }, "yAxis": { - "description": "What should the face’s Y axis be?", + "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -241650,6 +255378,94 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CircleThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -241985,7 +255801,7 @@ ] }, "xAxis": { - "description": "What should the plane’s X axis be?", + "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -241993,7 +255809,7 @@ ] }, "yAxis": { - "description": "What should the plane’s Y axis be?", + "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -242059,7 +255875,7 @@ "type": "string" }, "xAxis": { - "description": "What should the face’s X axis be?", + "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -242067,7 +255883,7 @@ ] }, "yAxis": { - "description": "What should the face’s Y axis be?", + "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -242706,7 +256522,7 @@ ] }, "xAxis": { - "description": "What should the plane’s X axis be?", + "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -242714,7 +256530,7 @@ ] }, "yAxis": { - "description": "What should the plane’s Y axis be?", + "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -242780,7 +256596,7 @@ "type": "string" }, "xAxis": { - "description": "What should the face’s X axis be?", + "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -242788,7 +256604,7 @@ ] }, "yAxis": { - "description": "What should the face’s Y axis be?", + "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -243630,6 +257446,94 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CircleThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -243965,7 +257869,7 @@ ] }, "xAxis": { - "description": "What should the plane’s X axis be?", + "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -243973,7 +257877,7 @@ ] }, "yAxis": { - "description": "What should the plane’s Y axis be?", + "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -244039,7 +257943,7 @@ "type": "string" }, "xAxis": { - "description": "What should the face’s X axis be?", + "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -244047,7 +257951,7 @@ ] }, "yAxis": { - "description": "What should the face’s Y axis be?", + "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -245105,6 +259009,94 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CircleThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -245440,7 +259432,7 @@ ] }, "xAxis": { - "description": "What should the plane’s X axis be?", + "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -245448,7 +259440,7 @@ ] }, "yAxis": { - "description": "What should the plane’s Y axis be?", + "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -245514,7 +259506,7 @@ "type": "string" }, "xAxis": { - "description": "What should the face’s X axis be?", + "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -245522,7 +259514,7 @@ ] }, "yAxis": { - "description": "What should the face’s Y axis be?", + "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -246116,6 +260108,94 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CircleThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -246494,7 +260574,7 @@ ] }, "xAxis": { - "description": "What should the plane’s X axis be?", + "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -246502,7 +260582,7 @@ ] }, "yAxis": { - "description": "What should the plane’s Y axis be?", + "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -246568,7 +260648,7 @@ "type": "string" }, "xAxis": { - "description": "What should the face’s X axis be?", + "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -246576,7 +260656,7 @@ ] }, "yAxis": { - "description": "What should the face’s Y axis be?", + "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -247690,6 +261770,94 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CircleThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -248068,7 +262236,7 @@ ] }, "xAxis": { - "description": "What should the plane’s X axis be?", + "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -248076,7 +262244,7 @@ ] }, "yAxis": { - "description": "What should the plane’s Y axis be?", + "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -248142,7 +262310,7 @@ "type": "string" }, "xAxis": { - "description": "What should the face’s X axis be?", + "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -248150,7 +262318,7 @@ ] }, "yAxis": { - "description": "What should the face’s Y axis be?", + "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -249071,7 +263239,7 @@ ] }, "xAxis": { - "description": "What should the plane’s X axis be?", + "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -249079,7 +263247,7 @@ ] }, "yAxis": { - "description": "What should the plane’s Y axis be?", + "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -249889,6 +264057,94 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CircleThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -250224,7 +264480,7 @@ ] }, "xAxis": { - "description": "What should the plane’s X axis be?", + "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -250232,7 +264488,7 @@ ] }, "yAxis": { - "description": "What should the plane’s Y axis be?", + "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -250298,7 +264554,7 @@ "type": "string" }, "xAxis": { - "description": "What should the face’s X axis be?", + "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -250306,7 +264562,7 @@ ] }, "yAxis": { - "description": "What should the face’s Y axis be?", + "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -250720,7 +264976,7 @@ ] }, "xAxis": { - "description": "What should the plane’s X axis be?", + "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -250728,7 +264984,7 @@ ] }, "yAxis": { - "description": "What should the plane’s Y axis be?", + "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -251538,6 +265794,94 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CircleThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -251873,7 +266217,7 @@ ] }, "xAxis": { - "description": "What should the plane’s X axis be?", + "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -251881,7 +266225,7 @@ ] }, "yAxis": { - "description": "What should the plane’s Y axis be?", + "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -251947,7 +266291,7 @@ "type": "string" }, "xAxis": { - "description": "What should the face’s X axis be?", + "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -251955,7 +266299,7 @@ ] }, "yAxis": { - "description": "What should the face’s Y axis be?", + "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -252283,7 +266627,7 @@ ] }, "xAxis": { - "description": "What should the plane’s X axis be?", + "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -252291,7 +266635,7 @@ ] }, "yAxis": { - "description": "What should the plane’s Y axis be?", + "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -252357,7 +266701,7 @@ "type": "string" }, "xAxis": { - "description": "What should the face’s X axis be?", + "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -252365,7 +266709,7 @@ ] }, "yAxis": { - "description": "What should the face’s Y axis be?", + "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -253207,6 +267551,94 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CircleThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -253542,7 +267974,7 @@ ] }, "xAxis": { - "description": "What should the plane’s X axis be?", + "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -253550,7 +267982,7 @@ ] }, "yAxis": { - "description": "What should the plane’s Y axis be?", + "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -253616,7 +268048,7 @@ "type": "string" }, "xAxis": { - "description": "What should the face’s X axis be?", + "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -253624,7 +268056,7 @@ ] }, "yAxis": { - "description": "What should the face’s Y axis be?", + "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -254234,6 +268666,94 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CircleThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -254612,7 +269132,7 @@ ] }, "xAxis": { - "description": "What should the plane’s X axis be?", + "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -254620,7 +269140,7 @@ ] }, "yAxis": { - "description": "What should the plane’s Y axis be?", + "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -254686,7 +269206,7 @@ "type": "string" }, "xAxis": { - "description": "What should the face’s X axis be?", + "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -254694,7 +269214,7 @@ ] }, "yAxis": { - "description": "What should the face’s Y axis be?", + "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -255713,6 +270233,94 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CircleThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -256091,7 +270699,7 @@ ] }, "xAxis": { - "description": "What should the plane’s X axis be?", + "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -256099,7 +270707,7 @@ ] }, "yAxis": { - "description": "What should the plane’s Y axis be?", + "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -256165,7 +270773,7 @@ "type": "string" }, "xAxis": { - "description": "What should the face’s X axis be?", + "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -256173,7 +270781,7 @@ ] }, "yAxis": { - "description": "What should the face’s Y axis be?", + "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -257236,6 +271844,94 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CircleThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -257614,7 +272310,7 @@ ] }, "xAxis": { - "description": "What should the plane’s X axis be?", + "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -257622,7 +272318,7 @@ ] }, "yAxis": { - "description": "What should the plane’s Y axis be?", + "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -257688,7 +272384,7 @@ "type": "string" }, "xAxis": { - "description": "What should the face’s X axis be?", + "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -257696,7 +272392,7 @@ ] }, "yAxis": { - "description": "What should the face’s Y axis be?", + "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -258759,6 +273455,94 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CircleThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -259137,7 +273921,7 @@ ] }, "xAxis": { - "description": "What should the plane’s X axis be?", + "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -259145,7 +273929,7 @@ ] }, "yAxis": { - "description": "What should the plane’s Y axis be?", + "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -259211,7 +273995,7 @@ "type": "string" }, "xAxis": { - "description": "What should the face’s X axis be?", + "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -259219,7 +274003,7 @@ ] }, "yAxis": { - "description": "What should the face’s Y axis be?", + "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -260660,6 +275444,94 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CircleThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -260995,7 +275867,7 @@ ] }, "xAxis": { - "description": "What should the plane’s X axis be?", + "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -261003,7 +275875,7 @@ ] }, "yAxis": { - "description": "What should the plane’s Y axis be?", + "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -261069,7 +275941,7 @@ "type": "string" }, "xAxis": { - "description": "What should the face’s X axis be?", + "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -261077,7 +275949,7 @@ ] }, "yAxis": { - "description": "What should the face’s Y axis be?", + "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -261942,6 +276814,94 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CircleThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -262898,6 +277858,94 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CircleThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -263276,7 +278324,7 @@ ] }, "xAxis": { - "description": "What should the plane’s X axis be?", + "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -263284,7 +278332,7 @@ ] }, "yAxis": { - "description": "What should the plane’s Y axis be?", + "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -263350,7 +278398,7 @@ "type": "string" }, "xAxis": { - "description": "What should the face’s X axis be?", + "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -263358,7 +278406,7 @@ ] }, "yAxis": { - "description": "What should the face’s Y axis be?", + "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -264373,6 +279421,94 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CircleThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -264751,7 +279887,7 @@ ] }, "xAxis": { - "description": "What should the plane’s X axis be?", + "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -264759,7 +279895,7 @@ ] }, "yAxis": { - "description": "What should the plane’s Y axis be?", + "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -264825,7 +279961,7 @@ "type": "string" }, "xAxis": { - "description": "What should the face’s X axis be?", + "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -264833,7 +279969,7 @@ ] }, "yAxis": { - "description": "What should the face’s Y axis be?", + "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -265913,6 +281049,94 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CircleThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -266291,7 +281515,7 @@ ] }, "xAxis": { - "description": "What should the plane’s X axis be?", + "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -266299,7 +281523,7 @@ ] }, "yAxis": { - "description": "What should the plane’s Y axis be?", + "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -266365,7 +281589,7 @@ "type": "string" }, "xAxis": { - "description": "What should the face’s X axis be?", + "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -266373,7 +281597,7 @@ ] }, "yAxis": { - "description": "What should the face’s Y axis be?", + "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -267484,6 +282708,94 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CircleThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -267862,7 +283174,7 @@ ] }, "xAxis": { - "description": "What should the plane’s X axis be?", + "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -267870,7 +283182,7 @@ ] }, "yAxis": { - "description": "What should the plane’s Y axis be?", + "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -267936,7 +283248,7 @@ "type": "string" }, "xAxis": { - "description": "What should the face’s X axis be?", + "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -267944,7 +283256,7 @@ ] }, "yAxis": { - "description": "What should the face’s Y axis be?", + "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -268959,6 +284271,94 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CircleThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -269337,7 +284737,7 @@ ] }, "xAxis": { - "description": "What should the plane’s X axis be?", + "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -269345,7 +284745,7 @@ ] }, "yAxis": { - "description": "What should the plane’s Y axis be?", + "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -269411,7 +284811,7 @@ "type": "string" }, "xAxis": { - "description": "What should the face’s X axis be?", + "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -269419,7 +284819,7 @@ ] }, "yAxis": { - "description": "What should the face’s Y axis be?", + "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -270499,6 +285899,94 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CircleThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -270877,7 +286365,7 @@ ] }, "xAxis": { - "description": "What should the plane’s X axis be?", + "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -270885,7 +286373,7 @@ ] }, "yAxis": { - "description": "What should the plane’s Y axis be?", + "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -270951,7 +286439,7 @@ "type": "string" }, "xAxis": { - "description": "What should the face’s X axis be?", + "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -270959,7 +286447,7 @@ ] }, "yAxis": { - "description": "What should the face’s Y axis be?", + "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -272070,6 +287558,94 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CircleThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -272448,7 +288024,7 @@ ] }, "xAxis": { - "description": "What should the plane’s X axis be?", + "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -272456,7 +288032,7 @@ ] }, "yAxis": { - "description": "What should the plane’s Y axis be?", + "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -272522,7 +288098,7 @@ "type": "string" }, "xAxis": { - "description": "What should the face’s X axis be?", + "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -272530,7 +288106,7 @@ ] }, "yAxis": { - "description": "What should the face’s Y axis be?", + "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -273545,6 +289121,94 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CircleThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -273923,7 +289587,7 @@ ] }, "xAxis": { - "description": "What should the plane’s X axis be?", + "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -273931,7 +289595,7 @@ ] }, "yAxis": { - "description": "What should the plane’s Y axis be?", + "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -273997,7 +289661,7 @@ "type": "string" }, "xAxis": { - "description": "What should the face’s X axis be?", + "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -274005,7 +289669,7 @@ ] }, "yAxis": { - "description": "What should the face’s Y axis be?", + "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -275085,6 +290749,94 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CircleThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -275463,7 +291215,7 @@ ] }, "xAxis": { - "description": "What should the plane’s X axis be?", + "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -275471,7 +291223,7 @@ ] }, "yAxis": { - "description": "What should the plane’s Y axis be?", + "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -275537,7 +291289,7 @@ "type": "string" }, "xAxis": { - "description": "What should the face’s X axis be?", + "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -275545,7 +291297,7 @@ ] }, "yAxis": { - "description": "What should the face’s Y axis be?", + "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -276763,6 +292515,94 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CircleThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -277141,7 +292981,7 @@ ] }, "xAxis": { - "description": "What should the plane’s X axis be?", + "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -277149,7 +292989,7 @@ ] }, "yAxis": { - "description": "What should the plane’s Y axis be?", + "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -277215,7 +293055,7 @@ "type": "string" }, "xAxis": { - "description": "What should the face’s X axis be?", + "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -277223,7 +293063,7 @@ ] }, "yAxis": { - "description": "What should the face’s Y axis be?", + "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -278238,6 +294078,94 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CircleThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -278616,7 +294544,7 @@ ] }, "xAxis": { - "description": "What should the plane’s X axis be?", + "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -278624,7 +294552,7 @@ ] }, "yAxis": { - "description": "What should the plane’s Y axis be?", + "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -278690,7 +294618,7 @@ "type": "string" }, "xAxis": { - "description": "What should the face’s X axis be?", + "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -278698,7 +294626,7 @@ ] }, "yAxis": { - "description": "What should the face’s Y axis be?", + "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -279778,6 +295706,94 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CircleThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -280156,7 +296172,7 @@ ] }, "xAxis": { - "description": "What should the plane’s X axis be?", + "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -280164,7 +296180,7 @@ ] }, "yAxis": { - "description": "What should the plane’s Y axis be?", + "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -280230,7 +296246,7 @@ "type": "string" }, "xAxis": { - "description": "What should the face’s X axis be?", + "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -280238,7 +296254,7 @@ ] }, "yAxis": { - "description": "What should the face’s Y axis be?", + "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -281344,6 +297360,94 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CircleThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -281722,7 +297826,7 @@ ] }, "xAxis": { - "description": "What should the plane’s X axis be?", + "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -281730,7 +297834,7 @@ ] }, "yAxis": { - "description": "What should the plane’s Y axis be?", + "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -281796,7 +297900,7 @@ "type": "string" }, "xAxis": { - "description": "What should the face’s X axis be?", + "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -281804,7 +297908,7 @@ ] }, "yAxis": { - "description": "What should the face’s Y axis be?", + "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -282819,6 +298923,94 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CircleThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -283197,7 +299389,7 @@ ] }, "xAxis": { - "description": "What should the plane’s X axis be?", + "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -283205,7 +299397,7 @@ ] }, "yAxis": { - "description": "What should the plane’s Y axis be?", + "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -283271,7 +299463,7 @@ "type": "string" }, "xAxis": { - "description": "What should the face’s X axis be?", + "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -283279,7 +299471,7 @@ ] }, "yAxis": { - "description": "What should the face’s Y axis be?", + "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -284359,6 +300551,94 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CircleThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -284737,7 +301017,7 @@ ] }, "xAxis": { - "description": "What should the plane’s X axis be?", + "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -284745,7 +301025,7 @@ ] }, "yAxis": { - "description": "What should the plane’s Y axis be?", + "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -284811,7 +301091,7 @@ "type": "string" }, "xAxis": { - "description": "What should the face’s X axis be?", + "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -284819,7 +301099,7 @@ ] }, "yAxis": { - "description": "What should the face’s Y axis be?", + "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -285925,6 +302205,94 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CircleThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -286303,7 +302671,7 @@ ] }, "xAxis": { - "description": "What should the plane’s X axis be?", + "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -286311,7 +302679,7 @@ ] }, "yAxis": { - "description": "What should the plane’s Y axis be?", + "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -286377,7 +302745,7 @@ "type": "string" }, "xAxis": { - "description": "What should the face’s X axis be?", + "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -286385,7 +302753,7 @@ ] }, "yAxis": { - "description": "What should the face’s Y axis be?", + "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -287400,6 +303768,94 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CircleThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -287778,7 +304234,7 @@ ] }, "xAxis": { - "description": "What should the plane’s X axis be?", + "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -287786,7 +304242,7 @@ ] }, "yAxis": { - "description": "What should the plane’s Y axis be?", + "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -287852,7 +304308,7 @@ "type": "string" }, "xAxis": { - "description": "What should the face’s X axis be?", + "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -287860,7 +304316,7 @@ ] }, "yAxis": { - "description": "What should the face’s Y axis be?", + "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -288940,6 +305396,94 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CircleThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -289318,7 +305862,7 @@ ] }, "xAxis": { - "description": "What should the plane’s X axis be?", + "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -289326,7 +305870,7 @@ ] }, "yAxis": { - "description": "What should the plane’s Y axis be?", + "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -289392,7 +305936,7 @@ "type": "string" }, "xAxis": { - "description": "What should the face’s X axis be?", + "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -289400,7 +305944,7 @@ ] }, "yAxis": { - "description": "What should the face’s Y axis be?", + "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -290506,6 +307050,94 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CircleThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -290884,7 +307516,7 @@ ] }, "xAxis": { - "description": "What should the plane’s X axis be?", + "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -290892,7 +307524,7 @@ ] }, "yAxis": { - "description": "What should the plane’s Y axis be?", + "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -290958,7 +307590,7 @@ "type": "string" }, "xAxis": { - "description": "What should the face’s X axis be?", + "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -290966,7 +307598,7 @@ ] }, "yAxis": { - "description": "What should the face’s Y axis be?", + "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -291981,6 +308613,94 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CircleThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -292359,7 +309079,7 @@ ] }, "xAxis": { - "description": "What should the plane’s X axis be?", + "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -292367,7 +309087,7 @@ ] }, "yAxis": { - "description": "What should the plane’s Y axis be?", + "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -292433,7 +309153,7 @@ "type": "string" }, "xAxis": { - "description": "What should the face’s X axis be?", + "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -292441,7 +309161,7 @@ ] }, "yAxis": { - "description": "What should the face’s Y axis be?", + "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -293521,6 +310241,94 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CircleThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -293899,7 +310707,7 @@ ] }, "xAxis": { - "description": "What should the plane’s X axis be?", + "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -293907,7 +310715,7 @@ ] }, "yAxis": { - "description": "What should the plane’s Y axis be?", + "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -293973,7 +310781,7 @@ "type": "string" }, "xAxis": { - "description": "What should the face’s X axis be?", + "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" @@ -293981,7 +310789,7 @@ ] }, "yAxis": { - "description": "What should the face’s Y axis be?", + "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" diff --git a/docs/kcl/types/Face.md b/docs/kcl/types/Face.md index b43319b33..e1456445d 100644 --- a/docs/kcl/types/Face.md +++ b/docs/kcl/types/Face.md @@ -19,8 +19,8 @@ A face. | `id` |`string`| The id of the face. | No | | `artifactId` |[`ArtifactId`](/docs/kcl/types/ArtifactId)| The artifact ID. | No | | `value` |`string`| The tag of the face. | No | -| `xAxis` |[`Point3d`](/docs/kcl/types/Point3d)| What should the face’s X axis be? | No | -| `yAxis` |[`Point3d`](/docs/kcl/types/Point3d)| What should the face’s Y axis be? | No | +| `xAxis` |[`Point3d`](/docs/kcl/types/Point3d)| What should the face's X axis be? | No | +| `yAxis` |[`Point3d`](/docs/kcl/types/Point3d)| What should the face's Y axis be? | No | | `zAxis` |[`Point3d`](/docs/kcl/types/Point3d)| The z-axis (normal). | No | | `solid` |[`Solid`](/docs/kcl/types/Solid)| The solid the face is on. | No | | `units` |[`UnitLen`](/docs/kcl/types/UnitLen)| A face. | No | diff --git a/docs/kcl/types/Path.md b/docs/kcl/types/Path.md index ba49c0228..db4e3d787 100644 --- a/docs/kcl/types/Path.md +++ b/docs/kcl/types/Path.md @@ -98,6 +98,29 @@ a complete arc | `__geoMeta` |[`GeoMeta`](/docs/kcl/types/GeoMeta)| Metadata. | No | +---- +A base path. + +**Type:** `object` + + + + + +## Properties + +| Property | Type | Description | Required | +|----------|------|-------------|----------| +| `type` |enum: `CircleThreePoint`| | No | +| `p1` |`[number, number]`| Point 1 of the circle | No | +| `p2` |`[number, number]`| Point 2 of the circle | No | +| `p3` |`[number, number]`| Point 3 of the circle | No | +| `from` |`[number, number]`| The from point. | No | +| `to` |`[number, number]`| The to point. | No | +| `tag` |[`TagDeclarator`](/docs/kcl/types#tag-declaration)| The tag of the path. | No | +| `__geoMeta` |[`GeoMeta`](/docs/kcl/types/GeoMeta)| Metadata. | No | + + ---- A path that is horizontal. diff --git a/docs/kcl/types/Plane.md b/docs/kcl/types/Plane.md index 597bc590f..29454606f 100644 --- a/docs/kcl/types/Plane.md +++ b/docs/kcl/types/Plane.md @@ -20,8 +20,8 @@ A plane. | `artifactId` |[`ArtifactId`](/docs/kcl/types/ArtifactId)| The artifact ID. | No | | `value` |[`PlaneType`](/docs/kcl/types/PlaneType)| A plane. | No | | `origin` |[`Point3d`](/docs/kcl/types/Point3d)| Origin of the plane. | No | -| `xAxis` |[`Point3d`](/docs/kcl/types/Point3d)| What should the plane’s X axis be? | No | -| `yAxis` |[`Point3d`](/docs/kcl/types/Point3d)| What should the plane’s Y axis be? | No | +| `xAxis` |[`Point3d`](/docs/kcl/types/Point3d)| What should the plane's X axis be? | No | +| `yAxis` |[`Point3d`](/docs/kcl/types/Point3d)| What should the plane's Y axis be? | No | | `zAxis` |[`Point3d`](/docs/kcl/types/Point3d)| The z-axis (normal). | No | | `units` |[`UnitLen`](/docs/kcl/types/UnitLen)| A plane. | No | | `__meta` |`[` [`Metadata`](/docs/kcl/types/Metadata) `]`| | No | diff --git a/docs/kcl/types/SketchSurface.md b/docs/kcl/types/SketchSurface.md index 7cc25214a..01019080b 100644 --- a/docs/kcl/types/SketchSurface.md +++ b/docs/kcl/types/SketchSurface.md @@ -29,8 +29,8 @@ A plane. | `artifactId` |[`ArtifactId`](/docs/kcl/types/ArtifactId)| The artifact ID. | No | | `value` |[`PlaneType`](/docs/kcl/types/PlaneType)| A sketch type. | No | | `origin` |[`Point3d`](/docs/kcl/types/Point3d)| Origin of the plane. | No | -| `xAxis` |[`Point3d`](/docs/kcl/types/Point3d)| What should the plane’s X axis be? | No | -| `yAxis` |[`Point3d`](/docs/kcl/types/Point3d)| What should the plane’s Y axis be? | No | +| `xAxis` |[`Point3d`](/docs/kcl/types/Point3d)| What should the plane's X axis be? | No | +| `yAxis` |[`Point3d`](/docs/kcl/types/Point3d)| What should the plane's Y axis be? | No | | `zAxis` |[`Point3d`](/docs/kcl/types/Point3d)| The z-axis (normal). | No | | `units` |[`UnitLen`](/docs/kcl/types/UnitLen)| A sketch type. | No | | `__meta` |`[` [`Metadata`](/docs/kcl/types/Metadata) `]`| | No | @@ -53,8 +53,8 @@ A face. | `id` |`string`| The id of the face. | No | | `artifactId` |[`ArtifactId`](/docs/kcl/types/ArtifactId)| The artifact ID. | No | | `value` |`string`| The tag of the face. | No | -| `xAxis` |[`Point3d`](/docs/kcl/types/Point3d)| What should the face’s X axis be? | No | -| `yAxis` |[`Point3d`](/docs/kcl/types/Point3d)| What should the face’s Y axis be? | No | +| `xAxis` |[`Point3d`](/docs/kcl/types/Point3d)| What should the face's X axis be? | No | +| `yAxis` |[`Point3d`](/docs/kcl/types/Point3d)| What should the face's Y axis be? | No | | `zAxis` |[`Point3d`](/docs/kcl/types/Point3d)| The z-axis (normal). | No | | `solid` |[`Solid`](/docs/kcl/types/Solid)| The solid the face is on. | No | | `units` |[`UnitLen`](/docs/kcl/types/UnitLen)| A sketch type. | No | diff --git a/e2e/playwright/basic-sketch.spec.ts b/e2e/playwright/basic-sketch.spec.ts index d1405a405..a274232a2 100644 --- a/e2e/playwright/basic-sketch.spec.ts +++ b/e2e/playwright/basic-sketch.spec.ts @@ -54,23 +54,26 @@ async function doBasicSketch( const startXPx = 600 await page.mouse.click(startXPx + PUR * 10, 500 - PUR * 10) if (openPanes.includes('code')) { - await expect(u.codeLocator).toHaveText(`sketch001 = startSketchOn('XZ') - |> startProfileAt(${commonPoints.startAt}, %)`) + await expect(u.codeLocator).toContainText( + `sketch001 = startSketchOn('XZ')profile001 = startProfileAt(${commonPoints.startAt}, sketch001)` + ) } await page.waitForTimeout(500) await page.mouse.click(startXPx + PUR * 20, 500 - PUR * 10) await page.waitForTimeout(500) if (openPanes.includes('code')) { - await expect(u.codeLocator).toHaveText(`sketch001 = startSketchOn('XZ') - |> startProfileAt(${commonPoints.startAt}, %) + await expect(u.codeLocator) + .toHaveText(`sketch001 = startSketchOn('XZ')profile001 = startProfileAt(${commonPoints.startAt}, sketch001) |> xLine(${commonPoints.num1}, %)`) } await page.waitForTimeout(500) await page.mouse.click(startXPx + PUR * 20, 500 - PUR * 20) if (openPanes.includes('code')) { - await expect(u.codeLocator).toHaveText(`sketch001 = startSketchOn('XZ') - |> startProfileAt(${commonPoints.startAt}, %) + await expect(u.codeLocator) + .toHaveText(`sketch001 = startSketchOn('XZ')profile001 = startProfileAt(${ + commonPoints.startAt + }, sketch001) |> xLine(${commonPoints.num1}, %) |> yLine(${commonPoints.num1 + 0.01}, %)`) } else { @@ -79,8 +82,10 @@ async function doBasicSketch( await page.waitForTimeout(200) await page.mouse.click(startXPx, 500 - PUR * 20) if (openPanes.includes('code')) { - await expect(u.codeLocator).toHaveText(`sketch001 = startSketchOn('XZ') - |> startProfileAt(${commonPoints.startAt}, %) + await expect(u.codeLocator) + .toHaveText(`sketch001 = startSketchOn('XZ')profile001 = startProfileAt(${ + commonPoints.startAt + }, sketch001) |> xLine(${commonPoints.num1}, %) |> yLine(${commonPoints.num1 + 0.01}, %) |> xLine(${commonPoints.num2 * -1}, %)`) @@ -137,8 +142,10 @@ async function doBasicSketch( // Open the code pane. await u.openKclCodePanel() - await expect(u.codeLocator).toHaveText(`sketch001 = startSketchOn('XZ') - |> startProfileAt(${commonPoints.startAt}, %) + await expect(u.codeLocator) + .toHaveText(`sketch001 = startSketchOn('XZ')profile001 = startProfileAt(${ + commonPoints.startAt + }, sketch001) |> xLine(${commonPoints.num1}, %, $seg01) |> yLine(${commonPoints.num1 + 0.01}, %) |> xLine(-segLen(seg01), %)`) diff --git a/e2e/playwright/can-create-sketches-on-all-planes-and-their-back-sides.spec.ts b/e2e/playwright/can-create-sketches-on-all-planes-and-their-back-sides.spec.ts index 47a8b2330..fba9973e7 100644 --- a/e2e/playwright/can-create-sketches-on-all-planes-and-their-back-sides.spec.ts +++ b/e2e/playwright/can-create-sketches-on-all-planes-and-their-back-sides.spec.ts @@ -43,8 +43,7 @@ test.describe( }, } - const code = `sketch001 = startSketchOn('${plane}') - |> startProfileAt([0.9, -1.22], %)` + const code = `sketch001 = startSketchOn('${plane}')profile001 = startProfileAt([0.9, -1.22], sketch001)` await u.openDebugPanel() diff --git a/e2e/playwright/feature-tree-pane.spec.ts b/e2e/playwright/feature-tree-pane.spec.ts index 312266611..9efdb4c84 100644 --- a/e2e/playwright/feature-tree-pane.spec.ts +++ b/e2e/playwright/feature-tree-pane.spec.ts @@ -35,7 +35,7 @@ sketch002 = startSketchOn(plane001) extrude001 = extrude(sketch002, length = 10) ` -const FEAUTRE_TREE_SKETCH_CODE = `sketch001 = startSketchOn('XZ') +const FEATURE_TREE_SKETCH_CODE = `sketch001 = startSketchOn('XZ') |> startProfileAt([0, 0], %) |> angledLine([0, 4], %, $rectangleSegmentA001) |> angledLine([ @@ -153,33 +153,16 @@ test.describe('Feature Tree pane', () => { `User can edit sketch (but not on offset plane yet) from the feature tree`, { tag: '@electron' }, async ({ context, homePage, scene, editor, toolbar, page }) => { - const unavailableToastMessage = page.getByText( - 'Editing sketches on faces or offset planes through the feature tree is not yet supported' - ) + await context.addInitScript((initialCode) => { + localStorage.setItem('persistCode', initialCode) + }, FEATURE_TREE_SKETCH_CODE) + await page.setBodyDimensions({ width: 1000, height: 500 }) + await homePage.goToModelingScene() - await context.folderSetupFn(async (dir) => { - const bracketDir = join(dir, 'test-sample') - await fsp.mkdir(bracketDir, { recursive: true }) - await fsp.writeFile( - join(bracketDir, 'main.kcl'), - FEAUTRE_TREE_SKETCH_CODE, - 'utf-8' - ) - }) - - await test.step('setup test', async () => { - await homePage.expectState({ - projectCards: [ - { - title: 'test-sample', - fileCount: 1, - }, - ], - sortBy: 'last-modified-desc', - }) - await homePage.openProject('test-sample') - await scene.waitForExecutionDone() - await toolbar.openFeatureTreePane() + await test.step('force re-exe', async () => { + await page.waitForTimeout(1000) + await editor.replaceCode('90', '91') + await page.waitForTimeout(1500) }) await test.step('On a default plane should work', async () => { @@ -199,24 +182,23 @@ test.describe('Feature Tree pane', () => { await test.step('On an extrude face should *not* work', async () => { // Tooltip is getting in the way of clicking, so I'm first closing the pane await toolbar.closeFeatureTreePane() + await page.waitForTimeout(1000) + await editor.replaceCode('91', '90') + await page.waitForTimeout(2000) await (await toolbar.getFeatureTreeOperation('Sketch', 1)).dblclick() + await expect( - unavailableToastMessage, - 'We should see a toast message about this' + toolbar.exitSketchBtn, + 'We should be in sketch mode now' ).toBeVisible() - await unavailableToastMessage.waitFor({ state: 'detached' }) - // TODO - turn on once we update the artifactGraph in Rust - // to include the proper source location for the extrude face - // await expect( - // toolbar.exitSketchBtn, - // 'We should be in sketch mode now' - // ).toBeVisible() - // await editor.expectState({ - // highlightedCode: '', - // diagnostics: [], - // activeLines: ['|>circle({center=[-1,2],radius=.5},%)'], - // }) - // await toolbar.exitSketchBtn.click() + await editor.expectState({ + highlightedCode: '', + diagnostics: [], + activeLines: [ + 'sketch002=startSketchOn(extrude001,rectangleSegmentB001)', + ], + }) + await toolbar.exitSketchBtn.click() }) await test.step('On an offset plane should *not* work', async () => { @@ -226,7 +208,7 @@ test.describe('Feature Tree pane', () => { await editor.expectState({ highlightedCode: '', diagnostics: [], - activeLines: ['|>circle({center=[0,0],radius=5},%)'], + activeLines: ['sketch003=startSketchOn(plane001)'], }) await expect( toolbar.exitSketchBtn, diff --git a/e2e/playwright/fixtures/sceneFixture.ts b/e2e/playwright/fixtures/sceneFixture.ts index f4edf27ad..7059680e1 100644 --- a/e2e/playwright/fixtures/sceneFixture.ts +++ b/e2e/playwright/fixtures/sceneFixture.ts @@ -1,6 +1,6 @@ import type { Page, Locator } from '@playwright/test' import { expect } from '@playwright/test' -import { uuidv4 } from 'lib/utils' +import { isArray, uuidv4 } from 'lib/utils' import { closeDebugPanel, doAndWaitForImageDiff, @@ -9,13 +9,15 @@ import { sendCustomCmd, } from '../test-utils' -type mouseParams = { +type MouseParams = { pixelDiff?: number + shouldDbClick?: boolean + delay?: number } -type mouseDragToParams = mouseParams & { +type MouseDragToParams = MouseParams & { fromPoint: { x: number; y: number } } -type mouseDragFromParams = mouseParams & { +type MouseDragFromParams = MouseParams & { toPoint: { x: number; y: number } } @@ -26,12 +28,12 @@ type SceneSerialised = { } } -type ClickHandler = (clickParams?: mouseParams) => Promise -type MoveHandler = (moveParams?: mouseParams) => Promise -type DblClickHandler = (clickParams?: mouseParams) => Promise -type DragToHandler = (dragParams: mouseDragToParams) => Promise +type ClickHandler = (clickParams?: MouseParams) => Promise +type MoveHandler = (moveParams?: MouseParams) => Promise +type DblClickHandler = (clickParams?: MouseParams) => Promise +type DragToHandler = (dragParams: MouseDragToParams) => Promise type DragFromHandler = ( - dragParams: mouseDragFromParams + dragParams: MouseDragFromParams ) => Promise export class SceneFixture { @@ -77,17 +79,26 @@ export class SceneFixture { { steps }: { steps: number } = { steps: 20 } ): [ClickHandler, MoveHandler, DblClickHandler] => [ - (clickParams?: mouseParams) => { + (clickParams?: MouseParams) => { if (clickParams?.pixelDiff) { return doAndWaitForImageDiff( this.page, - () => this.page.mouse.click(x, y), + () => + clickParams?.shouldDbClick + ? this.page.mouse.dblclick(x, y, { + delay: clickParams?.delay || 0, + }) + : this.page.mouse.click(x, y, { + delay: clickParams?.delay || 0, + }), clickParams.pixelDiff ) } - return this.page.mouse.click(x, y) + return clickParams?.shouldDbClick + ? this.page.mouse.dblclick(x, y, { delay: clickParams?.delay || 0 }) + : this.page.mouse.click(x, y, { delay: clickParams?.delay || 0 }) }, - (moveParams?: mouseParams) => { + (moveParams?: MouseParams) => { if (moveParams?.pixelDiff) { return doAndWaitForImageDiff( this.page, @@ -97,7 +108,7 @@ export class SceneFixture { } return this.page.mouse.move(x, y, { steps }) }, - (clickParams?: mouseParams) => { + (clickParams?: MouseParams) => { if (clickParams?.pixelDiff) { return doAndWaitForImageDiff( this.page, @@ -114,7 +125,7 @@ export class SceneFixture { { steps }: { steps: number } = { steps: 20 } ): [DragToHandler, DragFromHandler] => [ - (dragToParams: mouseDragToParams) => { + (dragToParams: MouseDragToParams) => { if (dragToParams?.pixelDiff) { return doAndWaitForImageDiff( this.page, @@ -131,7 +142,7 @@ export class SceneFixture { targetPosition: { x, y }, }) }, - (dragFromParams: mouseDragFromParams) => { + (dragFromParams: MouseDragFromParams) => { if (dragFromParams?.pixelDiff) { return doAndWaitForImageDiff( this.page, @@ -219,7 +230,7 @@ export class SceneFixture { } expectPixelColor = async ( - colour: [number, number, number], + colour: [number, number, number] | [number, number, number][], coords: { x: number; y: number }, diff: number ) => { @@ -241,22 +252,36 @@ export class SceneFixture { } } +function isColourArray( + colour: [number, number, number] | [number, number, number][] +): colour is [number, number, number][] { + return isArray(colour[0]) +} + export async function expectPixelColor( page: Page, - colour: [number, number, number], + colour: [number, number, number] | [number, number, number][], coords: { x: number; y: number }, diff: number ) { let finalValue = colour await expect - .poll(async () => { - const pixel = (await getPixelRGBs(page)(coords, 1))[0] - if (!pixel) return null - finalValue = pixel - return pixel.every( - (channel, index) => Math.abs(channel - colour[index]) < diff - ) - }) + .poll( + async () => { + const pixel = (await getPixelRGBs(page)(coords, 1))[0] + if (!pixel) return null + finalValue = pixel + if (!isColourArray(colour)) { + return pixel.every( + (channel, index) => Math.abs(channel - colour[index]) < diff + ) + } + return colour.some((c) => + c.every((channel, index) => Math.abs(pixel[index] - channel) < diff) + ) + }, + { timeout: 10_000 } + ) .toBeTruthy() .catch((cause) => { throw new Error( diff --git a/e2e/playwright/fixtures/toolbarFixture.ts b/e2e/playwright/fixtures/toolbarFixture.ts index c36f8ab78..daf438533 100644 --- a/e2e/playwright/fixtures/toolbarFixture.ts +++ b/e2e/playwright/fixtures/toolbarFixture.ts @@ -23,7 +23,10 @@ export class ToolbarFixture { helixButton!: Locator startSketchBtn!: Locator lineBtn!: Locator + tangentialArcBtn!: Locator + circleBtn!: Locator rectangleBtn!: Locator + lengthConstraintBtn!: Locator exitSketchBtn!: Locator editSketchBtn!: Locator fileTreeBtn!: Locator @@ -53,7 +56,10 @@ export class ToolbarFixture { this.helixButton = page.getByTestId('helix') this.startSketchBtn = page.getByTestId('sketch') this.lineBtn = page.getByTestId('line') + this.tangentialArcBtn = page.getByTestId('tangential-arc') + this.circleBtn = page.getByTestId('circle-center') this.rectangleBtn = page.getByTestId('corner-rectangle') + this.lengthConstraintBtn = page.getByTestId('constraint-length') this.exitSketchBtn = page.getByTestId('sketch-exit') this.editSketchBtn = page.getByText('Edit Sketch') this.fileTreeBtn = page.locator('[id="files-button-holder"]') @@ -119,6 +125,25 @@ export class ToolbarFixture { await expect(this.exeIndicator).toBeVisible({ timeout: 15_000 }) } } + selectCenterRectangle = async () => { + await this.page + .getByRole('button', { name: 'caret down Corner rectangle:' }) + .click() + await expect( + this.page.getByTestId('dropdown-center-rectangle') + ).toBeVisible() + await this.page.getByTestId('dropdown-center-rectangle').click() + } + + selectCircleThreePoint = async () => { + await this.page + .getByRole('button', { name: 'caret down Center circle:' }) + .click() + await expect( + this.page.getByTestId('dropdown-circle-three-points') + ).toBeVisible() + await this.page.getByTestId('dropdown-circle-three-points').click() + } async closePane(paneId: SidebarType) { return closePane(this.page, paneId + SIDEBAR_BUTTON_SUFFIX) diff --git a/e2e/playwright/point-click.spec.ts b/e2e/playwright/point-click.spec.ts index 68cdb5ebf..d1fe12c43 100644 --- a/e2e/playwright/point-click.spec.ts +++ b/e2e/playwright/point-click.spec.ts @@ -219,18 +219,13 @@ test.describe('Point-and-click tests', { tag: ['@skipWin'] }, () => { afterChamferSelectSnippet: 'sketch002 = startSketchOn(extrude001, seg03)', - afterRectangle1stClickSnippet: 'startProfileAt([205.96, 254.59], %)', - afterRectangle2ndClickSnippet: `angledLine([0, 11.39], %, $rectangleSegmentA002) - |> angledLine([ - segAng(rectangleSegmentA002) - 90, - 105.26 - ], %, $rectangleSegmentB001) - |> angledLine([ - segAng(rectangleSegmentA002), - -segLen(rectangleSegmentA002) - ], %, $rectangleSegmentC001) - |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) - |> close()`, + afterRectangle1stClickSnippet: + 'startProfileAt([205.96, 254.59], sketch002)', + afterRectangle2ndClickSnippet: `angledLine([0,11.39],%,$rectangleSegmentA002) + |>angledLine([segAng(rectangleSegmentA002)-90,105.26],%) + |>angledLine([segAng(rectangleSegmentA002),-segLen(rectangleSegmentA002)],%) + |>line(endAbsolute=[profileStartX(%),profileStartY(%)]) + |>close()`, }) await sketchOnAChamfer({ @@ -251,19 +246,15 @@ test.describe('Point-and-click tests', { tag: ['@skipWin'] }, () => { afterChamferSelectSnippet: 'sketch003 = startSketchOn(extrude001, seg04)', - afterRectangle1stClickSnippet: 'startProfileAt([-209.64, 255.28], %)', - afterRectangle2ndClickSnippet: `angledLine([0, 11.56], %, $rectangleSegmentA003) - |> angledLine([ - segAng(rectangleSegmentA003) - 90, - 106.84 - ], %, $rectangleSegmentB002) - |> angledLine([ - segAng(rectangleSegmentA003), - -segLen(rectangleSegmentA003) - ], %, $rectangleSegmentC002) - |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) - |> close()`, + afterRectangle1stClickSnippet: + 'startProfileAt([-209.64, 255.28], sketch003)', + afterRectangle2ndClickSnippet: `angledLine([0,11.56],%,$rectangleSegmentA003) + |>angledLine([segAng(rectangleSegmentA003)-90,106.84],%) + |>angledLine([segAng(rectangleSegmentA003),-segLen(rectangleSegmentA003)],%) + |>line(endAbsolute=[profileStartX(%),profileStartY(%)]) + |>close()`, }) + await sketchOnAChamfer({ clickCoords: { x: 677, y: 87 }, cameraPos: { x: -6200, y: 1500, z: 6200 }, @@ -276,19 +267,14 @@ test.describe('Point-and-click tests', { tag: ['@skipWin'] }, () => { ] }, %)`, afterChamferSelectSnippet: - 'sketch003 = startSketchOn(extrude001, seg04)', - afterRectangle1stClickSnippet: 'startProfileAt([75.8, 317.2], %)', - afterRectangle2ndClickSnippet: `angledLine([0, 11.56], %, $rectangleSegmentA003) - |> angledLine([ - segAng(rectangleSegmentA003) - 90, - 106.84 - ], %, $rectangleSegmentB002) - |> angledLine([ - segAng(rectangleSegmentA003), - -segLen(rectangleSegmentA003) - ], %, $rectangleSegmentC002) - |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) - |> close()`, + 'sketch004 = startSketchOn(extrude001, seg05)', + afterRectangle1stClickSnippet: + 'startProfileAt([82.57, 322.96], sketch004)', + afterRectangle2ndClickSnippet: `angledLine([0,11.16],%,$rectangleSegmentA004) + |>angledLine([segAng(rectangleSegmentA004)-90,103.07],%) + |>angledLine([segAng(rectangleSegmentA004),-segLen(rectangleSegmentA004)],%) + |>line(endAbsolute=[profileStartX(%),profileStartY(%)]) + |>close()`, }) /// last one await sketchOnAChamfer({ @@ -301,104 +287,98 @@ test.describe('Point-and-click tests', { tag: ['@skipWin'] }, () => { }, %)`, afterChamferSelectSnippet: 'sketch005 = startSketchOn(extrude001, seg06)', - afterRectangle1stClickSnippet: 'startProfileAt([-23.43, 19.69], %)', - afterRectangle2ndClickSnippet: `angledLine([0, 9.1], %, $rectangleSegmentA005) - - |> angledLine([ - segAng(rectangleSegmentA005) - 90, - 84.07 - ], %, $rectangleSegmentB004) - |> angledLine([ - segAng(rectangleSegmentA005), - -segLen(rectangleSegmentA005) - ], %, $rectangleSegmentC004) - |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) - |> close()`, + afterRectangle1stClickSnippet: + 'startProfileAt([-23.43, 19.69], sketch005)', + afterRectangle2ndClickSnippet: `angledLine([0,9.1],%,$rectangleSegmentA005) + |>angledLine([segAng(rectangleSegmentA005)-90,84.07],%) + |>angledLine([segAng(rectangleSegmentA005),-segLen(rectangleSegmentA005)],%) + |>line(endAbsolute=[profileStartX(%),profileStartY(%)]) + |>close()`, }) await test.step('verify at the end of the test that final code is what is expected', async () => { await editor.expectEditor.toContain( `sketch001 = startSketchOn('XZ') + |> startProfileAt([75.8, 317.2], %) // [$startCapTag, $EndCapTag] + |> angledLine([0, 268.43], %, $rectangleSegmentA001) + |> angledLine([ + segAng(rectangleSegmentA001) - 90, + 217.26 + ], %, $seg01) + |> angledLine([ + segAng(rectangleSegmentA001), + -segLen(rectangleSegmentA001) + ], %, $yo) + |> line(endAbsolute = [profileStartX(%), profileStartY(%)], tag = $seg02) + |> close() +extrude001 = extrude(sketch001, length = 100) + |> chamfer({ + length = 30, + tags = [getOppositeEdge(seg01)] + }, %, $seg03) + |> chamfer({ length = 30, tags = [seg01] }, %, $seg04) + |> chamfer({ + length = 30, + tags = [getNextAdjacentEdge(seg02)] + }, %, $seg05) + |> chamfer({ + length = 30, + tags = [getNextAdjacentEdge(yo)] + }, %, $seg06) +sketch005 = startSketchOn(extrude001, seg06) +profile004 = startProfileAt([-23.43, 19.69], sketch005) + |> angledLine([0, 9.1], %, $rectangleSegmentA005) + |> angledLine([ + segAng(rectangleSegmentA005) - 90, + 84.07 + ], %) + |> angledLine([ + segAng(rectangleSegmentA005), + -segLen(rectangleSegmentA005) + ], %) + |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) + |> close() +sketch004 = startSketchOn(extrude001, seg05) +profile003 = startProfileAt([82.57, 322.96], sketch004) + |> angledLine([0, 11.16], %, $rectangleSegmentA004) + |> angledLine([ + segAng(rectangleSegmentA004) - 90, + 103.07 + ], %) + |> angledLine([ + segAng(rectangleSegmentA004), + -segLen(rectangleSegmentA004) + ], %) + |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) + |> close() +sketch003 = startSketchOn(extrude001, seg04) +profile002 = startProfileAt([-209.64, 255.28], sketch003) + |> angledLine([0, 11.56], %, $rectangleSegmentA003) + |> angledLine([ + segAng(rectangleSegmentA003) - 90, + 106.84 + ], %) + |> angledLine([ + segAng(rectangleSegmentA003), + -segLen(rectangleSegmentA003) + ], %) + |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) + |> close() +sketch002 = startSketchOn(extrude001, seg03) +profile001 = startProfileAt([205.96, 254.59], sketch002) + |> angledLine([0, 11.39], %, $rectangleSegmentA002) + |> angledLine([ + segAng(rectangleSegmentA002) - 90, + 105.26 + ], %) + |> angledLine([ + segAng(rectangleSegmentA002), + -segLen(rectangleSegmentA002) + ], %) + |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) + |> close() - |> startProfileAt([75.8, 317.2], %) // [$startCapTag, $EndCapTag] - |> angledLine([0, 268.43], %, $rectangleSegmentA001) - |> angledLine([ - segAng(rectangleSegmentA001) - 90, - 217.26 - ], %, $seg01) - |> angledLine([ - segAng(rectangleSegmentA001), - -segLen(rectangleSegmentA001) - ], %, $yo) - |> line(endAbsolute = [profileStartX(%), profileStartY(%)], tag = $seg02) - |> close() - extrude001 = extrude(sketch001, length = 100) - |> chamfer({ - length = 30, - tags = [getOppositeEdge(seg01)] - }, %, $seg03) - |> chamfer({ length = 30, tags = [seg01] }, %, $seg04) - |> chamfer({ - length = 30, - tags = [getNextAdjacentEdge(seg02)] - }, %, $seg05) - |> chamfer({ - length = 30, - tags = [getNextAdjacentEdge(yo)] - }, %, $seg06) - sketch005 = startSketchOn(extrude001, seg06) - |> startProfileAt([-23.43,19.69], %) - |> angledLine([0, 9.1], %, $rectangleSegmentA005) - |> angledLine([ - segAng(rectangleSegmentA005) - 90, - 84.07 - ], %, $rectangleSegmentB004) - |> angledLine([ - segAng(rectangleSegmentA005), - -segLen(rectangleSegmentA005) - ], %, $rectangleSegmentC004) - |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) - |> close() - sketch004 = startSketchOn(extrude001, seg05) - |> startProfileAt([82.57,322.96], %) - |> angledLine([0, 11.16], %, $rectangleSegmentA004) - |> angledLine([ - segAng(rectangleSegmentA004) - 90, - 103.07 - ], %, $rectangleSegmentB003) - |> angledLine([ - segAng(rectangleSegmentA004), - -segLen(rectangleSegmentA004) - ], %, $rectangleSegmentC003) - |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) - |> close() - sketch003 = startSketchOn(extrude001, seg04) - |> startProfileAt([-209.64,255.28], %) - |> angledLine([0, 11.56], %, $rectangleSegmentA003) - |> angledLine([ - segAng(rectangleSegmentA003) - 90, - 106.84 - ], %, $rectangleSegmentB002) - |> angledLine([ - segAng(rectangleSegmentA003), - -segLen(rectangleSegmentA003) - ], %, $rectangleSegmentC002) - |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) - |> close() - sketch002 = startSketchOn(extrude001, seg03) - |> startProfileAt([205.96,254.59], %) - |> angledLine([0, 11.39], %, $rectangleSegmentA002) - |> angledLine([ - segAng(rectangleSegmentA002) - 90, - 105.26 - ], %, $rectangleSegmentB001) - |> angledLine([ - segAng(rectangleSegmentA002), - -segLen(rectangleSegmentA002) - ], %, $rectangleSegmentC001) - |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) - |> close() - `, +`, { shouldNormalise: true } ) }) @@ -443,18 +423,13 @@ test.describe('Point-and-click tests', { tag: ['@skipWin'] }, () => { beforeChamferSnippetEnd: '}, extrude001)', afterChamferSelectSnippet: 'sketch002 = startSketchOn(extrude001, seg03)', - afterRectangle1stClickSnippet: 'startProfileAt([205.96, 254.59], %)', - afterRectangle2ndClickSnippet: `angledLine([0, 11.39], %, $rectangleSegmentA002) - |> angledLine([ - segAng(rectangleSegmentA002) - 90, - 105.26 - ], %, $rectangleSegmentB001) - |> angledLine([ - segAng(rectangleSegmentA002), - -segLen(rectangleSegmentA002) - ], %, $rectangleSegmentC001) - |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) - |> close()`, + afterRectangle1stClickSnippet: + 'startProfileAt([205.96, 254.59], sketch002)', + afterRectangle2ndClickSnippet: `angledLine([0,11.39],%,$rectangleSegmentA002) + |>angledLine([segAng(rectangleSegmentA002)-90,105.26],%) + |>angledLine([segAng(rectangleSegmentA002),-segLen(rectangleSegmentA002)],%) + |>line(endAbsolute=[profileStartX(%),profileStartY(%)]) + |>close()`, }) await editor.expectEditor.toContain( `sketch001 = startSketchOn('XZ') @@ -484,17 +459,17 @@ chamf = chamfer({ ] }, %) sketch002 = startSketchOn(extrude001, seg03) - |> startProfileAt([205.96, 254.59], %) +profile001 = startProfileAt([205.96, 254.59], sketch002) |> angledLine([0, 11.39], %, $rectangleSegmentA002) |> angledLine([ segAng(rectangleSegmentA002) - 90, 105.26 - ], %, $rectangleSegmentB001) + ], %) |> angledLine([ segAng(rectangleSegmentA002), -segLen(rectangleSegmentA002) - ], %, $rectangleSegmentC001) - |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) + ], %) + |> line(endAbsolute=[profileStartX(%), profileStartY(%)]) |> close() `, { shouldNormalise: true } @@ -561,10 +536,10 @@ sketch002 = startSketchOn(extrude001, seg03) const expectedCodeSnippets = { sketchOnXzPlane: `sketch001 = startSketchOn('XZ')`, - pointAtOrigin: `startProfileAt([${originSloppy.kcl[0]}, ${originSloppy.kcl[1]}], %)`, + pointAtOrigin: `startProfileAt([${originSloppy.kcl[0]}, ${originSloppy.kcl[1]}], sketch001)`, segmentOnXAxis: `xLine(${xAxisSloppy.kcl[0]}, %)`, - afterSegmentDraggedOffYAxis: `startProfileAt([${offYAxis.kcl[0]}, ${offYAxis.kcl[1]}], %)`, - afterSegmentDraggedOnYAxis: `startProfileAt([${yAxisSloppy.kcl[0]}, ${yAxisSloppy.kcl[1]}], %)`, + afterSegmentDraggedOffYAxis: `startProfileAt([${offYAxis.kcl[0]}, ${offYAxis.kcl[1]}], sketch001)`, + afterSegmentDraggedOnYAxis: `startProfileAt([${yAxisSloppy.kcl[0]}, ${yAxisSloppy.kcl[1]}], sketch001)`, } await test.step(`Start a sketch on the XZ plane`, async () => { @@ -605,6 +580,7 @@ sketch002 = startSketchOn(extrude001, seg03) expectedCodeSnippets.afterSegmentDraggedOnYAxis ) }) + await editor.page.waitForTimeout(1000) }) test(`Verify user can double-click to edit a sketch`, async ({ @@ -1397,12 +1373,12 @@ sketch002 = startSketchOn('XZ') await clickOnSketch2() await page.waitForTimeout(500) await cmdBar.progressCmdBar() + await toolbar.openPane('code') await page.waitForTimeout(500) }) await test.step(`Confirm code is added to the editor, scene has changed`, async () => { await scene.expectPixelColor([135, 64, 73], testPoint, 15) - await toolbar.openPane('code') await editor.expectEditor.toContain(sweepDeclaration) await editor.expectState({ diagnostics: [], diff --git a/e2e/playwright/sketch-tests.spec.ts b/e2e/playwright/sketch-tests.spec.ts index 6960e9990..bd7e34793 100644 --- a/e2e/playwright/sketch-tests.spec.ts +++ b/e2e/playwright/sketch-tests.spec.ts @@ -7,6 +7,7 @@ import { getMovementUtils, getUtils, PERSIST_MODELING_CONTEXT, + TEST_COLORS, } from './test-utils' import { uuidv4, roundOff } from 'lib/utils' import { SceneFixture } from './fixtures/sceneFixture' @@ -101,25 +102,28 @@ test.describe('Sketch tests', { tag: ['@skipWin'] }, () => { }) test('Can delete most of a sketch and the line tool will still work', async ({ page, - homePage, scene, + homePage, }) => { const u = await getUtils(page) await page.addInitScript(async () => { localStorage.setItem( 'persistCode', `sketch001 = startSketchOn('XZ') - |> startProfileAt([4.61, -14.01], %) - |> xLine(12.73, %) - |> tangentialArcTo([24.95, -5.38], %)` + |> startProfileAt([2.61, -4.01], %) + |> xLine(8.73, %) + |> tangentialArcTo([8.33, -1.31], %)` ) }) await homePage.goToModelingScene() await scene.waitForExecutionDone() + await scene.expectPixelColor(TEST_COLORS.WHITE, { x: 587, y: 270 }, 15) + await expect(async () => { - await page.getByText('tangentialArcTo([24.95, -5.38], %)').click() + await page.mouse.click(700, 200) + await page.getByText('tangentialArcTo([8.33, -1.31], %)').click() await expect( page.getByRole('button', { name: 'Edit Sketch' }) ).toBeEnabled({ timeout: 2000 }) @@ -128,7 +132,7 @@ test.describe('Sketch tests', { tag: ['@skipWin'] }, () => { await page.waitForTimeout(600) // wait for animation - await page.getByText('tangentialArcTo([24.95, -5.38], %)').click() + await page.getByText('tangentialArcTo([8.33, -1.31], %)').click() await page.keyboard.press('End') await page.keyboard.down('Shift') await page.keyboard.press('ArrowUp') @@ -140,23 +144,23 @@ test.describe('Sketch tests', { tag: ['@skipWin'] }, () => { await page.waitForTimeout(100) await page.getByRole('button', { name: 'line Line', exact: true }).click() + await page.waitForTimeout(500) + // click start profileAt handle to continue profile + await page.mouse.click(702, 406, { delay: 500 }) await page.waitForTimeout(100) + await page.mouse.move(800, 150) await expect(async () => { - await page.mouse.move(700, 200, { steps: 25 }) + // click to add segment await page.mouse.click(700, 200) - await expect - .poll(u.crushKclCodeIntoOneLineAndThenMaybeSome, { timeout: 1000 }) - .toBe( - `sketch001 = startSketchOn('XZ') - |> startProfileAt([4.61,-14.01], %) - |> yLine(15.95, %) -` - .replaceAll(' ', '') - .replaceAll('\n', '') - ) - }).toPass({ timeout: 40_000, intervals: [1_000] }) + await expect.poll(u.normalisedEditorCode, { timeout: 1000 }) + .toBe(`sketch002 = startSketchOn('XZ') +sketch001 = startProfileAt([12.34, -12.34], sketch002) + |> yLine(12.34, %) + +`) + }).toPass({ timeout: 5_000, intervals: [1_000] }) }) test('Can exit selection of face', async ({ page, homePage }) => { @@ -684,7 +688,7 @@ test.describe('Sketch tests', { tag: ['@skipWin'] }, () => { await page.waitForTimeout(500) // TODO detect animation ending, or disable animation await click00r(0, 0) - codeStr += ` |> startProfileAt(${toSU([0, 0])}, %)` + codeStr += `profile001 = startProfileAt(${toSU([0, 0])}, sketch001)` await expect(u.codeLocator).toHaveText(codeStr) await click00r(50, 0) @@ -720,7 +724,7 @@ test.describe('Sketch tests', { tag: ['@skipWin'] }, () => { await u.closeDebugPanel() await click00r(30, 0) - codeStr += ` |> startProfileAt([2.03, 0], %)` + codeStr += `profile002 = startProfileAt([2.03, 0], sketch002)` await expect(u.codeLocator).toHaveText(codeStr) // TODO: I couldn't use `toSU` here because of some rounding error causing @@ -756,7 +760,9 @@ test.describe('Sketch tests', { tag: ['@skipWin'] }, () => { await u.openDebugPanel() const code = `sketch001 = startSketchOn('-XZ') - |> startProfileAt([${roundOff(scale * 69.6)}, ${roundOff(scale * 34.8)}], %) +profile001 = startProfileAt([${roundOff(scale * 69.6)}, ${roundOff( + scale * 34.8 + )}], sketch001) |> xLine(${roundOff(scale * 139.19)}, %) |> yLine(-${roundOff(scale * 139.2)}, %) |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) @@ -822,11 +828,17 @@ test.describe('Sketch tests', { tag: ['@skipWin'] }, () => { await expect(page.locator('.cm-content')).not.toHaveText(prevContent) prevContent = await page.locator('.cm-content').innerText() - await expect(page.locator('.cm-content')).toHaveText(code) - // Assert the tool was unequipped + await expect + .poll(async () => { + const text = await page.locator('.cm-content').innerText() + return text.replace(/\s/g, '') + }) + .toBe(code.replace(/\s/g, '')) + + // Assert the tool stays equipped after a profile is closed (ready for the next one) await expect( page.getByRole('button', { name: 'line Line', exact: true }) - ).not.toHaveAttribute('aria-pressed', 'true') + ).toHaveAttribute('aria-pressed', 'true') // exit sketch await u.openAndClearDebugPanel() @@ -1244,7 +1256,7 @@ test.describe('Sketch mode should be toleratant to syntax errors', () => { const [objClick] = scene.makeMouseHelpers(600, 250) const arrowHeadLocation = { x: 706, y: 129 } as const - const arrowHeadWhite: [number, number, number] = [255, 255, 255] + const arrowHeadWhite = TEST_COLORS.WHITE const backgroundGray: [number, number, number] = [28, 28, 28] const verifyArrowHeadColor = async (c: [number, number, number]) => scene.expectPixelColor(c, arrowHeadLocation, 15) @@ -1340,6 +1352,1220 @@ test.describe(`Sketching with offset planes`, () => { }) }) +test.describe('multi-profile sketching', () => { + test( + `snapToProfile start only works for current profile`, + { tag: ['@skipWin'] }, + async ({ context, page, scene, toolbar, editor, homePage }) => { + // We seed the scene with a single offset plane + await context.addInitScript(() => { + localStorage.setItem( + 'persistCode', + `sketch001 = startSketchOn('XZ') +profile002 = startProfileAt([40.68, 87.67], sketch001) + |> xLine(239.17, %) +profile003 = startProfileAt([206.63, -56.73], sketch001) + |> xLine(-156.32, %) +` + ) + }) + + await homePage.goToModelingScene() + await expect( + page.getByRole('button', { name: 'Start Sketch' }) + ).not.toBeDisabled() + + const [onSegmentClick] = scene.makeMouseHelpers(604, 349) + const [endOfLowerSegClick, endOfLowerSegMove] = scene.makeMouseHelpers( + 697, + 360 + ) + const [profileStartOfHigherSegClick, profileStartOfHigherSegMove] = + scene.makeMouseHelpers(677, 78) + const tanArcLocation = { x: 624, y: 340 } as const + + await test.step('enter sketch mode', async () => { + await onSegmentClick({ shouldDbClick: true }) + await page.waitForTimeout(600) + }) + + const codeFromTangentialArc = ` |> tangentialArcTo([39.49, 88.22], %)` + await test.step('check that tangential tool does not snap to other profile starts', async () => { + await toolbar.tangentialArcBtn.click() + await endOfLowerSegMove() + await endOfLowerSegClick() + await profileStartOfHigherSegClick() + await editor.expectEditor.toContain(codeFromTangentialArc) + await editor.expectEditor.not.toContain( + `[profileStartX(%), profileStartY(%)]` + ) + }) + + await test.step('remove tangential arc code to reset', async () => { + await scene.expectPixelColor(TEST_COLORS.WHITE, tanArcLocation, 15) + await editor.replaceCode(codeFromTangentialArc, '') + // check pixel is now gray at tanArcLocation to verify code has executed + await scene.expectPixelColor([26, 26, 26], tanArcLocation, 15) + await editor.expectEditor.not.toContain( + `tangentialArcTo([39.49, 88.22], %)` + ) + }) + + await test.step('check that tangential tool does snap to current profile start', async () => { + await expect + .poll(async () => { + await toolbar.lineBtn.click() + return toolbar.lineBtn.getAttribute('aria-pressed') + }) + .toBe('true') + await profileStartOfHigherSegMove() + await endOfLowerSegMove() + await endOfLowerSegClick() + await profileStartOfHigherSegClick() + await editor.expectEditor.toContain('line(end = [-10.82, 144.95])') + await editor.expectEditor.not.toContain( + `[profileStartX(%), profileStartY(%)]` + ) + }) + } + ) + test('Can add multiple profiles to a sketch (all tool types)', async ({ + scene, + toolbar, + editor, + page, + homePage, + }) => { + await page.setBodyDimensions({ width: 1000, height: 500 }) + await homePage.goToModelingScene() + await expect( + page.getByRole('button', { name: 'Start Sketch' }) + ).not.toBeDisabled() + + const [selectXZPlane] = scene.makeMouseHelpers(650, 150) + + const [startProfile1] = scene.makeMouseHelpers(568, 70) + const [endLineStartTanArc] = scene.makeMouseHelpers(701, 78) + const [endArcStartLine] = scene.makeMouseHelpers(745, 189) + + const [startProfile2] = scene.makeMouseHelpers(782, 80) + const [profile2Point2] = scene.makeMouseHelpers(921, 90) + const [profile2Point3] = scene.makeMouseHelpers(953, 178) + + const [circle1Center] = scene.makeMouseHelpers(842, 147) + const [circle1Radius] = scene.makeMouseHelpers(870, 171) + + const [circle2Center] = scene.makeMouseHelpers(850, 222) + const [circle2Radius] = scene.makeMouseHelpers(843, 230) + + const [crnRect1point1] = scene.makeMouseHelpers(583, 205) + const [crnRect1point2] = scene.makeMouseHelpers(618, 320) + + const [crnRect2point1] = scene.makeMouseHelpers(663, 215) + const [crnRect2point2] = scene.makeMouseHelpers(744, 276) + + const [cntrRect1point1] = scene.makeMouseHelpers(624, 387) + const [cntrRect1point2] = scene.makeMouseHelpers(676, 355) + + const [cntrRect2point1] = scene.makeMouseHelpers(785, 332) + const [cntrRect2point2] = scene.makeMouseHelpers(808, 286) + + const [circle3Point1p1, circle3Point1p1Move] = scene.makeMouseHelpers( + 630, + 465 + ) + const [circle3Point1p2, circle3Point1p2Move] = scene.makeMouseHelpers( + 673, + 340 + ) + const [circle3Point1p3, circle3Point1p3Move] = scene.makeMouseHelpers( + 734, + 414 + ) + + const [circle3Point2p1, circle3Point2p1Move] = scene.makeMouseHelpers( + 876, + 351 + ) + const [circle3Point2p2, circle3Point2p2Move] = scene.makeMouseHelpers( + 875, + 279 + ) + const [circle3Point2p3, circle3Point2p3Move] = scene.makeMouseHelpers( + 834, + 306 + ) + + await toolbar.startSketchPlaneSelection() + await selectXZPlane() + // timeout wait for engine animation is unavoidable + await page.waitForTimeout(600) + await editor.expectEditor.toContain(`sketch001 = startSketchOn('XZ')`) + await test.step('Create a close profile stopping mid profile to equip the tangential arc, and than back to the line tool', async () => { + await startProfile1() + await editor.expectEditor.toContain( + `profile001 = startProfileAt([4.61, 12.21], sketch001)` + ) + + await endLineStartTanArc() + await editor.expectEditor.toContain(`|> line(end = [9.02, -0.55])`) + await toolbar.tangentialArcBtn.click() + await page.waitForTimeout(300) + await page.mouse.click(745, 359) + await page.waitForTimeout(300) + await endLineStartTanArc({ delay: 544 }) + + await endArcStartLine() + await editor.expectEditor.toContain( + `|> tangentialArcTo([16.61, 4.14], %)` + ) + await toolbar.lineBtn.click() + await page.waitForTimeout(300) + await endArcStartLine() + + await page.mouse.click(572, 110) + await editor.expectEditor.toContain(`|> line(end = [-11.73, 5.35])`) + await startProfile1() + await editor.expectEditor.toContain( + `|> line(endAbsolute = [profileStartX(%), profileStartY(%)]) + |> close()`, + { shouldNormalise: true } + ) + await page.waitForTimeout(300) + }) + + await test.step('Without unequipping from the last step, make another profile, and one that is not closed', async () => { + await startProfile2() + await page.waitForTimeout(300) + await editor.expectEditor.toContain( + `profile002 = startProfileAt([19.12, 11.53], sketch001)` + ) + await profile2Point2() + await page.waitForTimeout(300) + await editor.expectEditor.toContain(`|> line(end = [9.43, -0.68])`) + await profile2Point3() + await page.waitForTimeout(300) + await editor.expectEditor.toContain(`|> line(end = [2.17, -5.97])`) + }) + + await test.step('create two circles in a row without unequip', async () => { + await toolbar.circleBtn.click() + + await circle1Center() + await page.waitForTimeout(300) + await circle1Radius({ delay: 500 }) + await page.waitForTimeout(300) + await editor.expectEditor.toContain( + `profile003 = circle({ center = [23.19, 6.98], radius = 2.5 }, sketch001)` + ) + + await test.step('hover in empty space to wait for overlays to get out of the way', async () => { + await page.mouse.move(951, 223) + await page.waitForTimeout(1000) + }) + + await circle2Center() + await page.waitForTimeout(300) + await circle2Radius() + await editor.expectEditor.toContain( + `profile004 = circle({ center = [23.74, 1.9], radius = 0.72 }, sketch001)` + ) + }) + await test.step('create two corner rectangles in a row without unequip', async () => { + await expect + .poll(async () => { + await toolbar.rectangleBtn.click() + return toolbar.rectangleBtn.getAttribute('aria-pressed') + }) + .toBe('true') + + await crnRect1point1() + await editor.expectEditor.toContain( + `profile005 = startProfileAt([5.63, 3.05], sketch001)` + ) + await crnRect1point2() + await editor.expectEditor.toContain( + `|> angledLine([0, 2.37], %, $rectangleSegmentA001) + |> angledLine([segAng(rectangleSegmentA001) - 90, 7.8], %) + |> angledLine([ + segAng(rectangleSegmentA001), + -segLen(rectangleSegmentA001) + ], %) + |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) + |> close()`.replaceAll('\n', '') + ) + + await crnRect2point1() + await page.waitForTimeout(300) + await editor.expectEditor.toContain( + `profile006 = startProfileAt([11.05, 2.37], sketch001)` + ) + await crnRect2point2() + await page.waitForTimeout(300) + await editor.expectEditor.toContain( + `|> angledLine([0, 5.49], %, $rectangleSegmentA002) + |> angledLine([ + segAng(rectangleSegmentA002) - 90, + 4.14 + ], %) + |> angledLine([ + segAng(rectangleSegmentA002), + -segLen(rectangleSegmentA002) + ], %) + |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) + |> close()`.replaceAll('\n', '') + ) + }) + + await test.step('create two center rectangles in a row without unequip', async () => { + await toolbar.selectCenterRectangle() + + await cntrRect1point1() + await page.waitForTimeout(300) + await editor.expectEditor.toContain( + `profile007 = startProfileAt([8.41, -9.29], sketch001)` + ) + await cntrRect1point2() + await page.waitForTimeout(300) + await editor.expectEditor.toContain( + `|> angledLine([0, 7.06], %, $rectangleSegmentA003) + |> angledLine([ + segAng(rectangleSegmentA003) + 90, + 4.34 + ], %) + |> angledLine([ + segAng(rectangleSegmentA003), + -segLen(rectangleSegmentA003) + ], %) + |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) + |> close()`.replaceAll('\n', '') + ) + await page.waitForTimeout(300) + + await cntrRect2point1() + await page.waitForTimeout(300) + await editor.expectEditor.toContain( + `profile008 = startProfileAt([19.33, -5.56], sketch001)` + ) + await cntrRect2point2() + await page.waitForTimeout(300) + await editor.expectEditor.toContain( + `|> angledLine([0, 3.12], %, $rectangleSegmentA004) + |> angledLine([ + segAng(rectangleSegmentA004) + 90, + 6.24 + ], %) + |> angledLine([ + segAng(rectangleSegmentA004), + -segLen(rectangleSegmentA004) + ], %) + |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) + |> close()`.replaceAll('\n', '') + ) + }) + + await test.step('create two circle-three-points in a row without an unequip', async () => { + await toolbar.selectCircleThreePoint() + + await circle3Point1p1Move() + await circle3Point1p1() + await page.waitForTimeout(300) + await circle3Point1p2Move() + await circle3Point1p2() + await page.waitForTimeout(300) + await editor.expectEditor.toContain( + `profile009 = circleThreePoint( + sketch001, + p1 = [8.82, -14.58], + p2 = [11.73, -6.1], + p3 = [11.83, -6], +)`, + { shouldNormalise: true } + ) + + await circle3Point1p3Move() + await circle3Point1p3() + await page.waitForTimeout(300) + await editor.expectEditor.toContain( + `profile009 = circleThreePoint( + sketch001, + p1 = [8.82, -14.58], + p2 = [11.73, -6.1], + p3 = [15.87, -11.12], +)`, + { shouldNormalise: true } + ) + + await circle3Point2p1Move() + await circle3Point2p1() + await page.waitForTimeout(300) + await circle3Point2p2Move() + await circle3Point2p2() + await page.waitForTimeout(300) + await editor.expectEditor.toContain( + `profile010 = circleThreePoint( + sketch001, + p1 = [25.5, -6.85], + p2 = [25.43, -1.97], + p3 = [25.53, -1.87], +)`, + { shouldNormalise: true } + ) + + await circle3Point2p3Move() + await circle3Point2p3() + await page.waitForTimeout(300) + await editor.expectEditor.toContain( + `profile010 = circleThreePoint( + sketch001, + p1 = [25.5, -6.85], + p2 = [25.43, -1.97], + p3 = [22.65, -3.8], +)`, + { shouldNormalise: true } + ) + }) + + await test.step('double check that circle three point can be unequiped', async () => { + // this was tested implicitly for other tools, but not for circle three point since it's last + await page.waitForTimeout(300) + await expect + .poll(async () => { + await toolbar.lineBtn.click() + return toolbar.lineBtn.getAttribute('aria-pressed') + }) + .toBe('true') + }) + }) + + test( + 'Can edit a sketch with multiple profiles, dragging segments to edit them, and adding one new profile', + { tag: ['@skipWin'] }, + async ({ homePage, scene, toolbar, editor, page }) => { + await page.addInitScript(async () => { + localStorage.setItem( + 'persistCode', + `sketch001 = startSketchOn('XZ') +profile001 = startProfileAt([6.24, 4.54], sketch001) + |> line(end = [-0.41, 6.99]) + |> line(end = [8.61, 0.74]) + |> line(end = [10.99, -5.22]) +profile002 = startProfileAt([11.19, 5.02], sketch001) + |> angledLine([0, 10.78], %, $rectangleSegmentA001) + |> angledLine([ + segAng(rectangleSegmentA001) - 90, + 4.14 + ], %) + |> angledLine([ + segAng(rectangleSegmentA001), + -segLen(rectangleSegmentA001) + ], %) + |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) + |> close() +profile003 = circle({ center = [6.92, -4.2], radius = 3.16 }, sketch001) +profile004 = circleThreePoint(sketch001, p1 = [13.44, -6.8], p2 = [13.39, -2.07], p3 = [18.75, -4.41]) +` + ) + }) + + await page.setBodyDimensions({ width: 1000, height: 500 }) + await homePage.goToModelingScene() + + await expect( + page.getByRole('button', { name: 'Start Sketch' }) + ).not.toBeDisabled() + + // The text to prompt popover gets in the way of pointOnSegment click otherwise + const moveToClearToolBarPopover = scene.makeMouseHelpers(590, 500)[1] + + const [pointOnSegment] = scene.makeMouseHelpers(590, 141) + const [profileEnd] = scene.makeMouseHelpers(970, 105) + const profileEndMv = scene.makeMouseHelpers(951, 101)[1] + const [newProfileEnd] = scene.makeMouseHelpers(764, 104) + const dragSegmentTo = scene.makeMouseHelpers(850, 104)[1] + + const rectHandle = scene.makeMouseHelpers(901, 150)[1] + const rectDragTo = scene.makeMouseHelpers(901, 180)[1] + + const circleEdge = scene.makeMouseHelpers(691, 331)[1] + const dragCircleTo = scene.makeMouseHelpers(720, 331)[1] + + const [rectStart] = scene.makeMouseHelpers(794, 322) + const [rectEnd] = scene.makeMouseHelpers(757, 395) + + const [circ3PStart] = scene.makeMouseHelpers(854, 332) + const [circ3PEnd] = scene.makeMouseHelpers(870, 275) + + await test.step('enter sketch and setup', async () => { + await moveToClearToolBarPopover() + await pointOnSegment({ shouldDbClick: true }) + await page.waitForTimeout(600) + + await toolbar.lineBtn.click() + await page.waitForTimeout(100) + }) + + await test.step('extend existing profile', async () => { + await profileEnd() + await page.waitForTimeout(100) + await newProfileEnd() + await editor.expectEditor.toContain(`|> line(end = [-11.35, 0.73])`) + await toolbar.lineBtn.click() + await page.waitForTimeout(100) + }) + + await test.step('edit existing profile', async () => { + await profileEndMv() + await page.mouse.down() + await dragSegmentTo() + await page.mouse.up() + await editor.expectEditor.toContain(`line(end = [4.22, -4.49])`) + }) + + await test.step('edit existing rect', async () => { + await rectHandle() + await page.mouse.down() + await rectDragTo() + await page.mouse.up() + await editor.expectEditor.toContain( + `angledLine([-7, 10.27], %, $rectangleSegmentA001)` + ) + }) + + await test.step('edit existing circl', async () => { + await circleEdge() + await page.mouse.down() + await dragCircleTo() + await page.mouse.up() + await editor.expectEditor.toContain( + `profile003 = circle({ center = [6.92, -4.2], radius = 4.81 }, sketch001)` + ) + }) + + await test.step('edit existing circle three point', async () => { + await circ3PStart() + await page.mouse.down() + await circ3PEnd() + await page.mouse.up() + await editor.expectEditor.toContain( + `profile004 = circleThreePoint( + sketch001, + p1 = [13.44, -6.8], + p2 = [13.39, -2.07], + p3 = [19.73, -1.33], +)`, + { shouldNormalise: true } + ) + }) + + await test.step('add new profile', async () => { + await toolbar.rectangleBtn.click() + await page.waitForTimeout(100) + await rectStart() + await editor.expectEditor.toContain( + `profile005 = startProfileAt([15.68, -3.84], sketch001)` + ) + await page.waitForTimeout(100) + await rectEnd() + await editor.expectEditor.toContain( + `|> angledLine([180, 1.97], %, $rectangleSegmentA002) + |> angledLine([ + segAng(rectangleSegmentA002) + 90, + 3.89 + ], %) + |> angledLine([ + segAng(rectangleSegmentA002), + -segLen(rectangleSegmentA002) + ], %) + |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) + |> close()`.replaceAll('\n', '') + ) + }) + } + ) + test( + 'Can delete a profile in the editor while is sketch mode, and sketch mode does not break, can ctrl+z to undo after constraint with variable was added', + { tag: ['@skipWin'] }, + async ({ scene, toolbar, editor, cmdBar, page, homePage }) => { + await page.addInitScript(async () => { + localStorage.setItem( + 'persistCode', + `sketch001 = startSketchOn('XZ') +profile001 = startProfileAt([6.24, 4.54], sketch001) + |> line(end = [-0.41, 6.99]) + |> line(end = [8.61, 0.74]) + |> line(end = [10.99, -5.22]) +profile002 = startProfileAt([11.19, 5.02], sketch001) + |> angledLine([0, 10.78], %, $rectangleSegmentA001) + |> angledLine([ + segAng(rectangleSegmentA001) - 90, + 4.14 + ], %) + |> angledLine([ + segAng(rectangleSegmentA001), + -segLen(rectangleSegmentA001) + ], %) + |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) + |> close() +profile003 = circle({ center = [6.92, -4.2], radius = 3.16 }, sketch001) +` + ) + }) + + await page.setBodyDimensions({ width: 1000, height: 500 }) + await homePage.goToModelingScene() + await expect( + page.getByRole('button', { name: 'Start Sketch' }) + ).not.toBeDisabled() + + // The text to prompt popover gets in the way of pointOnSegment click otherwise + const moveToClearToolBarPopover = scene.makeMouseHelpers(590, 500)[1] + + const [pointOnSegment] = scene.makeMouseHelpers(590, 141) + const [segment1Click] = scene.makeMouseHelpers(616, 131) + const sketchIsDrawnProperly = async () => { + await test.step('check the sketch is still drawn properly', async () => { + await page.waitForTimeout(200) + await scene.expectPixelColor([255, 255, 255], { x: 617, y: 163 }, 15) + await scene.expectPixelColor([255, 255, 255], { x: 629, y: 331 }, 15) + }) + } + + await test.step('enter sketch and setup', async () => { + await moveToClearToolBarPopover() + await pointOnSegment({ shouldDbClick: true }) + await page.waitForTimeout(600) + + await toolbar.lineBtn.click() + await page.waitForTimeout(100) + }) + + await test.step('select and delete code for a profile', async () => {}) + await page.getByText('close()').click() + await page.keyboard.down('Shift') + for (let i = 0; i < 11; i++) { + await page.keyboard.press('ArrowUp') + } + await page.keyboard.press('Home') + await page.keyboard.up('Shift') + await page.keyboard.press('Backspace') + + await sketchIsDrawnProperly() + + await test.step('add random new var between profiles', async () => { + await page.keyboard.type('myVar = 5') + await page.keyboard.press('Enter') + await page.waitForTimeout(600) + }) + + await sketchIsDrawnProperly() + + await test.step('Adding a constraint with a variable, and than ctrl-z-ing which will remove the variable again does not break sketch mode', async () => { + await expect(async () => { + await segment1Click() + await editor.expectState({ + diagnostics: [], + activeLines: ['|>line(end = [-0.41,6.99])'], + highlightedCode: 'line(end = [-0.41,6.99])', + }) + }).toPass({ timeout: 10_000, intervals: [1000] }) + + await toolbar.lengthConstraintBtn.click() + await cmdBar.progressCmdBar() + await editor.expectEditor.toContain('length001 = 7') + + // wait for execute defer + await page.waitForTimeout(600) + await sketchIsDrawnProperly() + + await page.keyboard.down('Meta') + await page.keyboard.press('KeyZ') + await page.keyboard.up('Meta') + + await editor.expectEditor.not.toContain('length001 = 7') + await sketchIsDrawnProperly() + }) + } + ) + + test( + 'can enter sketch when there is an extrude', + { tag: ['@skipWin'] }, + async ({ homePage, scene, toolbar, page }) => { + await page.addInitScript(async () => { + localStorage.setItem( + 'persistCode', + `sketch001 = startSketchOn('XZ') +profile001 = startProfileAt([-63.43, 193.08], sketch001) + |> line(end = [168.52, 149.87]) + |> line(end = [190.29, -39.18]) + |> tangentialArcTo([319.63, 129.65], %) + |> line(end = [-217.65, -21.76]) + |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) + |> close() +profile003 = startProfileAt([16.79, 38.24], sketch001) + |> angledLine([0, 182.82], %, $rectangleSegmentA001) + |> angledLine([ + segAng(rectangleSegmentA001) - 90, + 105.71 + ], %) + |> angledLine([ + segAng(rectangleSegmentA001), + -segLen(rectangleSegmentA001) + ], %) + |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) + |> close() +profile004 = circle({ + center = [280.45, 47.57], + radius = 55.26 +}, sketch001) +extrude002 = extrude(profile001, length = 50) +extrude001 = extrude(profile003, length = 5) +` + ) + }) + + await page.setBodyDimensions({ width: 1000, height: 500 }) + await homePage.goToModelingScene() + await expect( + page.getByRole('button', { name: 'Start Sketch' }) + ).not.toBeDisabled() + + const [pointOnSegment] = scene.makeMouseHelpers(574, 207) + + await pointOnSegment() + await toolbar.editSketch() + // wait for engine animation + await page.waitForTimeout(600) + + await test.step('check the sketch is still drawn properly', async () => { + await scene.expectPixelColor([255, 255, 255], { x: 596, y: 165 }, 15) + await scene.expectPixelColor([255, 255, 255], { x: 641, y: 220 }, 15) + await scene.expectPixelColor([255, 255, 255], { x: 763, y: 214 }, 15) + }) + } + ) + test('exit new sketch without drawing anything should not be a problem', async ({ + homePage, + scene, + toolbar, + editor, + cmdBar, + page, + }) => { + await page.addInitScript(async () => { + localStorage.setItem('persistCode', `myVar = 5`) + }) + + await page.setBodyDimensions({ width: 1000, height: 500 }) + await homePage.goToModelingScene() + await expect( + page.getByRole('button', { name: 'Start Sketch' }) + ).not.toBeDisabled() + + const [selectXZPlane] = scene.makeMouseHelpers(650, 150) + + await toolbar.startSketchPlaneSelection() + await selectXZPlane() + // timeout wait for engine animation is unavoidable + await page.waitForTimeout(600) + + await editor.expectEditor.toContain(`sketch001 = startSketchOn('XZ')`) + await toolbar.exitSketchBtn.click() + + await editor.expectEditor.not.toContain(`sketch001 = startSketchOn('XZ')`) + + await test.step("still renders code, hasn't got into a weird state", async () => { + await editor.replaceCode( + 'myVar = 5', + `myVar = 5 + sketch001 = startSketchOn('XZ') + profile001 = circle({ + center = [12.41, 3.87], + radius = myVar + }, sketch001)` + ) + + await scene.expectPixelColor([255, 255, 255], { x: 633, y: 211 }, 15) + }) + }) + test( + 'A sketch with only "startProfileAt" and no segments should still be able to be continued', + { tag: ['@skipWin'] }, + async ({ homePage, scene, toolbar, editor, page }) => { + await page.addInitScript(async () => { + localStorage.setItem( + 'persistCode', + `sketch001 = startSketchOn('XZ') +profile001 = startProfileAt([85.19, 338.59], sketch001) + |> line(end = [213.3, -94.52]) + |> line(end = [-230.09, -55.34]) + |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) + |> close() +sketch002 = startSketchOn('XY') +profile002 = startProfileAt([85.81, 52.55], sketch002) + +` + ) + }) + + await page.setBodyDimensions({ width: 1000, height: 500 }) + await homePage.goToModelingScene() + await expect( + page.getByRole('button', { name: 'Start Sketch' }) + ).not.toBeDisabled() + + const [startProfileAt] = scene.makeMouseHelpers(606, 184) + const [nextPoint] = scene.makeMouseHelpers(763, 130) + await page.getByText('startProfileAt([85.81, 52.55], sketch002)').click() + await toolbar.editSketch() + // timeout wait for engine animation is unavoidable + await page.waitForTimeout(600) + + // equip line tool + await toolbar.lineBtn.click() + await page.waitForTimeout(100) + await startProfileAt() + await page.waitForTimeout(100) + await nextPoint() + await editor.expectEditor.toContain(`|> line(end = [126.05, 44.12])`) + } + ) + test( + 'old style sketch all in one pipe (with extrude) will break up to allow users to add a new profile to the same sketch', + { tag: ['@skipWin'] }, + async ({ homePage, scene, toolbar, editor, page }) => { + await page.addInitScript(async () => { + localStorage.setItem( + 'persistCode', + `thePart = startSketchOn('XZ') + |> startProfileAt([7.53, 10.51], %) + |> line(end = [12.54, 1.83]) + |> line(end = [6.65, -6.91]) + |> line(end = [-6.31, -8.69]) + |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) + |> close() +extrude001 = extrude(thePart, length = 75) +` + ) + }) + + await page.setBodyDimensions({ width: 1000, height: 500 }) + await homePage.goToModelingScene() + await expect( + page.getByRole('button', { name: 'Start Sketch' }) + ).not.toBeDisabled() + + const [objClick] = scene.makeMouseHelpers(565, 343) + const [profilePoint1] = scene.makeMouseHelpers(609, 289) + const [profilePoint2] = scene.makeMouseHelpers(714, 389) + + await test.step('enter sketch and setup', async () => { + await objClick() + await toolbar.editSketch() + // timeout wait for engine animation is unavoidable + await page.waitForTimeout(600) + }) + + await test.step('expect code to match initial conditions still', async () => { + await editor.expectEditor.toContain( + `thePart = startSketchOn('XZ') |> startProfileAt([7.53, 10.51], %)` + ) + }) + + await test.step('equiping the line tool should break up the pipe expression', async () => { + await toolbar.lineBtn.click() + await editor.expectEditor.toContain( + `sketch001 = startSketchOn('XZ')thePart = startProfileAt([7.53, 10.51], sketch001)` + ) + }) + + await test.step('can continue on to add a new profile to this sketch', async () => { + await profilePoint1() + await editor.expectEditor.toContain( + `profile001 = startProfileAt([19.69, -7.05], sketch001)` + ) + await profilePoint2() + await editor.expectEditor.toContain(`|> line(end = [18.97, -18.06])`) + }) + } + ) + test( + 'Can enter sketch on sketch of wall and cap for segment, solid2d, extrude-wall, extrude-cap selections', + { tag: ['@skipWin'] }, + async ({ homePage, scene, toolbar, editor, page }) => { + // TODO this test should include a test for selecting revolve walls and caps + + await page.addInitScript(async () => { + localStorage.setItem( + 'persistCode', + `sketch001 = startSketchOn('XZ') +profile001 = startProfileAt([6.71, -3.66], sketch001) + |> line(end = [2.65, 9.02], tag = $seg02) + |> line(end = [3.73, -9.36], tag = $seg01) + |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) + |> close() +extrude001 = extrude(profile001, length = 20) +sketch002 = startSketchOn(extrude001, seg01) +profile002 = startProfileAt([0.75, 13.46], sketch002) + |> line(end = [4.52, 3.79]) + |> line(end = [5.98, -2.81]) +profile003 = startProfileAt([3.19, 13.3], sketch002) + |> angledLine([0, 6.64], %, $rectangleSegmentA001) + |> angledLine([ + segAng(rectangleSegmentA001) - 90, + 2.81 + ], %) + |> angledLine([ + segAng(rectangleSegmentA001), + -segLen(rectangleSegmentA001) + ], %) + |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) + |> close() +profile004 = startProfileAt([3.15, 9.39], sketch002) + |> xLine(6.92, %) + |> line(end = [-7.41, -2.85]) + |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) + |> close() +profile005 = circle({ center = [5.15, 4.34], radius = 1.66 }, sketch002) +profile006 = startProfileAt([9.65, 3.82], sketch002) + |> line(end = [2.38, 5.62]) + |> line(end = [2.13, -5.57]) + |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) + |> close() +revolve001 = revolve({ + angle = 45, + axis = getNextAdjacentEdge(seg01) +}, profile004) +extrude002 = extrude(profile006, length = 4) +sketch003 = startSketchOn('-XZ') +profile007 = startProfileAt([4.8, 7.55], sketch003) + |> line(end = [7.39, 2.58]) + |> line(end = [7.02, -2.85]) +profile008 = startProfileAt([5.54, 5.49], sketch003) + |> line(end = [6.34, 2.64]) + |> line(end = [6.33, -2.96]) + |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) + |> close() +profile009 = startProfileAt([5.23, 1.95], sketch003) + |> line(end = [6.8, 2.17]) + |> line(end = [7.34, -2.75]) + |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) + |> close() +profile010 = circle({ + center = [7.18, -2.11], + radius = 2.67 +}, sketch003) +profile011 = startProfileAt([5.07, -6.39], sketch003) + |> angledLine([0, 4.54], %, $rectangleSegmentA002) + |> angledLine([ + segAng(rectangleSegmentA002) - 90, + 4.17 + ], %) + |> angledLine([ + segAng(rectangleSegmentA002), + -segLen(rectangleSegmentA002) + ], %) + |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) + |> close() +extrude003 = extrude(profile011, length = 2.5) +// TODO this breaks the test, +// revolve002 = revolve({ angle = 45, axis = seg02 }, profile008) +` + ) + }) + + await page.setBodyDimensions({ width: 1000, height: 500 }) + await homePage.goToModelingScene() + await expect( + page.getByRole('button', { name: 'Start Sketch' }) + ).not.toBeDisabled() + + const camPositionForSelectingSketchOnWallProfiles = () => + scene.moveCameraTo( + { x: 834, y: -680, z: 534 }, + { x: -54, y: -476, z: 148 } + ) + const camPositionForSelectingSketchOnCapProfiles = () => + scene.moveCameraTo( + { x: 404, y: 690, z: 38 }, + { x: 16, y: -140, z: -10 } + ) + const wallSelectionOptions = [ + { + title: 'select wall segment', + selectClick: scene.makeMouseHelpers(598, 211)[0], + }, + { + title: 'select wall solid 2d', + selectClick: scene.makeMouseHelpers(677, 236)[0], + }, + { + title: 'select wall circle', + selectClick: scene.makeMouseHelpers(811, 247)[0], + }, + { + title: 'select wall extrude wall', + selectClick: scene.makeMouseHelpers(793, 136)[0], + }, + { + title: 'select wall extrude cap', + selectClick: scene.makeMouseHelpers(836, 103)[0], + }, + ] as const + const capSelectionOptions = [ + { + title: 'select cap segment', + selectClick: scene.makeMouseHelpers(688, 91)[0], + }, + { + title: 'select cap solid 2d', + selectClick: scene.makeMouseHelpers(733, 204)[0], + }, + // TODO keeps failing + // { + // title: 'select cap circle', + // selectClick: scene.makeMouseHelpers(679, 290)[0], + // }, + { + title: 'select cap extrude wall', + selectClick: scene.makeMouseHelpers(649, 402)[0], + }, + { + title: 'select cap extrude cap', + selectClick: scene.makeMouseHelpers(693, 408)[0], + }, + ] as const + + const verifyWallProfilesAreDrawn = async () => + test.step('verify wall profiles are drawn', async () => { + // open polygon + await scene.expectPixelColor( + TEST_COLORS.WHITE, + { x: 599, y: 168 }, + 15 + ) + // closed polygon + await scene.expectPixelColor( + TEST_COLORS.WHITE, + { x: 656, y: 171 }, + 15 + ) + // revolved profile + await scene.expectPixelColor( + TEST_COLORS.WHITE, + { x: 655, y: 264 }, + 15 + ) + // extruded profile + await scene.expectPixelColor( + TEST_COLORS.WHITE, + { x: 808, y: 396 }, + 15 + ) + // circle + await scene.expectPixelColor( + [ + TEST_COLORS.WHITE, + TEST_COLORS.BLUE, // When entering via the circle, it's selected and therefore blue + ], + { x: 742, y: 386 }, + 15 + ) + }) + + const verifyCapProfilesAreDrawn = async () => + test.step('verify wall profiles are drawn', async () => { + // open polygon + await scene.expectPixelColor( + TEST_COLORS.WHITE, + // TEST_COLORS.BLUE, // When entering via the circle, it's selected and therefore blue + { x: 620, y: 58 }, + 15 + ) + // revolved profile + await scene.expectPixelColor( + TEST_COLORS.WHITE, + { x: 641, y: 110 }, + 15 + ) + // closed polygon + await scene.expectPixelColor( + TEST_COLORS.WHITE, + { x: 632, y: 200 }, + 15 + ) + // extruded profile + await scene.expectPixelColor( + TEST_COLORS.WHITE, + { x: 628, y: 410 }, + 15 + ) + // circle + await scene.expectPixelColor( + [ + TEST_COLORS.WHITE, + TEST_COLORS.BLUE, // When entering via the circle, it's selected and therefore blue + ], + { x: 681, y: 303 }, + 15 + ) + }) + + await test.step('select wall profiles', async () => { + for (const { title, selectClick } of wallSelectionOptions) { + await test.step(title, async () => { + await camPositionForSelectingSketchOnWallProfiles() + await selectClick() + await toolbar.editSketch() + await page.waitForTimeout(600) + await verifyWallProfilesAreDrawn() + await toolbar.exitSketchBtn.click() + await page.waitForTimeout(100) + }) + } + }) + + await test.step('select cap profiles', async () => { + for (const { title, selectClick } of capSelectionOptions) { + await test.step(title, async () => { + await camPositionForSelectingSketchOnCapProfiles() + await page.waitForTimeout(100) + await selectClick() + await page.waitForTimeout(100) + await toolbar.editSketch() + await page.waitForTimeout(600) + await verifyCapProfilesAreDrawn() + await toolbar.exitSketchBtn.click() + await page.waitForTimeout(100) + }) + } + }) + } + ) + test( + 'Can enter sketch loft edges, base and continue sketch', + { tag: ['@skipWin'] }, + async ({ homePage, scene, toolbar, editor, page }) => { + await page.addInitScript(async () => { + localStorage.setItem( + 'persistCode', + `sketch001 = startSketchOn('XZ') +profile001 = startProfileAt([34, 42.66], sketch001) + |> line(end = [102.65, 151.99]) + |> line(end = [76, -138.66]) + |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) + |> close() +plane001 = offsetPlane('XZ', offset = 50) +sketch002 = startSketchOn(plane001) +profile002 = startProfileAt([39.43, 172.21], sketch002) + |> xLine(183.99, %) + |> line(end = [-77.95, -145.93]) + |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) + |> close() + +loft([profile001, profile002]) +` + ) + }) + + await page.setBodyDimensions({ width: 1000, height: 500 }) + await homePage.goToModelingScene() + await expect( + page.getByRole('button', { name: 'Start Sketch' }) + ).not.toBeDisabled() + + const [baseProfileEdgeClick] = scene.makeMouseHelpers(621, 292) + + const [rect1Crn1] = scene.makeMouseHelpers(592, 283) + const [rect1Crn2] = scene.makeMouseHelpers(797, 268) + + await baseProfileEdgeClick() + await toolbar.editSketch() + await page.waitForTimeout(600) + await scene.expectPixelColor(TEST_COLORS.WHITE, { x: 562, y: 172 }, 15) + + await toolbar.rectangleBtn.click() + await page.waitForTimeout(100) + await rect1Crn1() + await editor.expectEditor.toContain( + `profile003 = startProfileAt([50.72, -18.19], sketch001)` + ) + await rect1Crn2() + await editor.expectEditor.toContain( + `angledLine([0, 113.01], %, $rectangleSegmentA001)` + ) + } + ) + test.fixme( + 'Can enter sketch loft edges offsetPlane and continue sketch', + async ({ scene, toolbar, editor, page, homePage }) => { + await page.addInitScript(async () => { + localStorage.setItem( + 'persistCode', + `sketch001 = startSketchOn('XZ') +profile001 = startProfileAt([34, 42.66], sketch001) + |> line(end = [102.65, 151.99]) + |> line(end = [76, -138.66]) + |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) + |> close() +plane001 = offsetPlane('XZ', offset = 50) +sketch002 = startSketchOn(plane001) +profile002 = startProfileAt([39.43, 172.21], sketch002) + |> xLine(183.99, %) + |> line(end = [-77.95, -145.93]) + |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) + |> close() + +loft([profile001, profile002]) +` + ) + }) + + await page.setBodyDimensions({ width: 1000, height: 500 }) + await homePage.goToModelingScene() + await expect( + page.getByRole('button', { name: 'Start Sketch' }) + ).not.toBeDisabled() + + const topProfileEdgeClickCoords = { x: 602, y: 185 } as const + const [topProfileEdgeClick] = scene.makeMouseHelpers( + topProfileEdgeClickCoords.x, + topProfileEdgeClickCoords.y + ) + const [sideProfileEdgeClick] = scene.makeMouseHelpers(788, 188) + + const [rect1Crn1] = scene.makeMouseHelpers(592, 283) + const [rect1Crn2] = scene.makeMouseHelpers(797, 268) + + await scene.moveCameraTo( + { x: 8171, y: -7740, z: 1624 }, + { x: 3302, y: -627, z: 2892 } + ) + + await topProfileEdgeClick() + await page.waitForTimeout(300) + await toolbar.editSketch() + await page.waitForTimeout(600) + await sideProfileEdgeClick() + await page.waitForTimeout(300) + await scene.expectPixelColor(TEST_COLORS.BLUE, { x: 788, y: 188 }, 15) + + await toolbar.rectangleBtn.click() + await page.waitForTimeout(100) + await rect1Crn1() + await editor.expectEditor.toContain( + `profile003 = startProfileAt([47.76, -17.13], plane001)` + ) + await rect1Crn2() + await editor.expectEditor.toContain( + `angledLine([0, 106.42], %, $rectangleSegmentA001)` + ) + await page.waitForTimeout(100) + } + ) +}) + // Regression test for https://github.com/KittyCAD/modeling-app/issues/4891 test.describe(`Click based selection don't brick the app when clicked out of range after format using cache`, () => { test(`Can select a line that reformmed after entering sketch mode`, async ({ diff --git a/e2e/playwright/snapshot-tests.spec.ts b/e2e/playwright/snapshot-tests.spec.ts index e199bd614..aed88c396 100644 --- a/e2e/playwright/snapshot-tests.spec.ts +++ b/e2e/playwright/snapshot-tests.spec.ts @@ -444,8 +444,7 @@ test( const startXPx = 600 await page.mouse.click(startXPx + PUR * 10, 500 - PUR * 10) - code += ` - |> startProfileAt([7.19, -9.7], %)` + code += `profile001 = startProfileAt([7.19, -9.7], sketch001)` await expect(page.locator('.cm-content')).toHaveText(code) await page.waitForTimeout(100) @@ -456,7 +455,9 @@ test( mask: [page.getByTestId('model-state-indicator')], }) - await page.mouse.click(startXPx + PUR * 20, 500 - PUR * 10) + const lineEndClick = () => + page.mouse.click(startXPx + PUR * 20, 500 - PUR * 10) + await lineEndClick() await page.waitForTimeout(100) code += ` @@ -467,6 +468,15 @@ test( .getByRole('button', { name: 'arc Tangential Arc', exact: true }) .click() + // click on the end of the profile to continue it + await page.waitForTimeout(300) + await lineEndClick() + await page.waitForTimeout(100) + + // click to continue profile + await page.mouse.move(813, 392, { steps: 10 }) + await page.waitForTimeout(100) + await page.mouse.move(startXPx + PUR * 30, 500 - PUR * 20, { steps: 10 }) await page.waitForTimeout(1000) @@ -589,8 +599,7 @@ test( mask: [page.getByTestId('model-state-indicator')], }) await expect(page.locator('.cm-content')).toHaveText( - `sketch001 = startSketchOn('XZ') - |> circle({ center = [14.44, -2.44], radius = 1 }, %)` + `sketch001 = startSketchOn('XZ')profile001 = circle({ center = [14.44, -2.44], radius = 1 }, sketch001)` ) } ) @@ -634,8 +643,7 @@ test.describe( const startXPx = 600 await page.mouse.click(startXPx + PUR * 10, 500 - PUR * 10) - code += ` - |> startProfileAt([7.19, -9.7], %)` + code += `profile001 = startProfileAt([7.19, -9.7], sketch001)` await expect(u.codeLocator).toHaveText(code) await page.waitForTimeout(100) @@ -653,6 +661,10 @@ test.describe( .click() await page.waitForTimeout(100) + // click to continue profile + await page.mouse.click(813, 392) + await page.waitForTimeout(100) + await page.mouse.click(startXPx + PUR * 30, 500 - PUR * 20) code += ` @@ -739,8 +751,7 @@ test.describe( const startXPx = 600 await page.mouse.click(startXPx + PUR * 10, 500 - PUR * 10) - code += ` - |> startProfileAt([182.59, -246.32], %)` + code += `profile001 = startProfileAt([182.59, -246.32], sketch001)` await expect(u.codeLocator).toHaveText(code) await page.waitForTimeout(100) @@ -758,6 +769,10 @@ test.describe( .click() await page.waitForTimeout(100) + // click to continue profile + await page.mouse.click(813, 392) + await page.waitForTimeout(100) + await page.mouse.click(startXPx + PUR * 30, 500 - PUR * 20) code += ` diff --git a/e2e/playwright/snapshot-tests.spec.ts-snapshots/Client-side-scene-scale-should-match-engine-scale-Inch-scale-1-Google-Chrome-linux.png b/e2e/playwright/snapshot-tests.spec.ts-snapshots/Client-side-scene-scale-should-match-engine-scale-Inch-scale-1-Google-Chrome-linux.png index 00ad5661d4e8202caadcb3613945213cbfea24d9..2b08d071be5eae99374dc94a5c483d11e62d367f 100644 GIT binary patch literal 55941 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 literal 55088 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 diff --git a/e2e/playwright/snapshot-tests.spec.ts-snapshots/Client-side-scene-scale-should-match-engine-scale-Inch-scale-2-Google-Chrome-linux.png b/e2e/playwright/snapshot-tests.spec.ts-snapshots/Client-side-scene-scale-should-match-engine-scale-Inch-scale-2-Google-Chrome-linux.png index 53e70c52e69ce9ce44e30d8285cf553bf30e805d..d44a1e1f2f9b499e1ff50b7f4c8e30245d3829f8 100644 GIT binary patch delta 36098 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 z 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 UG9?)rgE@kttg1|@l=1uj2dY&{pa1{> delta 34448 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 literal 60908 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

V+b-ZVQeBXDUc#?T=QQZ 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­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 A6aWAK literal 54841 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�=)2l8zX=&8FlK8kP!7J%-2Y2|%_P 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 diff --git a/e2e/playwright/snapshot-tests.spec.ts-snapshots/Draft-circle-should-look-right-1-Google-Chrome-linux.png b/e2e/playwright/snapshot-tests.spec.ts-snapshots/Draft-circle-should-look-right-1-Google-Chrome-linux.png index e35b9515331c15bbec3656e96fea905d3874eb2a..dbe9a64f71ef3db3de316d54f32f53a954480289 100644 GIT binary patch literal 50407 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 vQ2xdhve%dz_Bu literal 48816 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 MrKqWZLOy!-KXc3)+W-In diff --git a/e2e/playwright/snapshot-tests.spec.ts-snapshots/Draft-rectangles-should-look-right-1-Google-Chrome-linux.png b/e2e/playwright/snapshot-tests.spec.ts-snapshots/Draft-rectangles-should-look-right-1-Google-Chrome-linux.png index f6c96f4f1a48fe349d1dd771f34ce0790be66cba..2b46c5fd311d1b21a20bc58e50ad289e7be3de66 100644 GIT binary patch literal 46797 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 Ls$I`V-h2E%RUAav literal 45160 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 diff --git a/e2e/playwright/snapshot-tests.spec.ts-snapshots/Draft-segments-should-look-right-1-Google-Chrome-linux.png b/e2e/playwright/snapshot-tests.spec.ts-snapshots/Draft-segments-should-look-right-1-Google-Chrome-linux.png index 15a15ce8b6072642597d8807212e5fda1034ac5c..e52a88d0c7f22774b1cffb3cbb9f9ae7aa520d5d 100644 GIT binary patch literal 44237 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 literal 42567 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�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 diff --git a/e2e/playwright/snapshot-tests.spec.ts-snapshots/Draft-segments-should-look-right-2-Google-Chrome-linux.png b/e2e/playwright/snapshot-tests.spec.ts-snapshots/Draft-segments-should-look-right-2-Google-Chrome-linux.png index d3b72914f1f217dd79c6ea84669326559e9d7969..f77650e495c62675cfa5d75ea7bfb355e062bca1 100644 GIT binary patch literal 46953 zcma&OWmr{F*EWiZfRtN71ZkzDyF)f0-Q5U^NJ=-TfJjS;bV-M#NH<7HcZqa~bi*0= zJm)>%kMmyFH!sx9+Iz1x*IXm+agTc%prjy)gZTgx1qB61T1s361qHPT1?Acv#&tN7 zRw5<=|6H?Ikwl^t{v=sNL7_mA78g}>N!XZn)>0ikMfq#L)kAfQxQXl`9UU%-QaLle zMBcaW1+5b!LMQgR1*L{oiE6qP>beEGIXV?-TH<$Z;=k~*#1KFrmul-pm_wrOXdt2w zcaM&!oD?YZ>5)%`v5&H)al{0(CWF!?^ZPKIk(R{C}3KUNpDZGh-^5znO z=~rA_T%eDI(%_C}vkCK`;lP(Dce)4j9m1_kyM_{S^BN`may8175s0h%f$@a+e>vQ0 zc6E|}N@_R?|P>thG~&m^I9ilYnN?Axfm|Gn0m*CezU z?V~d5lH%InGBVjVe@hw`H1Jcw~L?6XErsxyEQMYN{7F9hpUwUf8jp=*tzkEA{YsRC@>n18eQ(E5F%`}xAS5r2dk5l>%T&+ypls&Ss6FB(`k|nJSiwp zQBe9QS>F7bN z^vuk{?gy4VuL}*Z(R_NBWiwR#kjh(s2;WOn-KB|qWoAYfF7;qW?WkYU(;w$hzuY4y zIV=oW_$yBLHZkv!y0M1?@~*n>gIt-6lOO4m9~x)w(UXWBW$w?i=$3z?>iA3hEJUdB z{hO=D_y)I|L_vW_oV419v>FHR!8N7oKhxEcPoI8sVtNy*jKBE%_fG45!>L;L!=H%) z1^S8KkPpM9s3M}G@K188t54fPh%b-k!@hj^^4{OiA+ck93P($ruc@gmYe2Sx~h-nK2!S0P)7{d#fs}FL{Ldkmg|H(`_R0^D=-$i zL)QHq3$yhm>eFr48k@RUvi;w~ALhh})rZmEUCnudnK?$lacxNRtAXG9_uK`j40xQb zD68Y)>^x5}Qj0xv=AG{Z1<>a@e>i%Lf%=Z6?kG()OQEo^5F>SLY%GSwFbN(+etv#= z-bfrFcH6H;pJ8*y*RNkk3XGMdUAuvXkB?vDwx25zHjt%A?uYCjki2GtC!s9%9(%Pf zwRxu2eU%OQB=19LsDhN#-`(AyfPh<=nC4P)Ka5zv>sd$ES9NuEJ|M)i9{c|4d#_Oh zl`VF$t&B>Pri#iNRv9x(&Kkqs&qI2#NT$fVdomeF%B&%omy+>Gi3!*^!P1yrT^$Wk zcDRue5ewPj&7+00-)+w)GS#)PFfgv6Y+YlHIsH4=oGbf@N!RJ{k3Lg1qkdIX*W$(B z=G$@9VDGz2J*R)Fx8gMXxhzJgXlauLT}vp5dCs&%MMVcQ<-30TFw-fBTfMy4x@-$0 z|Efms>FF6182F&N+D6fQ&TQvI)pGTj@spRG-WaZws1`PUUVk;w^;*bVx%eF=D+Gmv z+z&R0$jB}hI`H(P`CR_~TI`AuartYs4zc0YD-23^_tPBJtRxX{FPKSVV`CNnM}j+d z?%+%fG&iUFt*dkl4LOVzJ&TQvm)$hgKaKeb=b7W(fh1~YOJ8v17o6{qI zG&VjP%2uA6o9nSbFD)zE+uaqzxQT{l`ts#^b{z)gm#<$9RaDqt|9bL{;`jX3SQSCN zapMMASWIGK&)n-4W48F7kvUN-E2~v>{c0z5I(+^b#cMi2k&%(5rMoZ-o$7}+xBQ#u zwq4|pYR&lQqjPI&^dK&MnyPZN*jea+u_shr_1C3_1{+&d)z!7~AWfK9z`E&s??piY za<)M!g{47Du2RRkdwyYwJs2CuHUPgF1G{~JJvyYe{91Cy^X-8_jxk1poTxc$H3MbW zcX@TXwo4nWBiI<;2?}}PJ=snK zADWS|H&VlJbOB(&MmLD<6Oedu%s2lct(l zAC{`BDtw;9a*P!n-G8#ehKDxb=gdr9TH3otqp|VvRc;D#j9QoN->pIS+uGVl`5g#F zyaYuN3JMBINlCrQBE3I<5(J1p45y=~m(lbuEiMMXtaRBnR!|5n>_jaHO3P-cKeOAK zsV&eCuUOU(LR&3UBn#8zqWEG%*^|I$KV9YM$TbB>0=wBE;&+}Jy*493WXDjjxK4CI zVj{AzZy{<83w!MILy<>68wTFCnzYf<26Zi77gm%=9oi!?5xb!*N*VN)HDYz_=Rlm% zAHOAw@~_C!#Z5Mb}i^Wi*-N~1lVuZ(^aNDajSz_Ec#V@-LV`20Rb4PeSLkf=nApy ztsNcGrQ0FIJVzd0VPrxNBHH*M(88mD@Za3m_qrp3TKxvn-hNj;p1VM=lAVX=K4qCv z<8{b{P8(WppS=Fv67c!+XL#f~VK1z$>s)u2h&W8CXlT54I%svjSrQ4kan^Q@kGsO> zU}o)Mu&D5*&I0jR4v_g=QdY+%`cSO=&?sT#6^Zgc3pu;~oI;sJiINn_z)=*bd zJKG;MoUV4x8kFRE6&ten>(|FmpW5bLZ)|Roi&%&AeGd!_B!k$s(*KB@oV-{|Z*$Q2 z#fyx{Cqr#*rjR8@3-x`>{)(~N{%#R){!^CYKPI?oIy6MYHglxBMq-Kj+;5aSFuH$>iqmfw{Jjytpjh_kqvNQ~NaJl~%Qh z@QsOxcg534!lisaRuyGS<)|6)re=OvSioo2On%FOS*mhOlZmQehFR&p{4GcpeHzU- ztN50lbY4t1sB-CBQ2o5ApwrLIE@J< z8=-$j0gZgAQR6!REC9VKCU*MMCF?zo*(oSelrwtbxYk$t((GFz<5}>d5pV{Z8FDE%zPWY-=98t7 z2N=(KriSnJuZF75D^qoF;5=8+t99FlBsiLniH%Jq&CbSFoR-!!HKnKdGS#oN)c(nn zh6rleI0Br9zEuLs6%W^rZ}O1_i^vZhEOL7sz3!|A?@t_z=TlrF_snwW5S9Q}PS>9h6IAJy!csi~=%S@t4s zcwXK*+$R!=w4VB2Y&p)(zqpWC0uu_rqvdvW7EXpKoPZ_DCGc)Tf?pr~y8N1+WqosF zABq@`HXPVPfEL9J@Ky6Xp?{ zq>Hor23mm#q(xS?{653|T?(b(E9e?bsc)qGN zAgWb~C6W44T1$rccd;@$aV|2n?vhjz91_auPeXD?{)pHuNC7mO zyrGUqOx(4+YmppTBK;nRnBe|>9$02Ef85nvIh42*NM-1_BmkWM%+`Z}otN8q{Azgn zK8nv_r7zACo=~Y|VP_n=fwGz8cJ=^v&gV zURhtanJ5eRiS~>=_VCYiUY;C)m|`tCkxaVWwE(kEd1|?t`useBiHXxmLhc&*TKx&k z1|u|dIdwsk!PlddQ#S8cq@?@;TNSbWjXHht^l;w%0i1$`g@rkWA+p1u-b?=W#YpK( z#mz^zxdQ$CB=qzW4y*t&73AlaS*A3rT4$P$_)>LrcXzw_a0(|Uhllr<)yqptO8P39 zn$pB{WeiH17#qhaDXgcZHxlz$bJke>oj(4E!UVO)!VdqbFdr{33GeG);C8b$uBA^X zKJ(cx9c)el4mo#PA1eW{4K8+Zvd+SfE}5e?P;Xd&wj&Gn^v!DWX~Y6}ob#V4=?ZGE z{b5Z&4}iIalY3_?Y?2R-`Sf72iHR07@&+Z(rKO~#%0-vf9>#PrF)>--zLr4v{$$x2 zHs=yWaMiCT=<69|sU0XbvL!Sd?|#?IP-!zN!rsS`mAQwXv(Z1Uu0v^SZ>L0eZ*c%K zRq1n#;S&{npSSl37V+eqGzzoRWE3o)KCP1V$5jvey|y+{?Yxy+(F*gq_&X;iA8%Fr z;10sex$ILHzNb)`_eK2ZUWM+FVHj)GtkI~qzuFJFC+nejk1sc0HW{Z_8RjK2_V1-G zWJvm|gjAKM*Ho*wN%*}mJ5LthTff|RXJWP+^IY*|ZZ#giD|z%<%A*zHXV0FIk&yvd z7<3?HWn!=Os z3R18stog6T8;K5xtahA92qU4S0#(jibrz$AfB(L&3YrFN_VCf8(XWOgt~<}G+L2yf z7Z3r;r>I8g7#TN)^X{J$HnY;wW-Tl{C!N7Ir?9YC2Yht~Wm#{Mkc9#tK5~B~Q94C_ z@W-O$8n$h+uxD;o7LRE+;X4WyRaN+PqO4O(TN~#AC!L^R!p})t2Z!hEv3z`d5dKHz z)DZX*!>3+AP;54a6)IF7#~DV#m1t>cH#aZ$mTO*dl~q*q_V#|wz8W88GH`KmxAdQ6 z2cU6qa1hsxR_{_?)6vq^wdnB6JS9Cln6%j&%#e+_Dug{x51?p=V6R(l9vvUA3$gIY z6BN%xS12~1vIrp)(lIpj-d`J@nVEq*it2dIpph>nBeQdGaIrV22+#&nZBuizVj_RJ z-J%RJaeP+{%b>R9pFe+Qy-o}A@+_>a|3HBWm591H?;U{Z9|Kcoyyf3hC><_5m?4<*8d_)Cj0UGha)Y z>jfuJI#BTdgpmEj_{xrD9iH6-LPAT3-)|?E7Z=ATCPvQQT35a)G9Af=eBARS6C17h z#}o4K=Nd_4NHbI21hjvlVX*%CNx?UcUGOlz{-;a5uJ8M#uz8ECO zE-Od$xo|14tVl)Se#Y(neR&0i%<5bH81IhY;cZP=6*ZN%C zhdi!33%V87{fls@wlGS~#%3!mEe+NjtncLH#QYOFDk`H+nHiV~6qZ-v)-8;lifRF7 z#|Ob*T)YJ!p+7d!z)%e0&E#-`_fWSS+rt9s~2^>+8F*v2k>C1o2s~(ryv(c~v6e-~IJb_4)&g zVVJO+w~wP;Cx3r;9Iz>qKs?B z&1L?fGP92de>|j~=;s#{ln1viE-pHrpE&lYM$2%$8UVhG3eBe&tlR%KIi$8rz_HVH zp4H`!FFqwg#`+>130MLF15&8n!Vd^pELufx4A%erxo9W%4kqCnn40o{+N;#G=VYU_ z*Td6udTMH=rHetc5F2vJY@Mgb#nGeMpeGc+c8}}ouHu+}x%s{Lo~75k0AOmsQvu5W z(5b1dU1hqee8Z(6V}J8F-nqg$e{YBMF7uqxixBcc~z z)EU5QFsF4BYinV6HmOQue>ZHyrPM4sfnzo^dZMMHqr(wdqhVfNH8bbLime){W*}Xu z=hrQVt#01gFqU7Ycb7EA((3W^lF!K0ay8L5>U!n^ikt7-FkVt+EPvS9U1Wcpx-YMs zqXzX0ghLV@>xBCHdRQHZ%@4T9EeGp$iBKnY?u}o}jvk+=Zj3TSXUq}WIp^zn@nFgp z6rfA~l@0#MD1p(Rh*r(3VZZ~x`pVJz@;IaRY)1dgIPP&+vZMLf&bQ$h8XERYf+_z1 zJ5aNl)dH-1?!36QWvHd)vN6U6xWKm$st1T;6;QWB8MLsxte7NNxyB4(vFj7lDU?9b zGK&DwSBGM%0JXdXeDg>$G&n45_L~*4=bobQF)SSQ>A_|^`wJOmliu5{_xHkP!TcfA zuKv+|`7@ysqCS+^U^c)o6vRGdq@ogMzT)wItqtcvQ8#Fp($LV5DBzp~&wi}f1pPKy z{-@U^fL7rwgFT-9xTL_A$1v+xy`H-cML9N!&aM`)yfYzMvvTvBhf$8BP|q%h?vZPT-KD$wGz|P(i)mf{&GwP)yZmB zviYoO_h&X7qSG(OS@{e-IRSdi_XETa4h|fxenBA#c2Fi7VQFcJ@y_Mw?=z!+!^MRc zW|I^;DQC%DZOZZ$ZXz>!B;miVSis20xQ2hjzr$W-Vn zefsnXvIxMES4N=~;tyZBSU#OavHG!@3Qr%10Bcymw{PD9eFU#b^vP)=kEfkyscC6> z1a~!LpNusaJr)tEf7>ww{M*PIR!Yj5zP^uM!SlXysT$#G?&!pRa&hsI@1OgfySq!Z zx_(ABwW{Ylw!L?k?V&ooE0JcHr1JMKNM)sm;T`v=j%og~adRt3WhY4&s?k?ijt^AY zzZ4LtX43t}N&mp|M9`P;z1PvZjgi6@J53GDJMH42#ImrFp!Ds=aU?+)6FPyFZ`EHyQo4W@c5-q8^Ma*Y1!q~s zLA~DSdkb%=H(7DE@buzz>#Ke>H#~j_VkVF~u8avPUnCtRWhy+cIDK%Ht*tFZXIlMY z<5rQ&vq7jQ;(2UF)I-3R`tk5?qM}Y!+Fx-5LPFC}86R!W@AaxcxT~<9HlNlsG@R|~ zT89j{N5U9Hz+`7@+yDGFm}y@vCg2%dGQlI@EiB@QY^J`8Uap~{p?Lv$rk_*g6W-)kHt^c z!q`UWI9P&(#RU#eP}Yr@0PB&xM0juSNQJW}`mOaXKcueiBs_Tlvg?rA`5$wz;)_)3 zogd=i8&2{Z@HGF(@yVIpGLp2ZaEbhRl>_F#$HZuwnVAKVt-!s4sc07J7suP(&=)`%7(hT^Gze(DbeMh4T$(!i+l&kX`0Un}NNYFAcNQ#OQkD!{i{;HAJ)y0ryp-LYuM>9A!_I*uKClb{e z76Q@-xqy@0!|*E#bRa_(hpz|FwWd77DV#)1Osw2l!~Exmd~I!Q;FF=~nE9 z*sM%YLPCOR=xO5Tk47dYx_WxS2xC?Zp~57;${d{xx}0n}#?Ix{?Lf>gUuqcV9pA}h z$SEqAs{Ckee4r`~Aii5pp2UjL_^#po7-@C&GzVRQ>Z9*ERRj#tosjo=3X!gD=SzKIPt#%Qh zME7%cE+Op4fo>OPl@O$bZa5CF-{>)Mi-9T_x>YdH(9w5~J$ibQbY49@OBdmHuulWJ zVEEb8TAXUvjOFNm$9iU}mI1 z*Lh>CAHYqVg}$ENH^>1{Re$5SMd=yS*WX_}g39rZ!qUnr-lP5M*R_nR&<=H0vp=)t z2cVQg$wg+`+a+lt6Z!0E9zT98D0l`OwnIBBfPezs3P3_!H4VU258f*D^77)bnejFI z+x#gqGW~_p3aw&NFd-XqH>%Mnf!`4rNj`{TYmO<2iTXX1iVwP)nvDNURnB_s_J9|- zd?OqDf3*NSRuf+`*1cdF!|8)Uk5<0b0c-UN@`?x)Sp!NWgL1n8=E_x&qJ!brq_ed;G#sa?s-mJ&fY&>srkQ8r z;gK*Z=}9lbh4B<7DW#ge|DP}(WTK*N~S*QQrrnYv$idxx;v)=jaw?)jG5kC;g zJ_sbKC7rMNvDsZ-yW&Dds!{}{?~csJ^qWWw$9$7aOsEI+7n!yFnAlZXqZu^4E{q!jl-shRghQhE*#oOOkoTMIUS#y%S}-mgS# z=x8Ya3=KlQd3ib@2AB` zgWwC`VSTbK437%$dY?r z#bAYg$f^?_l5QQ!_3{uDUMBsP;a_)yuX5*_}?MEsKs zm0^AqIeDGT;hgsrA9Pp(@b3N|&DZu``Q`P_sFVK7i^UAgjNHV6+UShvL{CW*PcJ8h zBqg)`Q9mr#G(jwMN#QVrEPXc^<(P!e(9YbFR1#S=e8W5_pIQg;YqG z=&EE>E3b9pY0kcIx!rj%J1(BoQt`v_DP$IH?QtkXAd%%#JJC>6KaTDMz}Gh~`iyYt z&mXU)ZX!2zC@Z*p*d6~&#a_tujnB}~(8MuBi~68(Ju{z%a1I2OHV1|{bY;!0O^l3w z&CNl1j@vUER#31BY_h(-{;GmJ;D8a!sd9@^po!(p*5K6Jza@Hd-M0KVv!ox?@T}DD zRM-mL*3poW>4ZlC*S>(Nb*<(v!?UqGPU9%rN=wF9rcd}Vl%GAWy8GVq5?y)MqTa9X zF`><>5e8T+%fpAi;Tr}O)})@h)zA`!bOX3*aFdW*XDCj1S_kM0u1#!pFs9lrpLc*i zYfOtY_hob#2_R|m9MD#q%V7vx5)l!_F(bJ$zI^Eh>^#@x2Minw0|OQ&W*RLwBsicu zHgnbUmbzmjqod2Al3F_S{@K%Wz8GT&tezyI1+a7ZmlvIjJJ2%ozC1q!cfrBL9N441 zgzlckR|6rdiL$e^Ga%@BJOZO&=*-tb<)=xi>My*V>q9#54S-q04I$SZ-;4RQ0{!Z5 zljE|}vcpp97Gz45ykRK*3!P=(QJB|yM};R9D$%RtV*Hksit&d zS`dc5@8|r2&y|{vkxUFjAG@{PJHL&s?D9bp?NgeQ?4nL)1Ja!1bOz_}&i?6af=VT7 z=^bFzuBZ$9Wd+a^468%89dM&=sVPq49ZttJHSjvOgL`hcWqW&jAOHy=WNVt3i2Hel zAJlrE#o(%L@H$z|s;Lo#v;t8ujD)WQm<;7|eh`cRbpUx47+lDfQ(%a3Y?B`;#lEPl zLdna?BM2?t`QN{xCR%;-k?hA2fGX&eahP^z^UFSi2t_OR8FBC4;^yXbh0W}hsDy|G zI{%5KP&|KP5Tw4pS+yq|az5r^TlvvHZbH$fX#$ceM4+sh4VPgybfqzWh6w3T3R$KeagDgaNVziC5 z>5qjq>a0vE8fr`zkHQ8i4W%@-9Iks~#rC7CgH=RWzeM(Jjxwhwl-Gr6xhi@sd-@g~ z%a@rIW{_0RQ>&G=+=QKYFxThgtYQ^11C^e$x0$9LXhi8o8=#;UYMLel2KJAme-^%- zh})J>pwz(VsQfrksttj3TKdtv+9R-iN~-rTZ~q7X>*Jk8z$NGBhqGLoR^ufS^wAev z-k0;+E})_^^g5A@+Y;J3fJ?6kN0(FHD}`O|+s{QzKLF`Ier)UP>@9G-mQq~hv>BJ2 zY-nM4D}qWo;tQS3sanTXtwuJ_rHr3JJ$xYg_gvJccCx~mU@`E!UZIRUK};aS0{h!1 zB9Hl`Gn%TLK!{`fiJ_B<(DzF|N>#)bn)dys74JsIk^^KvwJk#qPG{JgxzgqWUM z?(A0fM&+h%6uu-h8j9ZaN3|1LZxG14L~eiY68D$>)N&nA6t`v@FnN?i;#eXn@G^V6 zoU2;}e}d?P;Vt)F(;`BtjHleDX1#jlDWQGmE{KE4o{6oeSxGt7hjZ?s9na0*)k4^+ zuozXa*UhH9e*L3e|{A8 zv1BSJ@HPDq^++XT9<}L~=i9fniM6$!?v;Ap{Nz>3uHw_9l`lVsIUn}=w~Av>`e8B&$UVPjc3PNf=#fK0>08CGQvTG()wpb< z;!@nlVUEgg%JQ+06H|4RO#khyzg20Cx5ogqf@orXb@dgr7=g(FZfQ7f{Q4W_XMJz~ zp8w_k>b5BDF8#`U@PIlaXXi^T&RCISS;o?sW(i*NJ+EgbHRHkLS`Dbfa9Gq?nIAiv7^U1weqc1Hh z;{0Xb(t4AK=&Pz>d%Z%ijI@h^Mud&=b0c%(htV=ri+3@V-8`;Ec2K+~Y5)7E-OI4T zRDG90FYl@NG40ko_y&s)-J{pCD8nu4nP2feb!E{Y|QLU!NM=<(^;h_Srh zP6srpmD47q5%(5-cy27tQW8mO_bn6Q7hzX~&Qd%XuBER}AYuuHsfLCIJXcN*4!i(y z;5)CxjTV}iD1A$G5@t)U(;&dopiwz1s3=c(3{ByAtBt*mRHfmj1hp+HDw3{=th=H+PG^j=z>*fx${#1h4l;I@xUL_DD<^Y54|ij~6+VD-}z zRsNzPzj%*8oi0bEcx>hnK#i|| z)fk7iM_E}Jnp3)Z-mpqeRQo(v0mm~F;5e0zBEeJ8zv|a3Q^#zLm9f#VX*VpduG>nf z6l5y7`UQ6w5w2qSE-h6ax4sw%d@);KYCFa>WK%?MMv02TiCYFj=7#E9Xwk2j_VQ8Y z+rxOcxT3ojq2#@if8Jd+AG@oB7uJr4>4!{(-bX@@DfC+OzrRkM@J+)3i81Q+w?JwA zP}}Du2$JAo;--I)zcznygGMgl3kzbZ%2sHjUrbp+!8Mjp@^eGqkIsoI&Ez_tT2Gml z--B5fmH})M7FSx&KHe+&Gfd=qlLmD3K@#xF!omWiX|G;AMqubvKPArxH3!fE08#-E zOifMcy!>p&3m^fznd)x9fe3kE+L4E_P@RH3t|Uid{wxs%ry5gVE8x+lx>cCEFX&ph%9Vx^xBgs+ge9nIJ z`ZZAmNT~}nAaA=#siXObB2YyU*l1z}8ePxX^>NDMVq?Q&WAETQNYZ9-p{IiMZXHua zqk-LldaTW+Rz^ORQIs~=Y&K=qNA=TC@xt>gl(p!SXfx8euy_T6w(n% z3LmMYN!nLyl>X_er6b_7;2(=SRWvEyUx&w$T1nf^u5Gh673?T)4tH{PJ~Bu3M3Y&V!jk`32+Z zh|A>=Up6*K-2=&Fp(6kUXUVwbI|^8M5I1LnfV@)AKuL)rTq=&W^C3z~h|iVLhWI=q zlu*7K;9Iu?%E*z~Zfwdu3Xx<41rQ;#=Rt;~iVWZ7AyuASl3WVmz z&~b+i4Agg}p^*fA96%Y52!h}}cj%p0McXyLy9wMaWT?2itk{rq6Dlfr!rI+|^O$S) zk01F1TTl2~=3c|}?*r!2{=KyHDI(%wWQR`q)xHgszKo}3h~K<_wze*plf5BNclY+P za9)iec)`xTGnAuh=&^k>v_dVc1t?i)yM}lPf&dX(U(3sq2ywi?lJas=4pTW`LtvW% z@<(@faHEk~p$k;5b|5)>de7|Hv$u#e*$=_NdKK3CGBTJkUHY|dToTIAehvu>OBQf0 zEG^|gngIz2cLHLPZxt1zQNPyL1)eqe!eXAmZUd-Afo3;ra=nJ~#v0ahbGmx8x!K2S z4d?~nGNC>A&8hb4eo|y{Z~%C&If9k}jw-})u7YSTj)pN>W`EMAUOtYqqo-$cW4sg$ zaLDx@~6XV zp8xRSL(nDNK_L2|Pz4<%=ph&l>jdfPbIaFZ_Yn$;zPZ^GmtPInD)khU)%1x!Qaz68 zf=*R-brmK5g9KsE6S%1_Dvy!bAaaB@6GkeCKOk}gwa)WR8+gyB5)xO`jI|vj1A`dG zD)go-;#q&<=wA zjK}pK95aWV7okv;g7}~U@CQaJpi!^kT=ijsH5o0fG2m2yR4xWigIe~JFUUoUUSHip z4c3D@^74uNT*AT^AkYNLz`84{k0lg5DPi zUJyw`=ROl1^xwL-mi{3?2%)7-;<0I<*GgoBU=qn4mBAB`fQZ@5)`k0k9z4 zW_=X=GwIF9tER1zvhp2L{sAm`IXO;h=!xRrzYkJT%kh#IKr$E<8Hw7vNnJ+~c3~ut z-4y}6$sP;0Lm(XiJEN9cuVUse{l2~*{(qkCK+6RhmChi9xndX~0)Z9*?iutoS@Q9p zqN6j$<@^T*2d@YR&{hM7qY8yKzEF}Vw49*Henq&Cb>WxmB*w(tCm{g^tPoJq&`ZA3 zpn`uwEI|adUg`K@>j@3z$nbD9mGsG#BG^1+5S#&ch|eG&Z-ZvY;2<6)J}D_vv`kl5 zmt-)ZvYwvc^B;)7G%z75f*{asgLD`k_Bd=`k-r6a`)n!R#_jM=VnPD=>KIre;7OjX z7dKEmel#^TafW~!7vxncX@cMkCR=6J{}8*`39jjJY-dIV+n7*nkk@^@e4v*EilqCVX{caVoWJFtlYg_B@9KC|D19FPIm)dJt^uid|L znVZm195$}ZwZHq%0-O8x-W0vEy2@Vv#>^ciu4uvk{_@6o>NJY|KU)eB?`GgbiEjz6 z(*D&jOaF%zu3o<3#{7o{{%;Pu%qn3h7wDryvb^?xe94IH-+A90;>d|%p!D6jsucc> z|MlFtNy5HzbF5CMmEV)Z(lP&2^2+r0EDhsaeK92@r5(G~To4WA%_numCu6>5&;wcL zE1K*bCPT!<$ItVYDPFArj3;?Hv=o*|&anp4^z?K#>~uQJ=9vIuBRQJV@;rE-9HYm% z8nk8>qc`6i-qdI}ft%Ovdy4+=%Yd2wPoT)fKtVDY7AN>-K>x*m-$$tt+TWwhHx*}D zb7UrnS3WNLO6<5M{PdSuCX4GHH?t~d8r|C`e?#}kzKD{;D)dD=XL<9YY~3c*#z*Pn z2fgjeylBYwLsf}r#r?7Dbewy!!8y`Vy1`bbIz8rk4!8b$ofIxEPKv$ll(qxv`{WPl zFRak^)}(}Fo7BvG5t!JmNP{^6(51D5cm`*Yps9DaPR`ZwkAgN@{dq0Bcs)TYGfGcL`M2< zcCxp?eM(6iT{$&-OiI>`t;R?7ZZ15M8mZc5KbN}gR);zoJ~V7QNRJms9j!#9Wk%Qc z%%@L|6IIx8#OsL(`xK}6xU=Bd-^{6_?G#SH&&ymRH_DlPliCqb{QFWvcUI1(^YF%@ zw|j_JAl_J1xzBI17lO6n9}vbx7?&Y4bE9}^KC1p+t8*jmg==++g{>kd44=FlIjM(*Wu`bf-Ac1;pESO?U-#m*eSX!Vns#^T@1i~Jg?KrB(%k7@ z@ijF0EIJ^EuU1cmrq21)TuodnZ$u|%#CcVnF0#jiL~wI%I`S)?ZUy_Uz<1(OK8~h$ zF_MB8Ke~-;^sC*R8*OW{mfP;B6RJ@U0@O`d^L_NC?O4&O3nK(+6(NygsFIgS94e0!vNja=@6MgVP=Ou2sW+{@; zGu+dhZul|Qa=Cu!Oq3}Jpr~#$TLti<$9?z#9rWVT|SQ)7w|2fM^cPIw!rp<58Q3d^0>el-T+5OJFnXF61p|#M~Y~_1I zpyxgbb1a%h4^jC(D@~ksi~Ag3!l$9&hDS2-$am?zkdhJ=QtCEsCZFSmmHE$? z?5dqI6}5qkN&6lpT_AH2Dz!w#oT-7K+WO!J!5mV z?0MC*T_vQPAxG+C|5IMWGM4S=OgG%k1UBrhpE6$$7ki}X1KktYUfYcpG1yv@k6#=& z3ssrik{Iau`=NspO>y($ud$qR=$DxRmAmu&-<_ltf-M%}fhd3>>=7bGRD16&8^)CA z2V)K;Lmu;(wTTcqvAhGgt^jt7tnG zj~vd>W%2zOTbTjsvKV~V+r;~VzonDtCiTqr2@GOw4-^DxEOg91#-&YQVdGN;ATT?7 z;3qehy|ZQeL(^HZiJ_EQ=N%2F%k@8eTnnKIRG0d)F0tB-E_c(AQ6XfvDfhe;$p^xR zo$rKkK2CojBjKjKD)+LYVJ}L{ws>Q9n(I3+s57_rc1mh*eWmjy#5gUk)-)6Sv$XQ^ zDdWM?AA_{Oz+W{R=K*YVY?&ib{TYc>Y`2U%N|lOL=B&+{S{Ov;gyg$<>Re9jyMz1+ z^)m%3y~yvG_RMp<7Obrao}tiJx%vh1bU9eZu2S|P*(%3pe~}0HQSmteUQ7j>JG*uk zb)N@RT>q}Fm}7}Cw;kF1B@>!me`b{bCEKm^w4p;k$gb01N;Zf8dSl*4PHk5v`}z-d zrPI|1eLL3wvhy46JX=qUuYM*Nlw!gW4E^igUoE9EH>)S|Z~d9o#+NSUBjK=5rQ;D` z;3!z5Pt9;lz7TtN5rTFHxv4)jX8Ch--CG%7ot`-W!+R_zNOEsC%kkb!e*uIu*>XM(6{j<#tPhXeF0Pb#ZQ!Ke8ecR<9;>V1 z?NT8{DTyJW{_3rVx(WdIHwa9E7vAd=Hz`{hZ~1=QnN{$?3~XTymiXlmweETTw&Bv~}&KKp+)$$hB#w3S1MAYpZt<8&7dGg9M)6DZG97~IwIRy6Wf0@Jo zXF!cV;%07F8QeUax9j(>lti)8Qbmh?9G>#kn?@&veJkPPuSrxNHm3oH8#mIwkKNb2 zuK4&~^c^Y5QRdZGkM*k#Lose=JmMF7WI_tNN{gSwLC=p zA=B63AT@ewQ3M8MhRR!namkqX*#Q`SYN;^T_O{4n{D zKN6Z3*$Lg<53_iT@Wj8V={jW)#fvFNNojOx2VGhbX?!%NX+j_!ezl)f{FDPYDU(XG ziXtzQySgY7@qFIqLWTbMJqN;BM5w;6#-_Z%#qNZ=c}2ZbZKZa@y&^Qvnf*Tj*><*K zvu51!kMcHa{zX2NH?B9zmFX5LzFs<>o)}(#+gL_~<$mzzkdEqu!Tzs{9?4789-ShO zqF!2O8v{`c*hUUNe{LNa7C@=!cU~csrKV?WY5e|~Rsq{Ht``}n)F z2KW`Dd=Qze@a8$>W4vTZ{G#a?#j+9{pM>jh6$EttF;LoN(=SrrS`)YzCY@) zrI8ykz0G21aoP|(xCX1$v#sO^`H82txYb`1TW2DnY#A}ZPMTm^nCfcz zV0jrL#_u-K;-_v}feQ!s{Z{sO*LvRTeAd-^@p5F=_Rha$EfXcz$)yd&;}xaw#d!C2 zUi>`#lLmy2VEJwY(!4w{Ejti1$Ml{A6zyvO5)3@i`*&-osax)1x3%B!zk_i&K?fsG>%MK&6W!cny}_nR@Z4H;)XDx5>A&fYkA3P&+vs><|c9lPZvGyPn_9DjC&o=6+F&! zv6gwO%jefQ*t&yT$zH5~q;rkT&83m{?VCA@dCz#T913*HONnE->&Zr2EiJ6qn-gxL z>0`_1s+BYa*eI3%MfwRciZ~lcI)k@1usVyGVBuC2uBm@qqrI6Xjr+5W@mm3zO;pHv zEn2s2L|lYa#FyxD{aRhz&qEm$swDS6aqH?ep8f2_Rh=6)F>Vn9u=H}%$H#K2IdM$YQ%gwMR5Z09aTTd2N$~vEE~QLt-J)oOmI?&e{NnMBuo~v)U^vD*D3K<*+E+B*x=V z>_$iS>7!LrKavZSb-nbRt?1&piy9t5c&N9I zf2ZQB;e$mU*Tx7(bHJ35{^7m!rPPY#BAlih%M7E|OicHZ1suN=rLZeH7WHOd_`L5A z8@0NiUV1UKI*)F_5~r5;fG;(f+FxKaBl21hlWHE>hY}xgo0FxRK_#b{1s5yJ1)15T zY`y7$Sj^9B4Aw@hoO``8=obf@1anG0y;U?nVd6Wmcv+!M%1;{;I9iJ#iBXJU9O8c4 zgj+IAMVO^qBtg$}OpZ_5IwWACe?A=wnC##0)We@~Busm4t@pHSGrl?wh;r%qbf4Xj z#cA{8vWr zL}~ef61EWdZ(Z7N3%VV4;0}!#EcY#5j#uv=o#PkdCF>Uu?i8~ZRWkvr~I;@nA`im32G%88h8WSrQ6 zqi|EOyY~`0=IPwFfv5B8snKHI-OJyt)q#Dhv9X^;4muRq-_@4RqSBFq!YW#_=ZDm* zN3dF_nQ40%7*fxkcK!?_R#Z&B@1M71V7=v|Q6-SM&AI28zR2b9`kRTeaxbWEN~R+G zLYPEW*~9iG&zh`Dsd5{(=G3PN)qPt#-sgDU)3$@Gc5REtHGTVq2aoaaZhAsOt+#73 zTFmsRM@=X@#~q<1YRDUp;zZh~0c$9ebrFc#9?Dlm5*A=*w09;PQ@y+duEp8b#>w?x zpol1o9^>D5^AIZiH!P&UW`ZId9Ucy<`EAFj*!2~}#eP1Y@^%6~hWP>D5CI>B@OL0g zMX!uU#5f=fk$OTBRI<`(SL$;*utMv9SfAE}8lkz*Z+@D3a#`p<9#e*Dogt7wkEa`p zIE)v_<|JZ%iO6q61+vPBdX$QK!92!v`WkZl$BR}BD}KN0idRXCr|SFuYmwQ& zYov;j+0tu8hTzhsx6H9Y)PKyOs~5RD*gywc=n&?zvRwMvxVIFSkH6W^y4(}oP3eiw zN%LD6t_#JxFSeObi{|v-x&a;utBEV_VrJi)Od0vK*-VZ2KK+IUuZ{4&S%Oo)Fy-|E z+OsD4NGjB>c9tb$~)*Z~vR3B{3h^pkp4(JMdMzN<<{Fyr< zkZ@hD&#rhaoAYaBM$J&ba}nVbbKg-H6)55+A|!MLe{|(>^ZHQ?`IshhcP98;KF{w^ zIiAB}9va8!n9JDmVZ*tEb< z`D)?g4ao)<`Lm;wCTga*BBr~Ir^U0E`=WkLXTQtPrzSId8=TZ4-cONt*J?^0kp_6p zccr4>3|DJO?#rRm$)&WPlT)?*fAXzV3n=Pr-6i(j>FaAW_nkYJx0F2pp0IHe(H;VZ z<7W1i*m-vZPj^YHW~>UcO2cws?J**S!|`EX?D-Ut8II?=!L~==OqKt{+osG#sIZ}v zu!CmwOmh=_pTJIsOteU*&52IJ(p+0Pjq&KLhZ^m)@eAS6JayP}lU#*X;`Qcv8B$~| z9Z#y5JCRIEf2vt{Uf2lZNp_*n4DQ8dr`#7l1@a^#4i!<;T(v%V(}1C<1Sp7nI; z!j{%&`5z%PPyXEZoau5mruMvl{tD`Hs&Q8fado_m@RXcVyZZezD{aW1dsRqA z2>w*pmD>guG;D%9pEEI9-cfjk&dJYb7XKjK&;3Y7D5kGV;STW?YDKaP73S!(*#b|R z9HA!o$(C5NoXKMqKZ0Oxs$G50LA^umCzm$!fFV(Ps>Q6=;H&FK&K3Kl@1I@9_lxVZ z#kJse_BK9?!XHx$Rxcb_SfzWaJzgPzK$LB^;32!o0_k)`9eH+~2iv5Fj|93J8kd2a@6mzEs4ZH-=r+xZXX+LcZ% zUF=@gHlOcn5OwT~oXB4tx#~ZE4y@SW9ig4v`UcOf7k#VF2b&GW+R0=3sP-GRLdlV> zwwLocg)+g>gY5B2bEW!V{2Dnq)J|{Ld!KQkk0@i>nk+}itDi-P?n%e%3qwjXyq+06 zX@qebR!$4RouB2uh--JW>fxgvb%Yn=R=X;tU%RO*oE&pM?aSCusZH6=_5$z(J~!pZiWxPXJ=2oaI)>kd*Crn*vaj575l+`bint9tpb?odbVe8ssS9unqh;)xr!{qBZK^NN ziVxJgEmi2bx3WExnr;|wMeEAQr;f4?5#zG6%?dhAS>7tCwx(EYaKDe&&05zWe3H zhToJY9Z@W@seZdHAw@7pWwdsR0Qy1dK<=d@7eN-gR}c}mdG>YeK5tW8eONcKj%C9BMYwu0_W>X69x%6wY*QTIfZ zBXsQ=(OFmB!4QWwk@tS&t!su{rGFd&zE5g0(5Jpbo zL>xg#-8wZ%cO&DiXRq@-oH(Vx2>AcX2sY)Be( zWZ~H%s!0~e`Mz;mJl+5B8glN$Sn_hIHNo&~d4p?A-2GRbtMSFg5SY%OZsQQ;#}v1g zkE}Z?;*v-`7{2=BzT-W#DcaR_muzPoQRIbUB$$@4JzQJtYuYW8oH6!6hKAh6=t*B{qdtK%qlj_nt{K!f820H39>5v4>%G5EY&<}fh zcMZoqpKgB?oFR3nvSF6D>WnotDNDlpTsWO}+NV#aOLR&-P2^x&J!YlFuR+!vj8eCr zeeX4Nb;$F+-Yp_F+++mb1MiuGxqy|Pg6*r%D+DhQwmQ{C?-_HWcFKG|%n2}R-<-b{ z^*DSm+Ya{7%EGfEU6^+#X^t~oi|RpCv+735R0*mlKkA|?kPM?;PLksZq>PNT+r}!a9S~_VhZzdUl0!F^*m_cY|V5>-lu;#znA8|Dus* zj(C_Os7( zv=l-WK6A7*97*Q~tc(|LGiJytk6w>DaCB|HLjFE9O43c_&XY&drrO7cN<<}zWzL;* zVZFt3;-{JaV!ynG^dM(-JCv{H8U*COCr-F>=JmX0n3AGc$y5JR7pN*YwBt*wC?(();GPjlts?@We@tL&>!jmH(C z_r?AoHu}088*PVa#>h+N^lI!!O7-T#hy|#53wdpxUgfWpIOH3+R zqyg5Jw@NVZ`OKDESZch;+xdZ>TFMz0(iWt3{xfdZ=d?=J`j8<_s^3IV2j!c9 zM81^$<=$0YggPJNi^CF9%DltZveJRdsJ`u*H#Vk(z zuiAH?CR8HK+boI7MF-{5{kNIvIPX?sy_5^dh8oJr;jENvp`RY^^vxH-MHZeZX=n*( z66fVvJh9VjewJOjVcWD`u-|S%Md-))Rx>V{#D+dspmb7@Zwu^IJnJU6FXV__}7=OwAd*!dS-3=*ah@4n8b-kNBz z(os&BcF-4ue(57!Auyz_&U6Z_S)HQ zYqrVZbU36b8(!>n&yoA0prDl7Q|w+T`gAeH2gqB0XJqK7VNKFyH~iKdefGqfPpKn4 z$aGNEzv`T`Ju%Y_$0P>0GtltrsjBWy+LfjH9Zv{NJGTT9NKnABp*f9>7obM!2>&r>!i25DQiFps&-`A({|c^!WQcRxp{eE&+>b98Reo#V=qz1n^O%NKO&g*i${rWzBhDjC_7t^;BJ#K zBkHlN%mOaKj{6>jNh`nK;uBnL2bBeON#MG6p4FdGCP8Iw1FsRejOiotrnlA;&`q2} z{5=(Yx*BUIVeLyzsKnuAAIrhlYXC&5j4tCjCJNsm(M9ApE zu_b7F(X51eHt~Z~vyp&x`&ZmJR*LCILZVx#Dk=ubO!<|UQS!{ju;Y^&XI0YjFIpox zY;aSaqC7Jp|HBWQHXe#Q(~+nE9>I3Q zM5jxV!gJQ5!NY&0$ejK9--RK^|qR_gbTYkCUr(WGnd z)!VK$gTpd!(b|xW8};^`RVIvb`s~^bj7QrzbmXx}^ve-jpWtHbdW$tUK(SsGW22%o)+tDLwVoW!cX~UY;ew$r;aB2*=?@IJu+4UF@E8heFB)^+Kf`Cp=X$-GRWD>^drdYaXpD?X-|>*ual z%R8srrLpfLxKi%(AKK70FOCG3+0VG06lATm8LO@xl(LKdj(#=NF7CMUY>!dROaHBKV0gRLFS zQmkd|Fjxg>F$TPz7*Ic`OenoHKiZy3*JEQ4QsP)mO_)Er86VJe(xIb0BAM$sckR7Z z%H{ILmGvIWn=oh-r$kY0UZS8qN5fg{BZ2M3Lct{Svgt^o8?XJZF2Xhff_W-3+Lz$E z=O%UH6f!>=Rb^&pn_S(rd;PNez8sykfpNF3dvt~$7(6R{2FW@$O4DY-$+6xP{7kPaO7HjDP0qr!5xBXzd)muG{9n+QT2cmLh&3=2IWN1%r z6d}hKJ%Y9Q&SyH8DuYRW-fxJ-i_IFL69s1P6l5{PAd zQ0NL$(?JGgbPheBL+T>^o3dEsh#4V^Ta6Lz{g|CF?%2~yeM%&LRE1i%5XUue^ zM)i#|SjzfxVL#~i)O`T{c1-;*t8CdxII=UXgX)6dL`EO=4JD9?n=0%WIS){7@s z3qSaJm6eoy7Gh4chEd;s*j8Vn%j>z2+{`w$7IaU%#?QzNk2i@4m_>+g;pgEu)e=zg zTLY3(m@;$9t%(VSimKxGj39vdWCYq&(48S2SggGfNZ@1FO#I(m00}Q(QGlf6R#1|; z0P>STF+ba5>WN47J$mRp{nSdts8*oV)Ufr+R!Tl~VkWr`E9-IbCTE}IiR@$JS~W#U z-`W9*ZxWZ-+cSnAt41}q(xJaGfn53NFbCo9Ty(kG77}6-iLkUk_n66Z8ha#i2iUqAFNRTsdhGFlm6-S< z4-|$M8#atC?qLNoa~{q)iXG*nD7i2>MHx+))9EXit`8Ri8Wu>FUM$hx0C}eTO345% zEXMaY+3qKF*cBI00f9WjFuOq7v60VKHOPSmyZHLPz5xyd`KdP64PX zAchk@eNB?&AVT21TM;YDQZ zFP+bp5=2vby_P9sugS>a(|E)5C;Wd)-YUBs{O?1$3(FmvShPPxSk~7SZ`JI|aC!UZ)GFSSvL)MwpI7 zciMVZabVtx!sB&`TmUGOr}I0k9y4m#C~aso+5uQ^kDXbX^yw^ZBg7TJSU5MpImk9B zR}5Y+3n#Gq1xRPb**@yJ+xF@phKJE-Yu2X@e(u%deY8XH_;uBJ(pk%Jns8noT$)Hh zF?O)?ciGi~gr>vAtEwXv$*$7@I=16aYnjjYQ|3N}{J1WieG`>x5D?F>tH*CI?I6)T<$YHwJSr~3Xq>n?bPTpTCD4kPel?NE`#&< zai{OBo|RH{+t&K0#JJT+Sy}8Em{o!+Q_@y6?qa~$9Bc=ozq%Ln;$S12#wO2skIzSM zh5U(x*y9rP2esCIN$PZ->LNj_m!07EN|^3O8r5f$B++Sf@0!h(5L@-v#S=hr%RzZg z-5r*^hYLq%ED*3EOu#)^e7Bm19Up(9cAY!6pDWW5iPA{`EdhRgpw*kH%=EaBZnYjL zQYPYY;NaT7niv+}W!-=cz0N0Hf(1j~uj>veJa{rsW(1P&g4uyM)8z~lB; zs3W^noJM(}#Lcv+wZPmtLD*+k`Eg%qvsOy zd&*lS^z4##PV+^sL!xf$GfwT_FB|TqMu$Ed`Q-!`^f!B6?nxz(2b>?r=slGa4sXEf z`k1%S6ujTyWY`z|tmIJNc+#+;qp5TIk?(vWiDdV2LqoGdN3!b0(Q?U%1@@__$Bn^6Y68|Hk*HE7ADb{&ox}$WqyoPJ zu1YF$hF8C^@o~9`xtRS5xGZOw^#2h!(&^{)SjIKV^_+TUaKuxH!l$Tt>|L!OJ;U9G zlF5lvenoI!5N7N74+DbTyLG9#D9;_vS=c}h9kWQ{;yc<}t2x?}SwncMY2Wre39lF( zK~0>>l1`u8s01q__^taKOqangwV<-Ei`RGEh8|~Y$Qb)=J`eUd6nI6kaCElCs@LKH z^Hd8tu4t_OLEQo6uv{!pq)hfayE@+<_)(no>m}OZm6Nx#jLYuZ1iSMk+olHSrGjkw zi^W=UiW$+)gRVyz)W~MlMEBCn!nPudq8@ezPEVAs940UrT6;Vy^Rlh~=q?SP5|b-8 z#WQ=RnoZ6`v%YpJpS)6>E{QAinaf%nTX;+QYoomS7{kk~9|3I;lz6h)#GKapNJ9Kt z%#M9y)l_8}1GA{vRBr`wv@uWb@sg#nuEl}hXR^w@@$N(M+_#cV^Y?7b?TaN@7_tP9 zHN9FxjwCsG!rI5vU<#zudUrjT&)#YU^-RbXC%cAeJg7qa%otJa5)83wP5)W?H;L2;_K0)fLs`SSKMne&o>s8y)pN)JDfQqG<2*?B)aS~<0Z;t;;W5Hl@LZ{KC=X| zoc`E&|JhazK*6`O6URCJ>|5Q~;SDQU+wk${faUl+eM!1_A~R?-xiqoBEBnbuP&l1B zv8M1>^*~`nd;LVbYbA&KcOgGR*M7ST?=Ob36~%eRN7?~NPQ@bkynN;3%tRx^e>Ejf zOZL=Gi?XzG{}IjK`*Xbbc@|z4!L0m*gHb#e-AhbPo~PLmXzX|_aB-Sp#~fEQi`zrw zS90^RC=;n$*=$Y!~)RX0YIa~cLY>5 z02;#Ma8rulELm|FH!XijY`rT7-#S6S?EZ9IsiCO8bLrsP!pqzNUMte0jgP5&WdUW5 z)sKyMUB)x6)yIgV(&KFZyqo`?fu5Cb6MDeUHX8-?faqmyH~IBvNCO~`vYW{Ki}qf! z*jx+dyPt6&^a@o)v`%E@X#9%nYf4`Qg^z!O?i4;alD227^4KC6E5KS{%l5Mx_yZ#Khvjd8o?b!iZ;htZ z$NvWENuknD0Oq5p6v39(f!P$Ir;<|?sSIe{(W2XgvA_lfgf&tU62L!2n2dvB769QP z-gpQU!w+6S@KSK2f;hv&szOxNqMKWjUgUW#6H_ntrC%IO5O{2+#I4F=j+wC)UKN4? z@~4Wp@1rh(K92>MvdX-kW31())#QP4!1Dr|m8`DfjJc6qmvYPcB6HdofOZANd3!II zuwPh~tZqg$zx;K)jX7L@ zYyStM9-nS-;mSWQ3k$3{fObCC41B zN^Q$Q4PyvEq=F_#vUuGatJ4s(7&i|@DtmGuix>0P8|$ics0H|DkWV(K1os;K>n*GQ z?4+6X_a#jVo?~C57f~zzSD|99@_&4F4j)|XJNk)f<^9PZ8Qvs8m}7s)d5I~3t&)CD z9K$Gi2huMF`@g*P|E6dB&Aos?K9bygfH}ZJ*4uwC_nCUnrp)Q6zLVeXcN_pNEiTsH|B86j}9uSLCeE@$Uvjsf&r= zdU#%iQZPugE@-ezv~Fu`O0?!hz&7hf@?ZLe_vDY?OJxNECjU%02*5?Y2s-E~D0Be) z3@Gp{WO?r5;&O@M#D_hzv|I-4vMclnvW-t43~ptjay^H_!ouUj!%tQG4K11Qa0Z5~ zmnEYBjx&7dR@s`g%6|=FE#8AiiC>gO`slJpg?M zipMmyv|2g9UFr3fjjL}S>nX|`&pe1*g&S-3ICT*z9TZuP^xrUjc`pf6PnWP}y;GHS zGYnV=V;(ItzWN-eBl6_r|suf%N75)Z6R4aHGDNZwc@u_w}u~zXkcc$+s%2ptJ5~nEC_&%{Xmr; zvsf<6?GbuNMvpoPR2I*WJiV_Uzoq}i+c#=uqW!yPhMYPK8d#8w5h%a;Ay`N5fJP^) zdjJd!mO!IZjtvf=mjd!)iAx4)3tFclwB*TR2n?bCX$%gsAB|DngwPAisv$vnsW8ACp<_XDANnBu>OLsZlOYg41j9iY z(4~Q&4Ro9el}Q7S;R9zlXZTz^&9lCP#35U)kkgcfV%6(us%<8!Lf~H&MWGj?Z>+<5 z$sun>iEX4QCSekil2<_-YoMwSgoUO6HXIs324`f#jaNPb5V>d2Hbf&$%i1@nnd25*cRFz#)$x48GglYoh~@bS_TLG=PHwZ~F>- zf%26o8$$tv%GFM0B|u5zc~R`6aK{Rf`_XSqZ(#=_Dh*`u zpdj z+wjgqNp@O5fZ-Yu&m$3xG@t|mH6xWzQ3?3wVBoPk+x_f{rueg>mbLnM$5lE=Z4*Ab-|GQl7#?%jTeA|?USQD)NttI@QT)R$o z22gt$ru^5T(LdSEpbnsXojSQ#7;E)SkXbtmM)>}ZjQ_9Fz~~o+?}R+cVp$Xn!CB`d zidhvv(3E4o?@-htftm!mL!|aG7Q@4v&_6+)Tr5mb0m^U%5}*IsP(ewJgeUP{DmYh| zG)Vq?rjDo%Ed7F~CR@oQ0@UNZK#=D5A?HQX**GIcEB#IT`{0HLgppfMW`t>IsO{Zw zR+dli!Fp2$v%g$Y-iWxiW;MDNTr&aCOHzZk!WFvbl7%R~T4HI9g4y(t#ubZ49>a7i z%qIgNvu`&DezH7*Ko(vQDGiAo-7R2C|8O1hQH|tgW@sdpfGuFbFzhEFFLJkkV`$Ue zUx;wA{I5`RZ4YE15YujZEU^*NaLwdmT|^euXHwHA9AUk;!Nejrl%`Mz)Ka!PpwY?F zXB{wyUZ2c(Vi=k{N+9zI=s+&Dm=C(3i%XJ#-8vmWEcSrjF~R_80HD`D`Gqi>NZp6d z$kc&uM#TSA?6*Re^><%0GG2j*KJ$J1afiRjkk*S?w7epq83Uj&oXdkI2Qmb;0gKJ9w4O;$_pf!cz$rMz3DoZ8BHh(4tcl0wZ?S0qZBq?G zpd>ue7iYkQk425bn1$a8vmVLFZRi68)uj`ds#O5j7-tWhgJ9a+&U%cy(TN042UFU6 zGV8NbpqBkq9>`6P?>EWWjT)caRRD8flmaNtpE(>6j-jFA)}ha;bqnpp#b1Sn8j}*a zBvS<5fP^-&-2Q=>EXxFNKD)9e4^Xy_C~ac_DGeXr!{JGJ6Hp$!7Rtj7L}}=kZp&m# zZPMJ){={4YNN8Lf4KEd@i2=|Tbi%J6o@j(|Dg6zHsyI#WAz4gA zpM{$qpV|qG*z+W6ybBJ^jKFHWNF|D#u>k6mO%S~HssbvKT>MK@JDEbrH&!Jzyje{~ z^K!i&rnu9Xm@-g8L#j1Yb#4Mu+G8_J9x^~7QVnF4?{*(n#Y$35KBI!XdBTeaN+9}g zXbq4Ojd08Q;@@DfQ_jgnO7YKpowOI0ka4^Gns@Fep(Hz0RrSV1Tggak@66YSbjGsM z{e+SsE6kJvf#mS}cpGAkbMGY~n*$s>Vqr`YLeJhp2#u|oNYy%VbmC3K#-}uO6~T|q z%*P+EaWS)|^0h;Y;9_5A$jc}lgEa=5d{N5lcd4A%ybY+&Z%ot!5wz#-g`tB?J1mgj z!*T>Bse&J|Au0P$A8F~MQcC>Ci~)TE20I6%g}1?-I2K>O2Kccxb#wrRW8>{&jJ zJCRFKcqrEJs{bn_{PgIzU@Pu(?pNBfpBxcc6!Jp25(VpsyztNmza-))g6GHZvrA?) zz}Vs16Aua>WD4hjng}~VLT_b9o#4aaRB-GKI)h3}C28rmaCqDKEk@fRdqL{pOt!%V zXiebvS1owJgow(<$G-4)>L(-$bO82{%ZGN_A7(eg?-}EVSEcepGQ_PbW#pjd?H?Xw z+Jd=3KeC1={u0b4a2L1bq9&_MWUM8><-PYereOG37!hh77Rure1zc2ZJf5Ex>asuW zZl5H#(hfsq$)U2>0l<=*B+d~F>ekY)1^u&1ua>~dZ_4ihc;5XPSnc+S zqyFX8H3(s>DtQ8&MII^pP}JvXR;5Vn&>Dz{#bvQ5Tfx(e?8s{?5gLw;RxR8qrB&T2 z>>59j(Tzt8_)yu0P+3`a@StGh_j=je{O?d9N?8~d;ugh&CfeZ2kE$qdZq!_dEM#+F zgf~6U=7LAWWl$hVb?fv4f8 z{EypD4Nr>TrWEWuw;)?`*2fu+6mJm^vMnsY(qkkn_%02?qHEwmcJ+v|)%Dk5BDP7BxH2Nt2hfDFtmk4hSw>Dho1i6x$1&_mr?yosLs$@Zw`e;GN+|%K*)!85QfetCh!Eb0CRg?9Fh1tFo z5E#o(*3_UQYN0+%(li`9p?upPo(;V42G{TWFk8yVta@+S&8=4_bsv)P_9wDPNK*)= zF?O`RzOJhDQl~z+CNYvG>!&6a&+#R6cVUtZ(^Nn2%B6zM2d!{euE`&3_g zxCn9Z4u`J?6X9X8MP{htgLm4|2w;n&$aMgl z*&u!8VA5zkMLUZH$^TM=N~2n5#&d6W82|c!PgGx4kc6E1A!S+L%B@v~1)-4=E;b{l ztvv$P2_HfTp;Z_q@A>6>^T~E&e20hlKvYb&|JjxM>Gh}*I|@1rv(^aj#HM*OVi_(4 z*10^)=COVK`IVV5Pp7&WvVj^Wqz-=2cB~2nxP#sg$>2X+*bwUgFOX&bd-%gHCcPf4 z4JrOtbq|!u|IZWf|6CI;%Yr!zQBHfnz|eV%Ao*589s{EjN6nZ+qX|UnqW{0?{21cF z^%*tQz2<0LxOKXrloghMbi2kqF~&l3yP%9+ebc(1s7hv~*4!K(_+W$OP!Oxc;0s z8WevmHf74%>DP)afk1Y_09ute_O5fJaLZsOa$-PcWKgqGhDTR#K1r_M3d;~t_De_O zzB3thGb4v}(BGGp9|;g6!8lI!OJuj7J`6Wq`!cv>-xIr1bkXbSRkB?)dd>KMn;?@t5PTVvLraeu}_;bH5Q5LK0?$An4%OAT%6I%j^Y%#{Zs3C zFJ)Q<*N?VCgr(CTd^ytl!YUI9tP}YgFurs?jHit7PI&0Y)p*7*&2_)(o(;JORNSY6 z8?h{K4tW95i;*e)mDhTfu8Hluv==kVZ<9Ult?mwq8lpbG|IFh=sUc0=| z(%0L1eXZ{;ue_bk zjW=VykrL3FcZlYLz0eyn+aD_wFAM$S7I36p*<{C;5UK_T15)ZbunZp$u+oPWBr&eC zD)#3NDe0}J)&8PAUmr`%rc>+b+2NVT!z*%#>3- z8N2VZs_|)AQ5b5|d=&%6uk*U~#Pvw_DcmY9X3aMwLDovabGcu(g3I6&?F#|R&~eL@ znp9jR>ERotmZl4C4&b=-%T$JH!4{VNwvicA<_;Z9gts#F_*lW*wuZ*`>6lxZWy!u? zVN5Tf0*zU`3~Fa=sw6)sKdnl7{UIxfrk)(kwMqMj7{M@LH$F7@wT+4P;8tSxxT+Y;LVr|#Y*;+z zp?cv7sY3F=FaFO8qEDG0=tXT$tQ1Yee)N&fBEHp@=2>0_D>CxQn0Qu`3Lejj|$!&Bq zV>#c`Y<1rD?@Hm}7Pxv19l4j<>k{7aandzBes-)L#i13pN`ra%;FFcTT0NqlCL}wE zGPF{5Af{IPqH!>ULjUB>flVof8&R+6x?t8-9#S@kCWk!p%C;g*3(E{)kqot1hC;SH zO*6oK*%I=Lop*r(;_!w++N$FzM^g+3%B_P94{>}tgTfDp+Aia93$T0ms-j?-AF4QV zzn;k_jRlVSrfxjqA@DIXt4$Rnjv!Ks1@L=r+it?1Z1K^0dd7Ck6mgG~c!Wvfa!E@a zvHaxvb5XXw0*|VF5}swSeNxwq`nTUV1s-2{-w>U%yJgSa7}U&wz5t*9^U@jeQO4l- zEf!d`Vb!y|q3tg)myQd}mJ#-gZ! ziVc%Hp;s1X3h9V1v@L{BJg{uA^(aV^;hE6l(87};sEd4qI=wnKgnc6|=19nR{Gj8n zYRD+@Sx&UNmwKHrx|G^dzBGPRQE|he!W?TF<&GS}MYtP(o@+9`&ME$T@KTvbSer#8 znk+m%8otau)o{~K3!OxRUS9z79bPk=&-+)$SvNS=FU5mC54=Vs4sn?;tA^9`^tfF0 zxCWZuCZ(p`P`t72XS%ACdhd|-7Az*kOH-}q*gz3R2lP@X{HE=5Ujfk@y@uiQ5hpQH zf5o*R8^4hoP~>6CSk_Y26BQA~G%9zzp5G7s-CkXf-dHJr3wy z7_%cNktnp?MZKF1pOh&|Z7tJsx(YF^u)sSleB@e8;`#!{1i9qmb2qr0GO_#+U}#wbsmbGJBHJT9&wFID~Vd zx$$J0JLxLtHE_Y+z{aaP=oOWjn|19IKRY`EkbEb$vY8~-(Ca{<*yhdsaUoqr6 ztFRTtwS*#bldm;ZBb+qF;(sQq+s$_@cV5>BRA$s{-kFQ-G0{%lLtO&Enip{Q0Z>?K zd^}*tWu#yHVfIHN3%&k2IjV%+8NN!oN04+(ERHfPXHs(@5l=!1ee-qMjrASY2 z=M(25J7u7O&#ZPNlbu-Em?#J_V4Np}xS)|0;|qajf8R_E%dmL6m)gS=Q)Q(MZ|FC_ zuduNnX8OZ&CC2kgmv@}tD36U!;VJE28);E=QmVgIdDGO-LkY>(@$B5!d-E8YjCMep z6QfNWW^6;O^;c6m+PmCgpzGty=jh2DL+kkl`sD_cfiE{A#Z0%2- zde-VO0XRp)`>0`zUkXr{-)~D--DHyYw?&ht1uEKg=~UOn`o9-)@1-8v^;&7k7f!(hpNcU0yyPwO;Afxv_mCtoKn0m=Kkx z>8!fh)zK|_)42cUGZ_LWR?7DI*r!dtlt*{oHFwIc3^r!e4(je(K0i*heO?=1{S70d zWb@8u-Y`al3Eu0$J*tv>EyEaAJm*BMV7_5odx;u|@&B|+^5JK9Vf1za;<%CKkXFHs zEf&lJ1D`o}w=0vL-m}3&M7Gj@GcBu~x!Mo~e1=JKq$=t`76sfyX;Q z$3KBd;yy>@vwd?Q?eB1a&`;#LQRXK(Z2Kvi&hCc`S*7$-*10dGkUI5-p1q&;nbY8) zjPK4W=*1ZN;Faa%O};Ls!5Om;(8Uv{-Ez_wwwme`&g@xTRJ$EaA=h7Rr=~Y&ccXL$ zVHFT$^{+6QzHkB&>AHiGBB&!yZSNSo;dp|Mu@|f-qv_lYOvcRjnd@3B}KfA!Wgx!{7D%^`7|1ZI)g@q_yp!%14^vZ~t{n^Z4CZRZZ; zjcla{EvefM!Du`a*yIlE?)q%YXm55>RL;Niy8%jE7iTdCN(`JoqIT0&fApn{(m%`8 zn&Wv>*)!SMY>FZZ`oxhdr-zeQMyES>^64v^BIb*3kJ2i;G3?#j{X~tXa((V`%Kgu0 zsUWYovr#q?yUM=MWn3wvxIrlq3^dOhk4H6z0Z&% z-5E%4j%S3S4>(Fx8g^*$_OzVF2G4_TW&Ay}-51FKz_Fj_>l3R4Eoo#|-kDo{dD^Owt#^gp(h}B5Zf%CC}Be zT(3o|_uOUtZM&|kG{mn|gc{vBL0zKb8ng0j;H~D>p`kBn1ZT*_&ICE&wpuZsJKpXy z`5RGkRM!%0J@`lN{vEgr?`#Pj;^4w=0ZQ2_x+SBJOB*ltyO>94bnBe=-UVFP+wXe5=0*Pt}SyI27fV zC#jx@YL#@n>j#ZbW*5Zt06?_}04EP$s!je(v5xBi(gc!miQ7~Qn9VdIZY%@!K|@{h zgt7N@;?jw4So6T8t90Y<%Dk(#_&!M-AY+r{(bwb|MeS*M83@?J_r=Wn_xmKql2-%n zs0>v-zFJw)P)5>=I=l5-dVB-X9I0G-yRJcZ4!fZ&I2SpYQg2UDfb)y|UNg`#uQ9;5 z|B1^Y)yU*``>tahC%Y;EjBBg^%g=3GoRkIdj`9+>KZfA`li%<{ zovKZBjXWcNXkR52Ei!9Gm&4Ij8;Ld(ad-6c1qZJ@KXURiI1$ZV6At=2vqK+&+i+px z$R2=NtjCZzoPMf?Vk=RT=k<_iIegc-jLl-UK4it5oUrK`6aVmznC3c7*u}Khi{#Lp zrQpQ$7j|JyoRbvbD1PC~*5BE(J!jp0?vx7T2=aAT25_;fQ$_AZ3eOn-Q$}@WNa+-+ zL#aE;`(9!^DmlewA;T5>Uxa)Z7^h!AG1E57lh-fss4x6N&!Iksvt}$x4BMd_*p2{{ zUWh$#yml=CF8pq`lQ`O^$*5>#a+TGn>?9_@tN7*^%wks2WHRM)yMe>n_29ka*F@^F zMcW%u!w7ghT&SrB`!DptSsi#nfSW{GAXMW$t#je>aB$n4mzgv@p}m(FA#U^DuXpi= zk7*qwnjGvh%9j*wAkc?3CHOH#mN=NuIHhWRWFJ01A`3KP+2v6IiIVzmAN}5jK3Y-MtWK!X7vDr^_Ko!Sko-v zvT_(5YIkvx#t5!#Pwy#sPuxmwd6|}qoJw<$J;Yqp54h#oad+muGH?O^+`>wxKe7zTGXGZixc#vbPGjN z>^wfUjPX^2-&7Md(t-b_;s$H@J?CxPL)}MQTxA2y3$`FJXwLT_DwHC4K<@Tar6FK3 zL#l|~cecPBm;`CnSwpw1{?R!eM?lSvm;n8VI<|OX62V~(gWY;+o zTfHX;-@1$qEz{>JSQ}*wjr54N_@n1hyV%reSG85S&TiT{=v`%7<9*kEv~#TK>aCCL zA2f>Ac4;Hejj{}t+8ka+?HB*oM1*_{rFCY_V-m7;3LvR8JP{HO`Je@QJ%rxM9SDg{ zAAX_wCpI>OpP2Scg+$u?@CFfMbmY`!7;n{@1~{+roQ@byM9uv`XsoK-w-Q^W?XEF& zfu%MjCNc>D&hOFqWc!J*-mGetaMnl6FQ@+e!NrVSh8B?!NWTQu3<5c6z7xMHrWZJo zmXC^N2}Tw|{^_KSR-Njej{{slY+`ei#FW|UfBE|h)zDW-?vG6<2qgb{K+j!8y*XK{ z0V;MH>{C0csgzxc|L(m@GjN4$5{+?!ccO6o9gq1HH3sv16j@dEGKvRB-+hCiNuX}* zp^@i*(Zu~YzuYacuBqvgkc3d)tkxj1Al8)i8ZUhM_PQZUKZn~~g+RUTwja7qIZtDf z-ytrqYvr=7@uN?l_(^gkiG=t{T8qf(M=4|S1w&s2!o>_-yQT<1T#QZ1@!gAF$}`vs zmN~Tfiy^Zjf#6>F1zLM8?fU+LpgwdZZ6HW0PS>=1sy<@mN5GW z*x)hNApP?kH~x4vPUc2>jKT6|2XqW_oTzAZtex8OFdiG^P0Hgkr~{ptJps_$cx=JD zCyPE9CzC6KWmNtD>+QV5sr>)=e@a3jNn}K%lB{HunS&@>viD4+?7gDwh_VhMB-=4E z56LQfBzy1d&9Q#3qdwpNet-S0>vvzSE?th>eZTMb{eHjZ^Kp>L<5YomipsTEJriL1 zDwQ?jQ-8Eh$T6Xy@&*}U*E#QiIyt1jKxv!LA!sC8lPGvnv=R!)`i$z;*DY@fB| ziQFxtJU6lTdNqZn%vb^CsY-@(kPuk9C9!IHYWx#IeoVos*kHX`OCff#f8tUx@q5J$BOVQA%Wqs4=BlWosmjjbF>l zU7|Rr4%vT$j>TO+%B8CIb0sKCtTjuS%7h#s2s)b$vqO;@a{`O6z9|C zgN?L z7E?C6Agm2a>=~+=K|w)Pu%km2%z;4?^&L|;s4%wO&dlsoxMg+X9@#fu+q&D% zlXm6k_vkrHM-?#l&b%J%)PSTR9|}79oF^W*y?aC>(4km3a3F&l+QgZa`dP}2Q&8)3 z1S0)$FD{+|i0p0~XqT7TE&{+1M77Z_o6oXU1);|RobpZ{4DiTu7=r578bl8}`l1c` zb-l(^;dz?1+RbCK%XKJfKPt|e(tS46bbLbZUNu%ES_>GsyDA+ zgMhj{kO!coipkg5)D)DiUBEijz5)yg7mUb_8)*?!*5YrWbgC77w`aG#v=7e_S3oAH z0q>fwQJ+DbmxjlA$CyW3&Uso%iaS_ZPkL_VoVjWO`eb4GJ4JcCUxt}A5-G; z1uvuH;ub7xbZh{1zMaY6|&1&@B0A~ZUsKy4!e4M4NkH^ z_G#c)7^$ifY~Ctq*^@>2>_h(szw*DnXA`5Z?fxH3XL{ z3h>OILpKoa3c#L$hD#luTeogmJbg+?L}Z@r{nOY5T7LkN-nUR9NNaPK;pSvyMCm45 zWaNoi5zEa!Uoz+Bg$IkFd`4;0Z##L|DTA~GVP+69o^&o`8>g4)w$?hBdh6KvlL=NP zL|Ogw;-SyV>7)!IgX0>d+Bk?*wyNvOX!Yj?n4GJvg3D|g`Nq)f)WV?w78D5Q$7!7> zy~K6p%9U@A+sFhMXzXUvMROGh@Vy-JyUhffyYs*7?G%}@^O^|`w(*a+37WNvpFC03 zXI(zD+QL8L@EQ3~G5pI2i_xlMaBBXYgX7KNejAtFtl}F39Lz%~Q#pMYK(zpG;3M$` zrZs5zgERqn;5~7It#^ncqN1b-Z*p*WK+)f&H$R)3iGh`tZ~PFlaRBTP&}QU6J?k=3 zb;qoAe@?*@X2bby{V~9Omp5JamQ!1^T+T>X)WxUBe1kmqO}&w%rz%{kZSvtOniurU zS;=_u3w@XuKf+1??7@5aMv6JMGquUp!SSW%*}(BVN%@%om3rE_tf6+aeB9qx*^H2w znCB8Pu!;_3mP#f_Jw1t14TPCP)oC7eC2-IC>M>D@eihDC1R%^DitU+ze8duZ{`Tf`6w7BS(~%*_7di@ zypK?lEd7C$UyFXlJ27?F1_ATHK!5*PH_pY23=ALR|P@vhf_aj^FDMzKgjPxgjClVFZk zF87&H8RD8pJP*k?pUT)@*KzdD3x4q@(Fy)*-F{c5<(|xw>$y4uZN;QlapuWrB&nY; z!izqnAvue;s$VX(Gwh+^CJXE$sLI433o`7vt+NTEd8m-Oa%$Vsw9YHXivYszUN8&t zTy1m{Nl(}7L!VSeN9mIde36$O?5udH_*bu0dyG9M((6>W{+`jatxqv|JYV3?6~f=4 zdvns~FjieynSMQSNZm5$Zhfynd6rCO@r7L(pBsdeN|70|Wm`g$XnF;oV-qU7nhYxc z3cWt5TMRju9R^B7q|j}Y3~8J5YZw2?y{#HAg`El5muwU}S%>iE=~a$;-grb%r->2Lvp(bqS*15puo_Aq9;u=)9}w+-_ia>9Vu~c+ z=_8i3)A`z=D2-Nqab!sD4e5_WNqX$9k~vW#?c9;skjU)rF3pb#f3okeSF3$d)h*uE zd{Ia+o5S+^S&olOmQbY=}M8?ObbYjBSqhV4cog|_VdiRR#yE;km(6|0z zQk3^?bB*`_^qfX{0M|xU`Jc|lV|%G$?spX^ZJ~x~*@sHEeow?NXCJUbFF*mTpv#qe z9E^@7Z)*ky3eBAIL+(JLkr6ssLV*S7!9O~d^ z71aIAq;E@v;uNBN=cXuyYZ*Fm21Hse0=P28!H1AYs4xZxd7#GyE|sI?0FfX*d{ zk*)9Bc!+lEOUHGP@Fpa4;b2tlEzS-d3VLjee=H|H+!%3tlBQ6_K+JT~%TM3;I6;L- z4E;_Brkj(FObxv{Gg{%#%_G0PjMjv;1H^sKSLeZ2gTqVY4DJt(+Ow0m>a&2U@ooF~ z^zfs0spCt9?>3Za8+$@|?{osVYe<-gQzCH0)qc=7*UfDKc&CQ@o{38r_wiw?;hU%H=# zJh&>?RhiS&@G4wnRK|xov$g+aU;j!G7>h&NQ}dttr80sQeS_D|(lG|b<;;o-{?N2v z9CZtPHj@AR-!)<`H085?V7+}C4W(6_oNYZ*c2u3CDlI$N_8Kp!&p7UsMativFEYhM zY7aGFLg)@;7Z!wuUbOX4(A$VoGU4`5xML(+6ELMkuUr|0I(<^V8r)ejd?mw22V}P2 z8d;tOW8WZEL#x(#pHyA9vvAy8?w^i@kj|a_zk2hUJduARRDmpqkK7Mf?Sw;mn_~gd)URfZAvdfOr z(EwlR9clmnK1oc?4M?KQ=$rj2ik$>75SzbaJ{9L*%FOQJtCim?Y?1x%qps4a$^jC} zuoG$eK*^8J07G>Sy&xKbCS+V{EYujMet>u>SZq83#|)bC0TbcA57hw zqu$)&5!c}t$CsqFyROuUI_( zIV|r0`m<|^5o3pdK4?zdomBG={Ajs9D|f zo66}MP{0nHv8+DJ;VRFg?GewBen%$dYwEN%+HU4qHH~-KWR0A~x5|?qS58&lI`V~` zBlH52`mEzGJ(nnxg+I4%u_P#x+o5W-bvz~+-?1{jTwwM7R5hfiaxmY-=kD#&eCD?S zWu_F-2OmqU1#e8y^Llcmzh14*0r^pL)M?bMx7{WfQ+_pD0zC4lvj^YViZqJMqR!W! zw_YYfN*@*O2O5R`WHRH5d{&;${A_v`B`Q}y9Z19&*z0Gabm!LF=JUJfNGqO)Nb~;6 zXv%GI@yWrokI&@K+oXC2_!^h&Ec{y-XNBKCO08~Ri?9LEn-G1dj8$A?VdA? z-2psU)IIH2sK&s9lwC2z?*JlTD~cG_h35oaY}Xip?Ja+jr6Mq zwFIZKaZiTpzE73;XslAA7HAAgRypgu`n2&R7d}2~!zkrj_@-ie65odsGBO=ii%tCg zy@ZZHa2S@mB3CZBPm%2VhE_y zL#7fLNx!jQ@fho&?()u^;ac_6GnjPhQ*g%N9?S(l!X#v8Kl z+^R{22t7Lel6Oju2G@EL(HmYxj8SBrFHPcE^rICi8G~ZYOVBmSwr}m*H>pP6omLnP zdY}I#=5wd}bYn!8&+jR>AJ>{GV*(wUn3frRSFSy?9*usmc;aFE-QSQRrDM zDWez_Ti2kTKaFkqonkqnyq|;rZc;=L2_6}#>J$6$D79z4w1+Y%weIX?Qoo7oWUtCyt^s|NU^z17m<%`mvb{S zZMRf)bS{&v>@{+Cz!1Ha%cA;F9p5xey$XFmWxEkGajI>w3 z9CA_UVc0iL3HtRgrmc~8q2sF(2d6w39gI4b*)`r2#c1BjMeqB&47wtn3wexRmG1l3 zWX#BjOPmORt!2O5vcXeaY&zO}eHmJfFIbI3Km6 z-Q^YXap zbEhi8P^hMvb#RWWXV#@cXn3La0({MO9(M?yNYOikHlm-OpF%88dYuJWcj|0QJ-H*$ zl@w0^G)L$u!9Q6ITQk$utDM?Toj*|Ai2V$#I|kQ<+h}ze<}Z~q8sXAE%^qZFoleqTv<==2yk}AU+>PqHi45B zfz`@NC&m;$0Y&@MKzfEQ7zGNxO(KteTLu{_Ojq_xBBRgi@Q_i!|^et$)QI1;J)q$@A-Tm1e|l=Q7o> zG~~GC$?rzyRB5}Lo@cCu4fJqx%EL&N@ZftkHnV7Ec;`TW+Hmu^#VL;@csZY>QIa7S zrdcOKg8f|;RO3C8<}hr$GZH6iNca!y1hQa&#nk9swS^s?d|Odl2>DPJ7m^*qapu5} zM#iE1FhvDgrOPX6Lj6NSXH>&Yz=i*k!#S!7Am|=wSlS?O{kRBGeF$Gxax{GSNkhUo zDgC6$GxQ{4Lqa*-4st>qs_Jvx5UY}rmhJ^gHHsY;|IhOAWj0ffIG-@7*5L;`C6CWu z)%`Q_P}mgTC_SgDb4zN8#%Fo2a({!{C?u1ep9|L<3@++67pes!8l^5~RM3L1tEm|) z!K9Sg9dSd!YMFFR7s)><*nBbYgsq#7bW|W+L3_s+`}otxJ|F_&f&x09Hy**6QzA|R z3sClsM?g9VJ3g4uz?j9>oD;QkCt=UPjpbFnnV=`bl}bS<2RmW3kUB;A3N{J<`PbU_ z9U}&fEC{bOecZooH$OD?_Nr5bc5jL)%LP8`4PUD%fIqEviDzAZsLt_EVCdJr|4qUW z`LxXR^njqCb$iAk|I$B&rQ=UWd!JNt)Xtxl->X%1F8Mm^IrKkAU_g=LiL$aGTKz#N zeMtICd6Ih!eX{)GX$zAcM>|3Rq}BWEJ4sfR!k|EC|h~KF_&VMyCLy$#up2vHS0}wI;n%hWxz0<$m{gW=?sU;*qQ%QL|9K5XC6-|yaUfv;3nP>K{rw@@Z;0;gN!=Y( z;Pd$Mghnj$Le{HtbFue6Gn>59!a>VV6Pxkj30Q2%nl zq4JifsA#D+2XLfMdMmOp`}SJ$l@D2=)nTOjEUjMn{pZae)%lo*k$v~4))aT-Cd*J^ zEz)Es4~V@?g}Zt6>k&Zl&g|BF{5ZL5Zg83MII@Aj#wkBfm%;`F`)^2#whuXRkvQaw zN1A{I@*ugC_ssAkX7bmsU#E9N7t1q@u7Z*ZD(b&*m)+w>soZRA!3`D->N*UB?%*+Eq8e14ie?L|E zA#*sTLO|U(D2^(`-R*Fm1lR=lxAbyd#e9*{%&Z@9^Sy}H;BP=Bk)UMp>i~4LFJlhz zPl^G>6x_f2quFA~zPRI5s3R&e@~iva)@Sd6v}6`m7M3qX1-K?{I4f|N%Yin0PIRB^ z&K+A&@WP35SuBE6pdHL(_}}?|fZ$rORs1&AbF0s6*G(j}f%djxEl8yPsZMAJriQg} ztwV~z+MMggjhWq4=1;cx+rN+Bt{I~h^)hU5a_DahT8kB6wR>J(dD{@BJJBg=`|An#F7QTYY>1<=k7 znLmK@LXBBINC?YexNy0UU-Z|^J}Ef1=t+;Lfzg#sSR4f(j)$p!`?rxkd3qPvq9 zIL_D*KrSN>+%w3^O;1ldSc)9A5tgA6*%#QN*!!9m5K|J z_B{D@9*KRu5#&#DB;G$MI3q9PDVm)0xqCOp3Ih2Si@!k60ZN9g=Q>kA6RfYVPmGVl zvI+g$niUY;`?p-|e8V+yx^HxN9ALYZqN->)WMfXp2Z25ZU3sh)QQ+2&K6D7wUT$Jsyc>Rx90?7yYT25SO20%8S3_Gpq3UJEwu>fS3Jf$zn1bJm zGxI^-#Qu;HLK_RQe&j~vhNdF+%av_gdR2DGbE}QvjqqhFm5*(Z5?$>#a{angZk?KU zhu;QGfa!iF?7U`N;6oGghHQLXOpMAR7V->gpsfyat3dd6 zcgFw{n(rRU>Q0o?2S6ad40l5tVvix;6ZHMRBCFkM9eFxgr@Qm!PIxV{;pdE|V~pFaO0JL zm5qw~o6a9b$l~|av!WjMc@!j*Dqpo5{QS4Et=#SYI%pj33 zO~~{+Df)oW&`^JWmYX-N58Q74-Os$*j7>~HmlqcpfqlOziqo-UEy<7G@X|Dh)fruy z#z|wuuI;#0wwPMD_p&VoW72Ria9*3ww>YdC^OVjw=%UNui}n*yBtl3X@8+P z#7g=q-OK0o=t}-A`A`6YTEwZV%qICkd6u?h?Q@-K{bCRX)(cJ#mY4cn9v<@rVHafprTJjosw z)6swPZ%h}FD+se0R1@o3n(Yk031|~qZwAnOE_CxlZWwy#p^Ow@^X4$LP^Qw>7OIuA z4ne6^{pSMl9M`U;nqQHXle1sFAG-$P^h>`&#bn-{;=(6zYP%D z^6>&wLU&;-K;_VG^G~)!U~vob;Duk!b<25zvIa>v;n5Hm zzc%tKzGioW>}%AXx8n5(NlD34tB9~Lu4lhkAg2r}27H2SY;1+p~7e|MM7c75JFR6jX(^TxF$~6l}}I*<$5Y-J@!Fm&S27T zX7GdLKFi2QsT}=6AcKiUqX$(tA3#Z^Oi*2?CXK}3$OZyQn4Xg(;$- zbvKlc;y4D9h6h*zGr&;@w&Ok2R#qmbrPWeZH7(NA*`9W}eD&WH^jfOZ=PIFRb^|pB z9BY1><1JXXn>z*s+qoO>t=15@BoUd%S1`fs$R(9PULl7c{qznA#5tz7XhldNJ%l@6 z-irO))YvHCcCRTP6k;rGk?CzG8Mi6Y(-N-XLxl>S=ol=ELf`ed-bY3{=oh%YF?b{+ zqoY7M^}mD^ikl_`MwCac+>=PI3(Q0i)Q+zg(N%f#iDgOc#~|Jfk$rn^j|dV(JGGo= zux&1wp+S;4ClGF#R0|A*x^>CU!6iczHaUU|D@8nVBPG@~BO?$XS7atHeQI8$X<=bO zOG7ibJZR>fHy4iA+9RUvhmg4f_m!~Tdgm!i(cd4tW<%|Kpf2srA|? z_Q045JJgmv-_GtpSmJNLr~;sl88 zb!}$yn;#y5bZhrBcb)UFAxIJ0Ba`H3=UFxN`A~vkSnUFatzNd0~)Ib%q`D zn;@$2Y>dL=3GdroFe+=F{4DKC+O I)PMDV02%L|H2?qr literal 45191 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ὦ{1yYaHn2Ov*=aW^ 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 diff --git a/e2e/playwright/snapshot-tests.spec.ts-snapshots/extrude-on-default-planes-should-be-stable--XY-1-Google-Chrome-linux.png b/e2e/playwright/snapshot-tests.spec.ts-snapshots/extrude-on-default-planes-should-be-stable--XY-1-Google-Chrome-linux.png index 8229727e86ab45576fbb42a26fca6bad26509f23..2f43ee3596738625237f7000a885b9b4015fbdba 100644 GIT binary patch literal 50179 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