Declare std kwarg functions in KCL and migrate circle (#5955)

* Support calling KCL std KW fns, and move circle to KCL std

Signed-off-by: Nick Cameron <nrc@ncameron.org>

* Doc comments on parameters

Signed-off-by: Nick Cameron <nrc@ncameron.org>

* Update grammar

Signed-off-by: Nick Cameron <nrc@ncameron.org>

* Change use of counterClockWise to ccw

Signed-off-by: Nick Cameron <nrc@ncameron.org>

---------

Signed-off-by: Nick Cameron <nrc@ncameron.org>
This commit is contained in:
Nick Cameron
2025-03-24 21:55:24 +13:00
committed by GitHub
parent dddcd5ff46
commit 3b2abe5814
94 changed files with 16657 additions and 9803 deletions

File diff suppressed because one or more lines are too long

View File

@ -10,10 +10,10 @@ Construct a circle derived from 3 points.
```js ```js
circleThreePoint( circleThreePoint(
sketchSurfaceOrGroup: SketchOrSurface,
p1: [number], p1: [number],
p2: [number], p2: [number],
p3: [number], p3: [number],
sketchSurfaceOrGroup: SketchOrSurface,
tag?: TagDeclarator, tag?: TagDeclarator,
): Sketch ): Sketch
``` ```
@ -23,10 +23,10 @@ circleThreePoint(
| Name | Type | Description | Required | | Name | Type | Description | Required |
|----------|------|-------------|----------| |----------|------|-------------|----------|
| `sketchSurfaceOrGroup` | [`SketchOrSurface`](/docs/kcl/types/SketchOrSurface) | Plane or surface to sketch on. | Yes |
| `p1` | [`[number]`](/docs/kcl/types/number) | 1st point to derive the circle. | Yes | | `p1` | [`[number]`](/docs/kcl/types/number) | 1st point to derive the circle. | Yes |
| `p2` | [`[number]`](/docs/kcl/types/number) | 2nd point to derive the circle. | Yes | | `p2` | [`[number]`](/docs/kcl/types/number) | 2nd point to derive the circle. | Yes |
| `p3` | [`[number]`](/docs/kcl/types/number) | 3rd point to derive the circle. | Yes | | `p3` | [`[number]`](/docs/kcl/types/number) | 3rd point to derive the circle. | Yes |
| `sketchSurfaceOrGroup` | [`SketchOrSurface`](/docs/kcl/types/SketchOrSurface) | Plane or surface to sketch on. | Yes |
| [`tag`](/docs/kcl/types/tag) | [`TagDeclarator`](/docs/kcl/types#tag-declaration) | Identifier for the circle to reference elsewhere. | No | | [`tag`](/docs/kcl/types/tag) | [`TagDeclarator`](/docs/kcl/types#tag-declaration) | Identifier for the circle to reference elsewhere. | No |
### Returns ### Returns

View File

@ -15,7 +15,7 @@ std::math::E: number = 2.71828182845904523536028747135266250_
### Examples ### Examples
```js ```js
exampleSketch = startSketchOn("XZ") exampleSketch = startSketchOn(XZ)
|> startProfileAt([0, 0], %) |> startProfileAt([0, 0], %)
|> angledLine({ |> angledLine({
angle = 30, angle = 30,

View File

@ -17,7 +17,7 @@ std::math::PI: number = 3.14159265358979323846264338327950288_
```js ```js
circumference = 70 circumference = 70
exampleSketch = startSketchOn("XZ") exampleSketch = startSketchOn(XZ)
|> circle(center = [0, 0], radius = circumference/ (2 * PI)) |> circle(center = [0, 0], radius = circumference/ (2 * PI))
example = extrude(exampleSketch, length = 5) example = extrude(exampleSketch, length = 5)

View File

@ -15,7 +15,7 @@ std::math::TAU: number = 6.28318530717958647692528676655900577_
### Examples ### Examples
```js ```js
exampleSketch = startSketchOn("XZ") exampleSketch = startSketchOn(XZ)
|> startProfileAt([0, 0], %) |> startProfileAt([0, 0], %)
|> angledLine({ |> angledLine({
angle = 50, angle = 50,

View File

@ -61,7 +61,6 @@ layout: manual
* [`bezierCurve`](kcl/bezierCurve) * [`bezierCurve`](kcl/bezierCurve)
* [`ceil`](kcl/ceil) * [`ceil`](kcl/ceil)
* [`chamfer`](kcl/chamfer) * [`chamfer`](kcl/chamfer)
* [`circle`](kcl/circle)
* [`circleThreePoint`](kcl/circleThreePoint) * [`circleThreePoint`](kcl/circleThreePoint)
* [`close`](kcl/close) * [`close`](kcl/close)
* [`cm`](kcl/cm) * [`cm`](kcl/cm)
@ -145,3 +144,5 @@ layout: manual
* [`cos`](kcl/std-math-cos) * [`cos`](kcl/std-math-cos)
* [`sin`](kcl/std-math-sin) * [`sin`](kcl/std-math-sin)
* [`tan`](kcl/std-math-tan) * [`tan`](kcl/std-math-tan)
* **std::sketch**
* [`circle`](kcl/std-sketch-circle)

View File

@ -9,7 +9,7 @@ Compute the cosine of a number (in radians).
```js ```js
cos(num: number(rad)): number(_) cos(@num: number(rad)): number(_)
``` ```
@ -27,7 +27,7 @@ cos(num: number(rad)): number(_)
### Examples ### Examples
```js ```js
exampleSketch = startSketchOn("XZ") exampleSketch = startSketchOn(XZ)
|> startProfileAt([0, 0], %) |> startProfileAt([0, 0], %)
|> angledLine({ |> angledLine({
angle = 30, angle = 30,

View File

@ -9,7 +9,7 @@ Compute the sine of a number (in radians).
```js ```js
sin(num: number(rad)): number(_) sin(@num: number(rad)): number(_)
``` ```
@ -27,7 +27,7 @@ sin(num: number(rad)): number(_)
### Examples ### Examples
```js ```js
exampleSketch = startSketchOn("XZ") exampleSketch = startSketchOn(XZ)
|> startProfileAt([0, 0], %) |> startProfileAt([0, 0], %)
|> angledLine({ |> angledLine({
angle = 50, angle = 50,

View File

@ -9,7 +9,7 @@ Compute the tangent of a number (in radians).
```js ```js
tan(num: number(rad)): number(_) tan(@num: number(rad)): number(_)
``` ```
@ -27,7 +27,7 @@ tan(num: number(rad)): number(_)
### Examples ### Examples
```js ```js
exampleSketch = startSketchOn("XZ") exampleSketch = startSketchOn(XZ)
|> startProfileAt([0, 0], %) |> startProfileAt([0, 0], %)
|> angledLine({ |> angledLine({
angle = 50, angle = 50,

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

View File

@ -10,8 +10,8 @@ A point in two dimensional space.
type Point2d = [number; 2] type Point2d = [number; 2]
``` ```
`Point2d` is an alias for a two-element array of [number](/docs/kcl/types/number)s. To write a value [`Point2d`](/docs/kcl/types/Point2d) is an alias for a two-element array of [number](/docs/kcl/types/number)s. To write a value
with type `Point2d`, use an array, e.g., `[0, 0]` or `[5.0, 3.14]`. with type [`Point2d`](/docs/kcl/types/Point2d), use an array, e.g., `[0, 0]` or `[5.0, 3.14]`.

View File

@ -10,8 +10,8 @@ A point in three dimensional space.
type Point3d = [number; 3] type Point3d = [number; 3]
``` ```
`Point3d` is an alias for a three-element array of [number](/docs/kcl/types/number)s. To write a value [`Point3d`](/docs/kcl/types/Point3d) is an alias for a three-element array of [number](/docs/kcl/types/number)s. To write a value
with type `Point3d`, use an array, e.g., `[0, 0, 0]` or `[5.0, 3.14, 6.8]`. with type [`Point3d`](/docs/kcl/types/Point3d), use an array, e.g., `[0, 0, 0]` or `[5.0, 3.14, 6.8]`.

View File

@ -17,7 +17,7 @@ mySketch = startSketchOn('XY')
|> close() |> close()
``` ```
The `mySketch` variable will be an executed `Sketch` object. Executed being past The `mySketch` variable will be an executed [`Sketch`](/docs/kcl/types/Sketch) object. Executed being past
tense, because the engine has already executed the commands to create the sketch. tense, because the engine has already executed the commands to create the sketch.
The previous sketch commands will never be executed again, in this case. The previous sketch commands will never be executed again, in this case.

View File

@ -18,7 +18,7 @@ myPart = startSketchOn('XY')
|> extrude(length = 6) |> extrude(length = 6)
``` ```
The `myPart` variable will be an executed `Solid` object. Executed being past The `myPart` variable will be an executed [`Solid`](/docs/kcl/types/Solid) object. Executed being past
tense, because the engine has already executed the commands to create the solid. tense, because the engine has already executed the commands to create the solid.
The previous solid commands will never be executed again, in this case. The previous solid commands will never be executed again, in this case.

View File

@ -1082,7 +1082,7 @@ openSketch = startSketchOn(XY)
}) => { }) => {
// One dumb hardcoded screen pixel value // One dumb hardcoded screen pixel value
const testPoint = { x: 620, y: 257 } const testPoint = { x: 620, y: 257 }
const expectedOutput = `helix001 = helix( revolutions = 1, angleStart = 360, counterClockWise = false, radius = 5, axis = 'X', length = 5,)` const expectedOutput = `helix001 = helix( revolutions = 1, angleStart = 360, ccw = false, radius = 5, axis = 'X', length = 5,)`
const expectedLine = `revolutions=1,` const expectedLine = `revolutions=1,`
await homePage.goToModelingScene() await homePage.goToModelingScene()
@ -1099,7 +1099,7 @@ openSketch = startSketchOn(XY)
headerArguments: { headerArguments: {
AngleStart: '', AngleStart: '',
Axis: '', Axis: '',
CounterClockWise: '', Ccw: '',
Length: '', Length: '',
Radius: '', Radius: '',
Revolutions: '', Revolutions: '',
@ -1141,7 +1141,7 @@ openSketch = startSketchOn(XY)
headerArguments: { headerArguments: {
AngleStart: '360', AngleStart: '360',
Axis: 'X', Axis: 'X',
CounterClockWise: '', Ccw: '',
Length: initialInput, Length: initialInput,
Radius: '5', Radius: '5',
Revolutions: '1', Revolutions: '1',
@ -1156,7 +1156,7 @@ openSketch = startSketchOn(XY)
headerArguments: { headerArguments: {
AngleStart: '360', AngleStart: '360',
Axis: 'X', Axis: 'X',
CounterClockWise: '', Ccw: '',
Length: newInput, Length: newInput,
Radius: '5', Radius: '5',
Revolutions: '1', Revolutions: '1',

View File

@ -75,10 +75,7 @@ LabeledArgument { ArgumentLabel Equals expression }
ArgumentList { "(" commaSep<LabeledArgument | expression> ")" } ArgumentList { "(" commaSep<LabeledArgument | expression> ")" }
type[@isGroup=Type] { type[@isGroup=Type] {
@specialize[@name=PrimitiveType]< PrimitiveType { identifier } |
identifier,
"bool" | "number" | "string" | "tag" | "Sketch" | "SketchSurface" | "Solid" | "Plane"
> |
ArrayType { "[" type !member (";" Number "+"?)? "]" } | ArrayType { "[" type !member (";" Number "+"?)? "]" } |
ObjectType { "{" commaSep<ObjectProperty { PropertyName ":" type }> "}" } ObjectType { "{" commaSep<ObjectProperty { PropertyName ":" type }> "}" }
} }

View File

@ -837,10 +837,10 @@ holeIndex = 6
// Create the mounting plate extrusion, holes, and fillets // Create the mounting plate extrusion, holes, and fillets
part = rectShape([0, 0], 20, 20) part = rectShape([0, 0], 20, 20)
|> hole(circle(XY, [-holeIndex, holeIndex], holeRadius), %) |> hole(circle('XY', center = [-holeIndex, holeIndex], radius = holeRadius), %)
|> hole(circle(XY, [holeIndex, holeIndex], holeRadius), %) |> hole(circle('XY', center = [holeIndex, holeIndex], radius = holeRadius), %)
|> hole(circle(XY, [-holeIndex, -holeIndex], holeRadius), %) |> hole(circle('XY', center = [-holeIndex, -holeIndex], radius = holeRadius), %)
|> hole(circle(XY, [holeIndex, -holeIndex], holeRadius), %) |> hole(circle('XY', center = [holeIndex, -holeIndex], radius = holeRadius), %)
|> extrude(length = 2) |> extrude(length = 2)
|> fillet( |> fillet(
radius = 4, radius = 4,
@ -860,7 +860,7 @@ part = rectShape([0, 0], 20, 20)
}; };
assert_eq!( assert_eq!(
err.error.message(), err.error.message(),
"This function requires a keyword argument 'center'" "The input argument of std::sketch::circle requires a value with type `Sketch | Plane | Face`, but found string (text)"
); );
} }

View File

@ -467,6 +467,10 @@ fn generate_type_from_kcl(ty: &TyData, file_name: String, example_name: String)
}); });
let output = hbs.render("kclType", &data)?; let output = hbs.render("kclType", &data)?;
let output = cleanup_type_links(
&output,
ty.referenced_types.iter().filter(|t| !DECLARED_TYPES.contains(&&***t)),
);
expectorate::assert_contents(format!("../../docs/kcl/{}.md", file_name), &output); expectorate::assert_contents(format!("../../docs/kcl/{}.md", file_name), &output);
Ok(()) Ok(())
@ -514,6 +518,13 @@ fn generate_function_from_kcl(function: &FnData, file_name: String) -> Result<()
}); });
let output = hbs.render("function", &data)?; let output = hbs.render("function", &data)?;
let output = cleanup_type_links(
&output,
function
.referenced_types
.iter()
.filter(|t| !DECLARED_TYPES.contains(&&***t)),
);
expectorate::assert_contents(format!("../../docs/kcl/{}.md", file_name), &output); expectorate::assert_contents(format!("../../docs/kcl/{}.md", file_name), &output);
Ok(()) Ok(())
@ -677,6 +688,12 @@ fn cleanup_type_links<'a>(output: &str, types: impl Iterator<Item = &'a String>)
} }
} }
// TODO handle union types generically rather than special casing them.
cleaned_output = cleaned_output.replace(
"`Sketch | Plane | Face`",
"[`Sketch`](/docs/kcl/types/Sketch) `|` [`Plane`](/docs/kcl/types/Face) `|` [`Plane`](/docs/kcl/types/Face)",
);
cleanup_static_links(&cleaned_output) cleanup_static_links(&cleaned_output)
} }

View File

@ -1,4 +1,4 @@
use std::str::FromStr; use std::{collections::HashSet, str::FromStr};
use regex::Regex; use regex::Regex;
use tower_lsp::lsp_types::{ use tower_lsp::lsp_types::{
@ -9,7 +9,7 @@ use tower_lsp::lsp_types::{
use crate::{ use crate::{
execution::annotations, execution::annotations,
parsing::{ parsing::{
ast::types::{Annotation, Node, NonCodeNode, VariableKind}, ast::types::{Annotation, Node, PrimitiveType, Type, VariableKind},
token::NumericSuffix, token::NumericSuffix,
}, },
ModuleId, ModuleId,
@ -59,7 +59,6 @@ impl CollectionVisitor {
format!("std::{}::", self.name) format!("std::{}::", self.name)
}; };
let mut dd = match var.kind { let mut dd = match var.kind {
// TODO metadata for args
VariableKind::Fn => DocData::Fn(FnData::from_ast(var, qual_name)), VariableKind::Fn => DocData::Fn(FnData::from_ast(var, qual_name)),
VariableKind::Const => DocData::Const(ConstData::from_ast(var, qual_name)), VariableKind::Const => DocData::Const(ConstData::from_ast(var, qual_name)),
}; };
@ -322,6 +321,8 @@ pub struct FnData {
/// Code examples. /// Code examples.
/// These are tested and we know they compile and execute. /// These are tested and we know they compile and execute.
pub examples: Vec<(String, ExampleProperties)>, pub examples: Vec<(String, ExampleProperties)>,
#[allow(dead_code)]
pub referenced_types: Vec<String>,
} }
impl FnData { impl FnData {
@ -332,6 +333,17 @@ impl FnData {
}; };
let name = var.declaration.id.name.clone(); let name = var.declaration.id.name.clone();
qual_name.push_str(&name); qual_name.push_str(&name);
let mut referenced_types = HashSet::new();
if let Some(t) = &expr.return_type {
collect_type_names(&mut referenced_types, t);
}
for p in &expr.params {
if let Some(t) = &p.type_ {
collect_type_names(&mut referenced_types, t);
}
}
FnData { FnData {
name, name,
qual_name, qual_name,
@ -346,6 +358,7 @@ impl FnData {
summary: None, summary: None,
description: None, description: None,
examples: Vec::new(), examples: Vec::new(),
referenced_types: referenced_types.into_iter().collect(),
} }
} }
@ -414,7 +427,7 @@ impl FnData {
} }
#[allow(clippy::literal_string_with_formatting_args)] #[allow(clippy::literal_string_with_formatting_args)]
fn to_autocomplete_snippet(&self) -> String { pub(super) fn to_autocomplete_snippet(&self) -> String {
if self.name == "loft" { if self.name == "loft" {
return "loft([${0:sketch000}, ${1:sketch001}])${}".to_owned(); return "loft([${0:sketch000}, ${1:sketch001}])${}".to_owned();
} else if self.name == "hole" { } else if self.name == "hole" {
@ -480,12 +493,12 @@ pub struct ArgData {
/// If the argument is required. /// If the argument is required.
pub kind: ArgKind, pub kind: ArgKind,
/// Additional information that could be used instead of the type's description. /// Additional information that could be used instead of the type's description.
/// This is helpful if the type is really basic, like "u32" -- that won't tell the user much about /// This is helpful if the type is really basic, like "number" -- that won't tell the user much about
/// how this argument is meant to be used. /// how this argument is meant to be used.
pub docs: Option<String>, pub docs: Option<String>,
} }
#[derive(Debug, Clone, Copy)] #[derive(Debug, Clone, Copy, PartialEq)]
pub enum ArgKind { pub enum ArgKind {
Special, Special,
// Parameter is whether the arg is optional. // Parameter is whether the arg is optional.
@ -495,38 +508,47 @@ pub enum ArgKind {
impl ArgData { impl ArgData {
fn from_ast(arg: &crate::parsing::ast::types::Parameter) -> Self { fn from_ast(arg: &crate::parsing::ast::types::Parameter) -> Self {
ArgData { let mut result = ArgData {
name: arg.identifier.name.clone(), name: arg.identifier.name.clone(),
ty: arg.type_.as_ref().map(|t| t.to_string()), ty: arg.type_.as_ref().map(|t| t.to_string()),
// Doc comments are not yet supported on parameters.
docs: None, docs: None,
kind: if arg.labeled { kind: if arg.labeled {
ArgKind::Labelled(arg.optional()) ArgKind::Labelled(arg.optional())
} else { } else {
ArgKind::Special ArgKind::Special
}, },
} };
}
fn _with_meta(&mut self, _meta: &[Node<NonCodeNode>]) { result.with_comments(&arg.identifier.pre_comments);
// TODO use comments for docs (we can't currently get the comments for an argument) result
} }
pub fn get_autocomplete_snippet(&self, index: usize) -> Option<(usize, String)> { pub fn get_autocomplete_snippet(&self, index: usize) -> Option<(usize, String)> {
match &self.ty { let label = if self.kind == ArgKind::Special {
Some(s) String::new()
if [ } else {
"Sketch", format!("{} = ", self.name)
"SketchSet", };
"Solid", match self.ty.as_deref() {
"SolidSet", Some(s) if ["Sketch", "Solid", "Plane | Face", "Sketch | Plane | Face"].contains(&s) => {
"SketchSurface", Some((index, format!("{label}${{{}:{}}}", index, "%")))
"SketchOrSurface",
]
.contains(&&**s) =>
{
Some((index, format!("${{{}:{}}}", index, "%")))
} }
Some("number") if self.kind.required() => Some((index, format!(r#"{label}${{{}:3.14}}"#, index))),
Some("Point2d") if self.kind.required() => Some((
index + 1,
format!(r#"{label}[${{{}:3.14}}, ${{{}:3.14}}]"#, index, index + 1),
)),
Some("Point3d") if self.kind.required() => Some((
index + 2,
format!(
r#"{label}[${{{}:3.14}}, ${{{}:3.14}}, ${{{}:3.14}}]"#,
index,
index + 1,
index + 2
),
)),
Some("string") if self.kind.required() => Some((index, format!(r#"{label}${{{}:"string"}}"#, index))),
Some("bool") if self.kind.required() => Some((index, format!(r#"{label}${{{}:false}}"#, index))),
_ => None, _ => None,
} }
} }
@ -570,12 +592,19 @@ pub struct TyData {
/// Code examples. /// Code examples.
/// These are tested and we know they compile and execute. /// These are tested and we know they compile and execute.
pub examples: Vec<(String, ExampleProperties)>, pub examples: Vec<(String, ExampleProperties)>,
#[allow(dead_code)]
pub referenced_types: Vec<String>,
} }
impl TyData { impl TyData {
fn from_ast(ty: &crate::parsing::ast::types::TypeDeclaration, mut qual_name: String) -> Self { fn from_ast(ty: &crate::parsing::ast::types::TypeDeclaration, mut qual_name: String) -> Self {
let name = ty.name.name.clone(); let name = ty.name.name.clone();
qual_name.push_str(&name); qual_name.push_str(&name);
let mut referenced_types = HashSet::new();
if let Some(t) = &ty.alias {
collect_type_names(&mut referenced_types, t);
}
TyData { TyData {
name, name,
qual_name, qual_name,
@ -589,6 +618,7 @@ impl TyData {
summary: None, summary: None,
description: None, description: None,
examples: Vec::new(), examples: Vec::new(),
referenced_types: referenced_types.into_iter().collect(),
} }
} }
@ -852,6 +882,66 @@ impl ApplyMeta for TyData {
} }
} }
impl ApplyMeta for ArgData {
fn apply_docs(
&mut self,
summary: Option<String>,
description: Option<String>,
_examples: Vec<(String, ExampleProperties)>,
) {
let Some(mut docs) = summary else {
return;
};
if let Some(desc) = description {
docs.push_str("\n\n");
docs.push_str(&desc);
}
self.docs = Some(docs);
}
fn deprecated(&mut self, _deprecated: bool) {
unreachable!();
}
fn doc_hidden(&mut self, _doc_hidden: bool) {
unreachable!();
}
fn impl_kind(&mut self, _impl_kind: annotations::Impl) {
unreachable!();
}
}
fn collect_type_names(acc: &mut HashSet<String>, ty: &Type) {
match ty {
Type::Primitive(primitive_type) => {
acc.insert(collect_type_names_from_primitive(primitive_type));
}
Type::Array { ty, .. } => {
acc.insert(collect_type_names_from_primitive(ty));
}
Type::Union { tys } => tys.iter().for_each(|t| {
acc.insert(collect_type_names_from_primitive(t));
}),
Type::Object { properties } => properties.iter().for_each(|p| {
if let Some(t) = &p.type_ {
collect_type_names(acc, t)
}
}),
}
}
fn collect_type_names_from_primitive(ty: &PrimitiveType) -> String {
match ty {
PrimitiveType::String => "string".to_owned(),
PrimitiveType::Number(_) => "number".to_owned(),
PrimitiveType::Boolean => "bool".to_owned(),
PrimitiveType::Tag => "tag".to_owned(),
PrimitiveType::Named(id) => id.name.clone(),
}
}
#[cfg(test)] #[cfg(test)]
mod test { mod test {
use super::*; use super::*;

View File

@ -927,6 +927,8 @@ fn get_autocomplete_string_from_schema(schema: &schemars::schema::Schema) -> Res
mod tests { mod tests {
use pretty_assertions::assert_eq; use pretty_assertions::assert_eq;
use crate::docs::kcl_doc::{self, DocData};
use super::StdLibFn; use super::StdLibFn;
#[test] #[test]
@ -1007,8 +1009,11 @@ mod tests {
#[test] #[test]
#[allow(clippy::literal_string_with_formatting_args)] #[allow(clippy::literal_string_with_formatting_args)]
fn get_autocomplete_snippet_circle() { fn get_autocomplete_snippet_circle() {
let circle_fn: Box<dyn StdLibFn> = Box::new(crate::std::shapes::Circle); let data = kcl_doc::walk_prelude();
let snippet = circle_fn.to_autocomplete_snippet().unwrap(); let DocData::Fn(circle_fn) = data.into_iter().find(|d| d.name() == "circle").unwrap() else {
panic!();
};
let snippet = circle_fn.to_autocomplete_snippet();
assert_eq!( assert_eq!(
snippet, snippet,
r#"circle(${0:%}, center = [${1:3.14}, ${2:3.14}], radius = ${3:3.14})${}"# r#"circle(${0:%}, center = [${1:3.14}, ${2:3.14}], radius = ${3:3.14})${}"#

View File

@ -1,6 +1,7 @@
use std::collections::HashMap; use std::collections::HashMap;
use async_recursion::async_recursion; use async_recursion::async_recursion;
use indexmap::IndexMap;
use crate::{ use crate::{
engine::ExecutionKind, engine::ExecutionKind,
@ -618,7 +619,11 @@ impl ExecutorContext {
if let Some(std_path) = &exec_state.mod_local.settings.std_path { if let Some(std_path) = &exec_state.mod_local.settings.std_path {
let (func, props) = crate::std::std_fn(std_path, statement_kind.expect_name()); let (func, props) = crate::std::std_fn(std_path, statement_kind.expect_name());
KclValue::Function { KclValue::Function {
value: FunctionSource::Std { func, props }, value: FunctionSource::Std {
func,
props,
ast: function_expression.clone(),
},
meta: vec![metadata.to_owned()], meta: vec![metadata.to_owned()],
} }
} else { } else {
@ -630,7 +635,7 @@ impl ExecutorContext {
} }
} else { } else {
// Snapshotting memory here is crucial for semantics so that we close // Snapshotting memory here is crucial for semantics so that we close
// over variables. Variables defined lexically later shouldn't // over variables. Variables defined lexically later shouldn't
// be available to the function body. // be available to the function body.
KclValue::Function { KclValue::Function {
value: FunctionSource::User { value: FunctionSource::User {
@ -1130,7 +1135,7 @@ impl Node<CallExpressionKw> {
let callsite: SourceRange = self.into(); let callsite: SourceRange = self.into();
// Build a hashmap from argument labels to the final evaluated values. // Build a hashmap from argument labels to the final evaluated values.
let mut fn_args = HashMap::with_capacity(self.arguments.len()); let mut fn_args = IndexMap::with_capacity(self.arguments.len());
for arg_expr in &self.arguments { for arg_expr in &self.arguments {
let source_range = SourceRange::from(arg_expr.arg.clone()); let source_range = SourceRange::from(arg_expr.arg.clone());
let metadata = Metadata { source_range }; let metadata = Metadata { source_range };
@ -1191,10 +1196,34 @@ impl Node<CallExpressionKw> {
None None
}; };
let formals = func.args(false);
for (label, arg) in &args.kw_args.labeled {
match formals.iter().find(|p| &p.name == label) {
Some(p) => {
if !p.label_required {
exec_state.err(CompilationError::err(
arg.source_range,
format!(
"The function `{fn_name}` expects an unlabeled first parameter (`{label}`), but it is labelled in the call"
),
));
}
}
None => {
exec_state.err(CompilationError::err(
arg.source_range,
format!("`{label}` is not an argument of `{fn_name}`"),
));
}
}
}
// Attempt to call the function. // Attempt to call the function.
let mut return_value = { let mut return_value = {
// Don't early-return in this block. // Don't early-return in this block.
exec_state.mut_stack().push_new_env_for_rust_call();
let result = func.std_lib_fn()(exec_state, args).await; let result = func.std_lib_fn()(exec_state, args).await;
exec_state.mut_stack().pop_env();
if let Some(mut op) = op { if let Some(mut op) = op {
op.set_std_lib_call_is_error(result.is_err()); op.set_std_lib_call_is_error(result.is_err());
@ -1213,7 +1242,6 @@ impl Node<CallExpressionKw> {
Ok(return_value) Ok(return_value)
} }
FunctionKind::UserDefined => { FunctionKind::UserDefined => {
let source_range = SourceRange::from(self);
// Clone the function so that we can use a mutable reference to // Clone the function so that we can use a mutable reference to
// exec_state. // exec_state.
let func = fn_name.get_result(exec_state, ctx).await?.clone(); let func = fn_name.get_result(exec_state, ctx).await?.clone();
@ -1237,17 +1265,21 @@ impl Node<CallExpressionKw> {
source_range: callsite, source_range: callsite,
}); });
let return_value = func let Some(fn_src) = func.as_fn() else {
.call_fn_kw(args, exec_state, ctx.clone(), callsite) return Err(KclError::Semantic(KclErrorDetails {
.await message: "cannot call this because it isn't a function".to_string(),
.map_err(|e| { source_ranges: vec![callsite],
// Add the call expression to the source ranges. }));
// TODO currently ignored by the frontend };
e.add_source_ranges(vec![source_range])
})?; let return_value = fn_src.call_kw(exec_state, ctx, args, callsite).await.map_err(|e| {
// Add the call expression to the source ranges.
// TODO currently ignored by the frontend
e.add_source_ranges(vec![callsite])
})?;
let result = return_value.ok_or_else(move || { let result = return_value.ok_or_else(move || {
let mut source_ranges: Vec<SourceRange> = vec![source_range]; let mut source_ranges: Vec<SourceRange> = vec![callsite];
// We want to send the source range of the original function. // We want to send the source range of the original function.
if let KclValue::Function { meta, .. } = func { if let KclValue::Function { meta, .. } = func {
source_ranges = meta.iter().map(|m| m.source_range).collect(); source_ranges = meta.iter().map(|m| m.source_range).collect();
@ -1364,14 +1396,17 @@ impl Node<CallExpression> {
source_range: callsite, source_range: callsite,
}); });
let return_value = func let Some(fn_src) = func.as_fn() else {
.call_fn(fn_args, exec_state, ctx.clone(), source_range) return Err(KclError::Semantic(KclErrorDetails {
.await message: "cannot call this because it isn't a function".to_string(),
.map_err(|e| { source_ranges: vec![source_range],
// Add the call expression to the source ranges. }));
// TODO currently ignored by the frontend };
e.add_source_ranges(vec![source_range]) let return_value = fn_src.call(exec_state, ctx, fn_args, source_range).await.map_err(|e| {
})?; // Add the call expression to the source ranges.
// TODO currently ignored by the frontend
e.add_source_ranges(vec![source_range])
})?;
let result = return_value.ok_or_else(move || { let result = return_value.ok_or_else(move || {
let mut source_ranges: Vec<SourceRange> = vec![source_range]; let mut source_ranges: Vec<SourceRange> = vec![source_range];
@ -1857,6 +1892,27 @@ fn assign_args_to_params_kw(
mut args: crate::std::args::KwArgs, mut args: crate::std::args::KwArgs,
exec_state: &mut ExecState, exec_state: &mut ExecState,
) -> Result<(), KclError> { ) -> Result<(), KclError> {
for (label, arg) in &args.labeled {
match function_expression.params.iter().find(|p| &p.identifier.name == label) {
Some(p) => {
if !p.labeled {
exec_state.err(CompilationError::err(
arg.source_range,
format!(
"This function expects an unlabeled first parameter (`{label}`), but it is labelled in the call"
),
));
}
}
None => {
exec_state.err(CompilationError::err(
arg.source_range,
format!("`{label}` is not an argument of this function"),
));
}
}
}
// Add the arguments to the memory. A new call frame should have already // Add the arguments to the memory. A new call frame should have already
// been created. // been created.
let source_ranges = vec![function_expression.into()]; let source_ranges = vec![function_expression.into()];
@ -1905,10 +1961,11 @@ fn assign_args_to_params_kw(
)?; )?;
} }
} }
Ok(()) Ok(())
} }
pub(crate) async fn call_user_defined_function( async fn call_user_defined_function(
args: Vec<Arg>, args: Vec<Arg>,
memory: EnvironmentRef, memory: EnvironmentRef,
function_expression: NodeRef<'_, FunctionExpression>, function_expression: NodeRef<'_, FunctionExpression>,
@ -1941,7 +1998,7 @@ pub(crate) async fn call_user_defined_function(
result result
} }
pub(crate) async fn call_user_defined_function_kw( async fn call_user_defined_function_kw(
args: crate::std::args::KwArgs, args: crate::std::args::KwArgs,
memory: EnvironmentRef, memory: EnvironmentRef,
function_expression: NodeRef<'_, FunctionExpression>, function_expression: NodeRef<'_, FunctionExpression>,
@ -1979,35 +2036,138 @@ impl FunctionSource {
&self, &self,
exec_state: &mut ExecState, exec_state: &mut ExecState,
ctx: &ExecutorContext, ctx: &ExecutorContext,
args: Vec<Arg>, mut args: Vec<Arg>,
source_range: SourceRange, callsite: SourceRange,
) -> Result<Option<KclValue>, KclError> { ) -> Result<Option<KclValue>, KclError> {
match self { match self {
FunctionSource::Std { func, props } => { FunctionSource::Std { props, .. } => {
if args.len() <= 1 {
let args = crate::std::Args::new_kw(
KwArgs {
unlabeled: args.pop(),
labeled: IndexMap::new(),
},
callsite,
ctx.clone(),
exec_state.mod_local.pipe_value.clone().map(|v| Arg::new(v, callsite)),
);
self.call_kw(exec_state, ctx, args, callsite).await
} else {
Err(KclError::Semantic(KclErrorDetails {
message: format!("{} requires its arguments to be labelled", props.name),
source_ranges: vec![callsite],
}))
}
}
FunctionSource::User { ast, memory, .. } => {
call_user_defined_function(args, *memory, ast, exec_state, ctx).await
}
FunctionSource::None => unreachable!(),
}
}
pub async fn call_kw(
&self,
exec_state: &mut ExecState,
ctx: &ExecutorContext,
mut args: crate::std::Args,
callsite: SourceRange,
) -> Result<Option<KclValue>, KclError> {
match self {
FunctionSource::Std { func, ast, props } => {
if props.deprecated { if props.deprecated {
exec_state.warn(CompilationError::err( exec_state.warn(CompilationError::err(
source_range, callsite,
format!( format!(
"`{}` is deprecated, see the docs for a recommended replacement", "`{}` is deprecated, see the docs for a recommended replacement",
props.name props.name
), ),
)); ));
} }
let args = crate::std::Args::new(
args,
source_range,
ctx.clone(),
exec_state
.mod_local
.pipe_value
.clone()
.map(|v| Arg::new(v, source_range)),
);
func(exec_state, args).await.map(Some) for (label, arg) in &mut args.kw_args.labeled {
match ast.params.iter().find(|p| &p.identifier.name == label) {
Some(p) => {
if !p.labeled {
exec_state.err(CompilationError::err(
arg.source_range,
format!(
"The function `{}` expects an unlabeled first parameter (`{label}`), but it is labelled in the call",
props.name
),
));
}
if let Some(ty) = &p.type_ {
arg.value = arg
.value
.coerce(
&RuntimeType::from_parsed(ty.inner.clone(), exec_state, arg.source_range)
.unwrap(),
exec_state,
)
.ok_or_else(|| {
KclError::Semantic(KclErrorDetails {
message: format!(
"{label} requires a value with type `{}`, but found {}",
ty.inner,
arg.value.human_friendly_type()
),
source_ranges: vec![callsite],
})
})?;
}
}
None => {
exec_state.err(CompilationError::err(
arg.source_range,
format!("`{label}` is not an argument of `{}`", props.name),
));
}
}
}
if let Some(arg) = &mut args.kw_args.unlabeled {
if let Some(p) = ast.params.iter().find(|p| !p.labeled) {
if let Some(ty) = &p.type_ {
arg.value = arg
.value
.coerce(
&RuntimeType::from_parsed(ty.inner.clone(), exec_state, arg.source_range).unwrap(),
exec_state,
)
.ok_or_else(|| {
KclError::Semantic(KclErrorDetails {
message: format!(
"The input argument of {} requires a value with type `{}`, but found {}",
props.name,
ty.inner,
arg.value.human_friendly_type()
),
source_ranges: vec![callsite],
})
})?;
}
}
}
// Attempt to call the function.
exec_state.mut_stack().push_new_env_for_rust_call();
let mut result = {
// Don't early-return in this block.
let result = func(exec_state, args).await;
exec_state.mut_stack().pop_env();
// TODO support recording op into the feature tree
result
}?;
update_memory_for_tags_of_geometry(&mut result, exec_state)?;
Ok(Some(result))
} }
FunctionSource::User { ast, memory, .. } => { FunctionSource::User { ast, memory, .. } => {
call_user_defined_function(args, *memory, ast, exec_state, ctx).await call_user_defined_function_kw(args.kw_args, *memory, ast, exec_state, ctx).await
} }
FunctionSource::None => unreachable!(), FunctionSource::None => unreachable!(),
} }

View File

@ -9,13 +9,13 @@ use crate::{
errors::KclErrorDetails, errors::KclErrorDetails,
execution::{ execution::{
types::{NumericType, PrimitiveType, RuntimeType}, types::{NumericType, PrimitiveType, RuntimeType},
ExecState, ExecutorContext, Face, Helix, ImportedGeometry, Metadata, Plane, Sketch, Solid, TagIdentifier, Face, Helix, ImportedGeometry, Metadata, Plane, Sketch, Solid, TagIdentifier,
}, },
parsing::ast::types::{ parsing::ast::types::{
DefaultParamVal, FunctionExpression, KclNone, Literal, LiteralValue, Node, TagDeclarator, TagNode, DefaultParamVal, FunctionExpression, KclNone, Literal, LiteralValue, Node, TagDeclarator, TagNode,
}, },
std::{args::Arg, StdFnProps}, std::StdFnProps,
CompilationError, KclError, ModuleId, SourceRange, KclError, ModuleId, SourceRange,
}; };
pub type KclObjectFields = HashMap<String, KclValue>; pub type KclObjectFields = HashMap<String, KclValue>;
@ -113,6 +113,7 @@ pub enum FunctionSource {
None, None,
Std { Std {
func: crate::std::StdFn, func: crate::std::StdFn,
ast: crate::parsing::ast::types::BoxNode<FunctionExpression>,
props: StdFnProps, props: StdFnProps,
}, },
User { User {
@ -550,91 +551,10 @@ impl KclValue {
Ok(*b) Ok(*b)
} }
/// If this memory item is a function, call it with the given arguments, return its val as Ok. pub fn as_fn(&self) -> Option<&FunctionSource> {
/// If it's not a function, return Err.
pub async fn call_fn(
&self,
args: Vec<Arg>,
exec_state: &mut ExecState,
ctx: ExecutorContext,
source_range: SourceRange,
) -> Result<Option<KclValue>, KclError> {
match self { match self {
KclValue::Function { KclValue::Function { value, .. } => Some(value),
value: FunctionSource::Std { func, props }, _ => None,
..
} => {
if props.deprecated {
exec_state.warn(CompilationError::err(
source_range,
format!(
"`{}` is deprecated, see the docs for a recommended replacement",
props.name
),
));
}
exec_state.mut_stack().push_new_env_for_rust_call();
let args = crate::std::Args::new(
args,
source_range,
ctx.clone(),
exec_state
.mod_local
.pipe_value
.clone()
.map(|v| Arg::new(v, source_range)),
);
let result = func(exec_state, args).await.map(Some);
exec_state.mut_stack().pop_env();
result
}
KclValue::Function {
value: FunctionSource::User { ast, memory, .. },
..
} => crate::execution::exec_ast::call_user_defined_function(args, *memory, ast, exec_state, &ctx).await,
_ => Err(KclError::Semantic(KclErrorDetails {
message: "cannot call this because it isn't a function".to_string(),
source_ranges: vec![source_range],
})),
}
}
/// If this is a function, call it by applying keyword arguments.
/// If it's not a function, returns an error.
pub async fn call_fn_kw(
&self,
args: crate::std::Args,
exec_state: &mut ExecState,
ctx: ExecutorContext,
callsite: SourceRange,
) -> Result<Option<KclValue>, KclError> {
match self {
KclValue::Function {
value: FunctionSource::Std { func: _, props },
..
} => {
if props.deprecated {
exec_state.warn(CompilationError::err(
callsite,
format!(
"`{}` is deprecated, see the docs for a recommended replacement",
props.name
),
));
}
todo!("Implement KCL stdlib fns with keyword args");
}
KclValue::Function {
value: FunctionSource::User { ast, memory, .. },
..
} => {
crate::execution::exec_ast::call_user_defined_function_kw(args.kw_args, *memory, ast, exec_state, &ctx)
.await
}
_ => Err(KclError::Semantic(KclErrorDetails {
message: "cannot call this because it isn't a function".to_string(),
source_ranges: vec![callsite],
})),
} }
} }

View File

@ -87,6 +87,7 @@ pub(crate) fn read_std(mod_name: &str) -> Option<&'static str> {
match mod_name { match mod_name {
"prelude" => Some(include_str!("../std/prelude.kcl")), "prelude" => Some(include_str!("../std/prelude.kcl")),
"math" => Some(include_str!("../std/math.kcl")), "math" => Some(include_str!("../std/math.kcl")),
"sketch" => Some(include_str!("../std/sketch.kcl")),
_ => None, _ => None,
} }
} }

View File

@ -2883,15 +2883,40 @@ fn uom_for_type(i: &mut TokenSlice) -> PResult<NumericSuffix> {
any.try_map(|t: Token| t.value.parse()).parse_next(i) any.try_map(|t: Token| t.value.parse()).parse_next(i)
} }
fn comment(i: &mut TokenSlice) -> PResult<Node<String>> {
any.verify_map(|token: Token| {
let value = match token.token_type {
TokenType::LineComment => token.value,
TokenType::BlockComment => token.value,
_ => return None,
};
Some(Node::new(value, token.start, token.end, token.module_id))
})
.context(expected("Comment"))
.parse_next(i)
}
fn comments(i: &mut TokenSlice) -> PResult<Node<Vec<String>>> {
let comments: Vec<Node<String>> = repeat(1.., (comment, opt(whitespace)).map(|(c, _)| c)).parse_next(i)?;
let start = comments[0].start;
let module_id = comments[0].module_id;
let end = comments.last().unwrap().end;
let inner = comments.into_iter().map(|n| n.inner).collect();
Ok(Node::new(inner, start, end, module_id))
}
struct ParamDescription { struct ParamDescription {
labeled: bool, labeled: bool,
arg_name: Token, arg_name: Token,
type_: std::option::Option<Node<Type>>, type_: std::option::Option<Node<Type>>,
default_value: Option<DefaultParamVal>, default_value: Option<DefaultParamVal>,
comments: Option<Node<Vec<String>>>,
} }
fn parameter(i: &mut TokenSlice) -> PResult<ParamDescription> { fn parameter(i: &mut TokenSlice) -> PResult<ParamDescription> {
let (found_at_sign, arg_name, question_mark, _, type_, _ws, default_literal) = ( let (_, comments, found_at_sign, arg_name, question_mark, _, type_, _ws, default_literal) = (
opt(whitespace),
opt(comments),
opt(at_sign), opt(at_sign),
any.verify(|token: &Token| !matches!(token.token_type, TokenType::Brace) || token.value != ")"), any.verify(|token: &Token| !matches!(token.token_type, TokenType::Brace) || token.value != ")"),
opt(question_mark), opt(question_mark),
@ -2901,6 +2926,7 @@ fn parameter(i: &mut TokenSlice) -> PResult<ParamDescription> {
opt((equals, opt(whitespace), literal).map(|(_, _, literal)| literal)), opt((equals, opt(whitespace), literal).map(|(_, _, literal)| literal)),
) )
.parse_next(i)?; .parse_next(i)?;
Ok(ParamDescription { Ok(ParamDescription {
labeled: found_at_sign.is_none(), labeled: found_at_sign.is_none(),
arg_name, arg_name,
@ -2915,6 +2941,7 @@ fn parameter(i: &mut TokenSlice) -> PResult<ParamDescription> {
return Err(ErrMode::Backtrack(ContextError::from(e))); return Err(ErrMode::Backtrack(ContextError::from(e)));
} }
}, },
comments,
}) })
} }
@ -2924,6 +2951,7 @@ fn parameters(i: &mut TokenSlice) -> PResult<Vec<Parameter>> {
let candidates: Vec<_> = separated(0.., parameter, comma_sep) let candidates: Vec<_> = separated(0.., parameter, comma_sep)
.context(expected("function parameters")) .context(expected("function parameters"))
.parse_next(i)?; .parse_next(i)?;
opt(comma_sep).parse_next(i)?;
// Make sure all those tokens are valid parameters. // Make sure all those tokens are valid parameters.
let params: Vec<Parameter> = candidates let params: Vec<Parameter> = candidates
@ -2934,8 +2962,13 @@ fn parameters(i: &mut TokenSlice) -> PResult<Vec<Parameter>> {
arg_name, arg_name,
type_, type_,
default_value, default_value,
comments,
}| { }| {
let identifier = Node::<Identifier>::try_from(arg_name)?; let mut identifier = Node::<Identifier>::try_from(arg_name)?;
if let Some(comments) = comments {
identifier.comment_start = comments.start;
identifier.pre_comments = comments.inner;
}
Ok(Parameter { Ok(Parameter {
identifier, identifier,

View File

@ -1,6 +1,7 @@
use std::{collections::HashMap, num::NonZeroU32}; use std::num::NonZeroU32;
use anyhow::Result; use anyhow::Result;
use indexmap::IndexMap;
use kcmc::{ use kcmc::{
websocket::{ModelingCmdReq, OkWebSocketResponseData}, websocket::{ModelingCmdReq, OkWebSocketResponseData},
ModelingCmd, ModelingCmd,
@ -57,7 +58,7 @@ pub struct KwArgs {
/// Unlabeled keyword args. Currently only the first arg can be unlabeled. /// Unlabeled keyword args. Currently only the first arg can be unlabeled.
pub unlabeled: Option<Arg>, pub unlabeled: Option<Arg>,
/// Labeled args. /// Labeled args.
pub labeled: HashMap<String, Arg>, pub labeled: IndexMap<String, Arg>,
} }
impl KwArgs { impl KwArgs {
@ -1000,48 +1001,54 @@ where
impl<'a> FromKclValue<'a> for [f64; 2] { impl<'a> FromKclValue<'a> for [f64; 2] {
fn from_kcl_val(arg: &'a KclValue) -> Option<Self> { fn from_kcl_val(arg: &'a KclValue) -> Option<Self> {
let KclValue::MixedArray { value, meta: _ } = arg else { match arg {
return None; KclValue::MixedArray { value, meta: _ } | KclValue::HomArray { value, .. } => {
}; if value.len() != 2 {
if value.len() != 2 { return None;
return None; }
let v0 = value.first()?;
let v1 = value.get(1)?;
let array = [v0.as_f64()?, v1.as_f64()?];
Some(array)
}
_ => None,
} }
let v0 = value.first()?;
let v1 = value.get(1)?;
let array = [v0.as_f64()?, v1.as_f64()?];
Some(array)
} }
} }
impl<'a> FromKclValue<'a> for [usize; 3] { impl<'a> FromKclValue<'a> for [usize; 3] {
fn from_kcl_val(arg: &'a KclValue) -> Option<Self> { fn from_kcl_val(arg: &'a KclValue) -> Option<Self> {
let KclValue::MixedArray { value, meta: _ } = arg else { match arg {
return None; KclValue::MixedArray { value, meta: _ } | KclValue::HomArray { value, .. } => {
}; if value.len() != 3 {
if value.len() != 3 { return None;
return None; }
let v0 = value.first()?;
let v1 = value.get(1)?;
let v2 = value.get(2)?;
let array = [v0.as_usize()?, v1.as_usize()?, v2.as_usize()?];
Some(array)
}
_ => None,
} }
let v0 = value.first()?;
let v1 = value.get(1)?;
let v2 = value.get(2)?;
let array = [v0.as_usize()?, v1.as_usize()?, v2.as_usize()?];
Some(array)
} }
} }
impl<'a> FromKclValue<'a> for [f64; 3] { impl<'a> FromKclValue<'a> for [f64; 3] {
fn from_kcl_val(arg: &'a KclValue) -> Option<Self> { fn from_kcl_val(arg: &'a KclValue) -> Option<Self> {
let KclValue::MixedArray { value, meta: _ } = arg else { match arg {
return None; KclValue::MixedArray { value, meta: _ } | KclValue::HomArray { value, .. } => {
}; if value.len() != 3 {
if value.len() != 3 { return None;
return None; }
let v0 = value.first()?;
let v1 = value.get(1)?;
let v2 = value.get(2)?;
let array = [v0.as_f64()?, v1.as_f64()?, v2.as_f64()?];
Some(array)
}
_ => None,
} }
let v0 = value.first()?;
let v1 = value.get(1)?;
let v2 = value.get(2)?;
let array = [v0.as_f64()?, v1.as_f64()?, v2.as_f64()?];
Some(array)
} }
} }

View File

@ -47,19 +47,19 @@ fn inner_rem(num: f64, divisor: f64) -> f64 {
/// Compute the cosine of a number (in radians). /// Compute the cosine of a number (in radians).
pub async fn cos(_exec_state: &mut ExecState, args: Args) -> Result<KclValue, KclError> { pub async fn cos(_exec_state: &mut ExecState, args: Args) -> Result<KclValue, KclError> {
let num = args.get_number()?; let num: f64 = args.get_unlabeled_kw_arg("input")?;
Ok(args.make_user_val_from_f64_with_type(TyF64::count(num.cos()))) Ok(args.make_user_val_from_f64_with_type(TyF64::count(num.cos())))
} }
/// Compute the sine of a number (in radians). /// Compute the sine of a number (in radians).
pub async fn sin(_exec_state: &mut ExecState, args: Args) -> Result<KclValue, KclError> { pub async fn sin(_exec_state: &mut ExecState, args: Args) -> Result<KclValue, KclError> {
let num = args.get_number()?; let num: f64 = args.get_unlabeled_kw_arg("input")?;
Ok(args.make_user_val_from_f64_with_type(TyF64::count(num.sin()))) Ok(args.make_user_val_from_f64_with_type(TyF64::count(num.sin())))
} }
/// Compute the tangent of a number (in radians). /// Compute the tangent of a number (in radians).
pub async fn tan(_exec_state: &mut ExecState, args: Args) -> Result<KclValue, KclError> { pub async fn tan(_exec_state: &mut ExecState, args: Args) -> Result<KclValue, KclError> {
let num = args.get_number()?; let num: f64 = args.get_unlabeled_kw_arg("input")?;
Ok(args.make_user_val_from_f64_with_type(TyF64::count(num.tan()))) Ok(args.make_user_val_from_f64_with_type(TyF64::count(num.tan())))
} }

View File

@ -72,7 +72,6 @@ lazy_static! {
Box::new(crate::std::segment::TangentToEnd), Box::new(crate::std::segment::TangentToEnd),
Box::new(crate::std::segment::AngleToMatchLengthX), Box::new(crate::std::segment::AngleToMatchLengthX),
Box::new(crate::std::segment::AngleToMatchLengthY), Box::new(crate::std::segment::AngleToMatchLengthY),
Box::new(crate::std::shapes::Circle),
Box::new(crate::std::shapes::CircleThreePoint), Box::new(crate::std::shapes::CircleThreePoint),
Box::new(crate::std::shapes::Polygon), Box::new(crate::std::shapes::Polygon),
Box::new(crate::std::sketch::Line), Box::new(crate::std::sketch::Line),
@ -203,6 +202,10 @@ pub(crate) fn std_fn(path: &str, fn_name: &str) -> (crate::std::StdFn, StdFnProp
|e, a| Box::pin(crate::std::math::tan(e, a)), |e, a| Box::pin(crate::std::math::tan(e, a)),
StdFnProps::default("std::math::tan"), StdFnProps::default("std::math::tan"),
), ),
("sketch", "circle") => (
|e, a| Box::pin(crate::std::shapes::circle(e, a)),
StdFnProps::default("std::sketch::circle"),
),
_ => unreachable!(), _ => unreachable!(),
} }
} }

View File

@ -46,38 +46,6 @@ pub async fn circle(exec_state: &mut ExecState, args: Args) -> Result<KclValue,
}) })
} }
/// Construct a 2-dimensional circle, of the specified radius, centered at
/// the provided (x, y) origin point.
///
/// ```no_run
/// exampleSketch = startSketchOn("-XZ")
/// |> circle( center = [0, 0], radius = 10 )
///
/// example = extrude(exampleSketch, length = 5)
/// ```
///
/// ```no_run
/// exampleSketch = startSketchOn("XZ")
/// |> startProfileAt([-15, 0], %)
/// |> line(end = [30, 0])
/// |> line(end = [0, 30])
/// |> line(end = [-30, 0])
/// |> close()
/// |> hole(circle( center = [0, 15], radius = 5), %)
///
/// example = extrude(exampleSketch, length = 5)
/// ```
#[stdlib {
name = "circle",
keywords = true,
unlabeled_first = true,
args = {
sketch_or_surface = {docs = "Plane or surface to sketch on."},
center = {docs = "The center of the circle."},
radius = {docs = "The radius of the circle."},
tag = { docs = "Create a new tag which refers to this circle"},
}
}]
async fn inner_circle( async fn inner_circle(
sketch_or_surface: SketchOrSurface, sketch_or_surface: SketchOrSurface,
center: [f64; 2], center: [f64; 2],
@ -152,13 +120,13 @@ async fn inner_circle(
/// Sketch a 3-point circle. /// Sketch a 3-point circle.
pub async fn circle_three_point(exec_state: &mut ExecState, args: Args) -> Result<KclValue, KclError> { pub async fn circle_three_point(exec_state: &mut ExecState, args: Args) -> Result<KclValue, KclError> {
let sketch_surface_or_group = args.get_unlabeled_kw_arg("sketch_surface_or_group")?;
let p1 = args.get_kw_arg("p1")?; let p1 = args.get_kw_arg("p1")?;
let p2 = args.get_kw_arg("p2")?; let p2 = args.get_kw_arg("p2")?;
let p3 = args.get_kw_arg("p3")?; let p3 = args.get_kw_arg("p3")?;
let sketch_surface_or_group = args.get_unlabeled_kw_arg("sketch_surface_or_group")?;
let tag = args.get_kw_arg_opt("tag")?; let tag = args.get_kw_arg_opt("tag")?;
let sketch = inner_circle_three_point(p1, p2, p3, sketch_surface_or_group, tag, exec_state, args).await?; let sketch = inner_circle_three_point(sketch_surface_or_group, p1, p2, p3, tag, exec_state, args).await?;
Ok(KclValue::Sketch { Ok(KclValue::Sketch {
value: Box::new(sketch), value: Box::new(sketch),
}) })
@ -176,10 +144,10 @@ pub async fn circle_three_point(exec_state: &mut ExecState, args: Args) -> Resul
keywords = true, keywords = true,
unlabeled_first = true, unlabeled_first = true,
args = { args = {
sketch_surface_or_group = {docs = "Plane or surface to sketch on."},
p1 = {docs = "1st point to derive the circle."}, p1 = {docs = "1st point to derive the circle."},
p2 = {docs = "2nd point to derive the circle."}, p2 = {docs = "2nd point to derive the circle."},
p3 = {docs = "3rd point to derive the circle."}, p3 = {docs = "3rd point to derive the circle."},
sketch_surface_or_group = {docs = "Plane or surface to sketch on."},
tag = {docs = "Identifier for the circle to reference elsewhere."}, tag = {docs = "Identifier for the circle to reference elsewhere."},
} }
}] }]
@ -187,10 +155,10 @@ pub async fn circle_three_point(exec_state: &mut ExecState, args: Args) -> Resul
// Similar to inner_circle, but needs to retain 3-point information in the // Similar to inner_circle, but needs to retain 3-point information in the
// path so it can be used for other features, otherwise it's lost. // path so it can be used for other features, otherwise it's lost.
async fn inner_circle_three_point( async fn inner_circle_three_point(
sketch_surface_or_group: SketchOrSurface,
p1: [f64; 2], p1: [f64; 2],
p2: [f64; 2], p2: [f64; 2],
p3: [f64; 2], p3: [f64; 2],
sketch_surface_or_group: SketchOrSurface,
tag: Option<TagNode>, tag: Option<TagNode>,
exec_state: &mut ExecState, exec_state: &mut ExecState,
args: Args, args: Args,

View File

@ -5,7 +5,7 @@
/// ``` /// ```
/// circumference = 70 /// circumference = 70
/// ///
/// exampleSketch = startSketchOn("XZ") /// exampleSketch = startSketchOn(XZ)
/// |> circle(center = [0, 0], radius = circumference/ (2 * PI)) /// |> circle(center = [0, 0], radius = circumference/ (2 * PI))
/// ///
/// example = extrude(exampleSketch, length = 5) /// example = extrude(exampleSketch, length = 5)
@ -15,7 +15,7 @@ export PI = 3.14159265358979323846264338327950288_
/// The value of Eulers number `e`. /// The value of Eulers number `e`.
/// ///
/// ``` /// ```
/// exampleSketch = startSketchOn("XZ") /// exampleSketch = startSketchOn(XZ)
/// |> startProfileAt([0, 0], %) /// |> startProfileAt([0, 0], %)
/// |> angledLine({ /// |> angledLine({
/// angle = 30, /// angle = 30,
@ -31,7 +31,7 @@ export E = 2.71828182845904523536028747135266250_
/// The value of `tau`, the full circle constant (τ). Equal to 2π. /// The value of `tau`, the full circle constant (τ). Equal to 2π.
/// ///
/// ``` /// ```
/// exampleSketch = startSketchOn("XZ") /// exampleSketch = startSketchOn(XZ)
/// |> startProfileAt([0, 0], %) /// |> startProfileAt([0, 0], %)
/// |> angledLine({ /// |> angledLine({
/// angle = 50, /// angle = 50,
@ -47,7 +47,7 @@ export TAU = 6.28318530717958647692528676655900577_
/// Compute the cosine of a number (in radians). /// Compute the cosine of a number (in radians).
/// ///
/// ``` /// ```
/// exampleSketch = startSketchOn("XZ") /// exampleSketch = startSketchOn(XZ)
/// |> startProfileAt([0, 0], %) /// |> startProfileAt([0, 0], %)
/// |> angledLine({ /// |> angledLine({
/// angle = 30, /// angle = 30,
@ -59,12 +59,12 @@ export TAU = 6.28318530717958647692528676655900577_
/// example = extrude(exampleSketch, length = 5) /// example = extrude(exampleSketch, length = 5)
/// ``` /// ```
@(impl = std_rust) @(impl = std_rust)
export fn cos(num: number(rad)): number(_) {} export fn cos(@num: number(rad)): number(_) {}
/// Compute the sine of a number (in radians). /// Compute the sine of a number (in radians).
/// ///
/// ``` /// ```
/// exampleSketch = startSketchOn("XZ") /// exampleSketch = startSketchOn(XZ)
/// |> startProfileAt([0, 0], %) /// |> startProfileAt([0, 0], %)
/// |> angledLine({ /// |> angledLine({
/// angle = 50, /// angle = 50,
@ -76,12 +76,12 @@ export fn cos(num: number(rad)): number(_) {}
/// example = extrude(exampleSketch, length = 5) /// example = extrude(exampleSketch, length = 5)
/// ``` /// ```
@(impl = std_rust) @(impl = std_rust)
export fn sin(num: number(rad)): number(_) {} export fn sin(@num: number(rad)): number(_) {}
/// Compute the tangent of a number (in radians). /// Compute the tangent of a number (in radians).
/// ///
/// ``` /// ```
/// exampleSketch = startSketchOn("XZ") /// exampleSketch = startSketchOn(XZ)
/// |> startProfileAt([0, 0], %) /// |> startProfileAt([0, 0], %)
/// |> angledLine({ /// |> angledLine({
/// angle = 50, /// angle = 50,
@ -93,4 +93,4 @@ export fn sin(num: number(rad)): number(_) {}
/// example = extrude(exampleSketch, length = 5) /// example = extrude(exampleSketch, length = 5)
/// ``` /// ```
@(impl = std_rust) @(impl = std_rust)
export fn tan(num: number(rad)): number(_) {} export fn tan(@num: number(rad)): number(_) {}

View File

@ -3,6 +3,7 @@
// Note that everything in the prelude is treated as exported. // Note that everything in the prelude is treated as exported.
export import * from "std::math" export import * from "std::math"
export import * from "std::sketch"
/// A number /// A number
/// ///

View File

@ -0,0 +1,34 @@
@no_std
/// Construct a 2-dimensional circle, of the specified radius, centered at
/// the provided (x, y) origin point.
///
/// ```
/// exampleSketch = startSketchOn(-XZ)
/// |> circle(center = [0, 0], radius = 10)
///
/// example = extrude(exampleSketch, length = 5)
/// ```
///
/// ```
/// exampleSketch = startSketchOn(XZ)
/// |> startProfileAt([-15, 0], %)
/// |> line(end = [30, 0])
/// |> line(end = [0, 30])
/// |> line(end = [-30, 0])
/// |> close()
/// |> hole(circle(center = [0, 15], radius = 5), %)
///
/// example = extrude(exampleSketch, length = 5)
/// ```
@(impl = std_rust)
export fn circle(
/// Sketch to extend, or plane or surface to sketch on.
@sketch_or_surface: Sketch | Plane | Face,
/// The center of the circle.
center: Point2d,
/// The radius of the circle.
radius: number,
/// Create a new tag which refers to this circle.
tag?: tag,
): Sketch {}

View File

@ -1,25 +1,25 @@
```mermaid ```mermaid
flowchart LR flowchart LR
subgraph path2 [Path] subgraph path2 [Path]
2["Path<br>[76, 113, 3]"] 2["Path<br>[76, 113, 4]"]
3["Segment<br>[119, 136, 3]"] 3["Segment<br>[119, 136, 4]"]
4["Segment<br>[142, 160, 3]"] 4["Segment<br>[142, 160, 4]"]
5["Segment<br>[166, 184, 3]"] 5["Segment<br>[166, 184, 4]"]
6["Segment<br>[190, 246, 3]"] 6["Segment<br>[190, 246, 4]"]
7["Segment<br>[252, 259, 3]"] 7["Segment<br>[252, 259, 4]"]
8[Solid2d] 8[Solid2d]
end end
subgraph path25 [Path] subgraph path25 [Path]
25["Path<br>[76, 111, 4]"] 25["Path<br>[76, 111, 5]"]
26["Segment<br>[117, 134, 4]"] 26["Segment<br>[117, 134, 5]"]
27["Segment<br>[140, 158, 4]"] 27["Segment<br>[140, 158, 5]"]
28["Segment<br>[164, 182, 4]"] 28["Segment<br>[164, 182, 5]"]
29["Segment<br>[188, 244, 4]"] 29["Segment<br>[188, 244, 5]"]
30["Segment<br>[250, 257, 4]"] 30["Segment<br>[250, 257, 5]"]
31[Solid2d] 31[Solid2d]
end end
1["Plane<br>[47, 66, 3]"] 1["Plane<br>[47, 66, 4]"]
9["Sweep Extrusion<br>[265, 287, 3]"] 9["Sweep Extrusion<br>[265, 287, 4]"]
10[Wall] 10[Wall]
11[Wall] 11[Wall]
12[Wall] 12[Wall]
@ -34,8 +34,8 @@ flowchart LR
21["SweepEdge Adjacent"] 21["SweepEdge Adjacent"]
22["SweepEdge Opposite"] 22["SweepEdge Opposite"]
23["SweepEdge Adjacent"] 23["SweepEdge Adjacent"]
24["Plane<br>[47, 66, 4]"] 24["Plane<br>[47, 66, 5]"]
32["Sweep Extrusion<br>[263, 285, 4]"] 32["Sweep Extrusion<br>[263, 285, 5]"]
33[Wall] 33[Wall]
34[Wall] 34[Wall]
35[Wall] 35[Wall]

View File

@ -5,10 +5,10 @@ description: Variables in memory after executing assembly_mixed_units_cubes.kcl
{ {
"cubeIn": { "cubeIn": {
"type": "Module", "type": "Module",
"value": 3 "value": 4
}, },
"cubeMm": { "cubeMm": {
"type": "Module", "type": "Module",
"value": 4 "value": 5
} }
} }

View File

@ -1,17 +1,17 @@
```mermaid ```mermaid
flowchart LR flowchart LR
subgraph path2 [Path] subgraph path2 [Path]
2["Path<br>[197, 232, 3]"] 2["Path<br>[197, 232, 4]"]
3["Segment<br>[197, 232, 3]"] 3["Segment<br>[197, 232, 4]"]
4[Solid2d] 4[Solid2d]
end end
subgraph path6 [Path] subgraph path6 [Path]
6["Path<br>[113, 148, 4]"] 6["Path<br>[113, 148, 5]"]
7["Segment<br>[113, 148, 4]"] 7["Segment<br>[113, 148, 5]"]
8[Solid2d] 8[Solid2d]
end end
1["Plane<br>[172, 191, 3]"] 1["Plane<br>[172, 191, 4]"]
5["Plane<br>[88, 107, 4]"] 5["Plane<br>[88, 107, 5]"]
1 --- 2 1 --- 2
2 --- 3 2 --- 3
2 --- 4 2 --- 4

View File

@ -18,6 +18,72 @@ description: Operations executed assembly_non_default_units.kcl
"type": "StdLibCall", "type": "StdLibCall",
"unlabeledArg": null "unlabeledArg": null
}, },
{
"type": "UserDefinedFunctionCall",
"name": "circle",
"functionSourceRange": [
0,
0,
0
],
"unlabeledArg": null,
"labeledArgs": {
"center": {
"value": {
"type": "Array",
"value": [
{
"type": "Number",
"value": 0.0,
"ty": {
"type": "Default",
"len": {
"type": "Inches"
},
"angle": {
"type": "Degrees"
}
}
},
{
"type": "Number",
"value": 0.0,
"ty": {
"type": "Default",
"len": {
"type": "Inches"
},
"angle": {
"type": "Degrees"
}
}
}
]
},
"sourceRange": []
},
"radius": {
"value": {
"type": "Number",
"value": 1.0,
"ty": {
"type": "Default",
"len": {
"type": "Inches"
},
"angle": {
"type": "Degrees"
}
}
},
"sourceRange": []
}
},
"sourceRange": []
},
{
"type": "UserDefinedFunctionReturn"
},
{ {
"labeledArgs": { "labeledArgs": {
"data": { "data": {
@ -32,5 +98,71 @@ description: Operations executed assembly_non_default_units.kcl
"sourceRange": [], "sourceRange": [],
"type": "StdLibCall", "type": "StdLibCall",
"unlabeledArg": null "unlabeledArg": null
},
{
"type": "UserDefinedFunctionCall",
"name": "circle",
"functionSourceRange": [
0,
0,
0
],
"unlabeledArg": null,
"labeledArgs": {
"center": {
"value": {
"type": "Array",
"value": [
{
"type": "Number",
"value": 0.0,
"ty": {
"type": "Default",
"len": {
"type": "Inches"
},
"angle": {
"type": "Degrees"
}
}
},
{
"type": "Number",
"value": 2.0,
"ty": {
"type": "Default",
"len": {
"type": "Inches"
},
"angle": {
"type": "Degrees"
}
}
}
]
},
"sourceRange": []
},
"radius": {
"value": {
"type": "Number",
"value": 1.0,
"ty": {
"type": "Default",
"len": {
"type": "Inches"
},
"angle": {
"type": "Degrees"
}
}
},
"sourceRange": []
}
},
"sourceRange": []
},
{
"type": "UserDefinedFunctionReturn"
} }
] ]

View File

@ -5,10 +5,10 @@ description: Variables in memory after executing assembly_non_default_units.kcl
{ {
"other1": { "other1": {
"type": "Module", "type": "Module",
"value": 3 "value": 4
}, },
"other2": { "other2": {
"type": "Module", "type": "Module",
"value": 4 "value": 5
} }
} }

View File

@ -75,6 +75,78 @@ description: Operations executed crazy_multi_profile.kcl
"type": "StdLibCall", "type": "StdLibCall",
"unlabeledArg": null "unlabeledArg": null
}, },
{
"type": "UserDefinedFunctionCall",
"name": "circle",
"functionSourceRange": [
0,
0,
0
],
"unlabeledArg": {
"value": {
"type": "Face",
"artifact_id": "[uuid]"
},
"sourceRange": []
},
"labeledArgs": {
"center": {
"value": {
"type": "Array",
"value": [
{
"type": "Number",
"value": 5.15,
"ty": {
"type": "Default",
"len": {
"type": "Mm"
},
"angle": {
"type": "Degrees"
}
}
},
{
"type": "Number",
"value": 4.34,
"ty": {
"type": "Default",
"len": {
"type": "Mm"
},
"angle": {
"type": "Degrees"
}
}
}
]
},
"sourceRange": []
},
"radius": {
"value": {
"type": "Number",
"value": 1.66,
"ty": {
"type": "Default",
"len": {
"type": "Mm"
},
"angle": {
"type": "Degrees"
}
}
},
"sourceRange": []
}
},
"sourceRange": []
},
{
"type": "UserDefinedFunctionReturn"
},
{ {
"labeledArgs": { "labeledArgs": {
"angle": { "angle": {
@ -161,6 +233,78 @@ description: Operations executed crazy_multi_profile.kcl
"type": "StdLibCall", "type": "StdLibCall",
"unlabeledArg": null "unlabeledArg": null
}, },
{
"type": "UserDefinedFunctionCall",
"name": "circle",
"functionSourceRange": [
0,
0,
0
],
"unlabeledArg": {
"value": {
"type": "Plane",
"artifact_id": "[uuid]"
},
"sourceRange": []
},
"labeledArgs": {
"center": {
"value": {
"type": "Array",
"value": [
{
"type": "Number",
"value": 7.18,
"ty": {
"type": "Default",
"len": {
"type": "Mm"
},
"angle": {
"type": "Degrees"
}
}
},
{
"type": "Number",
"value": -2.11,
"ty": {
"type": "Default",
"len": {
"type": "Mm"
},
"angle": {
"type": "Degrees"
}
}
}
]
},
"sourceRange": []
},
"radius": {
"value": {
"type": "Number",
"value": 2.67,
"ty": {
"type": "Default",
"len": {
"type": "Mm"
},
"angle": {
"type": "Degrees"
}
}
},
"sourceRange": []
}
},
"sourceRange": []
},
{
"type": "UserDefinedFunctionReturn"
},
{ {
"labeledArgs": { "labeledArgs": {
"length": { "length": {

View File

@ -149,37 +149,41 @@ description: Operations executed fillet-and-shell.kcl
"unlabeledArg": null "unlabeledArg": null
}, },
{ {
"type": "UserDefinedFunctionCall",
"name": "circle",
"functionSourceRange": [
0,
0,
0
],
"unlabeledArg": null,
"labeledArgs": { "labeledArgs": {
"holeSketch": { "center": {
"value": { "value": {
"type": "Sketch", "type": "Array",
"value": { "value": [
"artifactId": "[uuid]" {
} "type": "Number",
"value": 7.5,
"ty": {
"type": "Unknown"
}
},
{
"type": "Number",
"value": 7.5,
"ty": {
"type": "Unknown"
}
}
]
}, },
"sourceRange": [] "sourceRange": []
}, },
"sketch": { "radius": {
"value": {
"type": "Sketch",
"value": {
"artifactId": "[uuid]"
}
},
"sourceRange": []
}
},
"name": "hole",
"sourceRange": [],
"type": "StdLibCall",
"unlabeledArg": null
},
{
"labeledArgs": {
"length": {
"value": { "value": {
"type": "Number", "type": "Number",
"value": 4.0, "value": 2.5,
"ty": { "ty": {
"type": "Default", "type": "Default",
"len": { "len": {
@ -193,48 +197,64 @@ description: Operations executed fillet-and-shell.kcl
"sourceRange": [] "sourceRange": []
} }
}, },
"name": "extrude", "sourceRange": []
"sourceRange": [],
"type": "StdLibCall",
"unlabeledArg": {
"value": {
"type": "Sketch",
"value": {
"artifactId": "[uuid]"
}
},
"sourceRange": []
}
}, },
{ {
"type": "UserDefinedFunctionReturn" "type": "UserDefinedFunctionReturn"
}, },
{ {
"type": "UserDefinedFunctionCall", "type": "UserDefinedFunctionCall",
"name": "m25Screw", "name": "circle",
"functionSourceRange": [ "functionSourceRange": [
1310, 0,
1538, 0,
0 0
], ],
"unlabeledArg": null, "unlabeledArg": null,
"labeledArgs": {},
"sourceRange": []
},
{
"labeledArgs": { "labeledArgs": {
"data": { "center": {
"value": { "value": {
"type": "String", "type": "Array",
"value": "XY" "value": [
{
"type": "Number",
"value": 7.5,
"ty": {
"type": "Unknown"
}
},
{
"type": "Number",
"value": 7.5,
"ty": {
"type": "Unknown"
}
}
]
},
"sourceRange": []
},
"radius": {
"value": {
"type": "Number",
"value": 1.25,
"ty": {
"type": "Default",
"len": {
"type": "Mm"
},
"angle": {
"type": "Degrees"
}
}
}, },
"sourceRange": [] "sourceRange": []
} }
}, },
"name": "startSketchOn", "sourceRange": []
"sourceRange": [], },
"type": "StdLibCall", {
"unlabeledArg": null "type": "UserDefinedFunctionReturn"
}, },
{ {
"labeledArgs": { "labeledArgs": {
@ -324,6 +344,114 @@ description: Operations executed fillet-and-shell.kcl
"type": "StdLibCall", "type": "StdLibCall",
"unlabeledArg": null "unlabeledArg": null
}, },
{
"type": "UserDefinedFunctionCall",
"name": "circle",
"functionSourceRange": [
0,
0,
0
],
"unlabeledArg": null,
"labeledArgs": {
"center": {
"value": {
"type": "Array",
"value": [
{
"type": "Number",
"value": 7.5,
"ty": {
"type": "Unknown"
}
},
{
"type": "Number",
"value": 65.5,
"ty": {
"type": "Unknown"
}
}
]
},
"sourceRange": []
},
"radius": {
"value": {
"type": "Number",
"value": 2.5,
"ty": {
"type": "Default",
"len": {
"type": "Mm"
},
"angle": {
"type": "Degrees"
}
}
},
"sourceRange": []
}
},
"sourceRange": []
},
{
"type": "UserDefinedFunctionReturn"
},
{
"type": "UserDefinedFunctionCall",
"name": "circle",
"functionSourceRange": [
0,
0,
0
],
"unlabeledArg": null,
"labeledArgs": {
"center": {
"value": {
"type": "Array",
"value": [
{
"type": "Number",
"value": 7.5,
"ty": {
"type": "Unknown"
}
},
{
"type": "Number",
"value": 65.5,
"ty": {
"type": "Unknown"
}
}
]
},
"sourceRange": []
},
"radius": {
"value": {
"type": "Number",
"value": 1.25,
"ty": {
"type": "Default",
"len": {
"type": "Mm"
},
"angle": {
"type": "Degrees"
}
}
},
"sourceRange": []
}
},
"sourceRange": []
},
{
"type": "UserDefinedFunctionReturn"
},
{ {
"labeledArgs": { "labeledArgs": {
"holeSketch": { "holeSketch": {
@ -412,6 +540,310 @@ description: Operations executed fillet-and-shell.kcl
"type": "StdLibCall", "type": "StdLibCall",
"unlabeledArg": null "unlabeledArg": null
}, },
{
"type": "UserDefinedFunctionCall",
"name": "circle",
"functionSourceRange": [
0,
0,
0
],
"unlabeledArg": null,
"labeledArgs": {
"center": {
"value": {
"type": "Array",
"value": [
{
"type": "Number",
"value": 30.5,
"ty": {
"type": "Unknown"
}
},
{
"type": "Number",
"value": 65.5,
"ty": {
"type": "Unknown"
}
}
]
},
"sourceRange": []
},
"radius": {
"value": {
"type": "Number",
"value": 2.5,
"ty": {
"type": "Default",
"len": {
"type": "Mm"
},
"angle": {
"type": "Degrees"
}
}
},
"sourceRange": []
}
},
"sourceRange": []
},
{
"type": "UserDefinedFunctionReturn"
},
{
"type": "UserDefinedFunctionCall",
"name": "circle",
"functionSourceRange": [
0,
0,
0
],
"unlabeledArg": null,
"labeledArgs": {
"center": {
"value": {
"type": "Array",
"value": [
{
"type": "Number",
"value": 30.5,
"ty": {
"type": "Unknown"
}
},
{
"type": "Number",
"value": 65.5,
"ty": {
"type": "Unknown"
}
}
]
},
"sourceRange": []
},
"radius": {
"value": {
"type": "Number",
"value": 1.25,
"ty": {
"type": "Default",
"len": {
"type": "Mm"
},
"angle": {
"type": "Degrees"
}
}
},
"sourceRange": []
}
},
"sourceRange": []
},
{
"type": "UserDefinedFunctionReturn"
},
{
"labeledArgs": {
"holeSketch": {
"value": {
"type": "Sketch",
"value": {
"artifactId": "[uuid]"
}
},
"sourceRange": []
},
"sketch": {
"value": {
"type": "Sketch",
"value": {
"artifactId": "[uuid]"
}
},
"sourceRange": []
}
},
"name": "hole",
"sourceRange": [],
"type": "StdLibCall",
"unlabeledArg": null
},
{
"labeledArgs": {
"length": {
"value": {
"type": "Number",
"value": 4.0,
"ty": {
"type": "Default",
"len": {
"type": "Mm"
},
"angle": {
"type": "Degrees"
}
}
},
"sourceRange": []
}
},
"name": "extrude",
"sourceRange": [],
"type": "StdLibCall",
"unlabeledArg": {
"value": {
"type": "Sketch",
"value": {
"artifactId": "[uuid]"
}
},
"sourceRange": []
}
},
{
"type": "UserDefinedFunctionReturn"
},
{
"type": "UserDefinedFunctionCall",
"name": "m25Screw",
"functionSourceRange": [
1310,
1538,
0
],
"unlabeledArg": null,
"labeledArgs": {},
"sourceRange": []
},
{
"labeledArgs": {
"data": {
"value": {
"type": "String",
"value": "XY"
},
"sourceRange": []
}
},
"name": "startSketchOn",
"sourceRange": [],
"type": "StdLibCall",
"unlabeledArg": null
},
{
"type": "UserDefinedFunctionCall",
"name": "circle",
"functionSourceRange": [
0,
0,
0
],
"unlabeledArg": null,
"labeledArgs": {
"center": {
"value": {
"type": "Array",
"value": [
{
"type": "Number",
"value": 30.5,
"ty": {
"type": "Unknown"
}
},
{
"type": "Number",
"value": 7.5,
"ty": {
"type": "Unknown"
}
}
]
},
"sourceRange": []
},
"radius": {
"value": {
"type": "Number",
"value": 2.5,
"ty": {
"type": "Default",
"len": {
"type": "Mm"
},
"angle": {
"type": "Degrees"
}
}
},
"sourceRange": []
}
},
"sourceRange": []
},
{
"type": "UserDefinedFunctionReturn"
},
{
"type": "UserDefinedFunctionCall",
"name": "circle",
"functionSourceRange": [
0,
0,
0
],
"unlabeledArg": null,
"labeledArgs": {
"center": {
"value": {
"type": "Array",
"value": [
{
"type": "Number",
"value": 30.5,
"ty": {
"type": "Unknown"
}
},
{
"type": "Number",
"value": 7.5,
"ty": {
"type": "Unknown"
}
}
]
},
"sourceRange": []
},
"radius": {
"value": {
"type": "Number",
"value": 1.25,
"ty": {
"type": "Default",
"len": {
"type": "Mm"
},
"angle": {
"type": "Degrees"
}
}
},
"sourceRange": []
}
},
"sourceRange": []
},
{
"type": "UserDefinedFunctionReturn"
},
{ {
"labeledArgs": { "labeledArgs": {
"holeSketch": { "holeSketch": {

View File

@ -18,6 +18,152 @@ description: Operations executed flush_batch_on_end.kcl
"type": "StdLibCall", "type": "StdLibCall",
"unlabeledArg": null "unlabeledArg": null
}, },
{
"type": "UserDefinedFunctionCall",
"name": "circle",
"functionSourceRange": [
0,
0,
0
],
"unlabeledArg": {
"value": {
"type": "Plane",
"artifact_id": "[uuid]"
},
"sourceRange": []
},
"labeledArgs": {
"center": {
"value": {
"type": "Array",
"value": [
{
"type": "Number",
"value": 0.0,
"ty": {
"type": "Default",
"len": {
"type": "Inches"
},
"angle": {
"type": "Degrees"
}
}
},
{
"type": "Number",
"value": 0.0,
"ty": {
"type": "Default",
"len": {
"type": "Inches"
},
"angle": {
"type": "Degrees"
}
}
}
]
},
"sourceRange": []
},
"radius": {
"value": {
"type": "Number",
"value": 0.2734375,
"ty": {
"type": "Unknown"
}
},
"sourceRange": []
},
"tag": {
"value": {
"type": "TagDeclarator",
"name": "arc000"
},
"sourceRange": []
}
},
"sourceRange": []
},
{
"type": "UserDefinedFunctionReturn"
},
{
"type": "UserDefinedFunctionCall",
"name": "circle",
"functionSourceRange": [
0,
0,
0
],
"unlabeledArg": {
"value": {
"type": "Plane",
"artifact_id": "[uuid]"
},
"sourceRange": []
},
"labeledArgs": {
"center": {
"value": {
"type": "Array",
"value": [
{
"type": "Number",
"value": 0.0,
"ty": {
"type": "Default",
"len": {
"type": "Inches"
},
"angle": {
"type": "Degrees"
}
}
},
{
"type": "Number",
"value": 0.0,
"ty": {
"type": "Default",
"len": {
"type": "Inches"
},
"angle": {
"type": "Degrees"
}
}
}
]
},
"sourceRange": []
},
"radius": {
"value": {
"type": "Number",
"value": 0.182,
"ty": {
"type": "Unknown"
}
},
"sourceRange": []
},
"tag": {
"value": {
"type": "TagDeclarator",
"name": "arc001"
},
"sourceRange": []
}
},
"sourceRange": []
},
{
"type": "UserDefinedFunctionReturn"
},
{ {
"labeledArgs": { "labeledArgs": {
"holeSketch": { "holeSketch": {

View File

@ -18,6 +18,72 @@ description: Operations executed helix_ccw.kcl
"type": "StdLibCall", "type": "StdLibCall",
"unlabeledArg": null "unlabeledArg": null
}, },
{
"type": "UserDefinedFunctionCall",
"name": "circle",
"functionSourceRange": [
0,
0,
0
],
"unlabeledArg": null,
"labeledArgs": {
"center": {
"value": {
"type": "Array",
"value": [
{
"type": "Number",
"value": 5.0,
"ty": {
"type": "Default",
"len": {
"type": "Mm"
},
"angle": {
"type": "Degrees"
}
}
},
{
"type": "Number",
"value": 5.0,
"ty": {
"type": "Default",
"len": {
"type": "Mm"
},
"angle": {
"type": "Degrees"
}
}
}
]
},
"sourceRange": []
},
"radius": {
"value": {
"type": "Number",
"value": 10.0,
"ty": {
"type": "Default",
"len": {
"type": "Mm"
},
"angle": {
"type": "Degrees"
}
}
},
"sourceRange": []
}
},
"sourceRange": []
},
{
"type": "UserDefinedFunctionReturn"
},
{ {
"labeledArgs": { "labeledArgs": {
"length": { "length": {

View File

@ -5,7 +5,7 @@ description: Variables in memory after executing import_foreign.kcl
{ {
"cube": { "cube": {
"type": "Module", "type": "Module",
"value": 3 "value": 4
}, },
"model": { "model": {
"type": "ImportedGeometry", "type": "ImportedGeometry",

View File

@ -17,5 +17,71 @@ description: Operations executed import_side_effect.kcl
"sourceRange": [], "sourceRange": [],
"type": "StdLibCall", "type": "StdLibCall",
"unlabeledArg": null "unlabeledArg": null
},
{
"type": "UserDefinedFunctionCall",
"name": "circle",
"functionSourceRange": [
0,
0,
0
],
"unlabeledArg": null,
"labeledArgs": {
"center": {
"value": {
"type": "Array",
"value": [
{
"type": "Number",
"value": 0.0,
"ty": {
"type": "Default",
"len": {
"type": "Mm"
},
"angle": {
"type": "Degrees"
}
}
},
{
"type": "Number",
"value": 0.0,
"ty": {
"type": "Default",
"len": {
"type": "Mm"
},
"angle": {
"type": "Degrees"
}
}
}
]
},
"sourceRange": []
},
"radius": {
"value": {
"type": "Number",
"value": 10.0,
"ty": {
"type": "Default",
"len": {
"type": "Mm"
},
"angle": {
"type": "Degrees"
}
}
},
"sourceRange": []
}
},
"sourceRange": []
},
{
"type": "UserDefinedFunctionReturn"
} }
] ]

View File

@ -5,6 +5,6 @@ description: Variables in memory after executing import_transform.kcl
{ {
"screw": { "screw": {
"type": "Module", "type": "Module",
"value": 3 "value": 4
} }
} }

View File

@ -1,12 +1,12 @@
```mermaid ```mermaid
flowchart LR flowchart LR
subgraph path2 [Path] subgraph path2 [Path]
2["Path<br>[83, 119, 3]"] 2["Path<br>[83, 119, 4]"]
3["Segment<br>[83, 119, 3]"] 3["Segment<br>[83, 119, 4]"]
4[Solid2d] 4[Solid2d]
end end
1["Plane<br>[60, 77, 3]"] 1["Plane<br>[60, 77, 4]"]
5["Sweep Extrusion<br>[125, 145, 3]"] 5["Sweep Extrusion<br>[125, 145, 4]"]
6[Wall] 6[Wall]
7["Cap Start"] 7["Cap Start"]
8["Cap End"] 8["Cap End"]

View File

@ -18,6 +18,72 @@ description: Operations executed import_whole.kcl
"type": "StdLibCall", "type": "StdLibCall",
"unlabeledArg": null "unlabeledArg": null
}, },
{
"type": "UserDefinedFunctionCall",
"name": "circle",
"functionSourceRange": [
0,
0,
0
],
"unlabeledArg": null,
"labeledArgs": {
"center": {
"value": {
"type": "Array",
"value": [
{
"type": "Number",
"value": 5.0,
"ty": {
"type": "Default",
"len": {
"type": "Inches"
},
"angle": {
"type": "Degrees"
}
}
},
{
"type": "Number",
"value": 5.0,
"ty": {
"type": "Default",
"len": {
"type": "Inches"
},
"angle": {
"type": "Degrees"
}
}
}
]
},
"sourceRange": []
},
"radius": {
"value": {
"type": "Number",
"value": 10.0,
"ty": {
"type": "Default",
"len": {
"type": "Inches"
},
"angle": {
"type": "Degrees"
}
}
},
"sourceRange": []
}
},
"sourceRange": []
},
{
"type": "UserDefinedFunctionReturn"
},
{ {
"labeledArgs": { "labeledArgs": {
"length": { "length": {

View File

@ -111,6 +111,6 @@ description: Variables in memory after executing import_whole.kcl
}, },
"foo": { "foo": {
"type": "Module", "type": "Module",
"value": 3 "value": 4
} }
} }

View File

@ -30,6 +30,54 @@ description: Operations executed 80-20-rail.kcl
"type": "StdLibCall", "type": "StdLibCall",
"unlabeledArg": null "unlabeledArg": null
}, },
{
"type": "UserDefinedFunctionCall",
"name": "circle",
"functionSourceRange": [
0,
0,
0
],
"unlabeledArg": null,
"labeledArgs": {
"center": {
"value": {
"type": "Array",
"value": [
{
"type": "Number",
"value": 0.75,
"ty": {
"type": "Unknown"
}
},
{
"type": "Number",
"value": 0.75,
"ty": {
"type": "Unknown"
}
}
]
},
"sourceRange": []
},
"radius": {
"value": {
"type": "Number",
"value": 0.15375,
"ty": {
"type": "Unknown"
}
},
"sourceRange": []
}
},
"sourceRange": []
},
{
"type": "UserDefinedFunctionReturn"
},
{ {
"labeledArgs": { "labeledArgs": {
"holeSketch": { "holeSketch": {

View File

@ -74,6 +74,54 @@ description: Operations executed a-parametric-bearing-pillow-block.kcl
"type": "StdLibCall", "type": "StdLibCall",
"unlabeledArg": null "unlabeledArg": null
}, },
{
"type": "UserDefinedFunctionCall",
"name": "circle",
"functionSourceRange": [
0,
0,
0
],
"unlabeledArg": null,
"labeledArgs": {
"center": {
"value": {
"type": "Array",
"value": [
{
"type": "Number",
"value": -1.25,
"ty": {
"type": "Unknown"
}
},
{
"type": "Number",
"value": -2.25,
"ty": {
"type": "Unknown"
}
}
]
},
"sourceRange": []
},
"radius": {
"value": {
"type": "Number",
"value": 0.35,
"ty": {
"type": "Unknown"
}
},
"sourceRange": []
}
},
"sourceRange": []
},
{
"type": "UserDefinedFunctionReturn"
},
{ {
"labeledArgs": { "labeledArgs": {
"length": { "length": {
@ -153,6 +201,54 @@ description: Operations executed a-parametric-bearing-pillow-block.kcl
"type": "StdLibCall", "type": "StdLibCall",
"unlabeledArg": null "unlabeledArg": null
}, },
{
"type": "UserDefinedFunctionCall",
"name": "circle",
"functionSourceRange": [
0,
0,
0
],
"unlabeledArg": null,
"labeledArgs": {
"center": {
"value": {
"type": "Array",
"value": [
{
"type": "Number",
"value": -1.25,
"ty": {
"type": "Unknown"
}
},
{
"type": "Number",
"value": -2.25,
"ty": {
"type": "Unknown"
}
}
]
},
"sourceRange": []
},
"radius": {
"value": {
"type": "Number",
"value": 0.1875,
"ty": {
"type": "Unknown"
}
},
"sourceRange": []
}
},
"sourceRange": []
},
{
"type": "UserDefinedFunctionReturn"
},
{ {
"labeledArgs": { "labeledArgs": {
"length": { "length": {
@ -232,6 +328,66 @@ description: Operations executed a-parametric-bearing-pillow-block.kcl
"type": "StdLibCall", "type": "StdLibCall",
"unlabeledArg": null "unlabeledArg": null
}, },
{
"type": "UserDefinedFunctionCall",
"name": "circle",
"functionSourceRange": [
0,
0,
0
],
"unlabeledArg": null,
"labeledArgs": {
"center": {
"value": {
"type": "Array",
"value": [
{
"type": "Number",
"value": 0.0,
"ty": {
"type": "Default",
"len": {
"type": "Inches"
},
"angle": {
"type": "Degrees"
}
}
},
{
"type": "Number",
"value": 0.0,
"ty": {
"type": "Default",
"len": {
"type": "Inches"
},
"angle": {
"type": "Degrees"
}
}
}
]
},
"sourceRange": []
},
"radius": {
"value": {
"type": "Number",
"value": 1.5,
"ty": {
"type": "Unknown"
}
},
"sourceRange": []
}
},
"sourceRange": []
},
{
"type": "UserDefinedFunctionReturn"
},
{ {
"labeledArgs": { "labeledArgs": {
"length": { "length": {

View File

@ -42,6 +42,126 @@ description: Operations executed ball-bearing.kcl
"type": "StdLibCall", "type": "StdLibCall",
"unlabeledArg": null "unlabeledArg": null
}, },
{
"type": "UserDefinedFunctionCall",
"name": "circle",
"functionSourceRange": [
0,
0,
0
],
"unlabeledArg": null,
"labeledArgs": {
"center": {
"value": {
"type": "Array",
"value": [
{
"type": "Number",
"value": 0.0,
"ty": {
"type": "Default",
"len": {
"type": "Inches"
},
"angle": {
"type": "Degrees"
}
}
},
{
"type": "Number",
"value": 0.0,
"ty": {
"type": "Default",
"len": {
"type": "Inches"
},
"angle": {
"type": "Degrees"
}
}
}
]
},
"sourceRange": []
},
"radius": {
"value": {
"type": "Number",
"value": 0.475,
"ty": {
"type": "Unknown"
}
},
"sourceRange": []
}
},
"sourceRange": []
},
{
"type": "UserDefinedFunctionReturn"
},
{
"type": "UserDefinedFunctionCall",
"name": "circle",
"functionSourceRange": [
0,
0,
0
],
"unlabeledArg": null,
"labeledArgs": {
"center": {
"value": {
"type": "Array",
"value": [
{
"type": "Number",
"value": 0.0,
"ty": {
"type": "Default",
"len": {
"type": "Inches"
},
"angle": {
"type": "Degrees"
}
}
},
{
"type": "Number",
"value": 0.0,
"ty": {
"type": "Default",
"len": {
"type": "Inches"
},
"angle": {
"type": "Degrees"
}
}
}
]
},
"sourceRange": []
},
"radius": {
"value": {
"type": "Number",
"value": 0.375,
"ty": {
"type": "Unknown"
}
},
"sourceRange": []
}
},
"sourceRange": []
},
{
"type": "UserDefinedFunctionReturn"
},
{ {
"labeledArgs": { "labeledArgs": {
"holeSketch": { "holeSketch": {
@ -504,6 +624,60 @@ description: Operations executed ball-bearing.kcl
"type": "StdLibCall", "type": "StdLibCall",
"unlabeledArg": null "unlabeledArg": null
}, },
{
"type": "UserDefinedFunctionCall",
"name": "circle",
"functionSourceRange": [
0,
0,
0
],
"unlabeledArg": null,
"labeledArgs": {
"center": {
"value": {
"type": "Array",
"value": [
{
"type": "Number",
"value": 0.6,
"ty": {
"type": "Unknown"
}
},
{
"type": "Number",
"value": 0.0,
"ty": {
"type": "Default",
"len": {
"type": "Inches"
},
"angle": {
"type": "Degrees"
}
}
}
]
},
"sourceRange": []
},
"radius": {
"value": {
"type": "Number",
"value": 0.03125,
"ty": {
"type": "Unknown"
}
},
"sourceRange": []
}
},
"sourceRange": []
},
{
"type": "UserDefinedFunctionReturn"
},
{ {
"labeledArgs": { "labeledArgs": {
"angle": { "angle": {
@ -725,6 +899,126 @@ description: Operations executed ball-bearing.kcl
"type": "StdLibCall", "type": "StdLibCall",
"unlabeledArg": null "unlabeledArg": null
}, },
{
"type": "UserDefinedFunctionCall",
"name": "circle",
"functionSourceRange": [
0,
0,
0
],
"unlabeledArg": null,
"labeledArgs": {
"center": {
"value": {
"type": "Array",
"value": [
{
"type": "Number",
"value": 0.0,
"ty": {
"type": "Default",
"len": {
"type": "Inches"
},
"angle": {
"type": "Degrees"
}
}
},
{
"type": "Number",
"value": 0.0,
"ty": {
"type": "Default",
"len": {
"type": "Inches"
},
"angle": {
"type": "Degrees"
}
}
}
]
},
"sourceRange": []
},
"radius": {
"value": {
"type": "Number",
"value": 0.8125,
"ty": {
"type": "Unknown"
}
},
"sourceRange": []
}
},
"sourceRange": []
},
{
"type": "UserDefinedFunctionReturn"
},
{
"type": "UserDefinedFunctionCall",
"name": "circle",
"functionSourceRange": [
0,
0,
0
],
"unlabeledArg": null,
"labeledArgs": {
"center": {
"value": {
"type": "Array",
"value": [
{
"type": "Number",
"value": 0.0,
"ty": {
"type": "Default",
"len": {
"type": "Inches"
},
"angle": {
"type": "Degrees"
}
}
},
{
"type": "Number",
"value": 0.0,
"ty": {
"type": "Default",
"len": {
"type": "Inches"
},
"angle": {
"type": "Degrees"
}
}
}
]
},
"sourceRange": []
},
"radius": {
"value": {
"type": "Number",
"value": 0.725,
"ty": {
"type": "Unknown"
}
},
"sourceRange": []
}
},
"sourceRange": []
},
{
"type": "UserDefinedFunctionReturn"
},
{ {
"labeledArgs": { "labeledArgs": {
"holeSketch": { "holeSketch": {

View File

@ -1,239 +1,239 @@
```mermaid ```mermaid
flowchart LR flowchart LR
subgraph path2 [Path] subgraph path2 [Path]
2["Path<br>[361, 394, 3]"] 2["Path<br>[361, 394, 4]"]
3["Segment<br>[402, 428, 3]"] 3["Segment<br>[402, 428, 4]"]
4["Segment<br>[436, 489, 3]"] 4["Segment<br>[436, 489, 4]"]
5["Segment<br>[497, 550, 3]"] 5["Segment<br>[497, 550, 4]"]
6["Segment<br>[558, 612, 3]"] 6["Segment<br>[558, 612, 4]"]
7["Segment<br>[620, 645, 3]"] 7["Segment<br>[620, 645, 4]"]
8["Segment<br>[653, 673, 3]"] 8["Segment<br>[653, 673, 4]"]
9["Segment<br>[681, 705, 3]"] 9["Segment<br>[681, 705, 4]"]
10["Segment<br>[713, 766, 3]"] 10["Segment<br>[713, 766, 4]"]
11["Segment<br>[774, 799, 3]"] 11["Segment<br>[774, 799, 4]"]
12["Segment<br>[807, 827, 3]"] 12["Segment<br>[807, 827, 4]"]
13["Segment<br>[835, 859, 3]"] 13["Segment<br>[835, 859, 4]"]
14["Segment<br>[867, 919, 3]"] 14["Segment<br>[867, 919, 4]"]
15["Segment<br>[927, 979, 3]"] 15["Segment<br>[927, 979, 4]"]
16["Segment<br>[987, 1012, 3]"] 16["Segment<br>[987, 1012, 4]"]
17["Segment<br>[1020, 1044, 3]"] 17["Segment<br>[1020, 1044, 4]"]
18["Segment<br>[1052, 1105, 3]"] 18["Segment<br>[1052, 1105, 4]"]
19["Segment<br>[1113, 1138, 3]"] 19["Segment<br>[1113, 1138, 4]"]
20["Segment<br>[1146, 1173, 3]"] 20["Segment<br>[1146, 1173, 4]"]
21["Segment<br>[1181, 1233, 3]"] 21["Segment<br>[1181, 1233, 4]"]
22["Segment<br>[1241, 1276, 3]"] 22["Segment<br>[1241, 1276, 4]"]
23["Segment<br>[1284, 1291, 3]"] 23["Segment<br>[1284, 1291, 4]"]
24[Solid2d] 24[Solid2d]
end end
subgraph path89 [Path] subgraph path89 [Path]
89["Path<br>[361, 394, 3]"] 89["Path<br>[361, 394, 4]"]
90["Segment<br>[402, 428, 3]"] 90["Segment<br>[402, 428, 4]"]
91["Segment<br>[436, 489, 3]"] 91["Segment<br>[436, 489, 4]"]
92["Segment<br>[497, 550, 3]"] 92["Segment<br>[497, 550, 4]"]
93["Segment<br>[558, 612, 3]"] 93["Segment<br>[558, 612, 4]"]
94["Segment<br>[620, 645, 3]"] 94["Segment<br>[620, 645, 4]"]
95["Segment<br>[653, 673, 3]"] 95["Segment<br>[653, 673, 4]"]
96["Segment<br>[681, 705, 3]"] 96["Segment<br>[681, 705, 4]"]
97["Segment<br>[713, 766, 3]"] 97["Segment<br>[713, 766, 4]"]
98["Segment<br>[774, 799, 3]"] 98["Segment<br>[774, 799, 4]"]
99["Segment<br>[807, 827, 3]"] 99["Segment<br>[807, 827, 4]"]
100["Segment<br>[835, 859, 3]"] 100["Segment<br>[835, 859, 4]"]
101["Segment<br>[867, 919, 3]"] 101["Segment<br>[867, 919, 4]"]
102["Segment<br>[927, 979, 3]"] 102["Segment<br>[927, 979, 4]"]
103["Segment<br>[987, 1012, 3]"] 103["Segment<br>[987, 1012, 4]"]
104["Segment<br>[1020, 1044, 3]"] 104["Segment<br>[1020, 1044, 4]"]
105["Segment<br>[1052, 1105, 3]"] 105["Segment<br>[1052, 1105, 4]"]
106["Segment<br>[1113, 1138, 3]"] 106["Segment<br>[1113, 1138, 4]"]
107["Segment<br>[1146, 1173, 3]"] 107["Segment<br>[1146, 1173, 4]"]
108["Segment<br>[1181, 1233, 3]"] 108["Segment<br>[1181, 1233, 4]"]
109["Segment<br>[1241, 1276, 3]"] 109["Segment<br>[1241, 1276, 4]"]
110["Segment<br>[1284, 1291, 3]"] 110["Segment<br>[1284, 1291, 4]"]
111[Solid2d] 111[Solid2d]
end end
subgraph path176 [Path] subgraph path176 [Path]
176["Path<br>[361, 394, 3]"] 176["Path<br>[361, 394, 4]"]
177["Segment<br>[402, 428, 3]"] 177["Segment<br>[402, 428, 4]"]
178["Segment<br>[436, 489, 3]"] 178["Segment<br>[436, 489, 4]"]
179["Segment<br>[497, 550, 3]"] 179["Segment<br>[497, 550, 4]"]
180["Segment<br>[558, 612, 3]"] 180["Segment<br>[558, 612, 4]"]
181["Segment<br>[620, 645, 3]"] 181["Segment<br>[620, 645, 4]"]
182["Segment<br>[653, 673, 3]"] 182["Segment<br>[653, 673, 4]"]
183["Segment<br>[681, 705, 3]"] 183["Segment<br>[681, 705, 4]"]
184["Segment<br>[713, 766, 3]"] 184["Segment<br>[713, 766, 4]"]
185["Segment<br>[774, 799, 3]"] 185["Segment<br>[774, 799, 4]"]
186["Segment<br>[807, 827, 3]"] 186["Segment<br>[807, 827, 4]"]
187["Segment<br>[835, 859, 3]"] 187["Segment<br>[835, 859, 4]"]
188["Segment<br>[867, 919, 3]"] 188["Segment<br>[867, 919, 4]"]
189["Segment<br>[927, 979, 3]"] 189["Segment<br>[927, 979, 4]"]
190["Segment<br>[987, 1012, 3]"] 190["Segment<br>[987, 1012, 4]"]
191["Segment<br>[1020, 1044, 3]"] 191["Segment<br>[1020, 1044, 4]"]
192["Segment<br>[1052, 1105, 3]"] 192["Segment<br>[1052, 1105, 4]"]
193["Segment<br>[1113, 1138, 3]"] 193["Segment<br>[1113, 1138, 4]"]
194["Segment<br>[1146, 1173, 3]"] 194["Segment<br>[1146, 1173, 4]"]
195["Segment<br>[1181, 1233, 3]"] 195["Segment<br>[1181, 1233, 4]"]
196["Segment<br>[1241, 1276, 3]"] 196["Segment<br>[1241, 1276, 4]"]
197["Segment<br>[1284, 1291, 3]"] 197["Segment<br>[1284, 1291, 4]"]
198[Solid2d] 198[Solid2d]
end end
subgraph path262 [Path] subgraph path262 [Path]
262["Path<br>[361, 394, 3]"] 262["Path<br>[361, 394, 4]"]
263["Segment<br>[402, 428, 3]"] 263["Segment<br>[402, 428, 4]"]
264["Segment<br>[436, 489, 3]"] 264["Segment<br>[436, 489, 4]"]
265["Segment<br>[497, 550, 3]"] 265["Segment<br>[497, 550, 4]"]
266["Segment<br>[558, 612, 3]"] 266["Segment<br>[558, 612, 4]"]
267["Segment<br>[620, 645, 3]"] 267["Segment<br>[620, 645, 4]"]
268["Segment<br>[653, 673, 3]"] 268["Segment<br>[653, 673, 4]"]
269["Segment<br>[681, 705, 3]"] 269["Segment<br>[681, 705, 4]"]
270["Segment<br>[713, 766, 3]"] 270["Segment<br>[713, 766, 4]"]
271["Segment<br>[774, 799, 3]"] 271["Segment<br>[774, 799, 4]"]
272["Segment<br>[807, 827, 3]"] 272["Segment<br>[807, 827, 4]"]
273["Segment<br>[835, 859, 3]"] 273["Segment<br>[835, 859, 4]"]
274["Segment<br>[867, 919, 3]"] 274["Segment<br>[867, 919, 4]"]
275["Segment<br>[927, 979, 3]"] 275["Segment<br>[927, 979, 4]"]
276["Segment<br>[987, 1012, 3]"] 276["Segment<br>[987, 1012, 4]"]
277["Segment<br>[1020, 1044, 3]"] 277["Segment<br>[1020, 1044, 4]"]
278["Segment<br>[1052, 1105, 3]"] 278["Segment<br>[1052, 1105, 4]"]
279["Segment<br>[1113, 1138, 3]"] 279["Segment<br>[1113, 1138, 4]"]
280["Segment<br>[1146, 1173, 3]"] 280["Segment<br>[1146, 1173, 4]"]
281["Segment<br>[1181, 1233, 3]"] 281["Segment<br>[1181, 1233, 4]"]
282["Segment<br>[1241, 1276, 3]"] 282["Segment<br>[1241, 1276, 4]"]
283["Segment<br>[1284, 1291, 3]"] 283["Segment<br>[1284, 1291, 4]"]
284[Solid2d] 284[Solid2d]
end end
subgraph path349 [Path] subgraph path349 [Path]
349["Path<br>[361, 394, 3]"] 349["Path<br>[361, 394, 4]"]
350["Segment<br>[402, 428, 3]"] 350["Segment<br>[402, 428, 4]"]
351["Segment<br>[436, 489, 3]"] 351["Segment<br>[436, 489, 4]"]
352["Segment<br>[497, 550, 3]"] 352["Segment<br>[497, 550, 4]"]
353["Segment<br>[558, 612, 3]"] 353["Segment<br>[558, 612, 4]"]
354["Segment<br>[620, 645, 3]"] 354["Segment<br>[620, 645, 4]"]
355["Segment<br>[653, 673, 3]"] 355["Segment<br>[653, 673, 4]"]
356["Segment<br>[681, 705, 3]"] 356["Segment<br>[681, 705, 4]"]
357["Segment<br>[713, 766, 3]"] 357["Segment<br>[713, 766, 4]"]
358["Segment<br>[774, 799, 3]"] 358["Segment<br>[774, 799, 4]"]
359["Segment<br>[807, 827, 3]"] 359["Segment<br>[807, 827, 4]"]
360["Segment<br>[835, 859, 3]"] 360["Segment<br>[835, 859, 4]"]
361["Segment<br>[867, 919, 3]"] 361["Segment<br>[867, 919, 4]"]
362["Segment<br>[927, 979, 3]"] 362["Segment<br>[927, 979, 4]"]
363["Segment<br>[987, 1012, 3]"] 363["Segment<br>[987, 1012, 4]"]
364["Segment<br>[1020, 1044, 3]"] 364["Segment<br>[1020, 1044, 4]"]
365["Segment<br>[1052, 1105, 3]"] 365["Segment<br>[1052, 1105, 4]"]
366["Segment<br>[1113, 1138, 3]"] 366["Segment<br>[1113, 1138, 4]"]
367["Segment<br>[1146, 1173, 3]"] 367["Segment<br>[1146, 1173, 4]"]
368["Segment<br>[1181, 1233, 3]"] 368["Segment<br>[1181, 1233, 4]"]
369["Segment<br>[1241, 1276, 3]"] 369["Segment<br>[1241, 1276, 4]"]
370["Segment<br>[1284, 1291, 3]"] 370["Segment<br>[1284, 1291, 4]"]
371[Solid2d] 371[Solid2d]
end end
subgraph path435 [Path] subgraph path435 [Path]
435["Path<br>[361, 394, 3]"] 435["Path<br>[361, 394, 4]"]
436["Segment<br>[402, 428, 3]"] 436["Segment<br>[402, 428, 4]"]
437["Segment<br>[436, 489, 3]"] 437["Segment<br>[436, 489, 4]"]
438["Segment<br>[497, 550, 3]"] 438["Segment<br>[497, 550, 4]"]
439["Segment<br>[558, 612, 3]"] 439["Segment<br>[558, 612, 4]"]
440["Segment<br>[620, 645, 3]"] 440["Segment<br>[620, 645, 4]"]
441["Segment<br>[653, 673, 3]"] 441["Segment<br>[653, 673, 4]"]
442["Segment<br>[681, 705, 3]"] 442["Segment<br>[681, 705, 4]"]
443["Segment<br>[713, 766, 3]"] 443["Segment<br>[713, 766, 4]"]
444["Segment<br>[774, 799, 3]"] 444["Segment<br>[774, 799, 4]"]
445["Segment<br>[807, 827, 3]"] 445["Segment<br>[807, 827, 4]"]
446["Segment<br>[835, 859, 3]"] 446["Segment<br>[835, 859, 4]"]
447["Segment<br>[867, 919, 3]"] 447["Segment<br>[867, 919, 4]"]
448["Segment<br>[927, 979, 3]"] 448["Segment<br>[927, 979, 4]"]
449["Segment<br>[987, 1012, 3]"] 449["Segment<br>[987, 1012, 4]"]
450["Segment<br>[1020, 1044, 3]"] 450["Segment<br>[1020, 1044, 4]"]
451["Segment<br>[1052, 1105, 3]"] 451["Segment<br>[1052, 1105, 4]"]
452["Segment<br>[1113, 1138, 3]"] 452["Segment<br>[1113, 1138, 4]"]
453["Segment<br>[1146, 1173, 3]"] 453["Segment<br>[1146, 1173, 4]"]
454["Segment<br>[1181, 1233, 3]"] 454["Segment<br>[1181, 1233, 4]"]
455["Segment<br>[1241, 1276, 3]"] 455["Segment<br>[1241, 1276, 4]"]
456["Segment<br>[1284, 1291, 3]"] 456["Segment<br>[1284, 1291, 4]"]
457[Solid2d] 457[Solid2d]
end end
subgraph path522 [Path] subgraph path522 [Path]
522["Path<br>[1685, 1709, 3]"] 522["Path<br>[1685, 1709, 4]"]
end end
subgraph path523 [Path] subgraph path523 [Path]
523["Path<br>[1717, 1847, 3]"] 523["Path<br>[1717, 1847, 4]"]
524["Segment<br>[1717, 1847, 3]"] 524["Segment<br>[1717, 1847, 4]"]
525["Segment<br>[1717, 1847, 3]"] 525["Segment<br>[1717, 1847, 4]"]
526["Segment<br>[1717, 1847, 3]"] 526["Segment<br>[1717, 1847, 4]"]
527["Segment<br>[1717, 1847, 3]"] 527["Segment<br>[1717, 1847, 4]"]
528["Segment<br>[1717, 1847, 3]"] 528["Segment<br>[1717, 1847, 4]"]
529["Segment<br>[1717, 1847, 3]"] 529["Segment<br>[1717, 1847, 4]"]
530["Segment<br>[1717, 1847, 3]"] 530["Segment<br>[1717, 1847, 4]"]
531[Solid2d] 531[Solid2d]
end end
subgraph path553 [Path] subgraph path553 [Path]
553["Path<br>[1685, 1709, 3]"] 553["Path<br>[1685, 1709, 4]"]
end end
subgraph path554 [Path] subgraph path554 [Path]
554["Path<br>[1717, 1847, 3]"] 554["Path<br>[1717, 1847, 4]"]
555["Segment<br>[1717, 1847, 3]"] 555["Segment<br>[1717, 1847, 4]"]
556["Segment<br>[1717, 1847, 3]"] 556["Segment<br>[1717, 1847, 4]"]
557["Segment<br>[1717, 1847, 3]"] 557["Segment<br>[1717, 1847, 4]"]
558["Segment<br>[1717, 1847, 3]"] 558["Segment<br>[1717, 1847, 4]"]
559["Segment<br>[1717, 1847, 3]"] 559["Segment<br>[1717, 1847, 4]"]
560["Segment<br>[1717, 1847, 3]"] 560["Segment<br>[1717, 1847, 4]"]
561["Segment<br>[1717, 1847, 3]"] 561["Segment<br>[1717, 1847, 4]"]
562[Solid2d] 562[Solid2d]
end end
subgraph path585 [Path] subgraph path585 [Path]
585["Path<br>[2123, 2150, 3]"] 585["Path<br>[2123, 2150, 4]"]
586["Segment<br>[2158, 2180, 3]"] 586["Segment<br>[2158, 2180, 4]"]
587["Segment<br>[2188, 2210, 3]"] 587["Segment<br>[2188, 2210, 4]"]
588["Segment<br>[2218, 2240, 3]"] 588["Segment<br>[2218, 2240, 4]"]
589["Segment<br>[2248, 2271, 3]"] 589["Segment<br>[2248, 2271, 4]"]
590["Segment<br>[2279, 2302, 3]"] 590["Segment<br>[2279, 2302, 4]"]
591["Segment<br>[2310, 2345, 3]"] 591["Segment<br>[2310, 2345, 4]"]
592["Segment<br>[2353, 2360, 3]"] 592["Segment<br>[2353, 2360, 4]"]
593[Solid2d] 593[Solid2d]
end end
subgraph path618 [Path] subgraph path618 [Path]
618["Path<br>[2632, 2661, 3]"] 618["Path<br>[2632, 2661, 4]"]
619["Segment<br>[2669, 2692, 3]"] 619["Segment<br>[2669, 2692, 4]"]
620["Segment<br>[2700, 2725, 3]"] 620["Segment<br>[2700, 2725, 4]"]
621["Segment<br>[2733, 2757, 3]"] 621["Segment<br>[2733, 2757, 4]"]
622["Segment<br>[2765, 2789, 3]"] 622["Segment<br>[2765, 2789, 4]"]
623["Segment<br>[2797, 2819, 3]"] 623["Segment<br>[2797, 2819, 4]"]
624["Segment<br>[2827, 2862, 3]"] 624["Segment<br>[2827, 2862, 4]"]
625["Segment<br>[2870, 2877, 3]"] 625["Segment<br>[2870, 2877, 4]"]
626[Solid2d] 626[Solid2d]
end end
subgraph path650 [Path] subgraph path650 [Path]
650["Path<br>[3152, 3179, 3]"] 650["Path<br>[3152, 3179, 4]"]
651["Segment<br>[3187, 3206, 3]"] 651["Segment<br>[3187, 3206, 4]"]
652["Segment<br>[3214, 3304, 3]"] 652["Segment<br>[3214, 3304, 4]"]
end end
subgraph path654 [Path] subgraph path654 [Path]
654["Path<br>[3404, 3437, 3]"] 654["Path<br>[3404, 3437, 4]"]
655["Segment<br>[3445, 3464, 3]"] 655["Segment<br>[3445, 3464, 4]"]
656["Segment<br>[3472, 3494, 3]"] 656["Segment<br>[3472, 3494, 4]"]
657["Segment<br>[3502, 3525, 3]"] 657["Segment<br>[3502, 3525, 4]"]
658["Segment<br>[3533, 3553, 3]"] 658["Segment<br>[3533, 3553, 4]"]
659["Segment<br>[3561, 3585, 3]"] 659["Segment<br>[3561, 3585, 4]"]
660["Segment<br>[3593, 3616, 3]"] 660["Segment<br>[3593, 3616, 4]"]
661["Segment<br>[3624, 3631, 3]"] 661["Segment<br>[3624, 3631, 4]"]
662[Solid2d] 662[Solid2d]
end end
subgraph path688 [Path] subgraph path688 [Path]
688["Path<br>[3152, 3179, 3]"] 688["Path<br>[3152, 3179, 4]"]
689["Segment<br>[3187, 3206, 3]"] 689["Segment<br>[3187, 3206, 4]"]
690["Segment<br>[3214, 3304, 3]"] 690["Segment<br>[3214, 3304, 4]"]
end end
subgraph path692 [Path] subgraph path692 [Path]
692["Path<br>[3404, 3437, 3]"] 692["Path<br>[3404, 3437, 4]"]
693["Segment<br>[3445, 3464, 3]"] 693["Segment<br>[3445, 3464, 4]"]
694["Segment<br>[3472, 3494, 3]"] 694["Segment<br>[3472, 3494, 4]"]
695["Segment<br>[3502, 3525, 3]"] 695["Segment<br>[3502, 3525, 4]"]
696["Segment<br>[3533, 3553, 3]"] 696["Segment<br>[3533, 3553, 4]"]
697["Segment<br>[3561, 3585, 3]"] 697["Segment<br>[3561, 3585, 4]"]
698["Segment<br>[3593, 3616, 3]"] 698["Segment<br>[3593, 3616, 4]"]
699["Segment<br>[3624, 3631, 3]"] 699["Segment<br>[3624, 3631, 4]"]
700[Solid2d] 700[Solid2d]
end end
1["Plane<br>[333, 353, 3]"] 1["Plane<br>[333, 353, 4]"]
25["Sweep Extrusion<br>[1379, 1417, 3]"] 25["Sweep Extrusion<br>[1379, 1417, 4]"]
26[Wall] 26[Wall]
27[Wall] 27[Wall]
28[Wall] 28[Wall]
@ -296,8 +296,8 @@ flowchart LR
85["SweepEdge Adjacent"] 85["SweepEdge Adjacent"]
86["SweepEdge Opposite"] 86["SweepEdge Opposite"]
87["SweepEdge Adjacent"] 87["SweepEdge Adjacent"]
88["Plane<br>[333, 353, 3]"] 88["Plane<br>[333, 353, 4]"]
112["Sweep Extrusion<br>[1455, 1494, 3]"] 112["Sweep Extrusion<br>[1455, 1494, 4]"]
113[Wall] 113[Wall]
114[Wall] 114[Wall]
115[Wall] 115[Wall]
@ -361,7 +361,7 @@ flowchart LR
173["SweepEdge Opposite"] 173["SweepEdge Opposite"]
174["SweepEdge Adjacent"] 174["SweepEdge Adjacent"]
175["Plane<br>[825, 869, 0]"] 175["Plane<br>[825, 869, 0]"]
199["Sweep Extrusion<br>[1379, 1417, 3]"] 199["Sweep Extrusion<br>[1379, 1417, 4]"]
200[Wall] 200[Wall]
201[Wall] 201[Wall]
202[Wall] 202[Wall]
@ -424,7 +424,7 @@ flowchart LR
259["SweepEdge Adjacent"] 259["SweepEdge Adjacent"]
260["SweepEdge Opposite"] 260["SweepEdge Opposite"]
261["SweepEdge Adjacent"] 261["SweepEdge Adjacent"]
285["Sweep Extrusion<br>[1455, 1494, 3]"] 285["Sweep Extrusion<br>[1455, 1494, 4]"]
286[Wall] 286[Wall]
287[Wall] 287[Wall]
288[Wall] 288[Wall]
@ -488,7 +488,7 @@ flowchart LR
346["SweepEdge Opposite"] 346["SweepEdge Opposite"]
347["SweepEdge Adjacent"] 347["SweepEdge Adjacent"]
348["Plane<br>[879, 922, 0]"] 348["Plane<br>[879, 922, 0]"]
372["Sweep Extrusion<br>[1379, 1417, 3]"] 372["Sweep Extrusion<br>[1379, 1417, 4]"]
373[Wall] 373[Wall]
374[Wall] 374[Wall]
375[Wall] 375[Wall]
@ -551,7 +551,7 @@ flowchart LR
432["SweepEdge Adjacent"] 432["SweepEdge Adjacent"]
433["SweepEdge Opposite"] 433["SweepEdge Opposite"]
434["SweepEdge Adjacent"] 434["SweepEdge Adjacent"]
458["Sweep Extrusion<br>[1455, 1494, 3]"] 458["Sweep Extrusion<br>[1455, 1494, 4]"]
459[Wall] 459[Wall]
460[Wall] 460[Wall]
461[Wall] 461[Wall]
@ -615,7 +615,7 @@ flowchart LR
519["SweepEdge Opposite"] 519["SweepEdge Opposite"]
520["SweepEdge Adjacent"] 520["SweepEdge Adjacent"]
521["Plane<br>[981, 1025, 0]"] 521["Plane<br>[981, 1025, 0]"]
532["Sweep Extrusion<br>[1949, 1973, 3]"] 532["Sweep Extrusion<br>[1949, 1973, 4]"]
533[Wall] 533[Wall]
534[Wall] 534[Wall]
535[Wall] 535[Wall]
@ -636,7 +636,7 @@ flowchart LR
550["SweepEdge Adjacent"] 550["SweepEdge Adjacent"]
551["SweepEdge Opposite"] 551["SweepEdge Opposite"]
552["SweepEdge Adjacent"] 552["SweepEdge Adjacent"]
563["Sweep Extrusion<br>[2015, 2039, 3]"] 563["Sweep Extrusion<br>[2015, 2039, 4]"]
564[Wall] 564[Wall]
565[Wall] 565[Wall]
566[Wall] 566[Wall]
@ -658,7 +658,7 @@ flowchart LR
582["SweepEdge Opposite"] 582["SweepEdge Opposite"]
583["SweepEdge Adjacent"] 583["SweepEdge Adjacent"]
584["Plane<br>[1076, 1143, 0]"] 584["Plane<br>[1076, 1143, 0]"]
594["Sweep Extrusion<br>[2523, 2547, 3]"] 594["Sweep Extrusion<br>[2523, 2547, 4]"]
595[Wall] 595[Wall]
596[Wall] 596[Wall]
597[Wall] 597[Wall]
@ -679,10 +679,10 @@ flowchart LR
612["SweepEdge Adjacent"] 612["SweepEdge Adjacent"]
613["SweepEdge Opposite"] 613["SweepEdge Opposite"]
614["SweepEdge Adjacent"] 614["SweepEdge Adjacent"]
615["Sweep Extrusion<br>[2523, 2547, 3]"] 615["Sweep Extrusion<br>[2523, 2547, 4]"]
616["Sweep Extrusion<br>[2523, 2547, 3]"] 616["Sweep Extrusion<br>[2523, 2547, 4]"]
617["Plane<br>[1213, 1280, 0]"] 617["Plane<br>[1213, 1280, 0]"]
627["Sweep Extrusion<br>[3047, 3071, 3]"] 627["Sweep Extrusion<br>[3047, 3071, 4]"]
628[Wall] 628[Wall]
629[Wall] 629[Wall]
630[Wall] 630[Wall]
@ -703,10 +703,10 @@ flowchart LR
645["SweepEdge Adjacent"] 645["SweepEdge Adjacent"]
646["SweepEdge Opposite"] 646["SweepEdge Opposite"]
647["SweepEdge Adjacent"] 647["SweepEdge Adjacent"]
648["Sweep Extrusion<br>[3047, 3071, 3]"] 648["Sweep Extrusion<br>[3047, 3071, 4]"]
649["Plane<br>[3712, 3747, 3]"] 649["Plane<br>[3712, 3747, 4]"]
653["Plane<br>[3778, 3809, 3]"] 653["Plane<br>[3778, 3809, 4]"]
663["Sweep Sweep<br>[3821, 3848, 3]"] 663["Sweep Sweep<br>[3821, 3848, 4]"]
664[Wall] 664[Wall]
665[Wall] 665[Wall]
666[Wall] 666[Wall]
@ -730,9 +730,9 @@ flowchart LR
684["SweepEdge Adjacent"] 684["SweepEdge Adjacent"]
685["SweepEdge Opposite"] 685["SweepEdge Opposite"]
686["SweepEdge Adjacent"] 686["SweepEdge Adjacent"]
687["Plane<br>[3712, 3747, 3]"] 687["Plane<br>[3712, 3747, 4]"]
691["Plane<br>[3778, 3809, 3]"] 691["Plane<br>[3778, 3809, 4]"]
701["Sweep Sweep<br>[3821, 3848, 3]"] 701["Sweep Sweep<br>[3821, 3848, 4]"]
702[Wall] 702[Wall]
703[Wall] 703[Wall]
704[Wall] 704[Wall]
@ -756,18 +756,18 @@ flowchart LR
722["SweepEdge Adjacent"] 722["SweepEdge Adjacent"]
723["SweepEdge Opposite"] 723["SweepEdge Opposite"]
724["SweepEdge Adjacent"] 724["SweepEdge Adjacent"]
725["StartSketchOnPlane<br>[333, 353, 3]"] 725["StartSketchOnPlane<br>[333, 353, 4]"]
726["StartSketchOnPlane<br>[333, 353, 3]"] 726["StartSketchOnPlane<br>[333, 353, 4]"]
727["StartSketchOnPlane<br>[333, 353, 3]"] 727["StartSketchOnPlane<br>[333, 353, 4]"]
728["StartSketchOnPlane<br>[333, 353, 3]"] 728["StartSketchOnPlane<br>[333, 353, 4]"]
729["StartSketchOnPlane<br>[1657, 1677, 3]"] 729["StartSketchOnPlane<br>[1657, 1677, 4]"]
730["StartSketchOnPlane<br>[1657, 1677, 3]"] 730["StartSketchOnPlane<br>[1657, 1677, 4]"]
731["StartSketchOnPlane<br>[2095, 2115, 3]"] 731["StartSketchOnPlane<br>[2095, 2115, 4]"]
732["StartSketchOnPlane<br>[2604, 2624, 3]"] 732["StartSketchOnPlane<br>[2604, 2624, 4]"]
733["StartSketchOnPlane<br>[3124, 3144, 3]"] 733["StartSketchOnPlane<br>[3124, 3144, 4]"]
734["StartSketchOnPlane<br>[3376, 3396, 3]"] 734["StartSketchOnPlane<br>[3376, 3396, 4]"]
735["StartSketchOnPlane<br>[3124, 3144, 3]"] 735["StartSketchOnPlane<br>[3124, 3144, 4]"]
736["StartSketchOnPlane<br>[3376, 3396, 3]"] 736["StartSketchOnPlane<br>[3376, 3396, 4]"]
1 --- 2 1 --- 2
2 --- 3 2 --- 3
2 --- 4 2 --- 4

View File

@ -9,7 +9,7 @@ description: Operations executed bench.kcl
"functionSourceRange": [ "functionSourceRange": [
1331, 1331,
1606, 1606,
3 4
], ],
"unlabeledArg": null, "unlabeledArg": null,
"labeledArgs": {}, "labeledArgs": {},
@ -21,7 +21,7 @@ description: Operations executed bench.kcl
"functionSourceRange": [ "functionSourceRange": [
309, 309,
1312, 1312,
3 4
], ],
"unlabeledArg": null, "unlabeledArg": null,
"labeledArgs": {}, "labeledArgs": {},
@ -77,7 +77,7 @@ description: Operations executed bench.kcl
"functionSourceRange": [ "functionSourceRange": [
309, 309,
1312, 1312,
3 4
], ],
"unlabeledArg": null, "unlabeledArg": null,
"labeledArgs": {}, "labeledArgs": {},
@ -248,7 +248,7 @@ description: Operations executed bench.kcl
"functionSourceRange": [ "functionSourceRange": [
1331, 1331,
1606, 1606,
3 4
], ],
"unlabeledArg": null, "unlabeledArg": null,
"labeledArgs": {}, "labeledArgs": {},
@ -260,7 +260,7 @@ description: Operations executed bench.kcl
"functionSourceRange": [ "functionSourceRange": [
309, 309,
1312, 1312,
3 4
], ],
"unlabeledArg": null, "unlabeledArg": null,
"labeledArgs": {}, "labeledArgs": {},
@ -316,7 +316,7 @@ description: Operations executed bench.kcl
"functionSourceRange": [ "functionSourceRange": [
309, 309,
1312, 1312,
3 4
], ],
"unlabeledArg": null, "unlabeledArg": null,
"labeledArgs": {}, "labeledArgs": {},
@ -487,7 +487,7 @@ description: Operations executed bench.kcl
"functionSourceRange": [ "functionSourceRange": [
1331, 1331,
1606, 1606,
3 4
], ],
"unlabeledArg": null, "unlabeledArg": null,
"labeledArgs": {}, "labeledArgs": {},
@ -499,7 +499,7 @@ description: Operations executed bench.kcl
"functionSourceRange": [ "functionSourceRange": [
309, 309,
1312, 1312,
3 4
], ],
"unlabeledArg": null, "unlabeledArg": null,
"labeledArgs": {}, "labeledArgs": {},
@ -555,7 +555,7 @@ description: Operations executed bench.kcl
"functionSourceRange": [ "functionSourceRange": [
309, 309,
1312, 1312,
3 4
], ],
"unlabeledArg": null, "unlabeledArg": null,
"labeledArgs": {}, "labeledArgs": {},
@ -726,7 +726,7 @@ description: Operations executed bench.kcl
"functionSourceRange": [ "functionSourceRange": [
1889, 1889,
2052, 2052,
3 4
], ],
"unlabeledArg": null, "unlabeledArg": null,
"labeledArgs": {}, "labeledArgs": {},
@ -738,7 +738,7 @@ description: Operations executed bench.kcl
"functionSourceRange": [ "functionSourceRange": [
1626, 1626,
1868, 1868,
3 4
], ],
"unlabeledArg": null, "unlabeledArg": null,
"labeledArgs": {}, "labeledArgs": {},
@ -800,7 +800,7 @@ description: Operations executed bench.kcl
"functionSourceRange": [ "functionSourceRange": [
1626, 1626,
1868, 1868,
3 4
], ],
"unlabeledArg": null, "unlabeledArg": null,
"labeledArgs": {}, "labeledArgs": {},
@ -889,7 +889,7 @@ description: Operations executed bench.kcl
"functionSourceRange": [ "functionSourceRange": [
2474, 2474,
2560, 2560,
3 4
], ],
"unlabeledArg": null, "unlabeledArg": null,
"labeledArgs": {}, "labeledArgs": {},
@ -901,7 +901,7 @@ description: Operations executed bench.kcl
"functionSourceRange": [ "functionSourceRange": [
2071, 2071,
2453, 2453,
3 4
], ],
"unlabeledArg": null, "unlabeledArg": null,
"labeledArgs": {}, "labeledArgs": {},
@ -1007,7 +1007,7 @@ description: Operations executed bench.kcl
"functionSourceRange": [ "functionSourceRange": [
2993, 2993,
3084, 3084,
3 4
], ],
"unlabeledArg": null, "unlabeledArg": null,
"labeledArgs": {}, "labeledArgs": {},
@ -1019,7 +1019,7 @@ description: Operations executed bench.kcl
"functionSourceRange": [ "functionSourceRange": [
2580, 2580,
2972, 2972,
3 4
], ],
"unlabeledArg": null, "unlabeledArg": null,
"labeledArgs": {}, "labeledArgs": {},
@ -1095,7 +1095,7 @@ description: Operations executed bench.kcl
"functionSourceRange": [ "functionSourceRange": [
3671, 3671,
3861, 3861,
3 4
], ],
"unlabeledArg": null, "unlabeledArg": null,
"labeledArgs": {}, "labeledArgs": {},
@ -1131,7 +1131,7 @@ description: Operations executed bench.kcl
"functionSourceRange": [ "functionSourceRange": [
3100, 3100,
3325, 3325,
3 4
], ],
"unlabeledArg": null, "unlabeledArg": null,
"labeledArgs": {}, "labeledArgs": {},
@ -1191,7 +1191,7 @@ description: Operations executed bench.kcl
"functionSourceRange": [ "functionSourceRange": [
3344, 3344,
3652, 3652,
3 4
], ],
"unlabeledArg": null, "unlabeledArg": null,
"labeledArgs": {}, "labeledArgs": {},
@ -1249,7 +1249,7 @@ description: Operations executed bench.kcl
"functionSourceRange": [ "functionSourceRange": [
3671, 3671,
3861, 3861,
3 4
], ],
"unlabeledArg": null, "unlabeledArg": null,
"labeledArgs": {}, "labeledArgs": {},
@ -1285,7 +1285,7 @@ description: Operations executed bench.kcl
"functionSourceRange": [ "functionSourceRange": [
3100, 3100,
3325, 3325,
3 4
], ],
"unlabeledArg": null, "unlabeledArg": null,
"labeledArgs": {}, "labeledArgs": {},
@ -1345,7 +1345,7 @@ description: Operations executed bench.kcl
"functionSourceRange": [ "functionSourceRange": [
3344, 3344,
3652, 3652,
3 4
], ],
"unlabeledArg": null, "unlabeledArg": null,
"labeledArgs": {}, "labeledArgs": {},

View File

@ -255,6 +255,66 @@ description: Operations executed bracket.kcl
"type": "StdLibCall", "type": "StdLibCall",
"unlabeledArg": null "unlabeledArg": null
}, },
{
"type": "UserDefinedFunctionCall",
"name": "circle",
"functionSourceRange": [
0,
0,
0
],
"unlabeledArg": null,
"labeledArgs": {
"center": {
"value": {
"type": "Array",
"value": [
{
"type": "Number",
"value": -1.25,
"ty": {
"type": "Default",
"len": {
"type": "Mm"
},
"angle": {
"type": "Degrees"
}
}
},
{
"type": "Number",
"value": 1.0,
"ty": {
"type": "Default",
"len": {
"type": "Mm"
},
"angle": {
"type": "Degrees"
}
}
}
]
},
"sourceRange": []
},
"radius": {
"value": {
"type": "Number",
"value": 0.25,
"ty": {
"type": "Unknown"
}
},
"sourceRange": []
}
},
"sourceRange": []
},
{
"type": "UserDefinedFunctionReturn"
},
{ {
"labeledArgs": { "labeledArgs": {
"length": { "length": {
@ -329,6 +389,66 @@ description: Operations executed bracket.kcl
"type": "StdLibCall", "type": "StdLibCall",
"unlabeledArg": null "unlabeledArg": null
}, },
{
"type": "UserDefinedFunctionCall",
"name": "circle",
"functionSourceRange": [
0,
0,
0
],
"unlabeledArg": null,
"labeledArgs": {
"center": {
"value": {
"type": "Array",
"value": [
{
"type": "Number",
"value": 1.0,
"ty": {
"type": "Default",
"len": {
"type": "Mm"
},
"angle": {
"type": "Degrees"
}
}
},
{
"type": "Number",
"value": -1.0,
"ty": {
"type": "Default",
"len": {
"type": "Mm"
},
"angle": {
"type": "Degrees"
}
}
}
]
},
"sourceRange": []
},
"radius": {
"value": {
"type": "Number",
"value": 0.25,
"ty": {
"type": "Unknown"
}
},
"sourceRange": []
}
},
"sourceRange": []
},
{
"type": "UserDefinedFunctionReturn"
},
{ {
"labeledArgs": { "labeledArgs": {
"length": { "length": {

View File

@ -1,264 +1,264 @@
```mermaid ```mermaid
flowchart LR flowchart LR
subgraph path2 [Path] subgraph path2 [Path]
2["Path<br>[571, 643, 4]"] 2["Path<br>[571, 643, 5]"]
3["Segment<br>[571, 643, 4]"] 3["Segment<br>[571, 643, 5]"]
4[Solid2d] 4[Solid2d]
end end
subgraph path11 [Path] subgraph path11 [Path]
11["Path<br>[828, 905, 4]"] 11["Path<br>[828, 905, 5]"]
12["Segment<br>[828, 905, 4]"] 12["Segment<br>[828, 905, 5]"]
13[Solid2d] 13[Solid2d]
end end
subgraph path19 [Path] subgraph path19 [Path]
19["Path<br>[1030, 1104, 4]"] 19["Path<br>[1030, 1104, 5]"]
20["Segment<br>[1030, 1104, 4]"] 20["Segment<br>[1030, 1104, 5]"]
21[Solid2d] 21[Solid2d]
end end
subgraph path30 [Path] subgraph path30 [Path]
30["Path<br>[1486, 1526, 4]"] 30["Path<br>[1486, 1526, 5]"]
31["Segment<br>[1486, 1526, 4]"] 31["Segment<br>[1486, 1526, 5]"]
32[Solid2d] 32[Solid2d]
end end
subgraph path38 [Path] subgraph path38 [Path]
38["Path<br>[1630, 1702, 4]"] 38["Path<br>[1630, 1702, 5]"]
39["Segment<br>[1630, 1702, 4]"] 39["Segment<br>[1630, 1702, 5]"]
40[Solid2d] 40[Solid2d]
end end
subgraph path47 [Path] subgraph path47 [Path]
47["Path<br>[1835, 1909, 4]"] 47["Path<br>[1835, 1909, 5]"]
48["Segment<br>[1835, 1909, 4]"] 48["Segment<br>[1835, 1909, 5]"]
49[Solid2d] 49[Solid2d]
end end
subgraph path58 [Path] subgraph path58 [Path]
58["Path<br>[2151, 2244, 4]"] 58["Path<br>[2151, 2244, 5]"]
59["Segment<br>[2151, 2244, 4]"] 59["Segment<br>[2151, 2244, 5]"]
60[Solid2d] 60[Solid2d]
end end
subgraph path81 [Path] subgraph path81 [Path]
81["Path<br>[2500, 2531, 4]"] 81["Path<br>[2500, 2531, 5]"]
82["Segment<br>[2537, 2557, 4]"] 82["Segment<br>[2537, 2557, 5]"]
83["Segment<br>[2563, 2583, 4]"] 83["Segment<br>[2563, 2583, 5]"]
84["Segment<br>[2589, 2610, 4]"] 84["Segment<br>[2589, 2610, 5]"]
85["Segment<br>[2616, 2672, 4]"] 85["Segment<br>[2616, 2672, 5]"]
86["Segment<br>[2678, 2685, 4]"] 86["Segment<br>[2678, 2685, 5]"]
87[Solid2d] 87[Solid2d]
end end
subgraph path106 [Path] subgraph path106 [Path]
106["Path<br>[2986, 3018, 4]"] 106["Path<br>[2986, 3018, 5]"]
107["Segment<br>[3024, 3045, 4]"] 107["Segment<br>[3024, 3045, 5]"]
108["Segment<br>[3051, 3071, 4]"] 108["Segment<br>[3051, 3071, 5]"]
109["Segment<br>[3077, 3097, 4]"] 109["Segment<br>[3077, 3097, 5]"]
110["Segment<br>[3103, 3159, 4]"] 110["Segment<br>[3103, 3159, 5]"]
111["Segment<br>[3165, 3172, 4]"] 111["Segment<br>[3165, 3172, 5]"]
112[Solid2d] 112[Solid2d]
end end
subgraph path132 [Path] subgraph path132 [Path]
132["Path<br>[354, 431, 3]"] 132["Path<br>[354, 431, 4]"]
133["Segment<br>[354, 431, 3]"] 133["Segment<br>[354, 431, 4]"]
134[Solid2d] 134[Solid2d]
end end
subgraph path135 [Path] subgraph path135 [Path]
135["Path<br>[442, 519, 3]"] 135["Path<br>[442, 519, 4]"]
136["Segment<br>[442, 519, 3]"] 136["Segment<br>[442, 519, 4]"]
137[Solid2d] 137[Solid2d]
end end
subgraph path144 [Path] subgraph path144 [Path]
144["Path<br>[684, 761, 3]"] 144["Path<br>[684, 761, 4]"]
145["Segment<br>[684, 761, 3]"] 145["Segment<br>[684, 761, 4]"]
146[Solid2d] 146[Solid2d]
end end
subgraph path147 [Path] subgraph path147 [Path]
147["Path<br>[772, 849, 3]"] 147["Path<br>[772, 849, 4]"]
148["Segment<br>[772, 849, 3]"] 148["Segment<br>[772, 849, 4]"]
149[Solid2d] 149[Solid2d]
end end
subgraph path156 [Path] subgraph path156 [Path]
156["Path<br>[993, 1068, 3]"] 156["Path<br>[993, 1068, 4]"]
157["Segment<br>[993, 1068, 3]"] 157["Segment<br>[993, 1068, 4]"]
158[Solid2d] 158[Solid2d]
end end
subgraph path167 [Path] subgraph path167 [Path]
167["Path<br>[1345, 1426, 3]"] 167["Path<br>[1345, 1426, 4]"]
168["Segment<br>[1345, 1426, 3]"] 168["Segment<br>[1345, 1426, 4]"]
169[Solid2d] 169[Solid2d]
end end
subgraph path179 [Path] subgraph path179 [Path]
179["Path<br>[1785, 1831, 3]"] 179["Path<br>[1785, 1831, 4]"]
180["Segment<br>[1837, 1889, 3]"] 180["Segment<br>[1837, 1889, 4]"]
181["Segment<br>[1895, 2000, 3]"] 181["Segment<br>[1895, 2000, 4]"]
182["Segment<br>[2006, 2028, 3]"] 182["Segment<br>[2006, 2028, 4]"]
183["Segment<br>[2034, 2090, 3]"] 183["Segment<br>[2034, 2090, 4]"]
184["Segment<br>[2096, 2103, 3]"] 184["Segment<br>[2096, 2103, 4]"]
185[Solid2d] 185[Solid2d]
end end
subgraph path195 [Path] subgraph path195 [Path]
195["Path<br>[2239, 2285, 3]"] 195["Path<br>[2239, 2285, 4]"]
196["Segment<br>[2291, 2343, 3]"] 196["Segment<br>[2291, 2343, 4]"]
197["Segment<br>[2349, 2456, 3]"] 197["Segment<br>[2349, 2456, 4]"]
198["Segment<br>[2462, 2499, 3]"] 198["Segment<br>[2462, 2499, 4]"]
199["Segment<br>[2505, 2561, 3]"] 199["Segment<br>[2505, 2561, 4]"]
200["Segment<br>[2567, 2574, 3]"] 200["Segment<br>[2567, 2574, 4]"]
201[Solid2d] 201[Solid2d]
end end
subgraph path212 [Path] subgraph path212 [Path]
212["Path<br>[3085, 3132, 3]"] 212["Path<br>[3085, 3132, 4]"]
213["Segment<br>[3140, 3480, 3]"] 213["Segment<br>[3140, 3480, 4]"]
214["Segment<br>[3488, 3520, 3]"] 214["Segment<br>[3488, 3520, 4]"]
215["Segment<br>[3528, 3872, 3]"] 215["Segment<br>[3528, 3872, 4]"]
216["Segment<br>[3880, 3936, 3]"] 216["Segment<br>[3880, 3936, 4]"]
217["Segment<br>[3944, 3951, 3]"] 217["Segment<br>[3944, 3951, 4]"]
218[Solid2d] 218[Solid2d]
end end
subgraph path235 [Path] subgraph path235 [Path]
235["Path<br>[3085, 3132, 3]"] 235["Path<br>[3085, 3132, 4]"]
236["Segment<br>[3140, 3480, 3]"] 236["Segment<br>[3140, 3480, 4]"]
237["Segment<br>[3488, 3520, 3]"] 237["Segment<br>[3488, 3520, 4]"]
238["Segment<br>[3528, 3872, 3]"] 238["Segment<br>[3528, 3872, 4]"]
239["Segment<br>[3880, 3936, 3]"] 239["Segment<br>[3880, 3936, 4]"]
240["Segment<br>[3944, 3951, 3]"] 240["Segment<br>[3944, 3951, 4]"]
241[Solid2d] 241[Solid2d]
end end
subgraph path258 [Path] subgraph path258 [Path]
258["Path<br>[4480, 4575, 3]"] 258["Path<br>[4480, 4575, 4]"]
259["Segment<br>[4581, 4614, 3]"] 259["Segment<br>[4581, 4614, 4]"]
260["Segment<br>[4620, 4671, 3]"] 260["Segment<br>[4620, 4671, 4]"]
261["Segment<br>[4677, 4710, 3]"] 261["Segment<br>[4677, 4710, 4]"]
262["Segment<br>[4716, 4766, 3]"] 262["Segment<br>[4716, 4766, 4]"]
263["Segment<br>[4772, 4813, 3]"] 263["Segment<br>[4772, 4813, 4]"]
264["Segment<br>[4819, 4868, 3]"] 264["Segment<br>[4819, 4868, 4]"]
265["Segment<br>[4874, 4907, 3]"] 265["Segment<br>[4874, 4907, 4]"]
266["Segment<br>[4913, 4947, 3]"] 266["Segment<br>[4913, 4947, 4]"]
267["Segment<br>[4953, 4987, 3]"] 267["Segment<br>[4953, 4987, 4]"]
268["Segment<br>[4993, 5045, 3]"] 268["Segment<br>[4993, 5045, 4]"]
269["Segment<br>[5051, 5085, 3]"] 269["Segment<br>[5051, 5085, 4]"]
270["Segment<br>[5091, 5167, 3]"] 270["Segment<br>[5091, 5167, 4]"]
271["Segment<br>[5173, 5206, 3]"] 271["Segment<br>[5173, 5206, 4]"]
272["Segment<br>[5212, 5288, 3]"] 272["Segment<br>[5212, 5288, 4]"]
273["Segment<br>[5294, 5328, 3]"] 273["Segment<br>[5294, 5328, 4]"]
274["Segment<br>[5334, 5408, 3]"] 274["Segment<br>[5334, 5408, 4]"]
275["Segment<br>[5414, 5448, 3]"] 275["Segment<br>[5414, 5448, 4]"]
276["Segment<br>[5454, 5505, 3]"] 276["Segment<br>[5454, 5505, 4]"]
277["Segment<br>[5511, 5573, 3]"] 277["Segment<br>[5511, 5573, 4]"]
278["Segment<br>[5579, 5630, 3]"] 278["Segment<br>[5579, 5630, 4]"]
279["Segment<br>[5636, 5670, 3]"] 279["Segment<br>[5636, 5670, 4]"]
280["Segment<br>[5676, 5709, 3]"] 280["Segment<br>[5676, 5709, 4]"]
281["Segment<br>[5715, 5748, 3]"] 281["Segment<br>[5715, 5748, 4]"]
282["Segment<br>[5754, 5761, 3]"] 282["Segment<br>[5754, 5761, 4]"]
283[Solid2d] 283[Solid2d]
end end
subgraph path334 [Path] subgraph path334 [Path]
334["Path<br>[742, 782, 6]"] 334["Path<br>[742, 782, 7]"]
335["Segment<br>[790, 852, 6]"] 335["Segment<br>[790, 852, 7]"]
336["Segment<br>[860, 896, 6]"] 336["Segment<br>[860, 896, 7]"]
337["Segment<br>[904, 934, 6]"] 337["Segment<br>[904, 934, 7]"]
338["Segment<br>[942, 994, 6]"] 338["Segment<br>[942, 994, 7]"]
339["Segment<br>[1002, 1042, 6]"] 339["Segment<br>[1002, 1042, 7]"]
340["Segment<br>[1050, 1085, 6]"] 340["Segment<br>[1050, 1085, 7]"]
341["Segment<br>[1093, 1131, 6]"] 341["Segment<br>[1093, 1131, 7]"]
342["Segment<br>[1139, 1161, 6]"] 342["Segment<br>[1139, 1161, 7]"]
343["Segment<br>[1169, 1176, 6]"] 343["Segment<br>[1169, 1176, 7]"]
344[Solid2d] 344[Solid2d]
end end
subgraph path365 [Path] subgraph path365 [Path]
365["Path<br>[511, 592, 5]"] 365["Path<br>[511, 592, 6]"]
366["Segment<br>[598, 699, 5]"] 366["Segment<br>[598, 699, 6]"]
367["Segment<br>[705, 790, 5]"] 367["Segment<br>[705, 790, 6]"]
368["Segment<br>[796, 880, 5]"] 368["Segment<br>[796, 880, 6]"]
369["Segment<br>[886, 972, 5]"] 369["Segment<br>[886, 972, 6]"]
370["Segment<br>[978, 1063, 5]"] 370["Segment<br>[978, 1063, 6]"]
371["Segment<br>[1069, 1155, 5]"] 371["Segment<br>[1069, 1155, 6]"]
372["Segment<br>[1161, 1284, 5]"] 372["Segment<br>[1161, 1284, 6]"]
373["Segment<br>[1290, 1376, 5]"] 373["Segment<br>[1290, 1376, 6]"]
374["Segment<br>[1382, 1517, 5]"] 374["Segment<br>[1382, 1517, 6]"]
375["Segment<br>[1523, 1609, 5]"] 375["Segment<br>[1523, 1609, 6]"]
376["Segment<br>[1615, 1739, 5]"] 376["Segment<br>[1615, 1739, 6]"]
377["Segment<br>[1745, 1831, 5]"] 377["Segment<br>[1745, 1831, 6]"]
378["Segment<br>[1837, 1922, 5]"] 378["Segment<br>[1837, 1922, 6]"]
379["Segment<br>[1928, 2014, 5]"] 379["Segment<br>[1928, 2014, 6]"]
380["Segment<br>[2020, 2105, 5]"] 380["Segment<br>[2020, 2105, 6]"]
381["Segment<br>[2111, 2196, 5]"] 381["Segment<br>[2111, 2196, 6]"]
382["Segment<br>[2202, 2209, 5]"] 382["Segment<br>[2202, 2209, 6]"]
383[Solid2d] 383[Solid2d]
end end
subgraph path439 [Path] subgraph path439 [Path]
439["Path<br>[487, 544, 7]"] 439["Path<br>[487, 544, 8]"]
440["Segment<br>[550, 656, 7]"] 440["Segment<br>[550, 656, 8]"]
441["Segment<br>[662, 717, 7]"] 441["Segment<br>[662, 717, 8]"]
442["Segment<br>[723, 820, 7]"] 442["Segment<br>[723, 820, 8]"]
443["Segment<br>[826, 858, 7]"] 443["Segment<br>[826, 858, 8]"]
444["Segment<br>[864, 896, 7]"] 444["Segment<br>[864, 896, 8]"]
445["Segment<br>[902, 933, 7]"] 445["Segment<br>[902, 933, 8]"]
446["Segment<br>[939, 1054, 7]"] 446["Segment<br>[939, 1054, 8]"]
447["Segment<br>[1060, 1092, 7]"] 447["Segment<br>[1060, 1092, 8]"]
448["Segment<br>[1098, 1130, 7]"] 448["Segment<br>[1098, 1130, 8]"]
449["Segment<br>[1136, 1167, 7]"] 449["Segment<br>[1136, 1167, 8]"]
450["Segment<br>[1173, 1266, 7]"] 450["Segment<br>[1173, 1266, 8]"]
451["Segment<br>[1272, 1327, 7]"] 451["Segment<br>[1272, 1327, 8]"]
452["Segment<br>[1333, 1406, 7]"] 452["Segment<br>[1333, 1406, 8]"]
453["Segment<br>[1412, 1419, 7]"] 453["Segment<br>[1412, 1419, 8]"]
454[Solid2d] 454[Solid2d]
end end
1["Plane<br>[546, 565, 4]"] 1["Plane<br>[546, 565, 5]"]
5["Sweep Extrusion<br>[652, 708, 4]"] 5["Sweep Extrusion<br>[652, 708, 5]"]
6[Wall] 6[Wall]
7["Cap Start"] 7["Cap Start"]
8["Cap End"] 8["Cap End"]
9["SweepEdge Opposite"] 9["SweepEdge Opposite"]
10["SweepEdge Adjacent"] 10["SweepEdge Adjacent"]
14["Sweep Extrusion<br>[918, 980, 4]"] 14["Sweep Extrusion<br>[918, 980, 5]"]
15[Wall] 15[Wall]
16["Cap End"] 16["Cap End"]
17["SweepEdge Opposite"] 17["SweepEdge Opposite"]
18["SweepEdge Adjacent"] 18["SweepEdge Adjacent"]
22["Sweep Extrusion<br>[1250, 1329, 4]"] 22["Sweep Extrusion<br>[1250, 1329, 5]"]
23[Wall] 23[Wall]
24["SweepEdge Opposite"] 24["SweepEdge Opposite"]
25["SweepEdge Adjacent"] 25["SweepEdge Adjacent"]
26["Sweep Extrusion<br>[1250, 1329, 4]"] 26["Sweep Extrusion<br>[1250, 1329, 5]"]
27["Sweep Extrusion<br>[1250, 1329, 4]"] 27["Sweep Extrusion<br>[1250, 1329, 5]"]
28["Sweep Extrusion<br>[1250, 1329, 4]"] 28["Sweep Extrusion<br>[1250, 1329, 5]"]
29["Sweep Extrusion<br>[1250, 1329, 4]"] 29["Sweep Extrusion<br>[1250, 1329, 5]"]
33["Sweep Extrusion<br>[1532, 1565, 4]"] 33["Sweep Extrusion<br>[1532, 1565, 5]"]
34[Wall] 34[Wall]
35["Cap End"] 35["Cap End"]
36["SweepEdge Opposite"] 36["SweepEdge Opposite"]
37["SweepEdge Adjacent"] 37["SweepEdge Adjacent"]
41["Sweep Extrusion<br>[1717, 1782, 4]"] 41["Sweep Extrusion<br>[1717, 1782, 5]"]
42[Wall] 42[Wall]
43["Cap Start"] 43["Cap Start"]
44["Cap End"] 44["Cap End"]
45["SweepEdge Opposite"] 45["SweepEdge Opposite"]
46["SweepEdge Adjacent"] 46["SweepEdge Adjacent"]
50["Sweep Extrusion<br>[2055, 2099, 4]"] 50["Sweep Extrusion<br>[2055, 2099, 5]"]
51[Wall] 51[Wall]
52["SweepEdge Opposite"] 52["SweepEdge Opposite"]
53["SweepEdge Adjacent"] 53["SweepEdge Adjacent"]
54["Sweep Extrusion<br>[2055, 2099, 4]"] 54["Sweep Extrusion<br>[2055, 2099, 5]"]
55["Sweep Extrusion<br>[2055, 2099, 4]"] 55["Sweep Extrusion<br>[2055, 2099, 5]"]
56["Sweep Extrusion<br>[2055, 2099, 4]"] 56["Sweep Extrusion<br>[2055, 2099, 5]"]
57["Sweep Extrusion<br>[2055, 2099, 4]"] 57["Sweep Extrusion<br>[2055, 2099, 5]"]
61["Sweep Extrusion<br>[2398, 2442, 4]"] 61["Sweep Extrusion<br>[2398, 2442, 5]"]
62[Wall] 62[Wall]
63["Cap End"] 63["Cap End"]
64["SweepEdge Opposite"] 64["SweepEdge Opposite"]
65["SweepEdge Adjacent"] 65["SweepEdge Adjacent"]
66["Sweep Extrusion<br>[2398, 2442, 4]"] 66["Sweep Extrusion<br>[2398, 2442, 5]"]
67["Sweep Extrusion<br>[2398, 2442, 4]"] 67["Sweep Extrusion<br>[2398, 2442, 5]"]
68["Sweep Extrusion<br>[2398, 2442, 4]"] 68["Sweep Extrusion<br>[2398, 2442, 5]"]
69["Sweep Extrusion<br>[2398, 2442, 4]"] 69["Sweep Extrusion<br>[2398, 2442, 5]"]
70["Sweep Extrusion<br>[2398, 2442, 4]"] 70["Sweep Extrusion<br>[2398, 2442, 5]"]
71["Sweep Extrusion<br>[2398, 2442, 4]"] 71["Sweep Extrusion<br>[2398, 2442, 5]"]
72["Sweep Extrusion<br>[2398, 2442, 4]"] 72["Sweep Extrusion<br>[2398, 2442, 5]"]
73["Sweep Extrusion<br>[2398, 2442, 4]"] 73["Sweep Extrusion<br>[2398, 2442, 5]"]
74["Sweep Extrusion<br>[2398, 2442, 4]"] 74["Sweep Extrusion<br>[2398, 2442, 5]"]
75["Sweep Extrusion<br>[2398, 2442, 4]"] 75["Sweep Extrusion<br>[2398, 2442, 5]"]
76["Sweep Extrusion<br>[2398, 2442, 4]"] 76["Sweep Extrusion<br>[2398, 2442, 5]"]
77["Sweep Extrusion<br>[2398, 2442, 4]"] 77["Sweep Extrusion<br>[2398, 2442, 5]"]
78["Sweep Extrusion<br>[2398, 2442, 4]"] 78["Sweep Extrusion<br>[2398, 2442, 5]"]
79["Sweep Extrusion<br>[2398, 2442, 4]"] 79["Sweep Extrusion<br>[2398, 2442, 5]"]
80["Sweep Extrusion<br>[2398, 2442, 4]"] 80["Sweep Extrusion<br>[2398, 2442, 5]"]
88["Sweep Extrusion<br>[2850, 2918, 4]"] 88["Sweep Extrusion<br>[2850, 2918, 5]"]
89[Wall] 89[Wall]
90[Wall] 90[Wall]
91[Wall] 91[Wall]
@ -272,11 +272,11 @@ flowchart LR
99["SweepEdge Adjacent"] 99["SweepEdge Adjacent"]
100["SweepEdge Opposite"] 100["SweepEdge Opposite"]
101["SweepEdge Adjacent"] 101["SweepEdge Adjacent"]
102["Sweep Extrusion<br>[2850, 2918, 4]"] 102["Sweep Extrusion<br>[2850, 2918, 5]"]
103["Sweep Extrusion<br>[2850, 2918, 4]"] 103["Sweep Extrusion<br>[2850, 2918, 5]"]
104["Sweep Extrusion<br>[2850, 2918, 4]"] 104["Sweep Extrusion<br>[2850, 2918, 5]"]
105["Sweep Extrusion<br>[2850, 2918, 4]"] 105["Sweep Extrusion<br>[2850, 2918, 5]"]
113["Sweep Extrusion<br>[3323, 3397, 4]"] 113["Sweep Extrusion<br>[3323, 3397, 5]"]
114[Wall] 114[Wall]
115[Wall] 115[Wall]
116[Wall] 116[Wall]
@ -290,41 +290,41 @@ flowchart LR
124["SweepEdge Adjacent"] 124["SweepEdge Adjacent"]
125["SweepEdge Opposite"] 125["SweepEdge Opposite"]
126["SweepEdge Adjacent"] 126["SweepEdge Adjacent"]
127["Sweep Extrusion<br>[3323, 3397, 4]"] 127["Sweep Extrusion<br>[3323, 3397, 5]"]
128["Sweep Extrusion<br>[3323, 3397, 4]"] 128["Sweep Extrusion<br>[3323, 3397, 5]"]
129["Sweep Extrusion<br>[3323, 3397, 4]"] 129["Sweep Extrusion<br>[3323, 3397, 5]"]
130["Sweep Extrusion<br>[3323, 3397, 4]"] 130["Sweep Extrusion<br>[3323, 3397, 5]"]
131["Plane<br>[329, 348, 3]"] 131["Plane<br>[329, 348, 4]"]
138["Sweep Extrusion<br>[529, 562, 3]"] 138["Sweep Extrusion<br>[529, 562, 4]"]
139[Wall] 139[Wall]
140["Cap Start"] 140["Cap Start"]
141["Cap End"] 141["Cap End"]
142["SweepEdge Opposite"] 142["SweepEdge Opposite"]
143["SweepEdge Adjacent"] 143["SweepEdge Adjacent"]
150["Sweep Extrusion<br>[859, 892, 3]"] 150["Sweep Extrusion<br>[859, 892, 4]"]
151[Wall] 151[Wall]
152["Cap Start"] 152["Cap Start"]
153["Cap End"] 153["Cap End"]
154["SweepEdge Opposite"] 154["SweepEdge Opposite"]
155["SweepEdge Adjacent"] 155["SweepEdge Adjacent"]
159["Sweep Extrusion<br>[1214, 1248, 3]"] 159["Sweep Extrusion<br>[1214, 1248, 4]"]
160[Wall] 160[Wall]
161["SweepEdge Opposite"] 161["SweepEdge Opposite"]
162["SweepEdge Adjacent"] 162["SweepEdge Adjacent"]
163["Sweep Extrusion<br>[1214, 1248, 3]"] 163["Sweep Extrusion<br>[1214, 1248, 4]"]
164["Sweep Extrusion<br>[1214, 1248, 3]"] 164["Sweep Extrusion<br>[1214, 1248, 4]"]
165["Sweep Extrusion<br>[1214, 1248, 3]"] 165["Sweep Extrusion<br>[1214, 1248, 4]"]
166["Sweep Extrusion<br>[1214, 1248, 3]"] 166["Sweep Extrusion<br>[1214, 1248, 4]"]
170["Sweep Extrusion<br>[1572, 1606, 3]"] 170["Sweep Extrusion<br>[1572, 1606, 4]"]
171[Wall] 171[Wall]
172["SweepEdge Opposite"] 172["SweepEdge Opposite"]
173["SweepEdge Adjacent"] 173["SweepEdge Adjacent"]
174["Sweep Extrusion<br>[1572, 1606, 3]"] 174["Sweep Extrusion<br>[1572, 1606, 4]"]
175["Sweep Extrusion<br>[1572, 1606, 3]"] 175["Sweep Extrusion<br>[1572, 1606, 4]"]
176["Sweep Extrusion<br>[1572, 1606, 3]"] 176["Sweep Extrusion<br>[1572, 1606, 4]"]
177["Sweep Extrusion<br>[1572, 1606, 3]"] 177["Sweep Extrusion<br>[1572, 1606, 4]"]
178["Plane<br>[1760, 1779, 3]"] 178["Plane<br>[1760, 1779, 4]"]
186["Sweep Revolve<br>[2109, 2128, 3]"] 186["Sweep Revolve<br>[2109, 2128, 4]"]
187[Wall] 187[Wall]
188[Wall] 188[Wall]
189[Wall] 189[Wall]
@ -332,8 +332,8 @@ flowchart LR
191["SweepEdge Adjacent"] 191["SweepEdge Adjacent"]
192["SweepEdge Adjacent"] 192["SweepEdge Adjacent"]
193["SweepEdge Adjacent"] 193["SweepEdge Adjacent"]
194["Plane<br>[2214, 2233, 3]"] 194["Plane<br>[2214, 2233, 4]"]
202["Sweep Revolve<br>[2580, 2599, 3]"] 202["Sweep Revolve<br>[2580, 2599, 4]"]
203[Wall] 203[Wall]
204[Wall] 204[Wall]
205[Wall] 205[Wall]
@ -342,8 +342,8 @@ flowchart LR
208["SweepEdge Adjacent"] 208["SweepEdge Adjacent"]
209["SweepEdge Adjacent"] 209["SweepEdge Adjacent"]
210["SweepEdge Adjacent"] 210["SweepEdge Adjacent"]
211["Plane<br>[3054, 3077, 3]"] 211["Plane<br>[3054, 3077, 4]"]
219["Sweep Extrusion<br>[3999, 4045, 3]"] 219["Sweep Extrusion<br>[3999, 4045, 4]"]
220[Wall] 220[Wall]
221[Wall] 221[Wall]
222[Wall] 222[Wall]
@ -358,8 +358,8 @@ flowchart LR
231["SweepEdge Adjacent"] 231["SweepEdge Adjacent"]
232["SweepEdge Opposite"] 232["SweepEdge Opposite"]
233["SweepEdge Adjacent"] 233["SweepEdge Adjacent"]
234["Plane<br>[3054, 3077, 3]"] 234["Plane<br>[3054, 3077, 4]"]
242["Sweep Extrusion<br>[3999, 4045, 3]"] 242["Sweep Extrusion<br>[3999, 4045, 4]"]
243[Wall] 243[Wall]
244[Wall] 244[Wall]
245[Wall] 245[Wall]
@ -374,8 +374,8 @@ flowchart LR
254["SweepEdge Adjacent"] 254["SweepEdge Adjacent"]
255["SweepEdge Opposite"] 255["SweepEdge Opposite"]
256["SweepEdge Adjacent"] 256["SweepEdge Adjacent"]
257["Plane<br>[4455, 4474, 3]"] 257["Plane<br>[4455, 4474, 4]"]
284["Sweep Revolve<br>[5767, 5786, 3]"] 284["Sweep Revolve<br>[5767, 5786, 4]"]
285[Wall] 285[Wall]
286[Wall] 286[Wall]
287[Wall] 287[Wall]
@ -424,8 +424,8 @@ flowchart LR
330["SweepEdge Adjacent"] 330["SweepEdge Adjacent"]
331["SweepEdge Adjacent"] 331["SweepEdge Adjacent"]
332["SweepEdge Adjacent"] 332["SweepEdge Adjacent"]
333["Plane<br>[708, 734, 6]"] 333["Plane<br>[708, 734, 7]"]
345["Sweep Revolve<br>[1184, 1203, 6]"] 345["Sweep Revolve<br>[1184, 1203, 7]"]
346[Wall] 346[Wall]
347[Wall] 347[Wall]
348[Wall] 348[Wall]
@ -444,8 +444,8 @@ flowchart LR
361["SweepEdge Adjacent"] 361["SweepEdge Adjacent"]
362["SweepEdge Adjacent"] 362["SweepEdge Adjacent"]
363["SweepEdge Adjacent"] 363["SweepEdge Adjacent"]
364["Plane<br>[486, 505, 5]"] 364["Plane<br>[486, 505, 6]"]
384["Sweep Revolve<br>[2247, 2299, 5]"] 384["Sweep Revolve<br>[2247, 2299, 6]"]
385[Wall] 385[Wall]
386[Wall] 386[Wall]
387[Wall] 387[Wall]
@ -499,8 +499,8 @@ flowchart LR
435["SweepEdge Adjacent"] 435["SweepEdge Adjacent"]
436["SweepEdge Opposite"] 436["SweepEdge Opposite"]
437["SweepEdge Adjacent"] 437["SweepEdge Adjacent"]
438["Plane<br>[462, 481, 7]"] 438["Plane<br>[462, 481, 8]"]
455["Sweep Revolve<br>[1462, 1493, 7]"] 455["Sweep Revolve<br>[1462, 1493, 8]"]
456[Wall] 456[Wall]
457[Wall] 457[Wall]
458[Wall] 458[Wall]
@ -529,17 +529,17 @@ flowchart LR
481["SweepEdge Adjacent"] 481["SweepEdge Adjacent"]
482["SweepEdge Adjacent"] 482["SweepEdge Adjacent"]
483["SweepEdge Adjacent"] 483["SweepEdge Adjacent"]
484["StartSketchOnFace<br>[795, 822, 4]"] 484["StartSketchOnFace<br>[795, 822, 5]"]
485["StartSketchOnFace<br>[993, 1024, 4]"] 485["StartSketchOnFace<br>[993, 1024, 5]"]
486["StartSketchOnFace<br>[1451, 1480, 4]"] 486["StartSketchOnFace<br>[1451, 1480, 5]"]
487["StartSketchOnFace<br>[1590, 1624, 4]"] 487["StartSketchOnFace<br>[1590, 1624, 5]"]
488["StartSketchOnFace<br>[1796, 1829, 4]"] 488["StartSketchOnFace<br>[1796, 1829, 5]"]
489["StartSketchOnFace<br>[2116, 2145, 4]"] 489["StartSketchOnFace<br>[2116, 2145, 5]"]
490["StartSketchOnFace<br>[2465, 2494, 4]"] 490["StartSketchOnFace<br>[2465, 2494, 5]"]
491["StartSketchOnFace<br>[2947, 2980, 4]"] 491["StartSketchOnFace<br>[2947, 2980, 5]"]
492["StartSketchOnFace<br>[649, 678, 3]"] 492["StartSketchOnFace<br>[649, 678, 4]"]
493["StartSketchOnFace<br>[953, 987, 3]"] 493["StartSketchOnFace<br>[953, 987, 4]"]
494["StartSketchOnFace<br>[1310, 1339, 3]"] 494["StartSketchOnFace<br>[1310, 1339, 4]"]
1 --- 2 1 --- 2
2 --- 3 2 --- 3
2 ---- 5 2 ---- 5

View File

@ -18,6 +18,66 @@ description: Operations executed car-wheel-assembly.kcl
"type": "StdLibCall", "type": "StdLibCall",
"unlabeledArg": null "unlabeledArg": null
}, },
{
"type": "UserDefinedFunctionCall",
"name": "circle",
"functionSourceRange": [
0,
0,
0
],
"unlabeledArg": null,
"labeledArgs": {
"center": {
"value": {
"type": "Array",
"value": [
{
"type": "Number",
"value": 0.0,
"ty": {
"type": "Default",
"len": {
"type": "Inches"
},
"angle": {
"type": "Degrees"
}
}
},
{
"type": "Number",
"value": 0.0,
"ty": {
"type": "Default",
"len": {
"type": "Inches"
},
"angle": {
"type": "Degrees"
}
}
}
]
},
"sourceRange": []
},
"radius": {
"value": {
"type": "Number",
"value": 6.0,
"ty": {
"type": "Unknown"
}
},
"sourceRange": []
}
},
"sourceRange": []
},
{
"type": "UserDefinedFunctionReturn"
},
{ {
"labeledArgs": { "labeledArgs": {
"length": { "length": {
@ -74,6 +134,66 @@ description: Operations executed car-wheel-assembly.kcl
"type": "StdLibCall", "type": "StdLibCall",
"unlabeledArg": null "unlabeledArg": null
}, },
{
"type": "UserDefinedFunctionCall",
"name": "circle",
"functionSourceRange": [
0,
0,
0
],
"unlabeledArg": null,
"labeledArgs": {
"center": {
"value": {
"type": "Array",
"value": [
{
"type": "Number",
"value": 0.0,
"ty": {
"type": "Default",
"len": {
"type": "Inches"
},
"angle": {
"type": "Degrees"
}
}
},
{
"type": "Number",
"value": 0.0,
"ty": {
"type": "Default",
"len": {
"type": "Inches"
},
"angle": {
"type": "Degrees"
}
}
}
]
},
"sourceRange": []
},
"radius": {
"value": {
"type": "Number",
"value": 3.0,
"ty": {
"type": "Unknown"
}
},
"sourceRange": []
}
},
"sourceRange": []
},
{
"type": "UserDefinedFunctionReturn"
},
{ {
"labeledArgs": { "labeledArgs": {
"length": { "length": {
@ -130,6 +250,66 @@ description: Operations executed car-wheel-assembly.kcl
"type": "StdLibCall", "type": "StdLibCall",
"unlabeledArg": null "unlabeledArg": null
}, },
{
"type": "UserDefinedFunctionCall",
"name": "circle",
"functionSourceRange": [
0,
0,
0
],
"unlabeledArg": null,
"labeledArgs": {
"center": {
"value": {
"type": "Array",
"value": [
{
"type": "Number",
"value": -2.25,
"ty": {
"type": "Unknown"
}
},
{
"type": "Number",
"value": 0.0,
"ty": {
"type": "Default",
"len": {
"type": "Inches"
},
"angle": {
"type": "Degrees"
}
}
}
]
},
"sourceRange": []
},
"radius": {
"value": {
"type": "Number",
"value": 0.315,
"ty": {
"type": "Default",
"len": {
"type": "Inches"
},
"angle": {
"type": "Degrees"
}
}
},
"sourceRange": []
}
},
"sourceRange": []
},
{
"type": "UserDefinedFunctionReturn"
},
{ {
"labeledArgs": { "labeledArgs": {
"length": { "length": {
@ -215,6 +395,78 @@ description: Operations executed car-wheel-assembly.kcl
"type": "StdLibCall", "type": "StdLibCall",
"unlabeledArg": null "unlabeledArg": null
}, },
{
"type": "UserDefinedFunctionCall",
"name": "circle",
"functionSourceRange": [
0,
0,
0
],
"unlabeledArg": {
"value": {
"type": "Face",
"artifact_id": "[uuid]"
},
"sourceRange": []
},
"labeledArgs": {
"center": {
"value": {
"type": "Array",
"value": [
{
"type": "Number",
"value": 0.0,
"ty": {
"type": "Default",
"len": {
"type": "Inches"
},
"angle": {
"type": "Degrees"
}
}
},
{
"type": "Number",
"value": 0.0,
"ty": {
"type": "Default",
"len": {
"type": "Inches"
},
"angle": {
"type": "Degrees"
}
}
}
]
},
"sourceRange": []
},
"radius": {
"value": {
"type": "Number",
"value": 0.25,
"ty": {
"type": "Default",
"len": {
"type": "Inches"
},
"angle": {
"type": "Degrees"
}
}
},
"sourceRange": []
}
},
"sourceRange": []
},
{
"type": "UserDefinedFunctionReturn"
},
{ {
"labeledArgs": { "labeledArgs": {
"length": { "length": {
@ -265,6 +517,66 @@ description: Operations executed car-wheel-assembly.kcl
"type": "StdLibCall", "type": "StdLibCall",
"unlabeledArg": null "unlabeledArg": null
}, },
{
"type": "UserDefinedFunctionCall",
"name": "circle",
"functionSourceRange": [
0,
0,
0
],
"unlabeledArg": null,
"labeledArgs": {
"center": {
"value": {
"type": "Array",
"value": [
{
"type": "Number",
"value": 0.0,
"ty": {
"type": "Default",
"len": {
"type": "Inches"
},
"angle": {
"type": "Degrees"
}
}
},
{
"type": "Number",
"value": 0.0,
"ty": {
"type": "Default",
"len": {
"type": "Inches"
},
"angle": {
"type": "Degrees"
}
}
}
]
},
"sourceRange": []
},
"radius": {
"value": {
"type": "Number",
"value": 6.0,
"ty": {
"type": "Unknown"
}
},
"sourceRange": []
}
},
"sourceRange": []
},
{
"type": "UserDefinedFunctionReturn"
},
{ {
"labeledArgs": { "labeledArgs": {
"length": { "length": {
@ -321,6 +633,66 @@ description: Operations executed car-wheel-assembly.kcl
"type": "StdLibCall", "type": "StdLibCall",
"unlabeledArg": null "unlabeledArg": null
}, },
{
"type": "UserDefinedFunctionCall",
"name": "circle",
"functionSourceRange": [
0,
0,
0
],
"unlabeledArg": null,
"labeledArgs": {
"center": {
"value": {
"type": "Array",
"value": [
{
"type": "Number",
"value": -2.25,
"ty": {
"type": "Unknown"
}
},
{
"type": "Number",
"value": 0.0,
"ty": {
"type": "Default",
"len": {
"type": "Inches"
},
"angle": {
"type": "Degrees"
}
}
}
]
},
"sourceRange": []
},
"radius": {
"value": {
"type": "Number",
"value": 0.315,
"ty": {
"type": "Default",
"len": {
"type": "Inches"
},
"angle": {
"type": "Degrees"
}
}
},
"sourceRange": []
}
},
"sourceRange": []
},
{
"type": "UserDefinedFunctionReturn"
},
{ {
"labeledArgs": { "labeledArgs": {
"length": { "length": {
@ -406,6 +778,66 @@ description: Operations executed car-wheel-assembly.kcl
"type": "StdLibCall", "type": "StdLibCall",
"unlabeledArg": null "unlabeledArg": null
}, },
{
"type": "UserDefinedFunctionCall",
"name": "circle",
"functionSourceRange": [
0,
0,
0
],
"unlabeledArg": null,
"labeledArgs": {
"center": {
"value": {
"type": "Array",
"value": [
{
"type": "Number",
"value": 5.5,
"ty": {
"type": "Unknown"
}
},
{
"type": "Number",
"value": 0.0,
"ty": {
"type": "Default",
"len": {
"type": "Inches"
},
"angle": {
"type": "Degrees"
}
}
}
]
},
"sourceRange": []
},
"radius": {
"value": {
"type": "Number",
"value": 0.25,
"ty": {
"type": "Default",
"len": {
"type": "Inches"
},
"angle": {
"type": "Degrees"
}
}
},
"sourceRange": []
}
},
"sourceRange": []
},
{
"type": "UserDefinedFunctionReturn"
},
{ {
"labeledArgs": { "labeledArgs": {
"length": { "length": {
@ -700,6 +1132,126 @@ description: Operations executed car-wheel-assembly.kcl
"type": "StdLibCall", "type": "StdLibCall",
"unlabeledArg": null "unlabeledArg": null
}, },
{
"type": "UserDefinedFunctionCall",
"name": "circle",
"functionSourceRange": [
0,
0,
0
],
"unlabeledArg": null,
"labeledArgs": {
"center": {
"value": {
"type": "Array",
"value": [
{
"type": "Number",
"value": 0.0,
"ty": {
"type": "Default",
"len": {
"type": "Inches"
},
"angle": {
"type": "Degrees"
}
}
},
{
"type": "Number",
"value": 0.0,
"ty": {
"type": "Default",
"len": {
"type": "Inches"
},
"angle": {
"type": "Degrees"
}
}
}
]
},
"sourceRange": []
},
"radius": {
"value": {
"type": "Number",
"value": 3.0,
"ty": {
"type": "Unknown"
}
},
"sourceRange": []
}
},
"sourceRange": []
},
{
"type": "UserDefinedFunctionReturn"
},
{
"type": "UserDefinedFunctionCall",
"name": "circle",
"functionSourceRange": [
0,
0,
0
],
"unlabeledArg": null,
"labeledArgs": {
"center": {
"value": {
"type": "Array",
"value": [
{
"type": "Number",
"value": 0.0,
"ty": {
"type": "Default",
"len": {
"type": "Inches"
},
"angle": {
"type": "Degrees"
}
}
},
{
"type": "Number",
"value": 0.0,
"ty": {
"type": "Default",
"len": {
"type": "Inches"
},
"angle": {
"type": "Degrees"
}
}
}
]
},
"sourceRange": []
},
"radius": {
"value": {
"type": "Number",
"value": 1.5,
"ty": {
"type": "Unknown"
}
},
"sourceRange": []
}
},
"sourceRange": []
},
{
"type": "UserDefinedFunctionReturn"
},
{ {
"labeledArgs": { "labeledArgs": {
"holeSketch": { "holeSketch": {
@ -776,6 +1328,126 @@ description: Operations executed car-wheel-assembly.kcl
"type": "StdLibCall", "type": "StdLibCall",
"unlabeledArg": null "unlabeledArg": null
}, },
{
"type": "UserDefinedFunctionCall",
"name": "circle",
"functionSourceRange": [
0,
0,
0
],
"unlabeledArg": null,
"labeledArgs": {
"center": {
"value": {
"type": "Array",
"value": [
{
"type": "Number",
"value": 0.0,
"ty": {
"type": "Default",
"len": {
"type": "Inches"
},
"angle": {
"type": "Degrees"
}
}
},
{
"type": "Number",
"value": 0.0,
"ty": {
"type": "Default",
"len": {
"type": "Inches"
},
"angle": {
"type": "Degrees"
}
}
}
]
},
"sourceRange": []
},
"radius": {
"value": {
"type": "Number",
"value": 3.0,
"ty": {
"type": "Unknown"
}
},
"sourceRange": []
}
},
"sourceRange": []
},
{
"type": "UserDefinedFunctionReturn"
},
{
"type": "UserDefinedFunctionCall",
"name": "circle",
"functionSourceRange": [
0,
0,
0
],
"unlabeledArg": null,
"labeledArgs": {
"center": {
"value": {
"type": "Array",
"value": [
{
"type": "Number",
"value": 0.0,
"ty": {
"type": "Default",
"len": {
"type": "Inches"
},
"angle": {
"type": "Degrees"
}
}
},
{
"type": "Number",
"value": 0.0,
"ty": {
"type": "Default",
"len": {
"type": "Inches"
},
"angle": {
"type": "Degrees"
}
}
}
]
},
"sourceRange": []
},
"radius": {
"value": {
"type": "Number",
"value": 1.5,
"ty": {
"type": "Unknown"
}
},
"sourceRange": []
}
},
"sourceRange": []
},
{
"type": "UserDefinedFunctionReturn"
},
{ {
"labeledArgs": { "labeledArgs": {
"holeSketch": { "holeSketch": {
@ -852,6 +1524,60 @@ description: Operations executed car-wheel-assembly.kcl
"type": "StdLibCall", "type": "StdLibCall",
"unlabeledArg": null "unlabeledArg": null
}, },
{
"type": "UserDefinedFunctionCall",
"name": "circle",
"functionSourceRange": [
0,
0,
0
],
"unlabeledArg": null,
"labeledArgs": {
"center": {
"value": {
"type": "Array",
"value": [
{
"type": "Number",
"value": 2.25,
"ty": {
"type": "Unknown"
}
},
{
"type": "Number",
"value": 0.0,
"ty": {
"type": "Default",
"len": {
"type": "Inches"
},
"angle": {
"type": "Degrees"
}
}
}
]
},
"sourceRange": []
},
"radius": {
"value": {
"type": "Number",
"value": 0.6,
"ty": {
"type": "Unknown"
}
},
"sourceRange": []
}
},
"sourceRange": []
},
{
"type": "UserDefinedFunctionReturn"
},
{ {
"labeledArgs": { "labeledArgs": {
"length": { "length": {
@ -931,6 +1657,60 @@ description: Operations executed car-wheel-assembly.kcl
"type": "StdLibCall", "type": "StdLibCall",
"unlabeledArg": null "unlabeledArg": null
}, },
{
"type": "UserDefinedFunctionCall",
"name": "circle",
"functionSourceRange": [
0,
0,
0
],
"unlabeledArg": null,
"labeledArgs": {
"center": {
"value": {
"type": "Array",
"value": [
{
"type": "Number",
"value": 2.25,
"ty": {
"type": "Unknown"
}
},
{
"type": "Number",
"value": 0.0,
"ty": {
"type": "Default",
"len": {
"type": "Inches"
},
"angle": {
"type": "Degrees"
}
}
}
]
},
"sourceRange": []
},
"radius": {
"value": {
"type": "Number",
"value": 0.31496062992125984,
"ty": {
"type": "Unknown"
}
},
"sourceRange": []
}
},
"sourceRange": []
},
{
"type": "UserDefinedFunctionReturn"
},
{ {
"labeledArgs": { "labeledArgs": {
"length": { "length": {
@ -1068,7 +1848,7 @@ description: Operations executed car-wheel-assembly.kcl
"functionSourceRange": [ "functionSourceRange": [
2752, 2752,
4324, 4324,
3 4
], ],
"unlabeledArg": null, "unlabeledArg": null,
"labeledArgs": {}, "labeledArgs": {},
@ -1455,7 +2235,7 @@ description: Operations executed car-wheel-assembly.kcl
"functionSourceRange": [ "functionSourceRange": [
2752, 2752,
4324, 4324,
3 4
], ],
"unlabeledArg": null, "unlabeledArg": null,
"labeledArgs": {}, "labeledArgs": {},
@ -1880,7 +2660,7 @@ description: Operations executed car-wheel-assembly.kcl
"functionSourceRange": [ "functionSourceRange": [
666, 666,
1293, 1293,
6 7
], ],
"unlabeledArg": null, "unlabeledArg": null,
"labeledArgs": {}, "labeledArgs": {},

View File

@ -5,7 +5,7 @@ description: Variables in memory after executing car-wheel-assembly.kcl
{ {
"brakeCaliper": { "brakeCaliper": {
"type": "Module", "type": "Module",
"value": 5 "value": 6
}, },
"c1": { "c1": {
"type": "TagIdentifier", "type": "TagIdentifier",
@ -14,15 +14,15 @@ description: Variables in memory after executing car-wheel-assembly.kcl
}, },
"carRotor": { "carRotor": {
"type": "Module", "type": "Module",
"value": 4 "value": 5
}, },
"carTire": { "carTire": {
"type": "Module", "type": "Module",
"value": 7 "value": 8
}, },
"carWheel": { "carWheel": {
"type": "Module", "type": "Module",
"value": 3 "value": 4
}, },
"lugCount": { "lugCount": {
"type": "Number", "type": "Number",
@ -39,6 +39,6 @@ description: Variables in memory after executing car-wheel-assembly.kcl
}, },
"lugNut": { "lugNut": {
"type": "Module", "type": "Module",
"value": 6 "value": 7
} }
} }

View File

@ -132,6 +132,66 @@ description: Operations executed cycloidal-gear.kcl
{ {
"type": "UserDefinedFunctionReturn" "type": "UserDefinedFunctionReturn"
}, },
{
"type": "UserDefinedFunctionCall",
"name": "circle",
"functionSourceRange": [
0,
0,
0
],
"unlabeledArg": null,
"labeledArgs": {
"center": {
"value": {
"type": "Array",
"value": [
{
"type": "Number",
"value": 0.0,
"ty": {
"type": "Default",
"len": {
"type": "Inches"
},
"angle": {
"type": "Degrees"
}
}
},
{
"type": "Number",
"value": 0.0,
"ty": {
"type": "Default",
"len": {
"type": "Inches"
},
"angle": {
"type": "Degrees"
}
}
}
]
},
"sourceRange": []
},
"radius": {
"value": {
"type": "Number",
"value": 0.1485,
"ty": {
"type": "Unknown"
}
},
"sourceRange": []
}
},
"sourceRange": []
},
{
"type": "UserDefinedFunctionReturn"
},
{ {
"labeledArgs": { "labeledArgs": {
"holeSketch": { "holeSketch": {
@ -272,6 +332,66 @@ description: Operations executed cycloidal-gear.kcl
{ {
"type": "UserDefinedFunctionReturn" "type": "UserDefinedFunctionReturn"
}, },
{
"type": "UserDefinedFunctionCall",
"name": "circle",
"functionSourceRange": [
0,
0,
0
],
"unlabeledArg": null,
"labeledArgs": {
"center": {
"value": {
"type": "Array",
"value": [
{
"type": "Number",
"value": 0.0,
"ty": {
"type": "Default",
"len": {
"type": "Inches"
},
"angle": {
"type": "Degrees"
}
}
},
{
"type": "Number",
"value": 0.0,
"ty": {
"type": "Default",
"len": {
"type": "Inches"
},
"angle": {
"type": "Degrees"
}
}
}
]
},
"sourceRange": []
},
"radius": {
"value": {
"type": "Number",
"value": 0.1485,
"ty": {
"type": "Unknown"
}
},
"sourceRange": []
}
},
"sourceRange": []
},
{
"type": "UserDefinedFunctionReturn"
},
{ {
"labeledArgs": { "labeledArgs": {
"holeSketch": { "holeSketch": {
@ -418,6 +538,66 @@ description: Operations executed cycloidal-gear.kcl
{ {
"type": "UserDefinedFunctionReturn" "type": "UserDefinedFunctionReturn"
}, },
{
"type": "UserDefinedFunctionCall",
"name": "circle",
"functionSourceRange": [
0,
0,
0
],
"unlabeledArg": null,
"labeledArgs": {
"center": {
"value": {
"type": "Array",
"value": [
{
"type": "Number",
"value": 0.0,
"ty": {
"type": "Default",
"len": {
"type": "Inches"
},
"angle": {
"type": "Degrees"
}
}
},
{
"type": "Number",
"value": 0.0,
"ty": {
"type": "Default",
"len": {
"type": "Inches"
},
"angle": {
"type": "Degrees"
}
}
}
]
},
"sourceRange": []
},
"radius": {
"value": {
"type": "Number",
"value": 0.1485,
"ty": {
"type": "Unknown"
}
},
"sourceRange": []
}
},
"sourceRange": []
},
{
"type": "UserDefinedFunctionReturn"
},
{ {
"labeledArgs": { "labeledArgs": {
"holeSketch": { "holeSketch": {

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -18,6 +18,60 @@ description: Operations executed flange.kcl
"type": "StdLibCall", "type": "StdLibCall",
"unlabeledArg": null "unlabeledArg": null
}, },
{
"type": "UserDefinedFunctionCall",
"name": "circle",
"functionSourceRange": [
0,
0,
0
],
"unlabeledArg": null,
"labeledArgs": {
"center": {
"value": {
"type": "Array",
"value": [
{
"type": "Number",
"value": 1.75,
"ty": {
"type": "Unknown"
}
},
{
"type": "Number",
"value": 0.0,
"ty": {
"type": "Default",
"len": {
"type": "Inches"
},
"angle": {
"type": "Degrees"
}
}
}
]
},
"sourceRange": []
},
"radius": {
"value": {
"type": "Number",
"value": 0.3125,
"ty": {
"type": "Unknown"
}
},
"sourceRange": []
}
},
"sourceRange": []
},
{
"type": "UserDefinedFunctionReturn"
},
{ {
"labeledArgs": { "labeledArgs": {
"data": { "data": {
@ -33,6 +87,66 @@ description: Operations executed flange.kcl
"type": "StdLibCall", "type": "StdLibCall",
"unlabeledArg": null "unlabeledArg": null
}, },
{
"type": "UserDefinedFunctionCall",
"name": "circle",
"functionSourceRange": [
0,
0,
0
],
"unlabeledArg": null,
"labeledArgs": {
"center": {
"value": {
"type": "Array",
"value": [
{
"type": "Number",
"value": 0.0,
"ty": {
"type": "Default",
"len": {
"type": "Inches"
},
"angle": {
"type": "Degrees"
}
}
},
{
"type": "Number",
"value": 0.0,
"ty": {
"type": "Default",
"len": {
"type": "Inches"
},
"angle": {
"type": "Degrees"
}
}
}
]
},
"sourceRange": []
},
"radius": {
"value": {
"type": "Number",
"value": 2.3125,
"ty": {
"type": "Unknown"
}
},
"sourceRange": []
}
},
"sourceRange": []
},
{
"type": "UserDefinedFunctionReturn"
},
{ {
"labeledArgs": { "labeledArgs": {
"holeSketch": { "holeSketch": {
@ -138,6 +252,66 @@ description: Operations executed flange.kcl
"type": "StdLibCall", "type": "StdLibCall",
"unlabeledArg": null "unlabeledArg": null
}, },
{
"type": "UserDefinedFunctionCall",
"name": "circle",
"functionSourceRange": [
0,
0,
0
],
"unlabeledArg": null,
"labeledArgs": {
"center": {
"value": {
"type": "Array",
"value": [
{
"type": "Number",
"value": 0.0,
"ty": {
"type": "Default",
"len": {
"type": "Inches"
},
"angle": {
"type": "Degrees"
}
}
},
{
"type": "Number",
"value": 0.0,
"ty": {
"type": "Default",
"len": {
"type": "Inches"
},
"angle": {
"type": "Degrees"
}
}
}
]
},
"sourceRange": []
},
"radius": {
"value": {
"type": "Number",
"value": 1.1565,
"ty": {
"type": "Unknown"
}
},
"sourceRange": []
}
},
"sourceRange": []
},
{
"type": "UserDefinedFunctionReturn"
},
{ {
"labeledArgs": { "labeledArgs": {
"length": { "length": {
@ -194,6 +368,66 @@ description: Operations executed flange.kcl
"type": "StdLibCall", "type": "StdLibCall",
"unlabeledArg": null "unlabeledArg": null
}, },
{
"type": "UserDefinedFunctionCall",
"name": "circle",
"functionSourceRange": [
0,
0,
0
],
"unlabeledArg": null,
"labeledArgs": {
"center": {
"value": {
"type": "Array",
"value": [
{
"type": "Number",
"value": 0.0,
"ty": {
"type": "Default",
"len": {
"type": "Inches"
},
"angle": {
"type": "Degrees"
}
}
},
{
"type": "Number",
"value": 0.0,
"ty": {
"type": "Default",
"len": {
"type": "Inches"
},
"angle": {
"type": "Degrees"
}
}
}
]
},
"sourceRange": []
},
"radius": {
"value": {
"type": "Number",
"value": 1.25,
"ty": {
"type": "Unknown"
}
},
"sourceRange": []
}
},
"sourceRange": []
},
{
"type": "UserDefinedFunctionReturn"
},
{ {
"labeledArgs": { "labeledArgs": {
"length": { "length": {
@ -250,6 +484,66 @@ description: Operations executed flange.kcl
"type": "StdLibCall", "type": "StdLibCall",
"unlabeledArg": null "unlabeledArg": null
}, },
{
"type": "UserDefinedFunctionCall",
"name": "circle",
"functionSourceRange": [
0,
0,
0
],
"unlabeledArg": null,
"labeledArgs": {
"center": {
"value": {
"type": "Array",
"value": [
{
"type": "Number",
"value": 0.0,
"ty": {
"type": "Default",
"len": {
"type": "Inches"
},
"angle": {
"type": "Degrees"
}
}
},
{
"type": "Number",
"value": 0.0,
"ty": {
"type": "Default",
"len": {
"type": "Inches"
},
"angle": {
"type": "Degrees"
}
}
}
]
},
"sourceRange": []
},
"radius": {
"value": {
"type": "Number",
"value": 0.625,
"ty": {
"type": "Unknown"
}
},
"sourceRange": []
}
},
"sourceRange": []
},
{
"type": "UserDefinedFunctionReturn"
},
{ {
"labeledArgs": { "labeledArgs": {
"length": { "length": {

View File

@ -488,6 +488,54 @@ description: Operations executed focusrite-scarlett-mounting-bracket.kcl
"type": "StdLibCall", "type": "StdLibCall",
"unlabeledArg": null "unlabeledArg": null
}, },
{
"type": "UserDefinedFunctionCall",
"name": "circle",
"functionSourceRange": [
0,
0,
0
],
"unlabeledArg": null,
"labeledArgs": {
"center": {
"value": {
"type": "Array",
"value": [
{
"type": "Number",
"value": 82.0,
"ty": {
"type": "Unknown"
}
},
{
"type": "Number",
"value": 27.333333333333332,
"ty": {
"type": "Unknown"
}
}
]
},
"sourceRange": []
},
"radius": {
"value": {
"type": "Number",
"value": 2.5,
"ty": {
"type": "Unknown"
}
},
"sourceRange": []
}
},
"sourceRange": []
},
{
"type": "UserDefinedFunctionReturn"
},
{ {
"labeledArgs": { "labeledArgs": {
"holeSketch": { "holeSketch": {
@ -874,6 +922,54 @@ description: Operations executed focusrite-scarlett-mounting-bracket.kcl
"type": "StdLibCall", "type": "StdLibCall",
"unlabeledArg": null "unlabeledArg": null
}, },
{
"type": "UserDefinedFunctionCall",
"name": "circle",
"functionSourceRange": [
0,
0,
0
],
"unlabeledArg": null,
"labeledArgs": {
"center": {
"value": {
"type": "Array",
"value": [
{
"type": "Number",
"value": -82.0,
"ty": {
"type": "Unknown"
}
},
{
"type": "Number",
"value": 27.333333333333332,
"ty": {
"type": "Unknown"
}
}
]
},
"sourceRange": []
},
"radius": {
"value": {
"type": "Number",
"value": 2.5,
"ty": {
"type": "Unknown"
}
},
"sourceRange": []
}
},
"sourceRange": []
},
{
"type": "UserDefinedFunctionReturn"
},
{ {
"labeledArgs": { "labeledArgs": {
"holeSketch": { "holeSketch": {

View File

@ -480,6 +480,66 @@ description: Operations executed french-press.kcl
"type": "StdLibCall", "type": "StdLibCall",
"unlabeledArg": null "unlabeledArg": null
}, },
{
"type": "UserDefinedFunctionCall",
"name": "circle",
"functionSourceRange": [
0,
0,
0
],
"unlabeledArg": null,
"labeledArgs": {
"center": {
"value": {
"type": "Array",
"value": [
{
"type": "Number",
"value": 0.0,
"ty": {
"type": "Default",
"len": {
"type": "Inches"
},
"angle": {
"type": "Degrees"
}
}
},
{
"type": "Number",
"value": 0.0,
"ty": {
"type": "Default",
"len": {
"type": "Inches"
},
"angle": {
"type": "Degrees"
}
}
}
]
},
"sourceRange": []
},
"radius": {
"value": {
"type": "Number",
"value": 2.055,
"ty": {
"type": "Unknown"
}
},
"sourceRange": []
}
},
"sourceRange": []
},
{
"type": "UserDefinedFunctionReturn"
},
{ {
"labeledArgs": { "labeledArgs": {
"length": { "length": {
@ -706,6 +766,132 @@ description: Operations executed french-press.kcl
"type": "StdLibCall", "type": "StdLibCall",
"unlabeledArg": null "unlabeledArg": null
}, },
{
"type": "UserDefinedFunctionCall",
"name": "circle",
"functionSourceRange": [
0,
0,
0
],
"unlabeledArg": null,
"labeledArgs": {
"center": {
"value": {
"type": "Array",
"value": [
{
"type": "Number",
"value": 0.0,
"ty": {
"type": "Default",
"len": {
"type": "Inches"
},
"angle": {
"type": "Degrees"
}
}
},
{
"type": "Number",
"value": 0.0,
"ty": {
"type": "Default",
"len": {
"type": "Inches"
},
"angle": {
"type": "Degrees"
}
}
}
]
},
"sourceRange": []
},
"radius": {
"value": {
"type": "Number",
"value": 1.965,
"ty": {
"type": "Unknown"
}
},
"sourceRange": []
}
},
"sourceRange": []
},
{
"type": "UserDefinedFunctionReturn"
},
{
"type": "UserDefinedFunctionCall",
"name": "circle",
"functionSourceRange": [
0,
0,
0
],
"unlabeledArg": null,
"labeledArgs": {
"center": {
"value": {
"type": "Array",
"value": [
{
"type": "Number",
"value": 0.0,
"ty": {
"type": "Default",
"len": {
"type": "Inches"
},
"angle": {
"type": "Degrees"
}
}
},
{
"type": "Number",
"value": 0.0,
"ty": {
"type": "Default",
"len": {
"type": "Inches"
},
"angle": {
"type": "Degrees"
}
}
}
]
},
"sourceRange": []
},
"radius": {
"value": {
"type": "Number",
"value": 0.15,
"ty": {
"type": "Default",
"len": {
"type": "Inches"
},
"angle": {
"type": "Degrees"
}
}
},
"sourceRange": []
}
},
"sourceRange": []
},
{
"type": "UserDefinedFunctionReturn"
},
{ {
"labeledArgs": { "labeledArgs": {
"holeSketch": { "holeSketch": {
@ -788,6 +974,72 @@ description: Operations executed french-press.kcl
"type": "StdLibCall", "type": "StdLibCall",
"unlabeledArg": null "unlabeledArg": null
}, },
{
"type": "UserDefinedFunctionCall",
"name": "circle",
"functionSourceRange": [
0,
0,
0
],
"unlabeledArg": null,
"labeledArgs": {
"center": {
"value": {
"type": "Array",
"value": [
{
"type": "Number",
"value": 1.4,
"ty": {
"type": "Default",
"len": {
"type": "Inches"
},
"angle": {
"type": "Degrees"
}
}
},
{
"type": "Number",
"value": 0.0,
"ty": {
"type": "Default",
"len": {
"type": "Inches"
},
"angle": {
"type": "Degrees"
}
}
}
]
},
"sourceRange": []
},
"radius": {
"value": {
"type": "Number",
"value": 0.3,
"ty": {
"type": "Default",
"len": {
"type": "Inches"
},
"angle": {
"type": "Degrees"
}
}
},
"sourceRange": []
}
},
"sourceRange": []
},
{
"type": "UserDefinedFunctionReturn"
},
{ {
"labeledArgs": { "labeledArgs": {
"length": { "length": {
@ -891,6 +1143,72 @@ description: Operations executed french-press.kcl
"type": "StdLibCall", "type": "StdLibCall",
"unlabeledArg": null "unlabeledArg": null
}, },
{
"type": "UserDefinedFunctionCall",
"name": "circle",
"functionSourceRange": [
0,
0,
0
],
"unlabeledArg": null,
"labeledArgs": {
"center": {
"value": {
"type": "Array",
"value": [
{
"type": "Number",
"value": 0.6,
"ty": {
"type": "Default",
"len": {
"type": "Inches"
},
"angle": {
"type": "Degrees"
}
}
},
{
"type": "Number",
"value": 0.0,
"ty": {
"type": "Default",
"len": {
"type": "Inches"
},
"angle": {
"type": "Degrees"
}
}
}
]
},
"sourceRange": []
},
"radius": {
"value": {
"type": "Number",
"value": 0.2,
"ty": {
"type": "Default",
"len": {
"type": "Inches"
},
"angle": {
"type": "Degrees"
}
}
},
"sourceRange": []
}
},
"sourceRange": []
},
{
"type": "UserDefinedFunctionReturn"
},
{ {
"labeledArgs": { "labeledArgs": {
"length": { "length": {
@ -961,6 +1279,66 @@ description: Operations executed french-press.kcl
"type": "StdLibCall", "type": "StdLibCall",
"unlabeledArg": null "unlabeledArg": null
}, },
{
"type": "UserDefinedFunctionCall",
"name": "circle",
"functionSourceRange": [
0,
0,
0
],
"unlabeledArg": null,
"labeledArgs": {
"center": {
"value": {
"type": "Array",
"value": [
{
"type": "Number",
"value": 0.0,
"ty": {
"type": "Default",
"len": {
"type": "Inches"
},
"angle": {
"type": "Degrees"
}
}
},
{
"type": "Number",
"value": 0.0,
"ty": {
"type": "Default",
"len": {
"type": "Inches"
},
"angle": {
"type": "Degrees"
}
}
}
]
},
"sourceRange": []
},
"radius": {
"value": {
"type": "Number",
"value": 2.205,
"ty": {
"type": "Unknown"
}
},
"sourceRange": []
}
},
"sourceRange": []
},
{
"type": "UserDefinedFunctionReturn"
},
{ {
"labeledArgs": { "labeledArgs": {
"length": { "length": {

View File

@ -4623,6 +4623,66 @@ description: Operations executed gear.kcl
"type": "StdLibCall", "type": "StdLibCall",
"unlabeledArg": null "unlabeledArg": null
}, },
{
"type": "UserDefinedFunctionCall",
"name": "circle",
"functionSourceRange": [
0,
0,
0
],
"unlabeledArg": null,
"labeledArgs": {
"center": {
"value": {
"type": "Array",
"value": [
{
"type": "Number",
"value": 0.0,
"ty": {
"type": "Default",
"len": {
"type": "Inches"
},
"angle": {
"type": "Degrees"
}
}
},
{
"type": "Number",
"value": 0.0,
"ty": {
"type": "Default",
"len": {
"type": "Inches"
},
"angle": {
"type": "Degrees"
}
}
}
]
},
"sourceRange": []
},
"radius": {
"value": {
"type": "Number",
"value": 4.933386259126019,
"ty": {
"type": "Unknown"
}
},
"sourceRange": []
}
},
"sourceRange": []
},
{
"type": "UserDefinedFunctionReturn"
},
{ {
"labeledArgs": { "labeledArgs": {
"length": { "length": {

View File

@ -1065,6 +1065,54 @@ description: Operations executed gridfinity-baseplate-magnets.kcl
"type": "StdLibCall", "type": "StdLibCall",
"unlabeledArg": null "unlabeledArg": null
}, },
{
"type": "UserDefinedFunctionCall",
"name": "circle",
"functionSourceRange": [
0,
0,
0
],
"unlabeledArg": null,
"labeledArgs": {
"center": {
"value": {
"type": "Array",
"value": [
{
"type": "Number",
"value": 8.0,
"ty": {
"type": "Unknown"
}
},
{
"type": "Number",
"value": 8.0,
"ty": {
"type": "Unknown"
}
}
]
},
"sourceRange": []
},
"radius": {
"value": {
"type": "Number",
"value": 3.25,
"ty": {
"type": "Unknown"
}
},
"sourceRange": []
}
},
"sourceRange": []
},
{
"type": "UserDefinedFunctionReturn"
},
{ {
"type": "UserDefinedFunctionCall", "type": "UserDefinedFunctionCall",
"name": "magnetBase", "name": "magnetBase",

View File

@ -657,6 +657,66 @@ description: Operations executed gridfinity-bins-stacking-lip.kcl
"type": "StdLibCall", "type": "StdLibCall",
"unlabeledArg": null "unlabeledArg": null
}, },
{
"type": "UserDefinedFunctionCall",
"name": "circle",
"functionSourceRange": [
0,
0,
0
],
"unlabeledArg": null,
"labeledArgs": {
"center": {
"value": {
"type": "Array",
"value": [
{
"type": "Number",
"value": -8.0,
"ty": {
"type": "Default",
"len": {
"type": "Mm"
},
"angle": {
"type": "Degrees"
}
}
},
{
"type": "Number",
"value": 8.0,
"ty": {
"type": "Default",
"len": {
"type": "Mm"
},
"angle": {
"type": "Degrees"
}
}
}
]
},
"sourceRange": []
},
"radius": {
"value": {
"type": "Number",
"value": 3.25,
"ty": {
"type": "Unknown"
}
},
"sourceRange": []
}
},
"sourceRange": []
},
{
"type": "UserDefinedFunctionReturn"
},
{ {
"labeledArgs": { "labeledArgs": {
"length": { "length": {

View File

@ -657,6 +657,66 @@ description: Operations executed gridfinity-bins.kcl
"type": "StdLibCall", "type": "StdLibCall",
"unlabeledArg": null "unlabeledArg": null
}, },
{
"type": "UserDefinedFunctionCall",
"name": "circle",
"functionSourceRange": [
0,
0,
0
],
"unlabeledArg": null,
"labeledArgs": {
"center": {
"value": {
"type": "Array",
"value": [
{
"type": "Number",
"value": -8.0,
"ty": {
"type": "Default",
"len": {
"type": "Mm"
},
"angle": {
"type": "Degrees"
}
}
},
{
"type": "Number",
"value": 8.0,
"ty": {
"type": "Default",
"len": {
"type": "Mm"
},
"angle": {
"type": "Degrees"
}
}
}
]
},
"sourceRange": []
},
"radius": {
"value": {
"type": "Number",
"value": 3.25,
"ty": {
"type": "Unknown"
}
},
"sourceRange": []
}
},
"sourceRange": []
},
{
"type": "UserDefinedFunctionReturn"
},
{ {
"labeledArgs": { "labeledArgs": {
"length": { "length": {

View File

@ -30,6 +30,66 @@ description: Operations executed hex-nut.kcl
"type": "StdLibCall", "type": "StdLibCall",
"unlabeledArg": null "unlabeledArg": null
}, },
{
"type": "UserDefinedFunctionCall",
"name": "circle",
"functionSourceRange": [
0,
0,
0
],
"unlabeledArg": null,
"labeledArgs": {
"center": {
"value": {
"type": "Array",
"value": [
{
"type": "Number",
"value": 0.0,
"ty": {
"type": "Default",
"len": {
"type": "Inches"
},
"angle": {
"type": "Degrees"
}
}
},
{
"type": "Number",
"value": 0.0,
"ty": {
"type": "Default",
"len": {
"type": "Inches"
},
"angle": {
"type": "Degrees"
}
}
}
]
},
"sourceRange": []
},
"radius": {
"value": {
"type": "Number",
"value": 0.15625,
"ty": {
"type": "Unknown"
}
},
"sourceRange": []
}
},
"sourceRange": []
},
{
"type": "UserDefinedFunctionReturn"
},
{ {
"labeledArgs": { "labeledArgs": {
"holeSketch": { "holeSketch": {

View File

@ -133,6 +133,294 @@ description: Operations executed keyboard.kcl
"type": "StdLibCall", "type": "StdLibCall",
"unlabeledArg": null "unlabeledArg": null
}, },
{
"type": "UserDefinedFunctionCall",
"name": "circle",
"functionSourceRange": [
0,
0,
0
],
"unlabeledArg": {
"value": {
"type": "Face",
"artifact_id": "[uuid]"
},
"sourceRange": []
},
"labeledArgs": {
"center": {
"value": {
"type": "Array",
"value": [
{
"type": "Number",
"value": 0.75,
"ty": {
"type": "Default",
"len": {
"type": "Inches"
},
"angle": {
"type": "Degrees"
}
}
},
{
"type": "Number",
"value": 0.75,
"ty": {
"type": "Default",
"len": {
"type": "Inches"
},
"angle": {
"type": "Degrees"
}
}
}
]
},
"sourceRange": []
},
"radius": {
"value": {
"type": "Number",
"value": 0.4,
"ty": {
"type": "Default",
"len": {
"type": "Inches"
},
"angle": {
"type": "Degrees"
}
}
},
"sourceRange": []
}
},
"sourceRange": []
},
{
"type": "UserDefinedFunctionReturn"
},
{
"type": "UserDefinedFunctionCall",
"name": "circle",
"functionSourceRange": [
0,
0,
0
],
"unlabeledArg": {
"value": {
"type": "Face",
"artifact_id": "[uuid]"
},
"sourceRange": []
},
"labeledArgs": {
"center": {
"value": {
"type": "Array",
"value": [
{
"type": "Number",
"value": 4.4,
"ty": {
"type": "Default",
"len": {
"type": "Inches"
},
"angle": {
"type": "Degrees"
}
}
},
{
"type": "Number",
"value": 0.75,
"ty": {
"type": "Default",
"len": {
"type": "Inches"
},
"angle": {
"type": "Degrees"
}
}
}
]
},
"sourceRange": []
},
"radius": {
"value": {
"type": "Number",
"value": 0.4,
"ty": {
"type": "Default",
"len": {
"type": "Inches"
},
"angle": {
"type": "Degrees"
}
}
},
"sourceRange": []
}
},
"sourceRange": []
},
{
"type": "UserDefinedFunctionReturn"
},
{
"type": "UserDefinedFunctionCall",
"name": "circle",
"functionSourceRange": [
0,
0,
0
],
"unlabeledArg": {
"value": {
"type": "Face",
"artifact_id": "[uuid]"
},
"sourceRange": []
},
"labeledArgs": {
"center": {
"value": {
"type": "Array",
"value": [
{
"type": "Number",
"value": 0.73,
"ty": {
"type": "Default",
"len": {
"type": "Inches"
},
"angle": {
"type": "Degrees"
}
}
},
{
"type": "Number",
"value": 12.85,
"ty": {
"type": "Default",
"len": {
"type": "Inches"
},
"angle": {
"type": "Degrees"
}
}
}
]
},
"sourceRange": []
},
"radius": {
"value": {
"type": "Number",
"value": 0.4,
"ty": {
"type": "Default",
"len": {
"type": "Inches"
},
"angle": {
"type": "Degrees"
}
}
},
"sourceRange": []
}
},
"sourceRange": []
},
{
"type": "UserDefinedFunctionReturn"
},
{
"type": "UserDefinedFunctionCall",
"name": "circle",
"functionSourceRange": [
0,
0,
0
],
"unlabeledArg": {
"value": {
"type": "Face",
"artifact_id": "[uuid]"
},
"sourceRange": []
},
"labeledArgs": {
"center": {
"value": {
"type": "Array",
"value": [
{
"type": "Number",
"value": 4.4,
"ty": {
"type": "Default",
"len": {
"type": "Inches"
},
"angle": {
"type": "Degrees"
}
}
},
{
"type": "Number",
"value": 12.85,
"ty": {
"type": "Default",
"len": {
"type": "Inches"
},
"angle": {
"type": "Degrees"
}
}
}
]
},
"sourceRange": []
},
"radius": {
"value": {
"type": "Number",
"value": 0.4,
"ty": {
"type": "Default",
"len": {
"type": "Inches"
},
"angle": {
"type": "Degrees"
}
}
},
"sourceRange": []
}
},
"sourceRange": []
},
{
"type": "UserDefinedFunctionReturn"
},
{ {
"labeledArgs": { "labeledArgs": {
"length": { "length": {

View File

@ -124,6 +124,54 @@ description: Operations executed lego.kcl
"type": "StdLibCall", "type": "StdLibCall",
"unlabeledArg": null "unlabeledArg": null
}, },
{
"type": "UserDefinedFunctionCall",
"name": "circle",
"functionSourceRange": [
0,
0,
0
],
"unlabeledArg": null,
"labeledArgs": {
"center": {
"value": {
"type": "Array",
"value": [
{
"type": "Number",
"value": -4.0,
"ty": {
"type": "Unknown"
}
},
{
"type": "Number",
"value": -12.0,
"ty": {
"type": "Unknown"
}
}
]
},
"sourceRange": []
},
"radius": {
"value": {
"type": "Number",
"value": 2.4,
"ty": {
"type": "Unknown"
}
},
"sourceRange": []
}
},
"sourceRange": []
},
{
"type": "UserDefinedFunctionReturn"
},
{ {
"labeledArgs": { "labeledArgs": {
"length": { "length": {
@ -227,6 +275,54 @@ description: Operations executed lego.kcl
"type": "StdLibCall", "type": "StdLibCall",
"unlabeledArg": null "unlabeledArg": null
}, },
{
"type": "UserDefinedFunctionCall",
"name": "circle",
"functionSourceRange": [
0,
0,
0
],
"unlabeledArg": null,
"labeledArgs": {
"center": {
"value": {
"type": "Array",
"value": [
{
"type": "Number",
"value": -0.0,
"ty": {
"type": "Unknown"
}
},
{
"type": "Number",
"value": -8.0,
"ty": {
"type": "Unknown"
}
}
]
},
"sourceRange": []
},
"radius": {
"value": {
"type": "Number",
"value": 2.4,
"ty": {
"type": "Unknown"
}
},
"sourceRange": []
}
},
"sourceRange": []
},
{
"type": "UserDefinedFunctionReturn"
},
{ {
"labeledArgs": { "labeledArgs": {
"length": { "length": {

View File

@ -34,30 +34,58 @@ description: Operations executed mounting-plate.kcl
"type": "UserDefinedFunctionReturn" "type": "UserDefinedFunctionReturn"
}, },
{ {
"type": "UserDefinedFunctionCall",
"name": "circle",
"functionSourceRange": [
0,
0,
0
],
"unlabeledArg": null,
"labeledArgs": { "labeledArgs": {
"holeSketch": { "center": {
"value": { "value": {
"type": "Sketch", "type": "Array",
"value": { "value": [
"artifactId": "[uuid]" {
} "type": "Number",
"value": -2.25,
"ty": {
"type": "Unknown"
}
},
{
"type": "Number",
"value": 4.25,
"ty": {
"type": "Unknown"
}
}
]
}, },
"sourceRange": [] "sourceRange": []
}, },
"sketch": { "radius": {
"value": { "value": {
"type": "Sketch", "type": "Number",
"value": { "value": 0.25,
"artifactId": "[uuid]" "ty": {
"type": "Default",
"len": {
"type": "Inches"
},
"angle": {
"type": "Degrees"
}
} }
}, },
"sourceRange": [] "sourceRange": []
} }
}, },
"name": "hole", "sourceRange": []
"sourceRange": [], },
"type": "StdLibCall", {
"unlabeledArg": null "type": "UserDefinedFunctionReturn"
}, },
{ {
"labeledArgs": { "labeledArgs": {
@ -86,30 +114,58 @@ description: Operations executed mounting-plate.kcl
"unlabeledArg": null "unlabeledArg": null
}, },
{ {
"type": "UserDefinedFunctionCall",
"name": "circle",
"functionSourceRange": [
0,
0,
0
],
"unlabeledArg": null,
"labeledArgs": { "labeledArgs": {
"holeSketch": { "center": {
"value": { "value": {
"type": "Sketch", "type": "Array",
"value": { "value": [
"artifactId": "[uuid]" {
} "type": "Number",
"value": 2.25,
"ty": {
"type": "Unknown"
}
},
{
"type": "Number",
"value": 4.25,
"ty": {
"type": "Unknown"
}
}
]
}, },
"sourceRange": [] "sourceRange": []
}, },
"sketch": { "radius": {
"value": { "value": {
"type": "Sketch", "type": "Number",
"value": { "value": 0.25,
"artifactId": "[uuid]" "ty": {
"type": "Default",
"len": {
"type": "Inches"
},
"angle": {
"type": "Degrees"
}
} }
}, },
"sourceRange": [] "sourceRange": []
} }
}, },
"name": "hole", "sourceRange": []
"sourceRange": [], },
"type": "StdLibCall", {
"unlabeledArg": null "type": "UserDefinedFunctionReturn"
}, },
{ {
"labeledArgs": { "labeledArgs": {
@ -137,6 +193,232 @@ description: Operations executed mounting-plate.kcl
"type": "StdLibCall", "type": "StdLibCall",
"unlabeledArg": null "unlabeledArg": null
}, },
{
"type": "UserDefinedFunctionCall",
"name": "circle",
"functionSourceRange": [
0,
0,
0
],
"unlabeledArg": null,
"labeledArgs": {
"center": {
"value": {
"type": "Array",
"value": [
{
"type": "Number",
"value": -2.25,
"ty": {
"type": "Unknown"
}
},
{
"type": "Number",
"value": -4.25,
"ty": {
"type": "Unknown"
}
}
]
},
"sourceRange": []
},
"radius": {
"value": {
"type": "Number",
"value": 0.25,
"ty": {
"type": "Default",
"len": {
"type": "Inches"
},
"angle": {
"type": "Degrees"
}
}
},
"sourceRange": []
}
},
"sourceRange": []
},
{
"type": "UserDefinedFunctionReturn"
},
{
"labeledArgs": {
"holeSketch": {
"value": {
"type": "Sketch",
"value": {
"artifactId": "[uuid]"
}
},
"sourceRange": []
},
"sketch": {
"value": {
"type": "Sketch",
"value": {
"artifactId": "[uuid]"
}
},
"sourceRange": []
}
},
"name": "hole",
"sourceRange": [],
"type": "StdLibCall",
"unlabeledArg": null
},
{
"type": "UserDefinedFunctionCall",
"name": "circle",
"functionSourceRange": [
0,
0,
0
],
"unlabeledArg": null,
"labeledArgs": {
"center": {
"value": {
"type": "Array",
"value": [
{
"type": "Number",
"value": 2.25,
"ty": {
"type": "Unknown"
}
},
{
"type": "Number",
"value": -4.25,
"ty": {
"type": "Unknown"
}
}
]
},
"sourceRange": []
},
"radius": {
"value": {
"type": "Number",
"value": 0.25,
"ty": {
"type": "Default",
"len": {
"type": "Inches"
},
"angle": {
"type": "Degrees"
}
}
},
"sourceRange": []
}
},
"sourceRange": []
},
{
"type": "UserDefinedFunctionReturn"
},
{
"labeledArgs": {
"holeSketch": {
"value": {
"type": "Sketch",
"value": {
"artifactId": "[uuid]"
}
},
"sourceRange": []
},
"sketch": {
"value": {
"type": "Sketch",
"value": {
"artifactId": "[uuid]"
}
},
"sourceRange": []
}
},
"name": "hole",
"sourceRange": [],
"type": "StdLibCall",
"unlabeledArg": null
},
{
"type": "UserDefinedFunctionCall",
"name": "circle",
"functionSourceRange": [
0,
0,
0
],
"unlabeledArg": null,
"labeledArgs": {
"center": {
"value": {
"type": "Array",
"value": [
{
"type": "Number",
"value": 0.0,
"ty": {
"type": "Default",
"len": {
"type": "Inches"
},
"angle": {
"type": "Degrees"
}
}
},
{
"type": "Number",
"value": 0.0,
"ty": {
"type": "Default",
"len": {
"type": "Inches"
},
"angle": {
"type": "Degrees"
}
}
}
]
},
"sourceRange": []
},
"radius": {
"value": {
"type": "Number",
"value": 2.0,
"ty": {
"type": "Default",
"len": {
"type": "Inches"
},
"angle": {
"type": "Degrees"
}
}
},
"sourceRange": []
}
},
"sourceRange": []
},
{
"type": "UserDefinedFunctionReturn"
},
{ {
"labeledArgs": { "labeledArgs": {
"holeSketch": { "holeSketch": {

View File

@ -1,162 +1,162 @@
```mermaid ```mermaid
flowchart LR flowchart LR
subgraph path2 [Path] subgraph path2 [Path]
2["Path<br>[228, 283, 3]"] 2["Path<br>[228, 283, 4]"]
3["Segment<br>[289, 351, 3]"] 3["Segment<br>[289, 351, 4]"]
4["Segment<br>[357, 472, 3]"] 4["Segment<br>[357, 472, 4]"]
5["Segment<br>[478, 598, 3]"] 5["Segment<br>[478, 598, 4]"]
6["Segment<br>[604, 689, 3]"] 6["Segment<br>[604, 689, 4]"]
7["Segment<br>[695, 702, 3]"] 7["Segment<br>[695, 702, 4]"]
8[Solid2d] 8[Solid2d]
end end
subgraph path28 [Path] subgraph path28 [Path]
28["Path<br>[1137, 1194, 3]"] 28["Path<br>[1137, 1194, 4]"]
29["Segment<br>[1137, 1194, 3]"] 29["Segment<br>[1137, 1194, 4]"]
30[Solid2d] 30[Solid2d]
end end
subgraph path36 [Path] subgraph path36 [Path]
36["Path<br>[1413, 1450, 3]"] 36["Path<br>[1413, 1450, 4]"]
37["Segment<br>[1413, 1450, 3]"] 37["Segment<br>[1413, 1450, 4]"]
38[Solid2d] 38[Solid2d]
end end
subgraph path44 [Path] subgraph path44 [Path]
44["Path<br>[1582, 1721, 3]"] 44["Path<br>[1582, 1721, 4]"]
45["Segment<br>[1582, 1721, 3]"] 45["Segment<br>[1582, 1721, 4]"]
46[Solid2d] 46[Solid2d]
end end
subgraph path54 [Path] subgraph path54 [Path]
54["Path<br>[1966, 2105, 3]"] 54["Path<br>[1966, 2105, 4]"]
55["Segment<br>[1966, 2105, 3]"] 55["Segment<br>[1966, 2105, 4]"]
56[Solid2d] 56[Solid2d]
end end
subgraph path65 [Path] subgraph path65 [Path]
65["Path<br>[205, 265, 4]"] 65["Path<br>[205, 265, 5]"]
66["Segment<br>[205, 265, 4]"] 66["Segment<br>[205, 265, 5]"]
67[Solid2d] 67[Solid2d]
end end
subgraph path75 [Path] subgraph path75 [Path]
75["Path<br>[516, 552, 4]"] 75["Path<br>[516, 552, 5]"]
76["Segment<br>[558, 602, 4]"] 76["Segment<br>[558, 602, 5]"]
77["Segment<br>[608, 696, 4]"] 77["Segment<br>[608, 696, 5]"]
78["Segment<br>[702, 751, 4]"] 78["Segment<br>[702, 751, 5]"]
79["Segment<br>[757, 813, 4]"] 79["Segment<br>[757, 813, 5]"]
80["Segment<br>[819, 826, 4]"] 80["Segment<br>[819, 826, 5]"]
81[Solid2d] 81[Solid2d]
end end
subgraph path97 [Path] subgraph path97 [Path]
97["Path<br>[923, 1091, 4]"] 97["Path<br>[923, 1091, 5]"]
98["Segment<br>[923, 1091, 4]"] 98["Segment<br>[923, 1091, 5]"]
99[Solid2d] 99[Solid2d]
end end
subgraph path105 [Path] subgraph path105 [Path]
105["Path<br>[1316, 1462, 4]"] 105["Path<br>[1316, 1462, 5]"]
106["Segment<br>[1316, 1462, 4]"] 106["Segment<br>[1316, 1462, 5]"]
107[Solid2d] 107[Solid2d]
end end
subgraph path116 [Path] subgraph path116 [Path]
116["Path<br>[1778, 1943, 4]"] 116["Path<br>[1778, 1943, 5]"]
117["Segment<br>[1778, 1943, 4]"] 117["Segment<br>[1778, 1943, 5]"]
118[Solid2d] 118[Solid2d]
end end
subgraph path125 [Path] subgraph path125 [Path]
125["Path<br>[2189, 2229, 4]"] 125["Path<br>[2189, 2229, 5]"]
126["Segment<br>[2189, 2229, 4]"] 126["Segment<br>[2189, 2229, 5]"]
127[Solid2d] 127[Solid2d]
end end
subgraph path137 [Path] subgraph path137 [Path]
137["Path<br>[253, 396, 5]"] 137["Path<br>[253, 396, 6]"]
138["Segment<br>[402, 518, 5]"] 138["Segment<br>[402, 518, 6]"]
139["Segment<br>[524, 602, 5]"] 139["Segment<br>[524, 602, 6]"]
140["Segment<br>[608, 724, 5]"] 140["Segment<br>[608, 724, 6]"]
141["Segment<br>[730, 786, 5]"] 141["Segment<br>[730, 786, 6]"]
142["Segment<br>[792, 799, 5]"] 142["Segment<br>[792, 799, 6]"]
143[Solid2d] 143[Solid2d]
end end
subgraph path159 [Path] subgraph path159 [Path]
159["Path<br>[915, 979, 5]"] 159["Path<br>[915, 979, 6]"]
160["Segment<br>[915, 979, 5]"] 160["Segment<br>[915, 979, 6]"]
161[Solid2d] 161[Solid2d]
end end
subgraph path167 [Path] subgraph path167 [Path]
167["Path<br>[1169, 1364, 5]"] 167["Path<br>[1169, 1364, 6]"]
168["Segment<br>[1169, 1364, 5]"] 168["Segment<br>[1169, 1364, 6]"]
169[Solid2d] 169[Solid2d]
end end
subgraph path175 [Path] subgraph path175 [Path]
175["Path<br>[1588, 1632, 5]"] 175["Path<br>[1588, 1632, 6]"]
176["Segment<br>[1588, 1632, 5]"] 176["Segment<br>[1588, 1632, 6]"]
177[Solid2d] 177[Solid2d]
end end
subgraph path190 [Path] subgraph path190 [Path]
190["Path<br>[1869, 2060, 5]"] 190["Path<br>[1869, 2060, 6]"]
191["Segment<br>[1869, 2060, 5]"] 191["Segment<br>[1869, 2060, 6]"]
192[Solid2d] 192[Solid2d]
end end
subgraph path201 [Path] subgraph path201 [Path]
201["Path<br>[2412, 2586, 5]"] 201["Path<br>[2412, 2586, 6]"]
202["Segment<br>[2412, 2586, 5]"] 202["Segment<br>[2412, 2586, 6]"]
203[Solid2d] 203[Solid2d]
end end
subgraph path210 [Path] subgraph path210 [Path]
210["Path<br>[273, 506, 6]"] 210["Path<br>[273, 506, 7]"]
211["Segment<br>[512, 631, 6]"] 211["Segment<br>[512, 631, 7]"]
212["Segment<br>[637, 717, 6]"] 212["Segment<br>[637, 717, 7]"]
213["Segment<br>[723, 842, 6]"] 213["Segment<br>[723, 842, 7]"]
214["Segment<br>[848, 918, 6]"] 214["Segment<br>[848, 918, 7]"]
215["Segment<br>[924, 931, 6]"] 215["Segment<br>[924, 931, 7]"]
216[Solid2d] 216[Solid2d]
end end
subgraph path232 [Path] subgraph path232 [Path]
232["Path<br>[1045, 1245, 6]"] 232["Path<br>[1045, 1245, 7]"]
233["Segment<br>[1045, 1245, 6]"] 233["Segment<br>[1045, 1245, 7]"]
234[Solid2d] 234[Solid2d]
end end
subgraph path240 [Path] subgraph path240 [Path]
240["Path<br>[1471, 1659, 6]"] 240["Path<br>[1471, 1659, 7]"]
241["Segment<br>[1471, 1659, 6]"] 241["Segment<br>[1471, 1659, 7]"]
242[Solid2d] 242[Solid2d]
end end
subgraph path255 [Path] subgraph path255 [Path]
255["Path<br>[2079, 2364, 6]"] 255["Path<br>[2079, 2364, 7]"]
256["Segment<br>[2079, 2364, 6]"] 256["Segment<br>[2079, 2364, 7]"]
257[Solid2d] 257[Solid2d]
end end
subgraph path264 [Path] subgraph path264 [Path]
264["Path<br>[2463, 2746, 6]"] 264["Path<br>[2463, 2746, 7]"]
265["Segment<br>[2463, 2746, 6]"] 265["Segment<br>[2463, 2746, 7]"]
266[Solid2d] 266[Solid2d]
end end
subgraph path273 [Path] subgraph path273 [Path]
273["Path<br>[2900, 2938, 6]"] 273["Path<br>[2900, 2938, 7]"]
274["Segment<br>[2900, 2938, 6]"] 274["Segment<br>[2900, 2938, 7]"]
275[Solid2d] 275[Solid2d]
end end
subgraph path282 [Path] subgraph path282 [Path]
282["Path<br>[3068, 3293, 6]"] 282["Path<br>[3068, 3293, 7]"]
283["Segment<br>[3299, 3393, 6]"] 283["Segment<br>[3299, 3393, 7]"]
284["Segment<br>[3399, 3542, 6]"] 284["Segment<br>[3399, 3542, 7]"]
285["Segment<br>[3548, 3642, 6]"] 285["Segment<br>[3548, 3642, 7]"]
286["Segment<br>[3648, 3750, 6]"] 286["Segment<br>[3648, 3750, 7]"]
287["Segment<br>[3756, 3858, 6]"] 287["Segment<br>[3756, 3858, 7]"]
288["Segment<br>[3864, 3964, 6]"] 288["Segment<br>[3864, 3964, 7]"]
289["Segment<br>[3970, 4026, 6]"] 289["Segment<br>[3970, 4026, 7]"]
290["Segment<br>[4032, 4039, 6]"] 290["Segment<br>[4032, 4039, 7]"]
291[Solid2d] 291[Solid2d]
end end
subgraph path316 [Path] subgraph path316 [Path]
316["Path<br>[4168, 4393, 6]"] 316["Path<br>[4168, 4393, 7]"]
317["Segment<br>[4399, 4495, 6]"] 317["Segment<br>[4399, 4495, 7]"]
318["Segment<br>[4501, 4649, 6]"] 318["Segment<br>[4501, 4649, 7]"]
319["Segment<br>[4655, 4751, 6]"] 319["Segment<br>[4655, 4751, 7]"]
320["Segment<br>[4757, 4861, 6]"] 320["Segment<br>[4757, 4861, 7]"]
321["Segment<br>[4867, 4971, 6]"] 321["Segment<br>[4867, 4971, 7]"]
322["Segment<br>[4977, 5079, 6]"] 322["Segment<br>[4977, 5079, 7]"]
323["Segment<br>[5085, 5141, 6]"] 323["Segment<br>[5085, 5141, 7]"]
324["Segment<br>[5147, 5154, 6]"] 324["Segment<br>[5147, 5154, 7]"]
325[Solid2d] 325[Solid2d]
end end
1["Plane<br>[203, 222, 3]"] 1["Plane<br>[203, 222, 4]"]
9["Sweep Extrusion<br>[716, 763, 3]"] 9["Sweep Extrusion<br>[716, 763, 4]"]
10[Wall] 10[Wall]
11[Wall] 11[Wall]
12[Wall] 12[Wall]
@ -171,43 +171,43 @@ flowchart LR
21["SweepEdge Adjacent"] 21["SweepEdge Adjacent"]
22["SweepEdge Opposite"] 22["SweepEdge Opposite"]
23["SweepEdge Adjacent"] 23["SweepEdge Adjacent"]
24["EdgeCut Chamfer<br>[769, 1045, 3]"] 24["EdgeCut Chamfer<br>[769, 1045, 4]"]
25["EdgeCut Chamfer<br>[769, 1045, 3]"] 25["EdgeCut Chamfer<br>[769, 1045, 4]"]
26["EdgeCut Chamfer<br>[769, 1045, 3]"] 26["EdgeCut Chamfer<br>[769, 1045, 4]"]
27["EdgeCut Chamfer<br>[769, 1045, 3]"] 27["EdgeCut Chamfer<br>[769, 1045, 4]"]
31["Sweep Extrusion<br>[1208, 1274, 3]"] 31["Sweep Extrusion<br>[1208, 1274, 4]"]
32[Wall] 32[Wall]
33["Cap End"] 33["Cap End"]
34["SweepEdge Opposite"] 34["SweepEdge Opposite"]
35["SweepEdge Adjacent"] 35["SweepEdge Adjacent"]
39["Sweep Extrusion<br>[1464, 1494, 3]"] 39["Sweep Extrusion<br>[1464, 1494, 4]"]
40[Wall] 40[Wall]
41["Cap End"] 41["Cap End"]
42["SweepEdge Opposite"] 42["SweepEdge Opposite"]
43["SweepEdge Adjacent"] 43["SweepEdge Adjacent"]
47["Sweep Extrusion<br>[1868, 1915, 3]"] 47["Sweep Extrusion<br>[1868, 1915, 4]"]
48[Wall] 48[Wall]
49["SweepEdge Opposite"] 49["SweepEdge Opposite"]
50["SweepEdge Adjacent"] 50["SweepEdge Adjacent"]
51["Sweep Extrusion<br>[1868, 1915, 3]"] 51["Sweep Extrusion<br>[1868, 1915, 4]"]
52["Sweep Extrusion<br>[1868, 1915, 3]"] 52["Sweep Extrusion<br>[1868, 1915, 4]"]
53["Sweep Extrusion<br>[1868, 1915, 3]"] 53["Sweep Extrusion<br>[1868, 1915, 4]"]
57["Sweep Extrusion<br>[2240, 2287, 3]"] 57["Sweep Extrusion<br>[2240, 2287, 4]"]
58[Wall] 58[Wall]
59["SweepEdge Opposite"] 59["SweepEdge Opposite"]
60["SweepEdge Adjacent"] 60["SweepEdge Adjacent"]
61["Sweep Extrusion<br>[2240, 2287, 3]"] 61["Sweep Extrusion<br>[2240, 2287, 4]"]
62["Sweep Extrusion<br>[2240, 2287, 3]"] 62["Sweep Extrusion<br>[2240, 2287, 4]"]
63["Sweep Extrusion<br>[2240, 2287, 3]"] 63["Sweep Extrusion<br>[2240, 2287, 4]"]
64["Plane<br>[176, 199, 4]"] 64["Plane<br>[176, 199, 5]"]
68["Sweep Extrusion<br>[279, 317, 4]"] 68["Sweep Extrusion<br>[279, 317, 5]"]
69[Wall] 69[Wall]
70["Cap Start"] 70["Cap Start"]
71["Cap End"] 71["Cap End"]
72["SweepEdge Opposite"] 72["SweepEdge Opposite"]
73["SweepEdge Adjacent"] 73["SweepEdge Adjacent"]
74["Plane<br>[487, 510, 4]"] 74["Plane<br>[487, 510, 5]"]
82["Sweep Extrusion<br>[841, 871, 4]"] 82["Sweep Extrusion<br>[841, 871, 5]"]
83[Wall] 83[Wall]
84[Wall] 84[Wall]
85[Wall] 85[Wall]
@ -222,35 +222,35 @@ flowchart LR
94["SweepEdge Adjacent"] 94["SweepEdge Adjacent"]
95["SweepEdge Opposite"] 95["SweepEdge Opposite"]
96["SweepEdge Adjacent"] 96["SweepEdge Adjacent"]
100["Sweep Extrusion<br>[1105, 1137, 4]"] 100["Sweep Extrusion<br>[1105, 1137, 5]"]
101[Wall] 101[Wall]
102["Cap End"] 102["Cap End"]
103["SweepEdge Opposite"] 103["SweepEdge Opposite"]
104["SweepEdge Adjacent"] 104["SweepEdge Adjacent"]
108["Sweep Extrusion<br>[1694, 1726, 4]"] 108["Sweep Extrusion<br>[1694, 1726, 5]"]
109[Wall] 109[Wall]
110["Cap End"] 110["Cap End"]
111["SweepEdge Opposite"] 111["SweepEdge Opposite"]
112["SweepEdge Adjacent"] 112["SweepEdge Adjacent"]
113["Sweep Extrusion<br>[1694, 1726, 4]"] 113["Sweep Extrusion<br>[1694, 1726, 5]"]
114["Sweep Extrusion<br>[1694, 1726, 4]"] 114["Sweep Extrusion<br>[1694, 1726, 5]"]
115["Sweep Extrusion<br>[1694, 1726, 4]"] 115["Sweep Extrusion<br>[1694, 1726, 5]"]
119["Sweep Extrusion<br>[1957, 1990, 4]"] 119["Sweep Extrusion<br>[1957, 1990, 5]"]
120[Wall] 120[Wall]
121["Cap End"] 121["Cap End"]
122["SweepEdge Opposite"] 122["SweepEdge Opposite"]
123["SweepEdge Adjacent"] 123["SweepEdge Adjacent"]
124["Plane<br>[2160, 2183, 4]"] 124["Plane<br>[2160, 2183, 5]"]
128["Sweep Extrusion<br>[2231, 2262, 4]"] 128["Sweep Extrusion<br>[2231, 2262, 5]"]
129[Wall] 129[Wall]
130["Cap Start"] 130["Cap Start"]
131["Cap End"] 131["Cap End"]
132["SweepEdge Opposite"] 132["SweepEdge Opposite"]
133["SweepEdge Adjacent"] 133["SweepEdge Adjacent"]
134["EdgeCut Fillet<br>[323, 406, 4]"] 134["EdgeCut Fillet<br>[323, 406, 5]"]
135["EdgeCut Fillet<br>[1996, 2079, 4]"] 135["EdgeCut Fillet<br>[1996, 2079, 5]"]
136["Plane<br>[224, 247, 5]"] 136["Plane<br>[224, 247, 6]"]
144["Sweep Extrusion<br>[813, 861, 5]"] 144["Sweep Extrusion<br>[813, 861, 6]"]
145[Wall] 145[Wall]
146[Wall] 146[Wall]
147[Wall] 147[Wall]
@ -265,43 +265,43 @@ flowchart LR
156["SweepEdge Adjacent"] 156["SweepEdge Adjacent"]
157["SweepEdge Opposite"] 157["SweepEdge Opposite"]
158["SweepEdge Adjacent"] 158["SweepEdge Adjacent"]
162["Sweep Extrusion<br>[994, 1027, 5]"] 162["Sweep Extrusion<br>[994, 1027, 6]"]
163[Wall] 163[Wall]
164["Cap End"] 164["Cap End"]
165["SweepEdge Opposite"] 165["SweepEdge Opposite"]
166["SweepEdge Adjacent"] 166["SweepEdge Adjacent"]
170["Sweep Extrusion<br>[1379, 1409, 5]"] 170["Sweep Extrusion<br>[1379, 1409, 6]"]
171[Wall] 171[Wall]
172["Cap End"] 172["Cap End"]
173["SweepEdge Opposite"] 173["SweepEdge Opposite"]
174["SweepEdge Adjacent"] 174["SweepEdge Adjacent"]
178["Sweep Extrusion<br>[1784, 1817, 5]"] 178["Sweep Extrusion<br>[1784, 1817, 6]"]
179[Wall] 179[Wall]
180["Cap End"] 180["Cap End"]
181["SweepEdge Opposite"] 181["SweepEdge Opposite"]
182["SweepEdge Adjacent"] 182["SweepEdge Adjacent"]
183["Sweep Extrusion<br>[1784, 1817, 5]"] 183["Sweep Extrusion<br>[1784, 1817, 6]"]
184["Sweep Extrusion<br>[1784, 1817, 5]"] 184["Sweep Extrusion<br>[1784, 1817, 6]"]
185["Sweep Extrusion<br>[1784, 1817, 5]"] 185["Sweep Extrusion<br>[1784, 1817, 6]"]
186["Sweep Extrusion<br>[1784, 1817, 5]"] 186["Sweep Extrusion<br>[1784, 1817, 6]"]
187["Sweep Extrusion<br>[1784, 1817, 5]"] 187["Sweep Extrusion<br>[1784, 1817, 6]"]
188["Sweep Extrusion<br>[1784, 1817, 5]"] 188["Sweep Extrusion<br>[1784, 1817, 6]"]
189["Sweep Extrusion<br>[1784, 1817, 5]"] 189["Sweep Extrusion<br>[1784, 1817, 6]"]
193["Sweep Extrusion<br>[2327, 2360, 5]"] 193["Sweep Extrusion<br>[2327, 2360, 6]"]
194[Wall] 194[Wall]
195["Cap End"] 195["Cap End"]
196["SweepEdge Opposite"] 196["SweepEdge Opposite"]
197["SweepEdge Adjacent"] 197["SweepEdge Adjacent"]
198["Sweep Extrusion<br>[2327, 2360, 5]"] 198["Sweep Extrusion<br>[2327, 2360, 6]"]
199["Sweep Extrusion<br>[2327, 2360, 5]"] 199["Sweep Extrusion<br>[2327, 2360, 6]"]
200["Sweep Extrusion<br>[2327, 2360, 5]"] 200["Sweep Extrusion<br>[2327, 2360, 6]"]
204["Sweep Extrusion<br>[2588, 2618, 5]"] 204["Sweep Extrusion<br>[2588, 2618, 6]"]
205[Wall] 205[Wall]
206["Cap End"] 206["Cap End"]
207["SweepEdge Opposite"] 207["SweepEdge Opposite"]
208["SweepEdge Adjacent"] 208["SweepEdge Adjacent"]
209["Plane<br>[244, 267, 6]"] 209["Plane<br>[244, 267, 7]"]
217["Sweep Extrusion<br>[945, 993, 6]"] 217["Sweep Extrusion<br>[945, 993, 7]"]
218[Wall] 218[Wall]
219[Wall] 219[Wall]
220[Wall] 220[Wall]
@ -316,42 +316,42 @@ flowchart LR
229["SweepEdge Adjacent"] 229["SweepEdge Adjacent"]
230["SweepEdge Opposite"] 230["SweepEdge Opposite"]
231["SweepEdge Adjacent"] 231["SweepEdge Adjacent"]
235["Sweep Extrusion<br>[1260, 1293, 6]"] 235["Sweep Extrusion<br>[1260, 1293, 7]"]
236[Wall] 236[Wall]
237["Cap End"] 237["Cap End"]
238["SweepEdge Opposite"] 238["SweepEdge Opposite"]
239["SweepEdge Adjacent"] 239["SweepEdge Adjacent"]
243["Sweep Extrusion<br>[1923, 1956, 6]"] 243["Sweep Extrusion<br>[1923, 1956, 7]"]
244[Wall] 244[Wall]
245["Cap End"] 245["Cap End"]
246["SweepEdge Opposite"] 246["SweepEdge Opposite"]
247["SweepEdge Adjacent"] 247["SweepEdge Adjacent"]
248["Sweep Extrusion<br>[1923, 1956, 6]"] 248["Sweep Extrusion<br>[1923, 1956, 7]"]
249["Sweep Extrusion<br>[1923, 1956, 6]"] 249["Sweep Extrusion<br>[1923, 1956, 7]"]
250["Sweep Extrusion<br>[1923, 1956, 6]"] 250["Sweep Extrusion<br>[1923, 1956, 7]"]
251["Sweep Extrusion<br>[1923, 1956, 6]"] 251["Sweep Extrusion<br>[1923, 1956, 7]"]
252["Sweep Extrusion<br>[1923, 1956, 6]"] 252["Sweep Extrusion<br>[1923, 1956, 7]"]
253["Sweep Extrusion<br>[1923, 1956, 6]"] 253["Sweep Extrusion<br>[1923, 1956, 7]"]
254["Sweep Extrusion<br>[1923, 1956, 6]"] 254["Sweep Extrusion<br>[1923, 1956, 7]"]
258["Sweep Extrusion<br>[2378, 2411, 6]"] 258["Sweep Extrusion<br>[2378, 2411, 7]"]
259[Wall] 259[Wall]
260["Cap Start"] 260["Cap Start"]
261["Cap End"] 261["Cap End"]
262["SweepEdge Opposite"] 262["SweepEdge Opposite"]
263["SweepEdge Adjacent"] 263["SweepEdge Adjacent"]
267["Sweep Extrusion<br>[2761, 2794, 6]"] 267["Sweep Extrusion<br>[2761, 2794, 7]"]
268[Wall] 268[Wall]
269["Cap Start"] 269["Cap Start"]
270["Cap End"] 270["Cap End"]
271["SweepEdge Opposite"] 271["SweepEdge Opposite"]
272["SweepEdge Adjacent"] 272["SweepEdge Adjacent"]
276["Sweep Extrusion<br>[2953, 2987, 6]"] 276["Sweep Extrusion<br>[2953, 2987, 7]"]
277[Wall] 277[Wall]
278["Cap Start"] 278["Cap Start"]
279["Cap End"] 279["Cap End"]
280["SweepEdge Opposite"] 280["SweepEdge Opposite"]
281["SweepEdge Adjacent"] 281["SweepEdge Adjacent"]
292["Sweep Extrusion<br>[4054, 4087, 6]"] 292["Sweep Extrusion<br>[4054, 4087, 7]"]
293[Wall] 293[Wall]
294[Wall] 294[Wall]
295[Wall] 295[Wall]
@ -375,7 +375,7 @@ flowchart LR
313["SweepEdge Adjacent"] 313["SweepEdge Adjacent"]
314["SweepEdge Opposite"] 314["SweepEdge Opposite"]
315["SweepEdge Adjacent"] 315["SweepEdge Adjacent"]
326["Sweep Extrusion<br>[5156, 5189, 6]"] 326["Sweep Extrusion<br>[5156, 5189, 7]"]
327[Wall] 327[Wall]
328[Wall] 328[Wall]
329[Wall] 329[Wall]
@ -399,25 +399,25 @@ flowchart LR
347["SweepEdge Adjacent"] 347["SweepEdge Adjacent"]
348["SweepEdge Opposite"] 348["SweepEdge Opposite"]
349["SweepEdge Adjacent"] 349["SweepEdge Adjacent"]
350["StartSketchOnFace<br>[1099, 1131, 3]"] 350["StartSketchOnFace<br>[1099, 1131, 4]"]
351["StartSketchOnFace<br>[1375, 1407, 3]"] 351["StartSketchOnFace<br>[1375, 1407, 4]"]
352["StartSketchOnFace<br>[1544, 1576, 3]"] 352["StartSketchOnFace<br>[1544, 1576, 4]"]
353["StartSketchOnFace<br>[1928, 1960, 3]"] 353["StartSketchOnFace<br>[1928, 1960, 4]"]
354["StartSketchOnFace<br>[885, 917, 4]"] 354["StartSketchOnFace<br>[885, 917, 5]"]
355["StartSketchOnFace<br>[1278, 1310, 4]"] 355["StartSketchOnFace<br>[1278, 1310, 5]"]
356["StartSketchOnFace<br>[1740, 1772, 4]"] 356["StartSketchOnFace<br>[1740, 1772, 5]"]
357["StartSketchOnFace<br>[875, 909, 5]"] 357["StartSketchOnFace<br>[875, 909, 6]"]
358["StartSketchOnFace<br>[1129, 1163, 5]"] 358["StartSketchOnFace<br>[1129, 1163, 6]"]
359["StartSketchOnFace<br>[1550, 1582, 5]"] 359["StartSketchOnFace<br>[1550, 1582, 6]"]
360["StartSketchOnFace<br>[1831, 1863, 5]"] 360["StartSketchOnFace<br>[1831, 1863, 6]"]
361["StartSketchOnFace<br>[2374, 2406, 5]"] 361["StartSketchOnFace<br>[2374, 2406, 6]"]
362["StartSketchOnFace<br>[1007, 1039, 6]"] 362["StartSketchOnFace<br>[1007, 1039, 7]"]
363["StartSketchOnFace<br>[1433, 1465, 6]"] 363["StartSketchOnFace<br>[1433, 1465, 7]"]
364["StartSketchOnFace<br>[2039, 2073, 6]"] 364["StartSketchOnFace<br>[2039, 2073, 7]"]
365["StartSketchOnFace<br>[2425, 2457, 6]"] 365["StartSketchOnFace<br>[2425, 2457, 7]"]
366["StartSketchOnFace<br>[2860, 2894, 6]"] 366["StartSketchOnFace<br>[2860, 2894, 7]"]
367["StartSketchOnFace<br>[3028, 3062, 6]"] 367["StartSketchOnFace<br>[3028, 3062, 7]"]
368["StartSketchOnFace<br>[4128, 4162, 6]"] 368["StartSketchOnFace<br>[4128, 4162, 7]"]
1 --- 2 1 --- 2
2 --- 3 2 --- 3
2 --- 4 2 --- 4

File diff suppressed because it is too large Load Diff

View File

@ -5,18 +5,18 @@ description: Variables in memory after executing multi-axis-robot.kcl
{ {
"j2RobotArm": { "j2RobotArm": {
"type": "Module", "type": "Module",
"value": 5 "value": 6
}, },
"j3RobotArm": { "j3RobotArm": {
"type": "Module", "type": "Module",
"value": 6 "value": 7
}, },
"robotArmBase": { "robotArmBase": {
"type": "Module", "type": "Module",
"value": 3 "value": 4
}, },
"rotatingBase": { "rotatingBase": {
"type": "Module", "type": "Module",
"value": 4 "value": 5
} }
} }

View File

@ -1,206 +1,206 @@
```mermaid ```mermaid
flowchart LR flowchart LR
subgraph path2 [Path] subgraph path2 [Path]
2["Path<br>[466, 559, 4]"] 2["Path<br>[466, 559, 5]"]
3["Segment<br>[466, 559, 4]"] 3["Segment<br>[466, 559, 5]"]
4[Solid2d] 4[Solid2d]
end end
subgraph path6 [Path] subgraph path6 [Path]
6["Path<br>[790, 845, 4]"] 6["Path<br>[790, 845, 5]"]
7["Segment<br>[790, 845, 4]"] 7["Segment<br>[790, 845, 5]"]
8[Solid2d] 8[Solid2d]
end end
subgraph path15 [Path] subgraph path15 [Path]
15["Path<br>[1060, 1119, 4]"] 15["Path<br>[1060, 1119, 5]"]
16["Segment<br>[1060, 1119, 4]"] 16["Segment<br>[1060, 1119, 5]"]
17[Solid2d] 17[Solid2d]
end end
subgraph path23 [Path] subgraph path23 [Path]
23["Path<br>[1221, 1281, 4]"] 23["Path<br>[1221, 1281, 5]"]
24["Segment<br>[1221, 1281, 4]"] 24["Segment<br>[1221, 1281, 5]"]
25[Solid2d] 25[Solid2d]
end end
subgraph path31 [Path] subgraph path31 [Path]
31["Path<br>[1438, 1491, 4]"] 31["Path<br>[1438, 1491, 5]"]
32["Segment<br>[1438, 1491, 4]"] 32["Segment<br>[1438, 1491, 5]"]
33[Solid2d] 33[Solid2d]
end end
subgraph path39 [Path] subgraph path39 [Path]
39["Path<br>[466, 559, 4]"] 39["Path<br>[466, 559, 5]"]
40["Segment<br>[466, 559, 4]"] 40["Segment<br>[466, 559, 5]"]
41[Solid2d] 41[Solid2d]
end end
subgraph path43 [Path] subgraph path43 [Path]
43["Path<br>[790, 845, 4]"] 43["Path<br>[790, 845, 5]"]
44["Segment<br>[790, 845, 4]"] 44["Segment<br>[790, 845, 5]"]
45[Solid2d] 45[Solid2d]
end end
subgraph path52 [Path] subgraph path52 [Path]
52["Path<br>[1060, 1119, 4]"] 52["Path<br>[1060, 1119, 5]"]
53["Segment<br>[1060, 1119, 4]"] 53["Segment<br>[1060, 1119, 5]"]
54[Solid2d] 54[Solid2d]
end end
subgraph path60 [Path] subgraph path60 [Path]
60["Path<br>[1221, 1281, 4]"] 60["Path<br>[1221, 1281, 5]"]
61["Segment<br>[1221, 1281, 4]"] 61["Segment<br>[1221, 1281, 5]"]
62[Solid2d] 62[Solid2d]
end end
subgraph path68 [Path] subgraph path68 [Path]
68["Path<br>[1438, 1491, 4]"] 68["Path<br>[1438, 1491, 5]"]
69["Segment<br>[1438, 1491, 4]"] 69["Segment<br>[1438, 1491, 5]"]
70[Solid2d] 70[Solid2d]
end end
subgraph path76 [Path] subgraph path76 [Path]
76["Path<br>[314, 376, 5]"] 76["Path<br>[314, 376, 6]"]
77["Segment<br>[314, 376, 5]"] 77["Segment<br>[314, 376, 6]"]
78[Solid2d] 78[Solid2d]
end end
subgraph path85 [Path] subgraph path85 [Path]
85["Path<br>[526, 586, 5]"] 85["Path<br>[526, 586, 6]"]
86["Segment<br>[526, 586, 5]"] 86["Segment<br>[526, 586, 6]"]
87[Solid2d] 87[Solid2d]
end end
subgraph path93 [Path] subgraph path93 [Path]
93["Path<br>[303, 355, 6]"] 93["Path<br>[303, 355, 7]"]
94["Segment<br>[303, 355, 6]"] 94["Segment<br>[303, 355, 7]"]
95[Solid2d] 95[Solid2d]
end end
subgraph path102 [Path] subgraph path102 [Path]
102["Path<br>[488, 540, 6]"] 102["Path<br>[488, 540, 7]"]
103["Segment<br>[488, 540, 6]"] 103["Segment<br>[488, 540, 7]"]
104[Solid2d] 104[Solid2d]
end end
subgraph path110 [Path] subgraph path110 [Path]
110["Path<br>[379, 449, 7]"] 110["Path<br>[379, 449, 8]"]
111["Segment<br>[379, 449, 7]"] 111["Segment<br>[379, 449, 8]"]
112[Solid2d] 112[Solid2d]
end end
subgraph path121 [Path] subgraph path121 [Path]
121["Path<br>[713, 800, 7]"] 121["Path<br>[713, 800, 8]"]
122["Segment<br>[808, 891, 7]"] 122["Segment<br>[808, 891, 8]"]
123["Segment<br>[899, 982, 7]"] 123["Segment<br>[899, 982, 8]"]
124["Segment<br>[990, 1073, 7]"] 124["Segment<br>[990, 1073, 8]"]
125["Segment<br>[1081, 1163, 7]"] 125["Segment<br>[1081, 1163, 8]"]
126["Segment<br>[1171, 1253, 7]"] 126["Segment<br>[1171, 1253, 8]"]
127["Segment<br>[1261, 1268, 7]"] 127["Segment<br>[1261, 1268, 8]"]
128[Solid2d] 128[Solid2d]
end end
subgraph path149 [Path] subgraph path149 [Path]
149["Path<br>[1402, 1471, 7]"] 149["Path<br>[1402, 1471, 8]"]
150["Segment<br>[1402, 1471, 7]"] 150["Segment<br>[1402, 1471, 8]"]
151[Solid2d] 151[Solid2d]
end end
subgraph path158 [Path] subgraph path158 [Path]
158["Path<br>[326, 416, 8]"] 158["Path<br>[326, 416, 9]"]
159["Segment<br>[424, 506, 8]"] 159["Segment<br>[424, 506, 9]"]
160["Segment<br>[514, 596, 8]"] 160["Segment<br>[514, 596, 9]"]
161["Segment<br>[604, 686, 8]"] 161["Segment<br>[604, 686, 9]"]
162["Segment<br>[694, 775, 8]"] 162["Segment<br>[694, 775, 9]"]
163["Segment<br>[783, 864, 8]"] 163["Segment<br>[783, 864, 9]"]
164["Segment<br>[872, 879, 8]"] 164["Segment<br>[872, 879, 9]"]
165[Solid2d] 165[Solid2d]
end end
subgraph path187 [Path] subgraph path187 [Path]
187["Path<br>[1023, 1075, 8]"] 187["Path<br>[1023, 1075, 9]"]
188["Segment<br>[1023, 1075, 8]"] 188["Segment<br>[1023, 1075, 9]"]
189[Solid2d] 189[Solid2d]
end end
subgraph path195 [Path] subgraph path195 [Path]
195["Path<br>[285, 343, 9]"] 195["Path<br>[285, 343, 10]"]
196["Segment<br>[285, 343, 9]"] 196["Segment<br>[285, 343, 10]"]
197[Solid2d] 197[Solid2d]
end end
subgraph path204 [Path] subgraph path204 [Path]
204["Path<br>[482, 537, 9]"] 204["Path<br>[482, 537, 10]"]
205["Segment<br>[482, 537, 9]"] 205["Segment<br>[482, 537, 10]"]
206[Solid2d] 206[Solid2d]
end end
subgraph path212 [Path] subgraph path212 [Path]
212["Path<br>[285, 343, 9]"] 212["Path<br>[285, 343, 10]"]
213["Segment<br>[285, 343, 9]"] 213["Segment<br>[285, 343, 10]"]
214[Solid2d] 214[Solid2d]
end end
subgraph path221 [Path] subgraph path221 [Path]
221["Path<br>[482, 537, 9]"] 221["Path<br>[482, 537, 10]"]
222["Segment<br>[482, 537, 9]"] 222["Segment<br>[482, 537, 10]"]
223[Solid2d] 223[Solid2d]
end end
1["Plane<br>[439, 458, 4]"] 1["Plane<br>[439, 458, 5]"]
5["Plane<br>[763, 782, 4]"] 5["Plane<br>[763, 782, 5]"]
9["Sweep Extrusion<br>[883, 923, 4]"] 9["Sweep Extrusion<br>[883, 923, 5]"]
10[Wall] 10[Wall]
11["Cap Start"] 11["Cap Start"]
12["Cap End"] 12["Cap End"]
13["SweepEdge Opposite"] 13["SweepEdge Opposite"]
14["SweepEdge Adjacent"] 14["SweepEdge Adjacent"]
18["Sweep Extrusion<br>[1127, 1164, 4]"] 18["Sweep Extrusion<br>[1127, 1164, 5]"]
19[Wall] 19[Wall]
20["Cap End"] 20["Cap End"]
21["SweepEdge Opposite"] 21["SweepEdge Opposite"]
22["SweepEdge Adjacent"] 22["SweepEdge Adjacent"]
26["Sweep Extrusion<br>[1289, 1327, 4]"] 26["Sweep Extrusion<br>[1289, 1327, 5]"]
27[Wall] 27[Wall]
28["Cap End"] 28["Cap End"]
29["SweepEdge Opposite"] 29["SweepEdge Opposite"]
30["SweepEdge Adjacent"] 30["SweepEdge Adjacent"]
34["Sweep Extrusion<br>[1499, 1541, 4]"] 34["Sweep Extrusion<br>[1499, 1541, 5]"]
35[Wall] 35[Wall]
36["SweepEdge Opposite"] 36["SweepEdge Opposite"]
37["SweepEdge Adjacent"] 37["SweepEdge Adjacent"]
38["Plane<br>[439, 458, 4]"] 38["Plane<br>[439, 458, 5]"]
42["Plane<br>[763, 782, 4]"] 42["Plane<br>[763, 782, 5]"]
46["Sweep Extrusion<br>[883, 923, 4]"] 46["Sweep Extrusion<br>[883, 923, 5]"]
47[Wall] 47[Wall]
48["Cap Start"] 48["Cap Start"]
49["Cap End"] 49["Cap End"]
50["SweepEdge Opposite"] 50["SweepEdge Opposite"]
51["SweepEdge Adjacent"] 51["SweepEdge Adjacent"]
55["Sweep Extrusion<br>[1127, 1164, 4]"] 55["Sweep Extrusion<br>[1127, 1164, 5]"]
56[Wall] 56[Wall]
57["Cap End"] 57["Cap End"]
58["SweepEdge Opposite"] 58["SweepEdge Opposite"]
59["SweepEdge Adjacent"] 59["SweepEdge Adjacent"]
63["Sweep Extrusion<br>[1289, 1327, 4]"] 63["Sweep Extrusion<br>[1289, 1327, 5]"]
64[Wall] 64[Wall]
65["Cap End"] 65["Cap End"]
66["SweepEdge Opposite"] 66["SweepEdge Opposite"]
67["SweepEdge Adjacent"] 67["SweepEdge Adjacent"]
71["Sweep Extrusion<br>[1499, 1541, 4]"] 71["Sweep Extrusion<br>[1499, 1541, 5]"]
72[Wall] 72[Wall]
73["SweepEdge Opposite"] 73["SweepEdge Opposite"]
74["SweepEdge Adjacent"] 74["SweepEdge Adjacent"]
75["Plane<br>[287, 306, 5]"] 75["Plane<br>[287, 306, 6]"]
79["Sweep Extrusion<br>[384, 420, 5]"] 79["Sweep Extrusion<br>[384, 420, 6]"]
80[Wall] 80[Wall]
81["Cap Start"] 81["Cap Start"]
82["Cap End"] 82["Cap End"]
83["SweepEdge Opposite"] 83["SweepEdge Opposite"]
84["SweepEdge Adjacent"] 84["SweepEdge Adjacent"]
88["Sweep Extrusion<br>[594, 631, 5]"] 88["Sweep Extrusion<br>[594, 631, 6]"]
89[Wall] 89[Wall]
90["SweepEdge Opposite"] 90["SweepEdge Opposite"]
91["SweepEdge Adjacent"] 91["SweepEdge Adjacent"]
92["Plane<br>[276, 295, 6]"] 92["Plane<br>[276, 295, 7]"]
96["Sweep Extrusion<br>[363, 396, 6]"] 96["Sweep Extrusion<br>[363, 396, 7]"]
97[Wall] 97[Wall]
98["Cap Start"] 98["Cap Start"]
99["Cap End"] 99["Cap End"]
100["SweepEdge Opposite"] 100["SweepEdge Opposite"]
101["SweepEdge Adjacent"] 101["SweepEdge Adjacent"]
105["Sweep Extrusion<br>[548, 585, 6]"] 105["Sweep Extrusion<br>[548, 585, 7]"]
106[Wall] 106[Wall]
107["SweepEdge Opposite"] 107["SweepEdge Opposite"]
108["SweepEdge Adjacent"] 108["SweepEdge Adjacent"]
109["Plane<br>[352, 371, 7]"] 109["Plane<br>[352, 371, 8]"]
113["Sweep Extrusion<br>[457, 490, 7]"] 113["Sweep Extrusion<br>[457, 490, 8]"]
114[Wall] 114[Wall]
115["Cap Start"] 115["Cap Start"]
116["Cap End"] 116["Cap End"]
117["SweepEdge Opposite"] 117["SweepEdge Opposite"]
118["SweepEdge Adjacent"] 118["SweepEdge Adjacent"]
119["EdgeCut Fillet<br>[498, 564, 7]"] 119["EdgeCut Fillet<br>[498, 564, 8]"]
120["EdgeCut Fillet<br>[498, 564, 7]"] 120["EdgeCut Fillet<br>[498, 564, 8]"]
129["Sweep Extrusion<br>[1276, 1316, 7]"] 129["Sweep Extrusion<br>[1276, 1316, 8]"]
130[Wall] 130[Wall]
131[Wall] 131[Wall]
132[Wall] 132[Wall]
@ -220,13 +220,13 @@ flowchart LR
146["SweepEdge Adjacent"] 146["SweepEdge Adjacent"]
147["SweepEdge Opposite"] 147["SweepEdge Opposite"]
148["SweepEdge Adjacent"] 148["SweepEdge Adjacent"]
152["Sweep Extrusion<br>[1479, 1507, 7]"] 152["Sweep Extrusion<br>[1479, 1507, 8]"]
153[Wall] 153[Wall]
154["Cap End"] 154["Cap End"]
155["SweepEdge Opposite"] 155["SweepEdge Opposite"]
156["SweepEdge Adjacent"] 156["SweepEdge Adjacent"]
157["Plane<br>[299, 318, 8]"] 157["Plane<br>[299, 318, 9]"]
166["Sweep Extrusion<br>[887, 920, 8]"] 166["Sweep Extrusion<br>[887, 920, 9]"]
167[Wall] 167[Wall]
168[Wall] 168[Wall]
169[Wall] 169[Wall]
@ -247,45 +247,45 @@ flowchart LR
184["SweepEdge Adjacent"] 184["SweepEdge Adjacent"]
185["SweepEdge Opposite"] 185["SweepEdge Opposite"]
186["SweepEdge Adjacent"] 186["SweepEdge Adjacent"]
190["Sweep Extrusion<br>[1083, 1120, 8]"] 190["Sweep Extrusion<br>[1083, 1120, 9]"]
191[Wall] 191[Wall]
192["SweepEdge Opposite"] 192["SweepEdge Opposite"]
193["SweepEdge Adjacent"] 193["SweepEdge Adjacent"]
194["Plane<br>[258, 277, 9]"] 194["Plane<br>[258, 277, 10]"]
198["Sweep Extrusion<br>[351, 382, 9]"] 198["Sweep Extrusion<br>[351, 382, 10]"]
199[Wall] 199[Wall]
200["Cap Start"] 200["Cap Start"]
201["Cap End"] 201["Cap End"]
202["SweepEdge Opposite"] 202["SweepEdge Opposite"]
203["SweepEdge Adjacent"] 203["SweepEdge Adjacent"]
207["Sweep Extrusion<br>[545, 577, 9]"] 207["Sweep Extrusion<br>[545, 577, 10]"]
208[Wall] 208[Wall]
209["SweepEdge Opposite"] 209["SweepEdge Opposite"]
210["SweepEdge Adjacent"] 210["SweepEdge Adjacent"]
211["Plane<br>[258, 277, 9]"] 211["Plane<br>[258, 277, 10]"]
215["Sweep Extrusion<br>[351, 382, 9]"] 215["Sweep Extrusion<br>[351, 382, 10]"]
216[Wall] 216[Wall]
217["Cap Start"] 217["Cap Start"]
218["Cap End"] 218["Cap End"]
219["SweepEdge Opposite"] 219["SweepEdge Opposite"]
220["SweepEdge Adjacent"] 220["SweepEdge Adjacent"]
224["Sweep Extrusion<br>[545, 577, 9]"] 224["Sweep Extrusion<br>[545, 577, 10]"]
225[Wall] 225[Wall]
226["SweepEdge Opposite"] 226["SweepEdge Opposite"]
227["SweepEdge Adjacent"] 227["SweepEdge Adjacent"]
228["StartSketchOnFace<br>[1018, 1052, 4]"] 228["StartSketchOnFace<br>[1018, 1052, 5]"]
229["StartSketchOnFace<br>[1181, 1213, 4]"] 229["StartSketchOnFace<br>[1181, 1213, 5]"]
230["StartSketchOnFace<br>[1397, 1430, 4]"] 230["StartSketchOnFace<br>[1397, 1430, 5]"]
231["StartSketchOnFace<br>[1018, 1052, 4]"] 231["StartSketchOnFace<br>[1018, 1052, 5]"]
232["StartSketchOnFace<br>[1181, 1213, 4]"] 232["StartSketchOnFace<br>[1181, 1213, 5]"]
233["StartSketchOnFace<br>[1397, 1430, 4]"] 233["StartSketchOnFace<br>[1397, 1430, 5]"]
234["StartSketchOnFace<br>[486, 518, 5]"] 234["StartSketchOnFace<br>[486, 518, 6]"]
235["StartSketchOnFace<br>[448, 480, 6]"] 235["StartSketchOnFace<br>[448, 480, 7]"]
236["StartSketchOnFace<br>[673, 705, 7]"] 236["StartSketchOnFace<br>[673, 705, 8]"]
237["StartSketchOnFace<br>[1364, 1394, 7]"] 237["StartSketchOnFace<br>[1364, 1394, 8]"]
238["StartSketchOnFace<br>[983, 1015, 8]"] 238["StartSketchOnFace<br>[983, 1015, 9]"]
239["StartSketchOnFace<br>[444, 474, 9]"] 239["StartSketchOnFace<br>[444, 474, 10]"]
240["StartSketchOnFace<br>[444, 474, 9]"] 240["StartSketchOnFace<br>[444, 474, 10]"]
1 --- 2 1 --- 2
2 --- 3 2 --- 3
2 --- 4 2 --- 4

File diff suppressed because it is too large Load Diff

View File

@ -18,6 +18,138 @@ description: Operations executed pipe-with-bend.kcl
"type": "StdLibCall", "type": "StdLibCall",
"unlabeledArg": null "unlabeledArg": null
}, },
{
"type": "UserDefinedFunctionCall",
"name": "circle",
"functionSourceRange": [
0,
0,
0
],
"unlabeledArg": {
"value": {
"type": "Plane",
"artifact_id": "[uuid]"
},
"sourceRange": []
},
"labeledArgs": {
"center": {
"value": {
"type": "Array",
"value": [
{
"type": "Number",
"value": 30.0,
"ty": {
"type": "Default",
"len": {
"type": "Inches"
},
"angle": {
"type": "Degrees"
}
}
},
{
"type": "Number",
"value": 0.0,
"ty": {
"type": "Default",
"len": {
"type": "Inches"
},
"angle": {
"type": "Degrees"
}
}
}
]
},
"sourceRange": []
},
"radius": {
"value": {
"type": "Number",
"value": 10.0,
"ty": {
"type": "Unknown"
}
},
"sourceRange": []
}
},
"sourceRange": []
},
{
"type": "UserDefinedFunctionReturn"
},
{
"type": "UserDefinedFunctionCall",
"name": "circle",
"functionSourceRange": [
0,
0,
0
],
"unlabeledArg": {
"value": {
"type": "Plane",
"artifact_id": "[uuid]"
},
"sourceRange": []
},
"labeledArgs": {
"center": {
"value": {
"type": "Array",
"value": [
{
"type": "Number",
"value": 30.0,
"ty": {
"type": "Default",
"len": {
"type": "Inches"
},
"angle": {
"type": "Degrees"
}
}
},
{
"type": "Number",
"value": 0.0,
"ty": {
"type": "Default",
"len": {
"type": "Inches"
},
"angle": {
"type": "Degrees"
}
}
}
]
},
"sourceRange": []
},
"radius": {
"value": {
"type": "Number",
"value": 5.0,
"ty": {
"type": "Unknown"
}
},
"sourceRange": []
}
},
"sourceRange": []
},
{
"type": "UserDefinedFunctionReturn"
},
{ {
"labeledArgs": { "labeledArgs": {
"holeSketch": { "holeSketch": {

View File

@ -417,6 +417,72 @@ description: Operations executed sheet-metal-bracket.kcl
"type": "StdLibCall", "type": "StdLibCall",
"unlabeledArg": null "unlabeledArg": null
}, },
{
"type": "UserDefinedFunctionCall",
"name": "circle",
"functionSourceRange": [
0,
0,
0
],
"unlabeledArg": null,
"labeledArgs": {
"center": {
"value": {
"type": "Array",
"value": [
{
"type": "Number",
"value": 0.75,
"ty": {
"type": "Default",
"len": {
"type": "Inches"
},
"angle": {
"type": "Degrees"
}
}
},
{
"type": "Number",
"value": 1.0,
"ty": {
"type": "Default",
"len": {
"type": "Inches"
},
"angle": {
"type": "Degrees"
}
}
}
]
},
"sourceRange": []
},
"radius": {
"value": {
"type": "Number",
"value": 0.25,
"ty": {
"type": "Default",
"len": {
"type": "Inches"
},
"angle": {
"type": "Degrees"
}
}
},
"sourceRange": []
}
},
"sourceRange": []
},
{
"type": "UserDefinedFunctionReturn"
},
{ {
"labeledArgs": { "labeledArgs": {
"holeSketch": { "holeSketch": {
@ -443,6 +509,72 @@ description: Operations executed sheet-metal-bracket.kcl
"type": "StdLibCall", "type": "StdLibCall",
"unlabeledArg": null "unlabeledArg": null
}, },
{
"type": "UserDefinedFunctionCall",
"name": "circle",
"functionSourceRange": [
0,
0,
0
],
"unlabeledArg": null,
"labeledArgs": {
"center": {
"value": {
"type": "Array",
"value": [
{
"type": "Number",
"value": 0.75,
"ty": {
"type": "Default",
"len": {
"type": "Inches"
},
"angle": {
"type": "Degrees"
}
}
},
{
"type": "Number",
"value": 4.0,
"ty": {
"type": "Default",
"len": {
"type": "Inches"
},
"angle": {
"type": "Degrees"
}
}
}
]
},
"sourceRange": []
},
"radius": {
"value": {
"type": "Number",
"value": 0.25,
"ty": {
"type": "Default",
"len": {
"type": "Inches"
},
"angle": {
"type": "Degrees"
}
}
},
"sourceRange": []
}
},
"sourceRange": []
},
{
"type": "UserDefinedFunctionReturn"
},
{ {
"labeledArgs": { "labeledArgs": {
"holeSketch": { "holeSketch": {
@ -564,6 +696,72 @@ description: Operations executed sheet-metal-bracket.kcl
"type": "StdLibCall", "type": "StdLibCall",
"unlabeledArg": null "unlabeledArg": null
}, },
{
"type": "UserDefinedFunctionCall",
"name": "circle",
"functionSourceRange": [
0,
0,
0
],
"unlabeledArg": null,
"labeledArgs": {
"center": {
"value": {
"type": "Array",
"value": [
{
"type": "Number",
"value": -6.75,
"ty": {
"type": "Default",
"len": {
"type": "Inches"
},
"angle": {
"type": "Degrees"
}
}
},
{
"type": "Number",
"value": 1.0,
"ty": {
"type": "Default",
"len": {
"type": "Inches"
},
"angle": {
"type": "Degrees"
}
}
}
]
},
"sourceRange": []
},
"radius": {
"value": {
"type": "Number",
"value": 0.25,
"ty": {
"type": "Default",
"len": {
"type": "Inches"
},
"angle": {
"type": "Degrees"
}
}
},
"sourceRange": []
}
},
"sourceRange": []
},
{
"type": "UserDefinedFunctionReturn"
},
{ {
"labeledArgs": { "labeledArgs": {
"holeSketch": { "holeSketch": {
@ -590,6 +788,72 @@ description: Operations executed sheet-metal-bracket.kcl
"type": "StdLibCall", "type": "StdLibCall",
"unlabeledArg": null "unlabeledArg": null
}, },
{
"type": "UserDefinedFunctionCall",
"name": "circle",
"functionSourceRange": [
0,
0,
0
],
"unlabeledArg": null,
"labeledArgs": {
"center": {
"value": {
"type": "Array",
"value": [
{
"type": "Number",
"value": -6.75,
"ty": {
"type": "Default",
"len": {
"type": "Inches"
},
"angle": {
"type": "Degrees"
}
}
},
{
"type": "Number",
"value": 4.0,
"ty": {
"type": "Default",
"len": {
"type": "Inches"
},
"angle": {
"type": "Degrees"
}
}
}
]
},
"sourceRange": []
},
"radius": {
"value": {
"type": "Number",
"value": 0.25,
"ty": {
"type": "Default",
"len": {
"type": "Inches"
},
"angle": {
"type": "Degrees"
}
}
},
"sourceRange": []
}
},
"sourceRange": []
},
{
"type": "UserDefinedFunctionReturn"
},
{ {
"labeledArgs": { "labeledArgs": {
"holeSketch": { "holeSketch": {

View File

@ -45,6 +45,73 @@ description: Operations executed socket-head-cap-screw.kcl
"type": "StdLibCall", "type": "StdLibCall",
"unlabeledArg": null "unlabeledArg": null
}, },
{
"type": "UserDefinedFunctionCall",
"name": "circle",
"functionSourceRange": [
0,
0,
0
],
"unlabeledArg": null,
"labeledArgs": {
"center": {
"value": {
"type": "Array",
"value": [
{
"type": "Number",
"value": 0.0,
"ty": {
"type": "Default",
"len": {
"type": "Inches"
},
"angle": {
"type": "Degrees"
}
}
},
{
"type": "Number",
"value": 0.0,
"ty": {
"type": "Default",
"len": {
"type": "Inches"
},
"angle": {
"type": "Degrees"
}
}
}
]
},
"sourceRange": []
},
"radius": {
"value": {
"type": "Number",
"value": 0.1565,
"ty": {
"type": "Unknown"
}
},
"sourceRange": []
},
"tag": {
"value": {
"type": "TagDeclarator",
"name": "topEdge"
},
"sourceRange": []
}
},
"sourceRange": []
},
{
"type": "UserDefinedFunctionReturn"
},
{ {
"labeledArgs": { "labeledArgs": {
"length": { "length": {
@ -200,6 +267,73 @@ description: Operations executed socket-head-cap-screw.kcl
"type": "StdLibCall", "type": "StdLibCall",
"unlabeledArg": null "unlabeledArg": null
}, },
{
"type": "UserDefinedFunctionCall",
"name": "circle",
"functionSourceRange": [
0,
0,
0
],
"unlabeledArg": null,
"labeledArgs": {
"center": {
"value": {
"type": "Array",
"value": [
{
"type": "Number",
"value": 0.0,
"ty": {
"type": "Default",
"len": {
"type": "Inches"
},
"angle": {
"type": "Degrees"
}
}
},
{
"type": "Number",
"value": 0.0,
"ty": {
"type": "Default",
"len": {
"type": "Inches"
},
"angle": {
"type": "Degrees"
}
}
}
]
},
"sourceRange": []
},
"radius": {
"value": {
"type": "Number",
"value": 0.095,
"ty": {
"type": "Unknown"
}
},
"sourceRange": []
},
"tag": {
"value": {
"type": "TagDeclarator",
"name": "filletEdge"
},
"sourceRange": []
}
},
"sourceRange": []
},
{
"type": "UserDefinedFunctionReturn"
},
{ {
"labeledArgs": { "labeledArgs": {
"length": { "length": {

View File

@ -1,186 +1,186 @@
```mermaid ```mermaid
flowchart LR flowchart LR
subgraph path2 [Path] subgraph path2 [Path]
2["Path<br>[415, 458, 4]"] 2["Path<br>[415, 458, 5]"]
3["Segment<br>[466, 504, 4]"] 3["Segment<br>[466, 504, 5]"]
4["Segment<br>[512, 552, 4]"] 4["Segment<br>[512, 552, 5]"]
5["Segment<br>[560, 599, 4]"] 5["Segment<br>[560, 599, 5]"]
6["Segment<br>[607, 629, 4]"] 6["Segment<br>[607, 629, 5]"]
7[Solid2d] 7[Solid2d]
end end
subgraph path27 [Path] subgraph path27 [Path]
27["Path<br>[1038, 1169, 4]"] 27["Path<br>[1038, 1169, 5]"]
28["Segment<br>[1177, 1235, 4]"] 28["Segment<br>[1177, 1235, 5]"]
29["Segment<br>[1243, 1374, 4]"] 29["Segment<br>[1243, 1374, 5]"]
30["Segment<br>[1382, 1440, 4]"] 30["Segment<br>[1382, 1440, 5]"]
31["Segment<br>[1448, 1582, 4]"] 31["Segment<br>[1448, 1582, 5]"]
32["Segment<br>[1590, 1676, 4]"] 32["Segment<br>[1590, 1676, 5]"]
33["Segment<br>[1684, 1819, 4]"] 33["Segment<br>[1684, 1819, 5]"]
34["Segment<br>[1827, 1912, 4]"] 34["Segment<br>[1827, 1912, 5]"]
35["Segment<br>[1920, 1927, 4]"] 35["Segment<br>[1920, 1927, 5]"]
36[Solid2d] 36[Solid2d]
end end
subgraph path63 [Path] subgraph path63 [Path]
63["Path<br>[2077, 2131, 4]"] 63["Path<br>[2077, 2131, 5]"]
64["Segment<br>[2139, 2180, 4]"] 64["Segment<br>[2139, 2180, 5]"]
65["Segment<br>[2188, 2217, 4]"] 65["Segment<br>[2188, 2217, 5]"]
66["Segment<br>[2225, 2255, 4]"] 66["Segment<br>[2225, 2255, 5]"]
67["Segment<br>[2263, 2319, 4]"] 67["Segment<br>[2263, 2319, 5]"]
68["Segment<br>[2327, 2334, 4]"] 68["Segment<br>[2327, 2334, 5]"]
69[Solid2d] 69[Solid2d]
end end
subgraph path84 [Path] subgraph path84 [Path]
84["Path<br>[2478, 2515, 4]"] 84["Path<br>[2478, 2515, 5]"]
85["Segment<br>[2523, 2554, 4]"] 85["Segment<br>[2523, 2554, 5]"]
86["Segment<br>[2562, 2595, 4]"] 86["Segment<br>[2562, 2595, 5]"]
87["Segment<br>[2603, 2635, 4]"] 87["Segment<br>[2603, 2635, 5]"]
88["Segment<br>[2643, 2650, 4]"] 88["Segment<br>[2643, 2650, 5]"]
89[Solid2d] 89[Solid2d]
end end
subgraph path105 [Path] subgraph path105 [Path]
105["Path<br>[294, 319, 7]"] 105["Path<br>[294, 319, 8]"]
106["Segment<br>[327, 360, 7]"] 106["Segment<br>[327, 360, 8]"]
107["Segment<br>[368, 403, 7]"] 107["Segment<br>[368, 403, 8]"]
108["Segment<br>[411, 445, 7]"] 108["Segment<br>[411, 445, 8]"]
109["Segment<br>[453, 460, 7]"] 109["Segment<br>[453, 460, 8]"]
110[Solid2d] 110[Solid2d]
end end
subgraph path112 [Path] subgraph path112 [Path]
112["Path<br>[604, 736, 7]"] 112["Path<br>[604, 736, 8]"]
117[Solid2d] 117[Solid2d]
end end
subgraph path130 [Path] subgraph path130 [Path]
130["Path<br>[501, 555, 5]"] 130["Path<br>[501, 555, 6]"]
131["Segment<br>[563, 590, 5]"] 131["Segment<br>[563, 590, 6]"]
132["Segment<br>[598, 627, 5]"] 132["Segment<br>[598, 627, 6]"]
133["Segment<br>[635, 663, 5]"] 133["Segment<br>[635, 663, 6]"]
134["Segment<br>[671, 727, 5]"] 134["Segment<br>[671, 727, 6]"]
135["Segment<br>[735, 742, 5]"] 135["Segment<br>[735, 742, 6]"]
136[Solid2d] 136[Solid2d]
end end
subgraph path138 [Path] subgraph path138 [Path]
138["Path<br>[1052, 1099, 5]"] 138["Path<br>[1052, 1099, 6]"]
139["Segment<br>[1107, 1148, 5]"] 139["Segment<br>[1107, 1148, 6]"]
140["Segment<br>[1156, 1198, 5]"] 140["Segment<br>[1156, 1198, 6]"]
141["Segment<br>[1206, 1248, 5]"] 141["Segment<br>[1206, 1248, 6]"]
142["Segment<br>[1256, 1263, 5]"] 142["Segment<br>[1256, 1263, 6]"]
143[Solid2d] 143[Solid2d]
end end
subgraph path145 [Path] subgraph path145 [Path]
145["Path<br>[1555, 1720, 5]"] 145["Path<br>[1555, 1720, 6]"]
146["Segment<br>[1728, 1829, 5]"] 146["Segment<br>[1728, 1829, 6]"]
147["Segment<br>[1837, 2004, 5]"] 147["Segment<br>[1837, 2004, 6]"]
148["Segment<br>[2012, 2113, 5]"] 148["Segment<br>[2012, 2113, 6]"]
149["Segment<br>[2121, 2291, 5]"] 149["Segment<br>[2121, 2291, 6]"]
150["Segment<br>[2299, 2401, 5]"] 150["Segment<br>[2299, 2401, 6]"]
151["Segment<br>[2409, 2578, 5]"] 151["Segment<br>[2409, 2578, 6]"]
152["Segment<br>[2586, 2687, 5]"] 152["Segment<br>[2586, 2687, 6]"]
153["Segment<br>[2695, 2702, 5]"] 153["Segment<br>[2695, 2702, 6]"]
154[Solid2d] 154[Solid2d]
end end
subgraph path156 [Path] subgraph path156 [Path]
156["Path<br>[123, 210, 6]"] 156["Path<br>[123, 210, 7]"]
157["Segment<br>[218, 247, 6]"] 157["Segment<br>[218, 247, 7]"]
158["Segment<br>[255, 283, 6]"] 158["Segment<br>[255, 283, 7]"]
159["Segment<br>[291, 388, 6]"] 159["Segment<br>[291, 388, 7]"]
160["Segment<br>[396, 443, 6]"] 160["Segment<br>[396, 443, 7]"]
161["Segment<br>[451, 479, 6]"] 161["Segment<br>[451, 479, 7]"]
162["Segment<br>[487, 516, 6]"] 162["Segment<br>[487, 516, 7]"]
163["Segment<br>[524, 553, 6]"] 163["Segment<br>[524, 553, 7]"]
164["Segment<br>[561, 652, 6]"] 164["Segment<br>[561, 652, 7]"]
165["Segment<br>[660, 688, 6]"] 165["Segment<br>[660, 688, 7]"]
166["Segment<br>[696, 725, 6]"] 166["Segment<br>[696, 725, 7]"]
167["Segment<br>[733, 821, 6]"] 167["Segment<br>[733, 821, 7]"]
168["Segment<br>[829, 857, 6]"] 168["Segment<br>[829, 857, 7]"]
169["Segment<br>[865, 899, 6]"] 169["Segment<br>[865, 899, 7]"]
170["Segment<br>[907, 937, 6]"] 170["Segment<br>[907, 937, 7]"]
171["Segment<br>[945, 1054, 6]"] 171["Segment<br>[945, 1054, 7]"]
172["Segment<br>[1062, 1069, 6]"] 172["Segment<br>[1062, 1069, 7]"]
173[Solid2d] 173[Solid2d]
end end
subgraph path175 [Path] subgraph path175 [Path]
175["Path<br>[1203, 1301, 6]"] 175["Path<br>[1203, 1301, 7]"]
176["Segment<br>[1309, 1428, 6]"] 176["Segment<br>[1309, 1428, 7]"]
177["Segment<br>[1436, 1490, 6]"] 177["Segment<br>[1436, 1490, 7]"]
178["Segment<br>[1498, 1619, 6]"] 178["Segment<br>[1498, 1619, 7]"]
179["Segment<br>[1627, 1634, 6]"] 179["Segment<br>[1627, 1634, 7]"]
180[Solid2d] 180[Solid2d]
end end
subgraph path182 [Path] subgraph path182 [Path]
182["Path<br>[1731, 1828, 6]"] 182["Path<br>[1731, 1828, 7]"]
183["Segment<br>[1836, 1955, 6]"] 183["Segment<br>[1836, 1955, 7]"]
184["Segment<br>[1963, 2018, 6]"] 184["Segment<br>[1963, 2018, 7]"]
185["Segment<br>[2026, 2147, 6]"] 185["Segment<br>[2026, 2147, 7]"]
186["Segment<br>[2155, 2162, 6]"] 186["Segment<br>[2155, 2162, 7]"]
187[Solid2d] 187[Solid2d]
end end
subgraph path189 [Path] subgraph path189 [Path]
189["Path<br>[1203, 1301, 6]"] 189["Path<br>[1203, 1301, 7]"]
190["Segment<br>[1309, 1428, 6]"] 190["Segment<br>[1309, 1428, 7]"]
191["Segment<br>[1436, 1490, 6]"] 191["Segment<br>[1436, 1490, 7]"]
192["Segment<br>[1498, 1619, 6]"] 192["Segment<br>[1498, 1619, 7]"]
193["Segment<br>[1627, 1634, 6]"] 193["Segment<br>[1627, 1634, 7]"]
194[Solid2d] 194[Solid2d]
end end
subgraph path196 [Path] subgraph path196 [Path]
196["Path<br>[1731, 1828, 6]"] 196["Path<br>[1731, 1828, 7]"]
197["Segment<br>[1836, 1955, 6]"] 197["Segment<br>[1836, 1955, 7]"]
198["Segment<br>[1963, 2018, 6]"] 198["Segment<br>[1963, 2018, 7]"]
199["Segment<br>[2026, 2147, 6]"] 199["Segment<br>[2026, 2147, 7]"]
200["Segment<br>[2155, 2162, 6]"] 200["Segment<br>[2155, 2162, 7]"]
201[Solid2d] 201[Solid2d]
end end
subgraph path230 [Path] subgraph path230 [Path]
230["Path<br>[292, 391, 8]"] 230["Path<br>[292, 391, 9]"]
231["Segment<br>[399, 448, 8]"] 231["Segment<br>[399, 448, 9]"]
232["Segment<br>[456, 506, 8]"] 232["Segment<br>[456, 506, 9]"]
233["Segment<br>[514, 564, 8]"] 233["Segment<br>[514, 564, 9]"]
234["Segment<br>[572, 590, 8]"] 234["Segment<br>[572, 590, 9]"]
235[Solid2d] 235[Solid2d]
end end
subgraph path256 [Path] subgraph path256 [Path]
256["Path<br>[322, 352, 9]"] 256["Path<br>[322, 352, 10]"]
257["Segment<br>[358, 390, 9]"] 257["Segment<br>[358, 390, 10]"]
258["Segment<br>[396, 429, 9]"] 258["Segment<br>[396, 429, 10]"]
259["Segment<br>[435, 516, 9]"] 259["Segment<br>[435, 516, 10]"]
260["Segment<br>[522, 549, 9]"] 260["Segment<br>[522, 549, 10]"]
261["Segment<br>[555, 562, 9]"] 261["Segment<br>[555, 562, 10]"]
262[Solid2d] 262[Solid2d]
end end
subgraph path274 [Path] subgraph path274 [Path]
274["Path<br>[314, 339, 10]"] 274["Path<br>[314, 339, 11]"]
275["Segment<br>[347, 431, 10]"] 275["Segment<br>[347, 431, 11]"]
276["Segment<br>[439, 524, 10]"] 276["Segment<br>[439, 524, 11]"]
277["Segment<br>[532, 607, 10]"] 277["Segment<br>[532, 607, 11]"]
278["Segment<br>[615, 622, 10]"] 278["Segment<br>[615, 622, 11]"]
279[Solid2d] 279[Solid2d]
end end
subgraph path298 [Path] subgraph path298 [Path]
298["Path<br>[314, 339, 10]"] 298["Path<br>[314, 339, 11]"]
299["Segment<br>[347, 431, 10]"] 299["Segment<br>[347, 431, 11]"]
300["Segment<br>[439, 524, 10]"] 300["Segment<br>[439, 524, 11]"]
301["Segment<br>[532, 607, 10]"] 301["Segment<br>[532, 607, 11]"]
302["Segment<br>[615, 622, 10]"] 302["Segment<br>[615, 622, 11]"]
303[Solid2d] 303[Solid2d]
end end
subgraph path322 [Path] subgraph path322 [Path]
322["Path<br>[314, 339, 10]"] 322["Path<br>[314, 339, 11]"]
323["Segment<br>[347, 431, 10]"] 323["Segment<br>[347, 431, 11]"]
324["Segment<br>[439, 524, 10]"] 324["Segment<br>[439, 524, 11]"]
325["Segment<br>[532, 607, 10]"] 325["Segment<br>[532, 607, 11]"]
326["Segment<br>[615, 622, 10]"] 326["Segment<br>[615, 622, 11]"]
327[Solid2d] 327[Solid2d]
end end
subgraph path346 [Path] subgraph path346 [Path]
346["Path<br>[314, 339, 10]"] 346["Path<br>[314, 339, 11]"]
347["Segment<br>[347, 431, 10]"] 347["Segment<br>[347, 431, 11]"]
348["Segment<br>[439, 524, 10]"] 348["Segment<br>[439, 524, 11]"]
349["Segment<br>[532, 607, 10]"] 349["Segment<br>[532, 607, 11]"]
350["Segment<br>[615, 622, 10]"] 350["Segment<br>[615, 622, 11]"]
351[Solid2d] 351[Solid2d]
end end
1["Plane<br>[388, 407, 4]"] 1["Plane<br>[388, 407, 5]"]
8["Sweep Extrusion<br>[646, 685, 4]"] 8["Sweep Extrusion<br>[646, 685, 5]"]
9[Wall] 9[Wall]
10[Wall] 10[Wall]
11[Wall] 11[Wall]
@ -195,11 +195,11 @@ flowchart LR
20["SweepEdge Adjacent"] 20["SweepEdge Adjacent"]
21["SweepEdge Opposite"] 21["SweepEdge Opposite"]
22["SweepEdge Adjacent"] 22["SweepEdge Adjacent"]
23["EdgeCut Chamfer<br>[693, 939, 4]"] 23["EdgeCut Chamfer<br>[693, 939, 5]"]
24["EdgeCut Chamfer<br>[693, 939, 4]"] 24["EdgeCut Chamfer<br>[693, 939, 5]"]
25["EdgeCut Chamfer<br>[693, 939, 4]"] 25["EdgeCut Chamfer<br>[693, 939, 5]"]
26["EdgeCut Chamfer<br>[693, 939, 4]"] 26["EdgeCut Chamfer<br>[693, 939, 5]"]
37["Sweep Extrusion<br>[1943, 1979, 4]"] 37["Sweep Extrusion<br>[1943, 1979, 5]"]
38[Wall] 38[Wall]
39[Wall] 39[Wall]
40[Wall] 40[Wall]
@ -225,7 +225,7 @@ flowchart LR
60["SweepEdge Adjacent"] 60["SweepEdge Adjacent"]
61["SweepEdge Opposite"] 61["SweepEdge Opposite"]
62["SweepEdge Adjacent"] 62["SweepEdge Adjacent"]
70["Sweep Extrusion<br>[2350, 2390, 4]"] 70["Sweep Extrusion<br>[2350, 2390, 5]"]
71[Wall] 71[Wall]
72[Wall] 72[Wall]
73[Wall] 73[Wall]
@ -239,7 +239,7 @@ flowchart LR
81["SweepEdge Adjacent"] 81["SweepEdge Adjacent"]
82["SweepEdge Opposite"] 82["SweepEdge Opposite"]
83["SweepEdge Adjacent"] 83["SweepEdge Adjacent"]
90["Sweep Extrusion<br>[2661, 2693, 4]"] 90["Sweep Extrusion<br>[2661, 2693, 5]"]
91[Wall] 91[Wall]
92[Wall] 92[Wall]
93[Wall] 93[Wall]
@ -253,13 +253,13 @@ flowchart LR
101["SweepEdge Adjacent"] 101["SweepEdge Adjacent"]
102["SweepEdge Opposite"] 102["SweepEdge Opposite"]
103["SweepEdge Adjacent"] 103["SweepEdge Adjacent"]
104["Plane<br>[267, 286, 7]"] 104["Plane<br>[267, 286, 8]"]
111["Plane<br>[513, 554, 7]"] 111["Plane<br>[513, 554, 8]"]
113["SweepEdge Opposite"] 113["SweepEdge Opposite"]
114["SweepEdge Opposite"] 114["SweepEdge Opposite"]
115["SweepEdge Opposite"] 115["SweepEdge Opposite"]
116["SweepEdge Opposite"] 116["SweepEdge Opposite"]
118["Sweep Loft<br>[924, 952, 7]"] 118["Sweep Loft<br>[924, 952, 8]"]
119[Wall] 119[Wall]
120[Wall] 120[Wall]
121[Wall] 121[Wall]
@ -270,15 +270,15 @@ flowchart LR
126["SweepEdge Adjacent"] 126["SweepEdge Adjacent"]
127["SweepEdge Adjacent"] 127["SweepEdge Adjacent"]
128["SweepEdge Adjacent"] 128["SweepEdge Adjacent"]
129["Plane<br>[473, 492, 5]"] 129["Plane<br>[473, 492, 6]"]
137["Plane<br>[1024, 1043, 5]"] 137["Plane<br>[1024, 1043, 6]"]
144["Plane<br>[1527, 1546, 5]"] 144["Plane<br>[1527, 1546, 6]"]
155["Plane<br>[2815, 2834, 5]"] 155["Plane<br>[2815, 2834, 6]"]
174["Plane<br>[2879, 2898, 5]"] 174["Plane<br>[2879, 2898, 6]"]
181["Plane<br>[2945, 2964, 5]"] 181["Plane<br>[2945, 2964, 6]"]
188["Plane<br>[3010, 3029, 5]"] 188["Plane<br>[3010, 3029, 6]"]
195["Plane<br>[3075, 3094, 5]"] 195["Plane<br>[3075, 3094, 6]"]
202["Sweep Extrusion<br>[3133, 3169, 5]"] 202["Sweep Extrusion<br>[3133, 3169, 6]"]
203[Wall] 203[Wall]
204[Wall] 204[Wall]
205[Wall] 205[Wall]
@ -305,8 +305,8 @@ flowchart LR
226["SweepEdge Adjacent"] 226["SweepEdge Adjacent"]
227["SweepEdge Opposite"] 227["SweepEdge Opposite"]
228["SweepEdge Adjacent"] 228["SweepEdge Adjacent"]
229["Plane<br>[265, 284, 8]"] 229["Plane<br>[265, 284, 9]"]
236["Sweep Extrusion<br>[653, 705, 8]"] 236["Sweep Extrusion<br>[653, 705, 9]"]
237[Wall] 237[Wall]
238[Wall] 238[Wall]
239[Wall] 239[Wall]
@ -321,12 +321,12 @@ flowchart LR
248["SweepEdge Adjacent"] 248["SweepEdge Adjacent"]
249["SweepEdge Opposite"] 249["SweepEdge Opposite"]
250["SweepEdge Adjacent"] 250["SweepEdge Adjacent"]
251["EdgeCut Fillet<br>[713, 910, 8]"] 251["EdgeCut Fillet<br>[713, 910, 9]"]
252["EdgeCut Fillet<br>[713, 910, 8]"] 252["EdgeCut Fillet<br>[713, 910, 9]"]
253["EdgeCut Fillet<br>[713, 910, 8]"] 253["EdgeCut Fillet<br>[713, 910, 9]"]
254["EdgeCut Fillet<br>[713, 910, 8]"] 254["EdgeCut Fillet<br>[713, 910, 9]"]
255["Plane<br>[297, 316, 9]"] 255["Plane<br>[297, 316, 10]"]
263["Sweep Revolve<br>[568, 596, 9]"] 263["Sweep Revolve<br>[568, 596, 10]"]
264[Wall] 264[Wall]
265[Wall] 265[Wall]
266[Wall] 266[Wall]
@ -336,8 +336,8 @@ flowchart LR
270["SweepEdge Adjacent"] 270["SweepEdge Adjacent"]
271["SweepEdge Adjacent"] 271["SweepEdge Adjacent"]
272["SweepEdge Adjacent"] 272["SweepEdge Adjacent"]
273["Plane<br>[287, 306, 10]"] 273["Plane<br>[287, 306, 11]"]
280["Sweep Extrusion<br>[641, 688, 10]"] 280["Sweep Extrusion<br>[641, 688, 11]"]
281[Wall] 281[Wall]
282[Wall] 282[Wall]
283[Wall] 283[Wall]
@ -352,10 +352,10 @@ flowchart LR
292["SweepEdge Adjacent"] 292["SweepEdge Adjacent"]
293["SweepEdge Opposite"] 293["SweepEdge Opposite"]
294["SweepEdge Adjacent"] 294["SweepEdge Adjacent"]
295["EdgeCut Chamfer<br>[696, 841, 10]"] 295["EdgeCut Chamfer<br>[696, 841, 11]"]
296["EdgeCut Chamfer<br>[696, 841, 10]"] 296["EdgeCut Chamfer<br>[696, 841, 11]"]
297["Plane<br>[287, 306, 10]"] 297["Plane<br>[287, 306, 11]"]
304["Sweep Extrusion<br>[641, 688, 10]"] 304["Sweep Extrusion<br>[641, 688, 11]"]
305[Wall] 305[Wall]
306[Wall] 306[Wall]
307[Wall] 307[Wall]
@ -370,10 +370,10 @@ flowchart LR
316["SweepEdge Adjacent"] 316["SweepEdge Adjacent"]
317["SweepEdge Opposite"] 317["SweepEdge Opposite"]
318["SweepEdge Adjacent"] 318["SweepEdge Adjacent"]
319["EdgeCut Chamfer<br>[696, 841, 10]"] 319["EdgeCut Chamfer<br>[696, 841, 11]"]
320["EdgeCut Chamfer<br>[696, 841, 10]"] 320["EdgeCut Chamfer<br>[696, 841, 11]"]
321["Plane<br>[287, 306, 10]"] 321["Plane<br>[287, 306, 11]"]
328["Sweep Extrusion<br>[641, 688, 10]"] 328["Sweep Extrusion<br>[641, 688, 11]"]
329[Wall] 329[Wall]
330[Wall] 330[Wall]
331[Wall] 331[Wall]
@ -388,10 +388,10 @@ flowchart LR
340["SweepEdge Adjacent"] 340["SweepEdge Adjacent"]
341["SweepEdge Opposite"] 341["SweepEdge Opposite"]
342["SweepEdge Adjacent"] 342["SweepEdge Adjacent"]
343["EdgeCut Chamfer<br>[696, 841, 10]"] 343["EdgeCut Chamfer<br>[696, 841, 11]"]
344["EdgeCut Chamfer<br>[696, 841, 10]"] 344["EdgeCut Chamfer<br>[696, 841, 11]"]
345["Plane<br>[287, 306, 10]"] 345["Plane<br>[287, 306, 11]"]
352["Sweep Extrusion<br>[641, 688, 10]"] 352["Sweep Extrusion<br>[641, 688, 11]"]
353[Wall] 353[Wall]
354[Wall] 354[Wall]
355[Wall] 355[Wall]
@ -406,18 +406,18 @@ flowchart LR
364["SweepEdge Adjacent"] 364["SweepEdge Adjacent"]
365["SweepEdge Opposite"] 365["SweepEdge Opposite"]
366["SweepEdge Adjacent"] 366["SweepEdge Adjacent"]
367["EdgeCut Chamfer<br>[696, 841, 10]"] 367["EdgeCut Chamfer<br>[696, 841, 11]"]
368["EdgeCut Chamfer<br>[696, 841, 10]"] 368["EdgeCut Chamfer<br>[696, 841, 11]"]
369["StartSketchOnFace<br>[997, 1030, 4]"] 369["StartSketchOnFace<br>[997, 1030, 5]"]
370["StartSketchOnFace<br>[2035, 2069, 4]"] 370["StartSketchOnFace<br>[2035, 2069, 5]"]
371["StartSketchOnFace<br>[2436, 2470, 4]"] 371["StartSketchOnFace<br>[2436, 2470, 5]"]
372["StartSketchOnFace<br>[997, 1030, 4]"] 372["StartSketchOnFace<br>[997, 1030, 5]"]
373["StartSketchOnFace<br>[2035, 2069, 4]"] 373["StartSketchOnFace<br>[2035, 2069, 5]"]
374["StartSketchOnFace<br>[2436, 2470, 4]"] 374["StartSketchOnFace<br>[2436, 2470, 5]"]
375["StartSketchOnPlane<br>[572, 596, 7]"] 375["StartSketchOnPlane<br>[572, 596, 8]"]
376["StartSketchOnPlane<br>[459, 493, 5]"] 376["StartSketchOnPlane<br>[459, 493, 6]"]
377["StartSketchOnPlane<br>[1010, 1044, 5]"] 377["StartSketchOnPlane<br>[1010, 1044, 6]"]
378["StartSketchOnPlane<br>[1513, 1547, 5]"] 378["StartSketchOnPlane<br>[1513, 1547, 6]"]
1 --- 2 1 --- 2
2 --- 3 2 --- 3
2 --- 4 2 --- 4

View File

@ -9,7 +9,7 @@ description: Operations executed walkie-talkie.kcl
"functionSourceRange": [ "functionSourceRange": [
313, 313,
2759, 2759,
4 5
], ],
"unlabeledArg": null, "unlabeledArg": null,
"labeledArgs": {}, "labeledArgs": {},
@ -355,7 +355,7 @@ description: Operations executed walkie-talkie.kcl
"functionSourceRange": [ "functionSourceRange": [
313, 313,
2759, 2759,
4 5
], ],
"unlabeledArg": null, "unlabeledArg": null,
"labeledArgs": {}, "labeledArgs": {},
@ -701,7 +701,7 @@ description: Operations executed walkie-talkie.kcl
"functionSourceRange": [ "functionSourceRange": [
212, 212,
1011, 1011,
7 8
], ],
"unlabeledArg": null, "unlabeledArg": null,
"labeledArgs": {}, "labeledArgs": {},
@ -804,7 +804,7 @@ description: Operations executed walkie-talkie.kcl
"functionSourceRange": [ "functionSourceRange": [
401, 401,
3254, 3254,
5 6
], ],
"unlabeledArg": null, "unlabeledArg": null,
"labeledArgs": {}, "labeledArgs": {},
@ -1890,7 +1890,7 @@ description: Operations executed walkie-talkie.kcl
"functionSourceRange": [ "functionSourceRange": [
69, 69,
1088, 1088,
6 7
], ],
"unlabeledArg": null, "unlabeledArg": null,
"labeledArgs": {}, "labeledArgs": {},
@ -1946,7 +1946,7 @@ description: Operations executed walkie-talkie.kcl
"functionSourceRange": [ "functionSourceRange": [
1146, 1146,
1656, 1656,
6 7
], ],
"unlabeledArg": null, "unlabeledArg": null,
"labeledArgs": {}, "labeledArgs": {},
@ -2002,7 +2002,7 @@ description: Operations executed walkie-talkie.kcl
"functionSourceRange": [ "functionSourceRange": [
1674, 1674,
2184, 2184,
6 7
], ],
"unlabeledArg": null, "unlabeledArg": null,
"labeledArgs": {}, "labeledArgs": {},
@ -2058,7 +2058,7 @@ description: Operations executed walkie-talkie.kcl
"functionSourceRange": [ "functionSourceRange": [
1146, 1146,
1656, 1656,
6 7
], ],
"unlabeledArg": null, "unlabeledArg": null,
"labeledArgs": {}, "labeledArgs": {},
@ -2114,7 +2114,7 @@ description: Operations executed walkie-talkie.kcl
"functionSourceRange": [ "functionSourceRange": [
1674, 1674,
2184, 2184,
6 7
], ],
"unlabeledArg": null, "unlabeledArg": null,
"labeledArgs": {}, "labeledArgs": {},
@ -2190,7 +2190,7 @@ description: Operations executed walkie-talkie.kcl
"functionSourceRange": [ "functionSourceRange": [
203, 203,
1002, 1002,
8 9
], ],
"unlabeledArg": null, "unlabeledArg": null,
"labeledArgs": {}, "labeledArgs": {},
@ -2308,7 +2308,7 @@ description: Operations executed walkie-talkie.kcl
"functionSourceRange": [ "functionSourceRange": [
246, 246,
681, 681,
9 10
], ],
"unlabeledArg": null, "unlabeledArg": null,
"labeledArgs": {}, "labeledArgs": {},
@ -2361,7 +2361,7 @@ description: Operations executed walkie-talkie.kcl
"functionSourceRange": [ "functionSourceRange": [
221, 221,
905, 905,
10 11
], ],
"unlabeledArg": null, "unlabeledArg": null,
"labeledArgs": {}, "labeledArgs": {},
@ -2471,7 +2471,7 @@ description: Operations executed walkie-talkie.kcl
"functionSourceRange": [ "functionSourceRange": [
221, 221,
905, 905,
10 11
], ],
"unlabeledArg": null, "unlabeledArg": null,
"labeledArgs": {}, "labeledArgs": {},
@ -2581,7 +2581,7 @@ description: Operations executed walkie-talkie.kcl
"functionSourceRange": [ "functionSourceRange": [
221, 221,
905, 905,
10 11
], ],
"unlabeledArg": null, "unlabeledArg": null,
"labeledArgs": {}, "labeledArgs": {},
@ -2691,7 +2691,7 @@ description: Operations executed walkie-talkie.kcl
"functionSourceRange": [ "functionSourceRange": [
221, 221,
905, 905,
10 11
], ],
"unlabeledArg": null, "unlabeledArg": null,
"labeledArgs": {}, "labeledArgs": {},

View File

@ -30,6 +30,126 @@ description: Operations executed washer.kcl
"type": "StdLibCall", "type": "StdLibCall",
"unlabeledArg": null "unlabeledArg": null
}, },
{
"type": "UserDefinedFunctionCall",
"name": "circle",
"functionSourceRange": [
0,
0,
0
],
"unlabeledArg": null,
"labeledArgs": {
"center": {
"value": {
"type": "Array",
"value": [
{
"type": "Number",
"value": 0.0,
"ty": {
"type": "Default",
"len": {
"type": "Inches"
},
"angle": {
"type": "Degrees"
}
}
},
{
"type": "Number",
"value": 0.0,
"ty": {
"type": "Default",
"len": {
"type": "Inches"
},
"angle": {
"type": "Degrees"
}
}
}
]
},
"sourceRange": []
},
"radius": {
"value": {
"type": "Number",
"value": 0.219,
"ty": {
"type": "Unknown"
}
},
"sourceRange": []
}
},
"sourceRange": []
},
{
"type": "UserDefinedFunctionReturn"
},
{
"type": "UserDefinedFunctionCall",
"name": "circle",
"functionSourceRange": [
0,
0,
0
],
"unlabeledArg": null,
"labeledArgs": {
"center": {
"value": {
"type": "Array",
"value": [
{
"type": "Number",
"value": 0.0,
"ty": {
"type": "Default",
"len": {
"type": "Inches"
},
"angle": {
"type": "Degrees"
}
}
},
{
"type": "Number",
"value": 0.0,
"ty": {
"type": "Default",
"len": {
"type": "Inches"
},
"angle": {
"type": "Degrees"
}
}
}
]
},
"sourceRange": []
},
"radius": {
"value": {
"type": "Number",
"value": 0.1015,
"ty": {
"type": "Unknown"
}
},
"sourceRange": []
}
},
"sourceRange": []
},
{
"type": "UserDefinedFunctionReturn"
},
{ {
"labeledArgs": { "labeledArgs": {
"holeSketch": { "holeSketch": {

View File

@ -1,5 +1,5 @@
--- ---
source: kcl/src/simulation_tests.rs source: kcl-lib/src/simulation_tests.rs
description: Error from executing kw_fn_too_few_args.kcl description: Error from executing kw_fn_too_few_args.kcl
--- ---
KCL Semantic error KCL Semantic error

Binary file not shown.

After

Width:  |  Height:  |  Size: 81 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 105 KiB

View File

@ -33,6 +33,72 @@ description: Operations executed revolve_about_edge.kcl
"type": "StdLibCall", "type": "StdLibCall",
"unlabeledArg": null "unlabeledArg": null
}, },
{
"type": "UserDefinedFunctionCall",
"name": "circle",
"functionSourceRange": [
0,
0,
0
],
"unlabeledArg": null,
"labeledArgs": {
"center": {
"value": {
"type": "Array",
"value": [
{
"type": "Number",
"value": -50.0,
"ty": {
"type": "Default",
"len": {
"type": "Mm"
},
"angle": {
"type": "Degrees"
}
}
},
{
"type": "Number",
"value": 0.0,
"ty": {
"type": "Default",
"len": {
"type": "Mm"
},
"angle": {
"type": "Degrees"
}
}
}
]
},
"sourceRange": []
},
"radius": {
"value": {
"type": "Number",
"value": 10.0,
"ty": {
"type": "Default",
"len": {
"type": "Mm"
},
"angle": {
"type": "Degrees"
}
}
},
"sourceRange": []
}
},
"sourceRange": []
},
{
"type": "UserDefinedFunctionReturn"
},
{ {
"labeledArgs": { "labeledArgs": {
"angle": { "angle": {

View File

@ -45,6 +45,73 @@ description: Operations executed rotate_after_fillet.kcl
"type": "StdLibCall", "type": "StdLibCall",
"unlabeledArg": null "unlabeledArg": null
}, },
{
"type": "UserDefinedFunctionCall",
"name": "circle",
"functionSourceRange": [
0,
0,
0
],
"unlabeledArg": null,
"labeledArgs": {
"center": {
"value": {
"type": "Array",
"value": [
{
"type": "Number",
"value": 0.0,
"ty": {
"type": "Default",
"len": {
"type": "Mm"
},
"angle": {
"type": "Degrees"
}
}
},
{
"type": "Number",
"value": 0.0,
"ty": {
"type": "Default",
"len": {
"type": "Mm"
},
"angle": {
"type": "Degrees"
}
}
}
]
},
"sourceRange": []
},
"radius": {
"value": {
"type": "Number",
"value": 0.469,
"ty": {
"type": "Unknown"
}
},
"sourceRange": []
},
"tag": {
"value": {
"type": "TagDeclarator",
"name": "topEdge"
},
"sourceRange": []
}
},
"sourceRange": []
},
{
"type": "UserDefinedFunctionReturn"
},
{ {
"labeledArgs": { "labeledArgs": {
"length": { "length": {
@ -200,6 +267,73 @@ description: Operations executed rotate_after_fillet.kcl
"type": "StdLibCall", "type": "StdLibCall",
"unlabeledArg": null "unlabeledArg": null
}, },
{
"type": "UserDefinedFunctionCall",
"name": "circle",
"functionSourceRange": [
0,
0,
0
],
"unlabeledArg": null,
"labeledArgs": {
"center": {
"value": {
"type": "Array",
"value": [
{
"type": "Number",
"value": 0.0,
"ty": {
"type": "Default",
"len": {
"type": "Mm"
},
"angle": {
"type": "Degrees"
}
}
},
{
"type": "Number",
"value": 0.0,
"ty": {
"type": "Default",
"len": {
"type": "Mm"
},
"angle": {
"type": "Degrees"
}
}
}
]
},
"sourceRange": []
},
"radius": {
"value": {
"type": "Number",
"value": 0.3125,
"ty": {
"type": "Unknown"
}
},
"sourceRange": []
},
"tag": {
"value": {
"type": "TagDeclarator",
"name": "filletEdge"
},
"sourceRange": []
}
},
"sourceRange": []
},
{
"type": "UserDefinedFunctionReturn"
},
{ {
"labeledArgs": { "labeledArgs": {
"length": { "length": {

View File

@ -45,6 +45,73 @@ description: Operations executed scale_after_fillet.kcl
"type": "StdLibCall", "type": "StdLibCall",
"unlabeledArg": null "unlabeledArg": null
}, },
{
"type": "UserDefinedFunctionCall",
"name": "circle",
"functionSourceRange": [
0,
0,
0
],
"unlabeledArg": null,
"labeledArgs": {
"center": {
"value": {
"type": "Array",
"value": [
{
"type": "Number",
"value": 0.0,
"ty": {
"type": "Default",
"len": {
"type": "Mm"
},
"angle": {
"type": "Degrees"
}
}
},
{
"type": "Number",
"value": 0.0,
"ty": {
"type": "Default",
"len": {
"type": "Mm"
},
"angle": {
"type": "Degrees"
}
}
}
]
},
"sourceRange": []
},
"radius": {
"value": {
"type": "Number",
"value": 0.469,
"ty": {
"type": "Unknown"
}
},
"sourceRange": []
},
"tag": {
"value": {
"type": "TagDeclarator",
"name": "topEdge"
},
"sourceRange": []
}
},
"sourceRange": []
},
{
"type": "UserDefinedFunctionReturn"
},
{ {
"labeledArgs": { "labeledArgs": {
"length": { "length": {
@ -200,6 +267,73 @@ description: Operations executed scale_after_fillet.kcl
"type": "StdLibCall", "type": "StdLibCall",
"unlabeledArg": null "unlabeledArg": null
}, },
{
"type": "UserDefinedFunctionCall",
"name": "circle",
"functionSourceRange": [
0,
0,
0
],
"unlabeledArg": null,
"labeledArgs": {
"center": {
"value": {
"type": "Array",
"value": [
{
"type": "Number",
"value": 0.0,
"ty": {
"type": "Default",
"len": {
"type": "Mm"
},
"angle": {
"type": "Degrees"
}
}
},
{
"type": "Number",
"value": 0.0,
"ty": {
"type": "Default",
"len": {
"type": "Mm"
},
"angle": {
"type": "Degrees"
}
}
}
]
},
"sourceRange": []
},
"radius": {
"value": {
"type": "Number",
"value": 0.3125,
"ty": {
"type": "Unknown"
}
},
"sourceRange": []
},
"tag": {
"value": {
"type": "TagDeclarator",
"name": "filletEdge"
},
"sourceRange": []
}
},
"sourceRange": []
},
{
"type": "UserDefinedFunctionReturn"
},
{ {
"labeledArgs": { "labeledArgs": {
"length": { "length": {

View File

@ -89,6 +89,79 @@ description: Operations executed sketch_on_face_circle_tagged.kcl
"type": "StdLibCall", "type": "StdLibCall",
"unlabeledArg": null "unlabeledArg": null
}, },
{
"type": "UserDefinedFunctionCall",
"name": "circle",
"functionSourceRange": [
0,
0,
0
],
"unlabeledArg": null,
"labeledArgs": {
"center": {
"value": {
"type": "Array",
"value": [
{
"type": "Number",
"value": 0.0,
"ty": {
"type": "Default",
"len": {
"type": "Mm"
},
"angle": {
"type": "Degrees"
}
}
},
{
"type": "Number",
"value": 0.0,
"ty": {
"type": "Default",
"len": {
"type": "Mm"
},
"angle": {
"type": "Degrees"
}
}
}
]
},
"sourceRange": []
},
"radius": {
"value": {
"type": "Number",
"value": 5.0,
"ty": {
"type": "Default",
"len": {
"type": "Mm"
},
"angle": {
"type": "Degrees"
}
}
},
"sourceRange": []
},
"tag": {
"value": {
"type": "TagDeclarator",
"name": "myCircle"
},
"sourceRange": []
}
},
"sourceRange": []
},
{
"type": "UserDefinedFunctionReturn"
},
{ {
"labeledArgs": { "labeledArgs": {
"length": { "length": {

View File

@ -75,6 +75,72 @@ description: Operations executed ssi_pattern.kcl
"type": "StdLibCall", "type": "StdLibCall",
"unlabeledArg": null "unlabeledArg": null
}, },
{
"type": "UserDefinedFunctionCall",
"name": "circle",
"functionSourceRange": [
0,
0,
0
],
"unlabeledArg": null,
"labeledArgs": {
"center": {
"value": {
"type": "Array",
"value": [
{
"type": "Number",
"value": -2.08,
"ty": {
"type": "Default",
"len": {
"type": "Mm"
},
"angle": {
"type": "Degrees"
}
}
},
{
"type": "Number",
"value": 47.7,
"ty": {
"type": "Default",
"len": {
"type": "Mm"
},
"angle": {
"type": "Degrees"
}
}
}
]
},
"sourceRange": []
},
"radius": {
"value": {
"type": "Number",
"value": 1.4,
"ty": {
"type": "Default",
"len": {
"type": "Mm"
},
"angle": {
"type": "Degrees"
}
}
},
"sourceRange": []
}
},
"sourceRange": []
},
{
"type": "UserDefinedFunctionReturn"
},
{ {
"labeledArgs": { "labeledArgs": {
"length": { "length": {

View File

@ -45,6 +45,73 @@ description: Operations executed translate_after_fillet.kcl
"type": "StdLibCall", "type": "StdLibCall",
"unlabeledArg": null "unlabeledArg": null
}, },
{
"type": "UserDefinedFunctionCall",
"name": "circle",
"functionSourceRange": [
0,
0,
0
],
"unlabeledArg": null,
"labeledArgs": {
"center": {
"value": {
"type": "Array",
"value": [
{
"type": "Number",
"value": 0.0,
"ty": {
"type": "Default",
"len": {
"type": "Mm"
},
"angle": {
"type": "Degrees"
}
}
},
{
"type": "Number",
"value": 0.0,
"ty": {
"type": "Default",
"len": {
"type": "Mm"
},
"angle": {
"type": "Degrees"
}
}
}
]
},
"sourceRange": []
},
"radius": {
"value": {
"type": "Number",
"value": 0.469,
"ty": {
"type": "Unknown"
}
},
"sourceRange": []
},
"tag": {
"value": {
"type": "TagDeclarator",
"name": "topEdge"
},
"sourceRange": []
}
},
"sourceRange": []
},
{
"type": "UserDefinedFunctionReturn"
},
{ {
"labeledArgs": { "labeledArgs": {
"length": { "length": {
@ -200,6 +267,73 @@ description: Operations executed translate_after_fillet.kcl
"type": "StdLibCall", "type": "StdLibCall",
"unlabeledArg": null "unlabeledArg": null
}, },
{
"type": "UserDefinedFunctionCall",
"name": "circle",
"functionSourceRange": [
0,
0,
0
],
"unlabeledArg": null,
"labeledArgs": {
"center": {
"value": {
"type": "Array",
"value": [
{
"type": "Number",
"value": 0.0,
"ty": {
"type": "Default",
"len": {
"type": "Mm"
},
"angle": {
"type": "Degrees"
}
}
},
{
"type": "Number",
"value": 0.0,
"ty": {
"type": "Default",
"len": {
"type": "Mm"
},
"angle": {
"type": "Degrees"
}
}
}
]
},
"sourceRange": []
},
"radius": {
"value": {
"type": "Number",
"value": 0.3125,
"ty": {
"type": "Unknown"
}
},
"sourceRange": []
},
"tag": {
"value": {
"type": "TagDeclarator",
"name": "filletEdge"
},
"sourceRange": []
}
},
"sourceRange": []
},
{
"type": "UserDefinedFunctionReturn"
},
{ {
"labeledArgs": { "labeledArgs": {
"length": { "length": {

View File

@ -810,7 +810,7 @@ export function addHelix({
node, node,
revolutions, revolutions,
angleStart, angleStart,
counterClockWise, ccw,
radius, radius,
axis, axis,
length, length,
@ -820,7 +820,7 @@ export function addHelix({
node: Node<Program> node: Node<Program>
revolutions: Expr revolutions: Expr
angleStart: Expr angleStart: Expr
counterClockWise: boolean ccw: boolean
radius: Expr radius: Expr
axis: string axis: string
length: Expr length: Expr
@ -838,7 +838,7 @@ export function addHelix({
[ [
createLabeledArg('revolutions', revolutions), createLabeledArg('revolutions', revolutions),
createLabeledArg('angleStart', angleStart), createLabeledArg('angleStart', angleStart),
createLabeledArg('counterClockWise', createLiteral(counterClockWise)), createLabeledArg('ccw', createLiteral(ccw)),
createLabeledArg('radius', radius), createLabeledArg('radius', radius),
createLabeledArg('axis', createLiteral(axis)), createLabeledArg('axis', createLiteral(axis)),
createLabeledArg('length', length), createLabeledArg('length', length),

View File

@ -99,7 +99,7 @@ export type ModelingCommandSchema = {
// KCL stdlib arguments // KCL stdlib arguments
revolutions: KclCommandValue revolutions: KclCommandValue
angleStart: KclCommandValue angleStart: KclCommandValue
counterClockWise: boolean ccw: boolean
radius: KclCommandValue radius: KclCommandValue
axis: string axis: string
length: KclCommandValue length: KclCommandValue
@ -544,7 +544,7 @@ export const modelingMachineCommandConfig: StateMachineCommandSetConfig<
defaultValue: KCL_DEFAULT_DEGREE, defaultValue: KCL_DEFAULT_DEGREE,
required: true, required: true,
}, },
counterClockWise: { ccw: {
inputType: 'options', inputType: 'options',
required: true, required: true,
defaultValue: false, defaultValue: false,

View File

@ -487,15 +487,12 @@ const prepareToEditHelix: PrepareToEditCallback = async ({ operation }) => {
if (err(angleStart) || 'errors' in angleStart) return baseCommand if (err(angleStart) || 'errors' in angleStart) return baseCommand
// counterClockWise options boolean arg // counterClockWise options boolean arg
if ( if (!('ccw' in operation.labeledArgs) || !operation.labeledArgs.ccw)
!('counterClockWise' in operation.labeledArgs) ||
!operation.labeledArgs.counterClockWise
)
return baseCommand return baseCommand
const counterClockWise = const ccw =
codeManager.code.slice( codeManager.code.slice(
operation.labeledArgs.counterClockWise.sourceRange[0], operation.labeledArgs.ccw.sourceRange[0],
operation.labeledArgs.counterClockWise.sourceRange[1] operation.labeledArgs.ccw.sourceRange[1]
) === 'true' ) === 'true'
// radius kcl arg // radius kcl arg
@ -536,7 +533,7 @@ const prepareToEditHelix: PrepareToEditCallback = async ({ operation }) => {
const argDefaultValues: ModelingCommandSchema['Helix'] = { const argDefaultValues: ModelingCommandSchema['Helix'] = {
revolutions, revolutions,
angleStart, angleStart,
counterClockWise, ccw,
radius, radius,
axis, axis,
length, length,

View File

@ -1906,7 +1906,7 @@ export const modelingMachine = setup({
const { const {
revolutions, revolutions,
angleStart, angleStart,
counterClockWise, ccw,
radius, radius,
axis, axis,
length, length,
@ -1962,7 +1962,7 @@ export const modelingMachine = setup({
node: ast, node: ast,
revolutions: valueOrVariable(revolutions), revolutions: valueOrVariable(revolutions),
angleStart: valueOrVariable(angleStart), angleStart: valueOrVariable(angleStart),
counterClockWise, ccw,
radius: valueOrVariable(radius), radius: valueOrVariable(radius),
axis, axis,
length: valueOrVariable(length), length: valueOrVariable(length),