allow more than one tool (#6945)
* allow more than one tool Signed-off-by: Jess Frazelle <github@jessfraz.com> * updates Signed-off-by: Jess Frazelle <github@jessfraz.com> * updates Signed-off-by: Jess Frazelle <github@jessfraz.com> * updates Signed-off-by: Jess Frazelle <github@jessfraz.com> * update tests Signed-off-by: Jess Frazelle <github@jessfraz.com> * fmt Signed-off-by: Jess Frazelle <github@jessfraz.com> * bump kcl Signed-off-by: Jess Frazelle <github@jessfraz.com> --------- Signed-off-by: Jess Frazelle <github@jessfraz.com>
This commit is contained in:
20
rust/Cargo.lock
generated
20
rust/Cargo.lock
generated
@ -1815,7 +1815,7 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "kcl-bumper"
|
name = "kcl-bumper"
|
||||||
version = "0.1.73"
|
version = "0.1.74"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"anyhow",
|
"anyhow",
|
||||||
"clap",
|
"clap",
|
||||||
@ -1826,7 +1826,7 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "kcl-derive-docs"
|
name = "kcl-derive-docs"
|
||||||
version = "0.1.73"
|
version = "0.1.74"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"Inflector",
|
"Inflector",
|
||||||
"anyhow",
|
"anyhow",
|
||||||
@ -1845,7 +1845,7 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "kcl-directory-test-macro"
|
name = "kcl-directory-test-macro"
|
||||||
version = "0.1.73"
|
version = "0.1.74"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"convert_case",
|
"convert_case",
|
||||||
"proc-macro2",
|
"proc-macro2",
|
||||||
@ -1855,7 +1855,7 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "kcl-language-server"
|
name = "kcl-language-server"
|
||||||
version = "0.2.73"
|
version = "0.2.74"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"anyhow",
|
"anyhow",
|
||||||
"clap",
|
"clap",
|
||||||
@ -1876,7 +1876,7 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "kcl-language-server-release"
|
name = "kcl-language-server-release"
|
||||||
version = "0.1.73"
|
version = "0.1.74"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"anyhow",
|
"anyhow",
|
||||||
"clap",
|
"clap",
|
||||||
@ -1896,7 +1896,7 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "kcl-lib"
|
name = "kcl-lib"
|
||||||
version = "0.2.73"
|
version = "0.2.74"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"anyhow",
|
"anyhow",
|
||||||
"approx 0.5.1",
|
"approx 0.5.1",
|
||||||
@ -1973,7 +1973,7 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "kcl-python-bindings"
|
name = "kcl-python-bindings"
|
||||||
version = "0.3.73"
|
version = "0.3.74"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"anyhow",
|
"anyhow",
|
||||||
"kcl-lib",
|
"kcl-lib",
|
||||||
@ -1988,7 +1988,7 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "kcl-test-server"
|
name = "kcl-test-server"
|
||||||
version = "0.1.73"
|
version = "0.1.74"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"anyhow",
|
"anyhow",
|
||||||
"hyper 0.14.32",
|
"hyper 0.14.32",
|
||||||
@ -2001,7 +2001,7 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "kcl-to-core"
|
name = "kcl-to-core"
|
||||||
version = "0.1.73"
|
version = "0.1.74"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"anyhow",
|
"anyhow",
|
||||||
"async-trait",
|
"async-trait",
|
||||||
@ -2015,7 +2015,7 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "kcl-wasm-lib"
|
name = "kcl-wasm-lib"
|
||||||
version = "0.1.73"
|
version = "0.1.74"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"anyhow",
|
"anyhow",
|
||||||
"bson",
|
"bson",
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
|
|
||||||
[package]
|
[package]
|
||||||
name = "kcl-bumper"
|
name = "kcl-bumper"
|
||||||
version = "0.1.73"
|
version = "0.1.74"
|
||||||
edition = "2021"
|
edition = "2021"
|
||||||
repository = "https://github.com/KittyCAD/modeling-api"
|
repository = "https://github.com/KittyCAD/modeling-api"
|
||||||
rust-version = "1.76"
|
rust-version = "1.76"
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
[package]
|
[package]
|
||||||
name = "kcl-derive-docs"
|
name = "kcl-derive-docs"
|
||||||
description = "A tool for generating documentation from Rust derive macros"
|
description = "A tool for generating documentation from Rust derive macros"
|
||||||
version = "0.1.73"
|
version = "0.1.74"
|
||||||
edition = "2021"
|
edition = "2021"
|
||||||
license = "MIT"
|
license = "MIT"
|
||||||
repository = "https://github.com/KittyCAD/modeling-app"
|
repository = "https://github.com/KittyCAD/modeling-app"
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
[package]
|
[package]
|
||||||
name = "kcl-directory-test-macro"
|
name = "kcl-directory-test-macro"
|
||||||
description = "A tool for generating tests from a directory of kcl files"
|
description = "A tool for generating tests from a directory of kcl files"
|
||||||
version = "0.1.73"
|
version = "0.1.74"
|
||||||
edition = "2021"
|
edition = "2021"
|
||||||
license = "MIT"
|
license = "MIT"
|
||||||
repository = "https://github.com/KittyCAD/modeling-app"
|
repository = "https://github.com/KittyCAD/modeling-app"
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
[package]
|
[package]
|
||||||
name = "kcl-language-server-release"
|
name = "kcl-language-server-release"
|
||||||
version = "0.1.73"
|
version = "0.1.74"
|
||||||
edition = "2021"
|
edition = "2021"
|
||||||
authors = ["KittyCAD Inc <kcl@kittycad.io>"]
|
authors = ["KittyCAD Inc <kcl@kittycad.io>"]
|
||||||
publish = false
|
publish = false
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
name = "kcl-language-server"
|
name = "kcl-language-server"
|
||||||
description = "A language server for KCL."
|
description = "A language server for KCL."
|
||||||
authors = ["KittyCAD Inc <kcl@kittycad.io>"]
|
authors = ["KittyCAD Inc <kcl@kittycad.io>"]
|
||||||
version = "0.2.73"
|
version = "0.2.74"
|
||||||
edition = "2021"
|
edition = "2021"
|
||||||
license = "MIT"
|
license = "MIT"
|
||||||
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
[package]
|
[package]
|
||||||
name = "kcl-lib"
|
name = "kcl-lib"
|
||||||
description = "KittyCAD Language implementation and tools"
|
description = "KittyCAD Language implementation and tools"
|
||||||
version = "0.2.73"
|
version = "0.2.74"
|
||||||
edition = "2021"
|
edition = "2021"
|
||||||
license = "MIT"
|
license = "MIT"
|
||||||
repository = "https://github.com/KittyCAD/modeling-app"
|
repository = "https://github.com/KittyCAD/modeling-app"
|
||||||
|
@ -3086,6 +3086,48 @@ mod error_revolve_on_edge_get_edge {
|
|||||||
super::execute(TEST_NAME, true).await
|
super::execute(TEST_NAME, true).await
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
mod subtract_with_pattern {
|
||||||
|
const TEST_NAME: &str = "subtract_with_pattern";
|
||||||
|
|
||||||
|
/// Test parsing KCL.
|
||||||
|
#[test]
|
||||||
|
fn parse() {
|
||||||
|
super::parse(TEST_NAME)
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Test that parsing and unparsing KCL produces the original KCL input.
|
||||||
|
#[tokio::test(flavor = "multi_thread")]
|
||||||
|
async fn unparse() {
|
||||||
|
super::unparse(TEST_NAME).await
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Test that KCL is executed correctly.
|
||||||
|
#[tokio::test(flavor = "multi_thread")]
|
||||||
|
async fn kcl_test_execute() {
|
||||||
|
super::execute(TEST_NAME, true).await
|
||||||
|
}
|
||||||
|
}
|
||||||
|
mod subtract_with_pattern_cut_thru {
|
||||||
|
const TEST_NAME: &str = "subtract_with_pattern_cut_thru";
|
||||||
|
|
||||||
|
/// Test parsing KCL.
|
||||||
|
#[test]
|
||||||
|
fn parse() {
|
||||||
|
super::parse(TEST_NAME)
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Test that parsing and unparsing KCL produces the original KCL input.
|
||||||
|
#[tokio::test(flavor = "multi_thread")]
|
||||||
|
async fn unparse() {
|
||||||
|
super::unparse(TEST_NAME).await
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Test that KCL is executed correctly.
|
||||||
|
#[tokio::test(flavor = "multi_thread")]
|
||||||
|
async fn kcl_test_execute() {
|
||||||
|
super::execute(TEST_NAME, true).await
|
||||||
|
}
|
||||||
|
}
|
||||||
mod sketch_on_face_union {
|
mod sketch_on_face_union {
|
||||||
const TEST_NAME: &str = "sketch_on_face_union";
|
const TEST_NAME: &str = "sketch_on_face_union";
|
||||||
|
|
||||||
@ -3107,6 +3149,27 @@ mod sketch_on_face_union {
|
|||||||
super::execute(TEST_NAME, true).await
|
super::execute(TEST_NAME, true).await
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
mod multi_target_csg {
|
||||||
|
const TEST_NAME: &str = "multi_target_csg";
|
||||||
|
|
||||||
|
/// Test parsing KCL.
|
||||||
|
#[test]
|
||||||
|
fn parse() {
|
||||||
|
super::parse(TEST_NAME)
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Test that parsing and unparsing KCL produces the original KCL input.
|
||||||
|
#[tokio::test(flavor = "multi_thread")]
|
||||||
|
async fn unparse() {
|
||||||
|
super::unparse(TEST_NAME).await
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Test that KCL is executed correctly.
|
||||||
|
#[tokio::test(flavor = "multi_thread")]
|
||||||
|
async fn kcl_test_execute() {
|
||||||
|
super::execute(TEST_NAME, true).await
|
||||||
|
}
|
||||||
|
}
|
||||||
mod revolve_colinear {
|
mod revolve_colinear {
|
||||||
const TEST_NAME: &str = "revolve-colinear";
|
const TEST_NAME: &str = "revolve-colinear";
|
||||||
|
|
||||||
|
@ -293,20 +293,6 @@ pub async fn subtract(exec_state: &mut ExecState, args: Args) -> Result<KclValue
|
|||||||
let solids: Vec<Solid> = args.get_unlabeled_kw_arg_typed("solids", &RuntimeType::solids(), exec_state)?;
|
let solids: Vec<Solid> = args.get_unlabeled_kw_arg_typed("solids", &RuntimeType::solids(), exec_state)?;
|
||||||
let tools: Vec<Solid> = args.get_kw_arg_typed("tools", &RuntimeType::solids(), exec_state)?;
|
let tools: Vec<Solid> = args.get_kw_arg_typed("tools", &RuntimeType::solids(), exec_state)?;
|
||||||
|
|
||||||
if solids.len() > 1 {
|
|
||||||
return Err(KclError::UndefinedValue(KclErrorDetails {
|
|
||||||
message: "Only one solid is allowed for a subtract operation, currently.".to_string(),
|
|
||||||
source_ranges: vec![args.source_range],
|
|
||||||
}));
|
|
||||||
}
|
|
||||||
|
|
||||||
if tools.len() > 1 {
|
|
||||||
return Err(KclError::UndefinedValue(KclErrorDetails {
|
|
||||||
message: "Only one tool is allowed for a subtract operation, currently.".to_string(),
|
|
||||||
source_ranges: vec![args.source_range],
|
|
||||||
}));
|
|
||||||
}
|
|
||||||
|
|
||||||
let tolerance: Option<TyF64> = args.get_kw_arg_opt_typed("tolerance", &RuntimeType::length(), exec_state)?;
|
let tolerance: Option<TyF64> = args.get_kw_arg_opt_typed("tolerance", &RuntimeType::length(), exec_state)?;
|
||||||
|
|
||||||
let solids = inner_subtract(solids, tools, tolerance, exec_state, args).await?;
|
let solids = inner_subtract(solids, tools, tolerance, exec_state, args).await?;
|
||||||
|
1050
rust/kcl-lib/tests/multi_target_csg/artifact_commands.snap
Normal file
1050
rust/kcl-lib/tests/multi_target_csg/artifact_commands.snap
Normal file
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,6 @@
|
|||||||
|
---
|
||||||
|
source: kcl-lib/src/simulation_tests.rs
|
||||||
|
description: Artifact graph flowchart multi_target_csg.kcl
|
||||||
|
extension: md
|
||||||
|
snapshot_kind: binary
|
||||||
|
---
|
@ -0,0 +1,466 @@
|
|||||||
|
```mermaid
|
||||||
|
flowchart LR
|
||||||
|
subgraph path5 [Path]
|
||||||
|
5["Path<br>[89, 136, 0]"]
|
||||||
|
%% [ProgramBodyItem { index: 1 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 0 }]
|
||||||
|
10["Segment<br>[142, 163, 0]"]
|
||||||
|
%% [ProgramBodyItem { index: 1 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 1 }]
|
||||||
|
11["Segment<br>[169, 247, 0]"]
|
||||||
|
%% [ProgramBodyItem { index: 1 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 2 }]
|
||||||
|
12["Segment<br>[253, 275, 0]"]
|
||||||
|
%% [ProgramBodyItem { index: 1 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 3 }]
|
||||||
|
13["Segment<br>[281, 362, 0]"]
|
||||||
|
%% [ProgramBodyItem { index: 1 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 4 }]
|
||||||
|
14["Segment<br>[368, 390, 0]"]
|
||||||
|
%% [ProgramBodyItem { index: 1 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 5 }]
|
||||||
|
15["Segment<br>[396, 477, 0]"]
|
||||||
|
%% [ProgramBodyItem { index: 1 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 6 }]
|
||||||
|
16["Segment<br>[483, 504, 0]"]
|
||||||
|
%% [ProgramBodyItem { index: 1 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 7 }]
|
||||||
|
17["Segment<br>[510, 590, 0]"]
|
||||||
|
%% [ProgramBodyItem { index: 1 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 8 }]
|
||||||
|
18["Segment<br>[596, 603, 0]"]
|
||||||
|
%% [ProgramBodyItem { index: 1 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 9 }]
|
||||||
|
34[Solid2d]
|
||||||
|
end
|
||||||
|
subgraph path6 [Path]
|
||||||
|
6["Path<br>[627, 695, 0]"]
|
||||||
|
%% [ProgramBodyItem { index: 1 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 10 }, CallKwArg { index: 0 }]
|
||||||
|
19["Segment<br>[627, 695, 0]"]
|
||||||
|
%% [ProgramBodyItem { index: 1 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 10 }, CallKwArg { index: 0 }]
|
||||||
|
37[Solid2d]
|
||||||
|
end
|
||||||
|
subgraph path7 [Path]
|
||||||
|
7["Path<br>[811, 861, 0]"]
|
||||||
|
%% [ProgramBodyItem { index: 4 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 0 }]
|
||||||
|
20["Segment<br>[867, 898, 0]"]
|
||||||
|
%% [ProgramBodyItem { index: 4 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 1 }]
|
||||||
|
21["Segment<br>[904, 929, 0]"]
|
||||||
|
%% [ProgramBodyItem { index: 4 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 2 }]
|
||||||
|
22["Segment<br>[935, 969, 0]"]
|
||||||
|
%% [ProgramBodyItem { index: 4 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 3 }]
|
||||||
|
23["Segment<br>[975, 1008, 0]"]
|
||||||
|
%% [ProgramBodyItem { index: 4 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 4 }]
|
||||||
|
24["Segment<br>[1014, 1038, 0]"]
|
||||||
|
%% [ProgramBodyItem { index: 4 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 5 }]
|
||||||
|
25["Segment<br>[1044, 1051, 0]"]
|
||||||
|
%% [ProgramBodyItem { index: 4 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 6 }]
|
||||||
|
33[Solid2d]
|
||||||
|
end
|
||||||
|
subgraph path8 [Path]
|
||||||
|
8["Path<br>[1075, 1118, 0]"]
|
||||||
|
%% [ProgramBodyItem { index: 5 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 0 }]
|
||||||
|
26["Segment<br>[1124, 1148, 0]"]
|
||||||
|
%% [ProgramBodyItem { index: 5 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 1 }]
|
||||||
|
27["Segment<br>[1154, 1187, 0]"]
|
||||||
|
%% [ProgramBodyItem { index: 5 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 2 }]
|
||||||
|
28["Segment<br>[1193, 1227, 0]"]
|
||||||
|
%% [ProgramBodyItem { index: 5 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 3 }]
|
||||||
|
29["Segment<br>[1233, 1258, 0]"]
|
||||||
|
%% [ProgramBodyItem { index: 5 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 4 }]
|
||||||
|
30["Segment<br>[1264, 1296, 0]"]
|
||||||
|
%% [ProgramBodyItem { index: 5 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 5 }]
|
||||||
|
31["Segment<br>[1302, 1309, 0]"]
|
||||||
|
%% [ProgramBodyItem { index: 5 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 6 }]
|
||||||
|
36[Solid2d]
|
||||||
|
end
|
||||||
|
subgraph path9 [Path]
|
||||||
|
9["Path<br>[1499, 1562, 0]"]
|
||||||
|
%% [ProgramBodyItem { index: 8 }, VariableDeclarationDeclaration, VariableDeclarationInit]
|
||||||
|
32["Segment<br>[1499, 1562, 0]"]
|
||||||
|
%% [ProgramBodyItem { index: 8 }, VariableDeclarationDeclaration, VariableDeclarationInit]
|
||||||
|
35[Solid2d]
|
||||||
|
end
|
||||||
|
1["Plane<br>[47, 65, 0]"]
|
||||||
|
%% [ProgramBodyItem { index: 0 }, VariableDeclarationDeclaration, VariableDeclarationInit]
|
||||||
|
2["Plane<br>[770, 787, 0]"]
|
||||||
|
%% [ProgramBodyItem { index: 3 }, VariableDeclarationDeclaration, VariableDeclarationInit]
|
||||||
|
3["Plane<br>[1444, 1474, 0]"]
|
||||||
|
%% [ProgramBodyItem { index: 7 }, VariableDeclarationDeclaration, VariableDeclarationInit, CallKwUnlabeledArg]
|
||||||
|
4["StartSketchOnPlane<br>[1430, 1475, 0]"]
|
||||||
|
%% [ProgramBodyItem { index: 7 }, VariableDeclarationDeclaration, VariableDeclarationInit]
|
||||||
|
38["Sweep Extrusion<br>[711, 756, 0]"]
|
||||||
|
%% [ProgramBodyItem { index: 2 }, VariableDeclarationDeclaration, VariableDeclarationInit]
|
||||||
|
39["Sweep Extrusion<br>[1324, 1416, 0]"]
|
||||||
|
%% [ProgramBodyItem { index: 6 }, VariableDeclarationDeclaration, VariableDeclarationInit]
|
||||||
|
40["Sweep Extrusion<br>[1324, 1416, 0]"]
|
||||||
|
%% [ProgramBodyItem { index: 6 }, VariableDeclarationDeclaration, VariableDeclarationInit]
|
||||||
|
41["Sweep Extrusion<br>[1580, 1623, 0]"]
|
||||||
|
%% [ProgramBodyItem { index: 9 }, VariableDeclarationDeclaration, VariableDeclarationInit]
|
||||||
|
42[Wall]
|
||||||
|
%% face_code_ref=Missing NodePath
|
||||||
|
43[Wall]
|
||||||
|
%% face_code_ref=Missing NodePath
|
||||||
|
44[Wall]
|
||||||
|
%% face_code_ref=Missing NodePath
|
||||||
|
45[Wall]
|
||||||
|
%% face_code_ref=Missing NodePath
|
||||||
|
46[Wall]
|
||||||
|
%% face_code_ref=Missing NodePath
|
||||||
|
47[Wall]
|
||||||
|
%% face_code_ref=Missing NodePath
|
||||||
|
48[Wall]
|
||||||
|
%% face_code_ref=Missing NodePath
|
||||||
|
49[Wall]
|
||||||
|
%% face_code_ref=Missing NodePath
|
||||||
|
50[Wall]
|
||||||
|
%% face_code_ref=Missing NodePath
|
||||||
|
51[Wall]
|
||||||
|
%% face_code_ref=Missing NodePath
|
||||||
|
52[Wall]
|
||||||
|
%% face_code_ref=Missing NodePath
|
||||||
|
53[Wall]
|
||||||
|
%% face_code_ref=Missing NodePath
|
||||||
|
54[Wall]
|
||||||
|
%% face_code_ref=Missing NodePath
|
||||||
|
55[Wall]
|
||||||
|
%% face_code_ref=Missing NodePath
|
||||||
|
56[Wall]
|
||||||
|
%% face_code_ref=Missing NodePath
|
||||||
|
57[Wall]
|
||||||
|
%% face_code_ref=Missing NodePath
|
||||||
|
58[Wall]
|
||||||
|
%% face_code_ref=Missing NodePath
|
||||||
|
59[Wall]
|
||||||
|
%% face_code_ref=Missing NodePath
|
||||||
|
60[Wall]
|
||||||
|
%% face_code_ref=Missing NodePath
|
||||||
|
61[Wall]
|
||||||
|
%% face_code_ref=Missing NodePath
|
||||||
|
62[Wall]
|
||||||
|
%% face_code_ref=Missing NodePath
|
||||||
|
63["Cap Start"]
|
||||||
|
%% face_code_ref=Missing NodePath
|
||||||
|
64["Cap Start"]
|
||||||
|
%% face_code_ref=Missing NodePath
|
||||||
|
65["Cap Start"]
|
||||||
|
%% face_code_ref=Missing NodePath
|
||||||
|
66["Cap Start"]
|
||||||
|
%% face_code_ref=Missing NodePath
|
||||||
|
67["Cap End"]
|
||||||
|
%% face_code_ref=Missing NodePath
|
||||||
|
68["Cap End"]
|
||||||
|
%% face_code_ref=Missing NodePath
|
||||||
|
69["Cap End"]
|
||||||
|
%% face_code_ref=Missing NodePath
|
||||||
|
70["Cap End"]
|
||||||
|
%% face_code_ref=Missing NodePath
|
||||||
|
71["SweepEdge Opposite"]
|
||||||
|
72["SweepEdge Opposite"]
|
||||||
|
73["SweepEdge Opposite"]
|
||||||
|
74["SweepEdge Opposite"]
|
||||||
|
75["SweepEdge Opposite"]
|
||||||
|
76["SweepEdge Opposite"]
|
||||||
|
77["SweepEdge Opposite"]
|
||||||
|
78["SweepEdge Opposite"]
|
||||||
|
79["SweepEdge Opposite"]
|
||||||
|
80["SweepEdge Opposite"]
|
||||||
|
81["SweepEdge Opposite"]
|
||||||
|
82["SweepEdge Opposite"]
|
||||||
|
83["SweepEdge Opposite"]
|
||||||
|
84["SweepEdge Opposite"]
|
||||||
|
85["SweepEdge Opposite"]
|
||||||
|
86["SweepEdge Opposite"]
|
||||||
|
87["SweepEdge Opposite"]
|
||||||
|
88["SweepEdge Opposite"]
|
||||||
|
89["SweepEdge Opposite"]
|
||||||
|
90["SweepEdge Opposite"]
|
||||||
|
91["SweepEdge Opposite"]
|
||||||
|
92["SweepEdge Adjacent"]
|
||||||
|
93["SweepEdge Adjacent"]
|
||||||
|
94["SweepEdge Adjacent"]
|
||||||
|
95["SweepEdge Adjacent"]
|
||||||
|
96["SweepEdge Adjacent"]
|
||||||
|
97["SweepEdge Adjacent"]
|
||||||
|
98["SweepEdge Adjacent"]
|
||||||
|
99["SweepEdge Adjacent"]
|
||||||
|
100["SweepEdge Adjacent"]
|
||||||
|
101["SweepEdge Adjacent"]
|
||||||
|
102["SweepEdge Adjacent"]
|
||||||
|
103["SweepEdge Adjacent"]
|
||||||
|
104["SweepEdge Adjacent"]
|
||||||
|
105["SweepEdge Adjacent"]
|
||||||
|
106["SweepEdge Adjacent"]
|
||||||
|
107["SweepEdge Adjacent"]
|
||||||
|
108["SweepEdge Adjacent"]
|
||||||
|
109["SweepEdge Adjacent"]
|
||||||
|
110["SweepEdge Adjacent"]
|
||||||
|
111["SweepEdge Adjacent"]
|
||||||
|
112["SweepEdge Adjacent"]
|
||||||
|
1 --- 5
|
||||||
|
1 --- 6
|
||||||
|
2 --- 7
|
||||||
|
2 --- 8
|
||||||
|
3 <--x 4
|
||||||
|
3 --- 9
|
||||||
|
5 --- 10
|
||||||
|
5 --- 11
|
||||||
|
5 --- 12
|
||||||
|
5 --- 13
|
||||||
|
5 --- 14
|
||||||
|
5 --- 15
|
||||||
|
5 --- 16
|
||||||
|
5 --- 17
|
||||||
|
5 --- 18
|
||||||
|
5 --- 34
|
||||||
|
5 ---- 38
|
||||||
|
6 --- 19
|
||||||
|
6 --- 37
|
||||||
|
7 --- 20
|
||||||
|
7 --- 21
|
||||||
|
7 --- 22
|
||||||
|
7 --- 23
|
||||||
|
7 --- 24
|
||||||
|
7 --- 25
|
||||||
|
7 --- 33
|
||||||
|
7 ---- 40
|
||||||
|
8 --- 26
|
||||||
|
8 --- 27
|
||||||
|
8 --- 28
|
||||||
|
8 --- 29
|
||||||
|
8 --- 30
|
||||||
|
8 --- 31
|
||||||
|
8 --- 36
|
||||||
|
8 ---- 39
|
||||||
|
9 --- 32
|
||||||
|
9 --- 35
|
||||||
|
9 ---- 41
|
||||||
|
10 --- 58
|
||||||
|
10 x--> 65
|
||||||
|
10 --- 91
|
||||||
|
10 --- 112
|
||||||
|
11 --- 57
|
||||||
|
11 x--> 65
|
||||||
|
11 --- 90
|
||||||
|
11 --- 111
|
||||||
|
12 --- 59
|
||||||
|
12 x--> 65
|
||||||
|
12 --- 89
|
||||||
|
12 --- 110
|
||||||
|
13 --- 56
|
||||||
|
13 x--> 65
|
||||||
|
13 --- 88
|
||||||
|
13 --- 109
|
||||||
|
14 --- 55
|
||||||
|
14 x--> 65
|
||||||
|
14 --- 87
|
||||||
|
14 --- 108
|
||||||
|
15 --- 60
|
||||||
|
15 x--> 65
|
||||||
|
15 --- 86
|
||||||
|
15 --- 107
|
||||||
|
16 --- 62
|
||||||
|
16 x--> 65
|
||||||
|
16 --- 85
|
||||||
|
16 --- 106
|
||||||
|
17 --- 61
|
||||||
|
17 x--> 65
|
||||||
|
17 --- 84
|
||||||
|
17 --- 105
|
||||||
|
20 --- 49
|
||||||
|
20 x--> 63
|
||||||
|
20 --- 78
|
||||||
|
20 --- 99
|
||||||
|
21 --- 54
|
||||||
|
21 x--> 63
|
||||||
|
21 --- 79
|
||||||
|
21 --- 100
|
||||||
|
22 --- 52
|
||||||
|
22 x--> 63
|
||||||
|
22 --- 80
|
||||||
|
22 --- 101
|
||||||
|
23 --- 51
|
||||||
|
23 x--> 63
|
||||||
|
23 --- 81
|
||||||
|
23 --- 102
|
||||||
|
24 --- 53
|
||||||
|
24 x--> 63
|
||||||
|
24 --- 82
|
||||||
|
24 --- 103
|
||||||
|
25 --- 50
|
||||||
|
25 x--> 63
|
||||||
|
25 --- 83
|
||||||
|
25 --- 104
|
||||||
|
26 --- 44
|
||||||
|
26 x--> 64
|
||||||
|
26 --- 76
|
||||||
|
26 --- 97
|
||||||
|
27 --- 45
|
||||||
|
27 x--> 64
|
||||||
|
27 --- 75
|
||||||
|
27 --- 96
|
||||||
|
28 --- 47
|
||||||
|
28 x--> 64
|
||||||
|
28 --- 74
|
||||||
|
28 --- 95
|
||||||
|
29 --- 42
|
||||||
|
29 x--> 64
|
||||||
|
29 --- 73
|
||||||
|
29 --- 94
|
||||||
|
30 --- 46
|
||||||
|
30 x--> 64
|
||||||
|
30 --- 72
|
||||||
|
30 --- 93
|
||||||
|
31 --- 43
|
||||||
|
31 x--> 64
|
||||||
|
31 --- 71
|
||||||
|
31 --- 92
|
||||||
|
32 --- 48
|
||||||
|
32 x--> 70
|
||||||
|
32 --- 77
|
||||||
|
32 --- 98
|
||||||
|
38 --- 55
|
||||||
|
38 --- 56
|
||||||
|
38 --- 57
|
||||||
|
38 --- 58
|
||||||
|
38 --- 59
|
||||||
|
38 --- 60
|
||||||
|
38 --- 61
|
||||||
|
38 --- 62
|
||||||
|
38 --- 65
|
||||||
|
38 --- 69
|
||||||
|
38 --- 84
|
||||||
|
38 --- 85
|
||||||
|
38 --- 86
|
||||||
|
38 --- 87
|
||||||
|
38 --- 88
|
||||||
|
38 --- 89
|
||||||
|
38 --- 90
|
||||||
|
38 --- 91
|
||||||
|
38 --- 105
|
||||||
|
38 --- 106
|
||||||
|
38 --- 107
|
||||||
|
38 --- 108
|
||||||
|
38 --- 109
|
||||||
|
38 --- 110
|
||||||
|
38 --- 111
|
||||||
|
38 --- 112
|
||||||
|
39 --- 42
|
||||||
|
39 --- 43
|
||||||
|
39 --- 44
|
||||||
|
39 --- 45
|
||||||
|
39 --- 46
|
||||||
|
39 --- 47
|
||||||
|
39 --- 64
|
||||||
|
39 --- 68
|
||||||
|
39 --- 71
|
||||||
|
39 --- 72
|
||||||
|
39 --- 73
|
||||||
|
39 --- 74
|
||||||
|
39 --- 75
|
||||||
|
39 --- 76
|
||||||
|
39 --- 92
|
||||||
|
39 --- 93
|
||||||
|
39 --- 94
|
||||||
|
39 --- 95
|
||||||
|
39 --- 96
|
||||||
|
39 --- 97
|
||||||
|
40 --- 49
|
||||||
|
40 --- 50
|
||||||
|
40 --- 51
|
||||||
|
40 --- 52
|
||||||
|
40 --- 53
|
||||||
|
40 --- 54
|
||||||
|
40 --- 63
|
||||||
|
40 --- 67
|
||||||
|
40 --- 78
|
||||||
|
40 --- 79
|
||||||
|
40 --- 80
|
||||||
|
40 --- 81
|
||||||
|
40 --- 82
|
||||||
|
40 --- 83
|
||||||
|
40 --- 99
|
||||||
|
40 --- 100
|
||||||
|
40 --- 101
|
||||||
|
40 --- 102
|
||||||
|
40 --- 103
|
||||||
|
40 --- 104
|
||||||
|
41 --- 48
|
||||||
|
41 --- 66
|
||||||
|
41 --- 70
|
||||||
|
41 --- 77
|
||||||
|
41 --- 98
|
||||||
|
42 --- 73
|
||||||
|
42 --- 94
|
||||||
|
95 <--x 42
|
||||||
|
43 --- 71
|
||||||
|
43 --- 92
|
||||||
|
93 <--x 43
|
||||||
|
44 --- 76
|
||||||
|
92 <--x 44
|
||||||
|
44 --- 97
|
||||||
|
45 --- 75
|
||||||
|
45 --- 96
|
||||||
|
97 <--x 45
|
||||||
|
46 --- 72
|
||||||
|
46 --- 93
|
||||||
|
94 <--x 46
|
||||||
|
47 --- 74
|
||||||
|
47 --- 95
|
||||||
|
96 <--x 47
|
||||||
|
48 --- 77
|
||||||
|
48 --- 98
|
||||||
|
49 --- 78
|
||||||
|
49 --- 99
|
||||||
|
104 <--x 49
|
||||||
|
50 --- 83
|
||||||
|
103 <--x 50
|
||||||
|
50 --- 104
|
||||||
|
51 --- 81
|
||||||
|
101 <--x 51
|
||||||
|
51 --- 102
|
||||||
|
52 --- 80
|
||||||
|
100 <--x 52
|
||||||
|
52 --- 101
|
||||||
|
53 --- 82
|
||||||
|
102 <--x 53
|
||||||
|
53 --- 103
|
||||||
|
54 --- 79
|
||||||
|
99 <--x 54
|
||||||
|
54 --- 100
|
||||||
|
55 --- 87
|
||||||
|
55 --- 108
|
||||||
|
109 <--x 55
|
||||||
|
56 --- 88
|
||||||
|
56 --- 109
|
||||||
|
110 <--x 56
|
||||||
|
57 --- 90
|
||||||
|
57 --- 111
|
||||||
|
112 <--x 57
|
||||||
|
58 --- 91
|
||||||
|
105 <--x 58
|
||||||
|
58 --- 112
|
||||||
|
59 --- 89
|
||||||
|
59 --- 110
|
||||||
|
111 <--x 59
|
||||||
|
60 --- 86
|
||||||
|
60 --- 107
|
||||||
|
108 <--x 60
|
||||||
|
61 --- 84
|
||||||
|
61 --- 105
|
||||||
|
106 <--x 61
|
||||||
|
62 --- 85
|
||||||
|
62 --- 106
|
||||||
|
107 <--x 62
|
||||||
|
77 <--x 66
|
||||||
|
78 <--x 67
|
||||||
|
79 <--x 67
|
||||||
|
80 <--x 67
|
||||||
|
81 <--x 67
|
||||||
|
82 <--x 67
|
||||||
|
83 <--x 67
|
||||||
|
71 <--x 68
|
||||||
|
72 <--x 68
|
||||||
|
73 <--x 68
|
||||||
|
74 <--x 68
|
||||||
|
75 <--x 68
|
||||||
|
76 <--x 68
|
||||||
|
84 <--x 69
|
||||||
|
85 <--x 69
|
||||||
|
86 <--x 69
|
||||||
|
87 <--x 69
|
||||||
|
88 <--x 69
|
||||||
|
89 <--x 69
|
||||||
|
90 <--x 69
|
||||||
|
91 <--x 69
|
||||||
|
```
|
3507
rust/kcl-lib/tests/multi_target_csg/ast.snap
Normal file
3507
rust/kcl-lib/tests/multi_target_csg/ast.snap
Normal file
File diff suppressed because it is too large
Load Diff
14
rust/kcl-lib/tests/multi_target_csg/execution_error.snap
Normal file
14
rust/kcl-lib/tests/multi_target_csg/execution_error.snap
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
---
|
||||||
|
source: kcl-lib/src/simulation_tests.rs
|
||||||
|
description: Error from executing multi_target_csg.kcl
|
||||||
|
---
|
||||||
|
KCL Engine error
|
||||||
|
|
||||||
|
× engine: Currently the engine does not support multiple targets on subtract
|
||||||
|
╭─[69:10]
|
||||||
|
68 │
|
||||||
|
69 │ cut000 = subtract(extrude001, tools = cut000Extrude)
|
||||||
|
· ─────────────────────┬─────────────────────
|
||||||
|
· ╰── tests/multi_target_csg/input.kcl
|
||||||
|
70 │
|
||||||
|
╰────
|
89
rust/kcl-lib/tests/multi_target_csg/input.kcl
Normal file
89
rust/kcl-lib/tests/multi_target_csg/input.kcl
Normal file
@ -0,0 +1,89 @@
|
|||||||
|
@settings(defaultLengthUnit = in)
|
||||||
|
|
||||||
|
sketch002 = startSketchOn(-XZ)
|
||||||
|
|
||||||
|
sketch002Profile000 = startProfile(sketch002, at = [-0.1625, 0.1875])
|
||||||
|
|> xLine(length = 0.325)
|
||||||
|
|> arc(
|
||||||
|
angleStart = 90,
|
||||||
|
angleEnd = 0,
|
||||||
|
radius = 0.025,
|
||||||
|
)
|
||||||
|
|> yLine(length = -0.325)
|
||||||
|
|> arc(
|
||||||
|
angleStart = 360,
|
||||||
|
angleEnd = 270,
|
||||||
|
radius = 0.025,
|
||||||
|
)
|
||||||
|
|> xLine(length = -0.325)
|
||||||
|
|> arc(
|
||||||
|
angleStart = 270,
|
||||||
|
angleEnd = 180,
|
||||||
|
radius = 0.025,
|
||||||
|
)
|
||||||
|
|> yLine(length = 0.325)
|
||||||
|
|> arc(
|
||||||
|
angleStart = 180,
|
||||||
|
angleEnd = 90,
|
||||||
|
radius = 0.025,
|
||||||
|
)
|
||||||
|
|> close()
|
||||||
|
|> subtract2d(tool = circle(
|
||||||
|
center = [-0, -0],
|
||||||
|
radius = 0.039062,
|
||||||
|
tag = $hole001
|
||||||
|
))
|
||||||
|
|
||||||
|
extrude000 = extrude(sketch002Profile000, length = 0.0625)
|
||||||
|
|
||||||
|
sketch003 = startSketchOn(XY)
|
||||||
|
|
||||||
|
sketch003Profile000 = startProfile(sketch003, at = [-0.05582, -0.21875])
|
||||||
|
|> line(end = [0.048496, 0.21875])
|
||||||
|
|> xLine(length = -0.087793)
|
||||||
|
|> line(end = [-0.026673, -0.120313])
|
||||||
|
|> line(end = [0.058646, -0.098438])
|
||||||
|
|> xLine(length = 0.007324)
|
||||||
|
|> close()
|
||||||
|
|
||||||
|
sketch003Profile001 = startProfile(sketch003, at = [0.007324, 0])
|
||||||
|
|> xLine(length = 0.087793)
|
||||||
|
|> line(end = [0.026673, -0.120313])
|
||||||
|
|> line(end = [-0.058646, -0.098438])
|
||||||
|
|> xLine(length = -0.007324)
|
||||||
|
|> line(end = [-0.048496, 0.21875])
|
||||||
|
|> close()
|
||||||
|
|
||||||
|
extrude001 = extrude([sketch003Profile000, sketch003Profile001], length = 0.1, bidirectionalLength = 0.1)
|
||||||
|
|
||||||
|
sketch004 = startSketchOn(offsetPlane(-XZ, offset = 0.1))
|
||||||
|
|
||||||
|
sketch004Profile000 = circle(
|
||||||
|
sketch004,
|
||||||
|
center = [-0, -0],
|
||||||
|
radius = 0.039062
|
||||||
|
)
|
||||||
|
|
||||||
|
cut000Extrude = extrude([sketch004Profile000], length = -1)
|
||||||
|
|
||||||
|
cut000 = subtract(extrude001, tools = cut000Extrude)
|
||||||
|
|
||||||
|
sketch005 = startSketchOn(offsetPlane(-XZ, offset = 0.07))
|
||||||
|
|
||||||
|
sketch005Profile000 = circle(
|
||||||
|
sketch005,
|
||||||
|
center = [0, 0],
|
||||||
|
radius = 0.052734
|
||||||
|
)
|
||||||
|
|
||||||
|
sketch006 = startSketchOn(offsetPlane(-XZ, offset = 0.0325))
|
||||||
|
|
||||||
|
sketch006Profile000 = circle(
|
||||||
|
sketch006,
|
||||||
|
center = [0, 0],
|
||||||
|
radius = 0.03
|
||||||
|
)
|
||||||
|
|
||||||
|
draftCut000Extrude = loft([sketch005Profile000, sketch006Profile000])
|
||||||
|
|
||||||
|
draftCut000 = subtract(extrude000, tools = draftCut000Extrude)
|
265
rust/kcl-lib/tests/multi_target_csg/ops.snap
Normal file
265
rust/kcl-lib/tests/multi_target_csg/ops.snap
Normal file
@ -0,0 +1,265 @@
|
|||||||
|
---
|
||||||
|
source: kcl-lib/src/simulation_tests.rs
|
||||||
|
description: Operations executed multi_target_csg.kcl
|
||||||
|
---
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"labeledArgs": {},
|
||||||
|
"name": "startSketchOn",
|
||||||
|
"sourceRange": [],
|
||||||
|
"type": "StdLibCall",
|
||||||
|
"unlabeledArg": {
|
||||||
|
"value": {
|
||||||
|
"type": "Plane",
|
||||||
|
"artifact_id": "[uuid]"
|
||||||
|
},
|
||||||
|
"sourceRange": []
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"labeledArgs": {
|
||||||
|
"tool": {
|
||||||
|
"value": {
|
||||||
|
"type": "Sketch",
|
||||||
|
"value": {
|
||||||
|
"artifactId": "[uuid]"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"sourceRange": []
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"name": "subtract2d",
|
||||||
|
"sourceRange": [],
|
||||||
|
"type": "StdLibCall",
|
||||||
|
"unlabeledArg": {
|
||||||
|
"value": {
|
||||||
|
"type": "Sketch",
|
||||||
|
"value": {
|
||||||
|
"artifactId": "[uuid]"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"sourceRange": []
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"labeledArgs": {
|
||||||
|
"length": {
|
||||||
|
"value": {
|
||||||
|
"type": "Number",
|
||||||
|
"value": 0.0625,
|
||||||
|
"ty": {
|
||||||
|
"type": "Default",
|
||||||
|
"len": {
|
||||||
|
"type": "Inches"
|
||||||
|
},
|
||||||
|
"angle": {
|
||||||
|
"type": "Degrees"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"sourceRange": []
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"name": "extrude",
|
||||||
|
"sourceRange": [],
|
||||||
|
"type": "StdLibCall",
|
||||||
|
"unlabeledArg": {
|
||||||
|
"value": {
|
||||||
|
"type": "Sketch",
|
||||||
|
"value": {
|
||||||
|
"artifactId": "[uuid]"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"sourceRange": []
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"labeledArgs": {},
|
||||||
|
"name": "startSketchOn",
|
||||||
|
"sourceRange": [],
|
||||||
|
"type": "StdLibCall",
|
||||||
|
"unlabeledArg": {
|
||||||
|
"value": {
|
||||||
|
"type": "Plane",
|
||||||
|
"artifact_id": "[uuid]"
|
||||||
|
},
|
||||||
|
"sourceRange": []
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"labeledArgs": {
|
||||||
|
"bidirectionalLength": {
|
||||||
|
"value": {
|
||||||
|
"type": "Number",
|
||||||
|
"value": 0.1,
|
||||||
|
"ty": {
|
||||||
|
"type": "Default",
|
||||||
|
"len": {
|
||||||
|
"type": "Inches"
|
||||||
|
},
|
||||||
|
"angle": {
|
||||||
|
"type": "Degrees"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"sourceRange": []
|
||||||
|
},
|
||||||
|
"length": {
|
||||||
|
"value": {
|
||||||
|
"type": "Number",
|
||||||
|
"value": 0.1,
|
||||||
|
"ty": {
|
||||||
|
"type": "Default",
|
||||||
|
"len": {
|
||||||
|
"type": "Inches"
|
||||||
|
},
|
||||||
|
"angle": {
|
||||||
|
"type": "Degrees"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"sourceRange": []
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"name": "extrude",
|
||||||
|
"sourceRange": [],
|
||||||
|
"type": "StdLibCall",
|
||||||
|
"unlabeledArg": {
|
||||||
|
"value": {
|
||||||
|
"type": "Array",
|
||||||
|
"value": [
|
||||||
|
{
|
||||||
|
"type": "Sketch",
|
||||||
|
"value": {
|
||||||
|
"artifactId": "[uuid]"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "Sketch",
|
||||||
|
"value": {
|
||||||
|
"artifactId": "[uuid]"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"sourceRange": []
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"labeledArgs": {},
|
||||||
|
"name": "startSketchOn",
|
||||||
|
"sourceRange": [],
|
||||||
|
"type": "StdLibCall",
|
||||||
|
"unlabeledArg": {
|
||||||
|
"value": {
|
||||||
|
"type": "Plane",
|
||||||
|
"artifact_id": "[uuid]"
|
||||||
|
},
|
||||||
|
"sourceRange": []
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "KclStdLibCall",
|
||||||
|
"name": "offsetPlane",
|
||||||
|
"unlabeledArg": {
|
||||||
|
"value": {
|
||||||
|
"type": "Plane",
|
||||||
|
"artifact_id": "[uuid]"
|
||||||
|
},
|
||||||
|
"sourceRange": []
|
||||||
|
},
|
||||||
|
"labeledArgs": {
|
||||||
|
"offset": {
|
||||||
|
"value": {
|
||||||
|
"type": "Number",
|
||||||
|
"value": 0.1,
|
||||||
|
"ty": {
|
||||||
|
"type": "Default",
|
||||||
|
"len": {
|
||||||
|
"type": "Inches"
|
||||||
|
},
|
||||||
|
"angle": {
|
||||||
|
"type": "Degrees"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"sourceRange": []
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"sourceRange": []
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"labeledArgs": {
|
||||||
|
"length": {
|
||||||
|
"value": {
|
||||||
|
"type": "Number",
|
||||||
|
"value": -1.0,
|
||||||
|
"ty": {
|
||||||
|
"type": "Default",
|
||||||
|
"len": {
|
||||||
|
"type": "Inches"
|
||||||
|
},
|
||||||
|
"angle": {
|
||||||
|
"type": "Degrees"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"sourceRange": []
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"name": "extrude",
|
||||||
|
"sourceRange": [],
|
||||||
|
"type": "StdLibCall",
|
||||||
|
"unlabeledArg": {
|
||||||
|
"value": {
|
||||||
|
"type": "Array",
|
||||||
|
"value": [
|
||||||
|
{
|
||||||
|
"type": "Sketch",
|
||||||
|
"value": {
|
||||||
|
"artifactId": "[uuid]"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"sourceRange": []
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"isError": true,
|
||||||
|
"labeledArgs": {
|
||||||
|
"tools": {
|
||||||
|
"value": {
|
||||||
|
"type": "Solid",
|
||||||
|
"value": {
|
||||||
|
"artifactId": "[uuid]"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"sourceRange": []
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"name": "subtract",
|
||||||
|
"sourceRange": [],
|
||||||
|
"type": "StdLibCall",
|
||||||
|
"unlabeledArg": {
|
||||||
|
"value": {
|
||||||
|
"type": "Array",
|
||||||
|
"value": [
|
||||||
|
{
|
||||||
|
"type": "Solid",
|
||||||
|
"value": {
|
||||||
|
"artifactId": "[uuid]"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "Solid",
|
||||||
|
"value": {
|
||||||
|
"artifactId": "[uuid]"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"sourceRange": []
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
71
rust/kcl-lib/tests/multi_target_csg/unparsed.snap
Normal file
71
rust/kcl-lib/tests/multi_target_csg/unparsed.snap
Normal file
@ -0,0 +1,71 @@
|
|||||||
|
---
|
||||||
|
source: kcl-lib/src/simulation_tests.rs
|
||||||
|
description: Result of unparsing multi_target_csg.kcl
|
||||||
|
---
|
||||||
|
@settings(defaultLengthUnit = in)
|
||||||
|
|
||||||
|
sketch002 = startSketchOn(-XZ)
|
||||||
|
|
||||||
|
sketch002Profile000 = startProfile(sketch002, at = [-0.1625, 0.1875])
|
||||||
|
|> xLine(length = 0.325)
|
||||||
|
|> arc(angleStart = 90, angleEnd = 0, radius = 0.025)
|
||||||
|
|> yLine(length = -0.325)
|
||||||
|
|> arc(angleStart = 360, angleEnd = 270, radius = 0.025)
|
||||||
|
|> xLine(length = -0.325)
|
||||||
|
|> arc(angleStart = 270, angleEnd = 180, radius = 0.025)
|
||||||
|
|> yLine(length = 0.325)
|
||||||
|
|> arc(angleStart = 180, angleEnd = 90, radius = 0.025)
|
||||||
|
|> close()
|
||||||
|
|> subtract2d(tool = circle(center = [-0, -0], radius = 0.039062, tag = $hole001))
|
||||||
|
|
||||||
|
extrude000 = extrude(sketch002Profile000, length = 0.0625)
|
||||||
|
|
||||||
|
sketch003 = startSketchOn(XY)
|
||||||
|
|
||||||
|
sketch003Profile000 = startProfile(sketch003, at = [-0.05582, -0.21875])
|
||||||
|
|> line(end = [0.048496, 0.21875])
|
||||||
|
|> xLine(length = -0.087793)
|
||||||
|
|> line(end = [-0.026673, -0.120313])
|
||||||
|
|> line(end = [0.058646, -0.098438])
|
||||||
|
|> xLine(length = 0.007324)
|
||||||
|
|> close()
|
||||||
|
|
||||||
|
sketch003Profile001 = startProfile(sketch003, at = [0.007324, 0])
|
||||||
|
|> xLine(length = 0.087793)
|
||||||
|
|> line(end = [0.026673, -0.120313])
|
||||||
|
|> line(end = [-0.058646, -0.098438])
|
||||||
|
|> xLine(length = -0.007324)
|
||||||
|
|> line(end = [-0.048496, 0.21875])
|
||||||
|
|> close()
|
||||||
|
|
||||||
|
extrude001 = extrude(
|
||||||
|
[
|
||||||
|
sketch003Profile000,
|
||||||
|
sketch003Profile001
|
||||||
|
],
|
||||||
|
length = 0.1,
|
||||||
|
bidirectionalLength = 0.1,
|
||||||
|
)
|
||||||
|
|
||||||
|
sketch004 = startSketchOn(offsetPlane(-XZ, offset = 0.1))
|
||||||
|
|
||||||
|
sketch004Profile000 = circle(sketch004, center = [-0, -0], radius = 0.039062)
|
||||||
|
|
||||||
|
cut000Extrude = extrude([sketch004Profile000], length = -1)
|
||||||
|
|
||||||
|
cut000 = subtract(extrude001, tools = cut000Extrude)
|
||||||
|
|
||||||
|
sketch005 = startSketchOn(offsetPlane(-XZ, offset = 0.07))
|
||||||
|
|
||||||
|
sketch005Profile000 = circle(sketch005, center = [0, 0], radius = 0.052734)
|
||||||
|
|
||||||
|
sketch006 = startSketchOn(offsetPlane(-XZ, offset = 0.0325))
|
||||||
|
|
||||||
|
sketch006Profile000 = circle(sketch006, center = [0, 0], radius = 0.03)
|
||||||
|
|
||||||
|
draftCut000Extrude = loft([
|
||||||
|
sketch005Profile000,
|
||||||
|
sketch006Profile000
|
||||||
|
])
|
||||||
|
|
||||||
|
draftCut000 = subtract(extrude000, tools = draftCut000Extrude)
|
717
rust/kcl-lib/tests/subtract_with_pattern/artifact_commands.snap
Normal file
717
rust/kcl-lib/tests/subtract_with_pattern/artifact_commands.snap
Normal file
@ -0,0 +1,717 @@
|
|||||||
|
---
|
||||||
|
source: kcl-lib/src/simulation_tests.rs
|
||||||
|
description: Artifact commands subtract_with_pattern.kcl
|
||||||
|
---
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"cmdId": "[uuid]",
|
||||||
|
"range": [],
|
||||||
|
"command": {
|
||||||
|
"type": "edge_lines_visible",
|
||||||
|
"hidden": false
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmdId": "[uuid]",
|
||||||
|
"range": [],
|
||||||
|
"command": {
|
||||||
|
"type": "object_visible",
|
||||||
|
"object_id": "[uuid]",
|
||||||
|
"hidden": true
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmdId": "[uuid]",
|
||||||
|
"range": [],
|
||||||
|
"command": {
|
||||||
|
"type": "object_visible",
|
||||||
|
"object_id": "[uuid]",
|
||||||
|
"hidden": true
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmdId": "[uuid]",
|
||||||
|
"range": [],
|
||||||
|
"command": {
|
||||||
|
"type": "make_plane",
|
||||||
|
"origin": {
|
||||||
|
"x": 0.0,
|
||||||
|
"y": 0.0,
|
||||||
|
"z": 0.0
|
||||||
|
},
|
||||||
|
"x_axis": {
|
||||||
|
"x": 1.0,
|
||||||
|
"y": 0.0,
|
||||||
|
"z": 0.0
|
||||||
|
},
|
||||||
|
"y_axis": {
|
||||||
|
"x": 0.0,
|
||||||
|
"y": 1.0,
|
||||||
|
"z": 0.0
|
||||||
|
},
|
||||||
|
"size": 60.0,
|
||||||
|
"clobber": false,
|
||||||
|
"hide": true
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmdId": "[uuid]",
|
||||||
|
"range": [],
|
||||||
|
"command": {
|
||||||
|
"type": "enable_sketch_mode",
|
||||||
|
"entity_id": "[uuid]",
|
||||||
|
"ortho": false,
|
||||||
|
"animated": false,
|
||||||
|
"adjust_camera": false,
|
||||||
|
"planar_normal": {
|
||||||
|
"x": 0.0,
|
||||||
|
"y": 0.0,
|
||||||
|
"z": 1.0
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmdId": "[uuid]",
|
||||||
|
"range": [],
|
||||||
|
"command": {
|
||||||
|
"type": "move_path_pen",
|
||||||
|
"path": "[uuid]",
|
||||||
|
"to": {
|
||||||
|
"x": 2.65,
|
||||||
|
"y": 12.2,
|
||||||
|
"z": 0.0
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmdId": "[uuid]",
|
||||||
|
"range": [],
|
||||||
|
"command": {
|
||||||
|
"type": "sketch_mode_disable"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmdId": "[uuid]",
|
||||||
|
"range": [],
|
||||||
|
"command": {
|
||||||
|
"type": "start_path"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmdId": "[uuid]",
|
||||||
|
"range": [],
|
||||||
|
"command": {
|
||||||
|
"type": "extend_path",
|
||||||
|
"path": "[uuid]",
|
||||||
|
"segment": {
|
||||||
|
"type": "line",
|
||||||
|
"end": {
|
||||||
|
"x": 23.49,
|
||||||
|
"y": 0.0,
|
||||||
|
"z": 0.0
|
||||||
|
},
|
||||||
|
"relative": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmdId": "[uuid]",
|
||||||
|
"range": [],
|
||||||
|
"command": {
|
||||||
|
"type": "extend_path",
|
||||||
|
"path": "[uuid]",
|
||||||
|
"segment": {
|
||||||
|
"type": "line",
|
||||||
|
"end": {
|
||||||
|
"x": 0.0,
|
||||||
|
"y": -22.68,
|
||||||
|
"z": 0.0
|
||||||
|
},
|
||||||
|
"relative": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmdId": "[uuid]",
|
||||||
|
"range": [],
|
||||||
|
"command": {
|
||||||
|
"type": "extend_path",
|
||||||
|
"path": "[uuid]",
|
||||||
|
"segment": {
|
||||||
|
"type": "line",
|
||||||
|
"end": {
|
||||||
|
"x": -24.2,
|
||||||
|
"y": 0.0,
|
||||||
|
"z": 0.0
|
||||||
|
},
|
||||||
|
"relative": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmdId": "[uuid]",
|
||||||
|
"range": [],
|
||||||
|
"command": {
|
||||||
|
"type": "extend_path",
|
||||||
|
"path": "[uuid]",
|
||||||
|
"segment": {
|
||||||
|
"type": "line",
|
||||||
|
"end": {
|
||||||
|
"x": 2.65,
|
||||||
|
"y": 12.2,
|
||||||
|
"z": 0.0
|
||||||
|
},
|
||||||
|
"relative": false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmdId": "[uuid]",
|
||||||
|
"range": [],
|
||||||
|
"command": {
|
||||||
|
"type": "close_path",
|
||||||
|
"path_id": "[uuid]"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmdId": "[uuid]",
|
||||||
|
"range": [],
|
||||||
|
"command": {
|
||||||
|
"type": "enable_sketch_mode",
|
||||||
|
"entity_id": "[uuid]",
|
||||||
|
"ortho": false,
|
||||||
|
"animated": false,
|
||||||
|
"adjust_camera": false,
|
||||||
|
"planar_normal": {
|
||||||
|
"x": 0.0,
|
||||||
|
"y": 0.0,
|
||||||
|
"z": 1.0
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmdId": "[uuid]",
|
||||||
|
"range": [],
|
||||||
|
"command": {
|
||||||
|
"type": "extrude",
|
||||||
|
"target": "[uuid]",
|
||||||
|
"distance": 500.0,
|
||||||
|
"faces": null,
|
||||||
|
"opposite": "None"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmdId": "[uuid]",
|
||||||
|
"range": [],
|
||||||
|
"command": {
|
||||||
|
"type": "object_bring_to_front",
|
||||||
|
"object_id": "[uuid]"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmdId": "[uuid]",
|
||||||
|
"range": [],
|
||||||
|
"command": {
|
||||||
|
"type": "sketch_mode_disable"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmdId": "[uuid]",
|
||||||
|
"range": [],
|
||||||
|
"command": {
|
||||||
|
"type": "solid3d_get_adjacency_info",
|
||||||
|
"object_id": "[uuid]",
|
||||||
|
"edge_id": "[uuid]"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmdId": "[uuid]",
|
||||||
|
"range": [],
|
||||||
|
"command": {
|
||||||
|
"type": "solid3d_get_extrusion_face_info",
|
||||||
|
"object_id": "[uuid]",
|
||||||
|
"edge_id": "[uuid]"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmdId": "[uuid]",
|
||||||
|
"range": [],
|
||||||
|
"command": {
|
||||||
|
"type": "make_plane",
|
||||||
|
"origin": {
|
||||||
|
"x": 0.0,
|
||||||
|
"y": 0.0,
|
||||||
|
"z": 0.0
|
||||||
|
},
|
||||||
|
"x_axis": {
|
||||||
|
"x": 1.0,
|
||||||
|
"y": 0.0,
|
||||||
|
"z": 0.0
|
||||||
|
},
|
||||||
|
"y_axis": {
|
||||||
|
"x": 0.0,
|
||||||
|
"y": 0.0,
|
||||||
|
"z": 1.0
|
||||||
|
},
|
||||||
|
"size": 60.0,
|
||||||
|
"clobber": false,
|
||||||
|
"hide": true
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmdId": "[uuid]",
|
||||||
|
"range": [],
|
||||||
|
"command": {
|
||||||
|
"type": "close_path",
|
||||||
|
"path_id": "[uuid]"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmdId": "[uuid]",
|
||||||
|
"range": [],
|
||||||
|
"command": {
|
||||||
|
"type": "enable_sketch_mode",
|
||||||
|
"entity_id": "[uuid]",
|
||||||
|
"ortho": false,
|
||||||
|
"animated": false,
|
||||||
|
"adjust_camera": false,
|
||||||
|
"planar_normal": {
|
||||||
|
"x": 0.0,
|
||||||
|
"y": -1.0,
|
||||||
|
"z": 0.0
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmdId": "[uuid]",
|
||||||
|
"range": [],
|
||||||
|
"command": {
|
||||||
|
"type": "extend_path",
|
||||||
|
"path": "[uuid]",
|
||||||
|
"segment": {
|
||||||
|
"type": "arc",
|
||||||
|
"center": {
|
||||||
|
"x": 17.5,
|
||||||
|
"y": 22.02
|
||||||
|
},
|
||||||
|
"radius": 10.16,
|
||||||
|
"start": {
|
||||||
|
"unit": "degrees",
|
||||||
|
"value": 0.0
|
||||||
|
},
|
||||||
|
"end": {
|
||||||
|
"unit": "degrees",
|
||||||
|
"value": 360.0
|
||||||
|
},
|
||||||
|
"relative": false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmdId": "[uuid]",
|
||||||
|
"range": [],
|
||||||
|
"command": {
|
||||||
|
"type": "move_path_pen",
|
||||||
|
"path": "[uuid]",
|
||||||
|
"to": {
|
||||||
|
"x": 27.66,
|
||||||
|
"y": 22.02,
|
||||||
|
"z": 0.0
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmdId": "[uuid]",
|
||||||
|
"range": [],
|
||||||
|
"command": {
|
||||||
|
"type": "sketch_mode_disable"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmdId": "[uuid]",
|
||||||
|
"range": [],
|
||||||
|
"command": {
|
||||||
|
"type": "start_path"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmdId": "[uuid]",
|
||||||
|
"range": [],
|
||||||
|
"command": {
|
||||||
|
"type": "enable_sketch_mode",
|
||||||
|
"entity_id": "[uuid]",
|
||||||
|
"ortho": false,
|
||||||
|
"animated": false,
|
||||||
|
"adjust_camera": false,
|
||||||
|
"planar_normal": {
|
||||||
|
"x": 0.0,
|
||||||
|
"y": -1.0,
|
||||||
|
"z": 0.0
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmdId": "[uuid]",
|
||||||
|
"range": [],
|
||||||
|
"command": {
|
||||||
|
"type": "extrude",
|
||||||
|
"target": "[uuid]",
|
||||||
|
"distance": 50.0,
|
||||||
|
"faces": null,
|
||||||
|
"opposite": "None"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmdId": "[uuid]",
|
||||||
|
"range": [],
|
||||||
|
"command": {
|
||||||
|
"type": "object_bring_to_front",
|
||||||
|
"object_id": "[uuid]"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmdId": "[uuid]",
|
||||||
|
"range": [],
|
||||||
|
"command": {
|
||||||
|
"type": "sketch_mode_disable"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmdId": "[uuid]",
|
||||||
|
"range": [],
|
||||||
|
"command": {
|
||||||
|
"type": "solid3d_get_adjacency_info",
|
||||||
|
"object_id": "[uuid]",
|
||||||
|
"edge_id": "[uuid]"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmdId": "[uuid]",
|
||||||
|
"range": [],
|
||||||
|
"command": {
|
||||||
|
"type": "solid3d_get_extrusion_face_info",
|
||||||
|
"object_id": "[uuid]",
|
||||||
|
"edge_id": "[uuid]"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmdId": "[uuid]",
|
||||||
|
"range": [],
|
||||||
|
"command": {
|
||||||
|
"type": "entity_linear_pattern_transform",
|
||||||
|
"entity_id": "[uuid]",
|
||||||
|
"transform": [],
|
||||||
|
"transforms": [
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"translate": {
|
||||||
|
"x": 0.0,
|
||||||
|
"y": 0.0,
|
||||||
|
"z": 30.0
|
||||||
|
},
|
||||||
|
"scale": {
|
||||||
|
"x": 1.0,
|
||||||
|
"y": 1.0,
|
||||||
|
"z": 1.0
|
||||||
|
},
|
||||||
|
"rotation": {
|
||||||
|
"axis": {
|
||||||
|
"x": 0.0,
|
||||||
|
"y": 0.0,
|
||||||
|
"z": 1.0
|
||||||
|
},
|
||||||
|
"angle": {
|
||||||
|
"unit": "degrees",
|
||||||
|
"value": 0.0
|
||||||
|
},
|
||||||
|
"origin": {
|
||||||
|
"type": "local"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"replicate": true
|
||||||
|
}
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"translate": {
|
||||||
|
"x": 0.0,
|
||||||
|
"y": 0.0,
|
||||||
|
"z": 60.0
|
||||||
|
},
|
||||||
|
"scale": {
|
||||||
|
"x": 1.0,
|
||||||
|
"y": 1.0,
|
||||||
|
"z": 1.0
|
||||||
|
},
|
||||||
|
"rotation": {
|
||||||
|
"axis": {
|
||||||
|
"x": 0.0,
|
||||||
|
"y": 0.0,
|
||||||
|
"z": 1.0
|
||||||
|
},
|
||||||
|
"angle": {
|
||||||
|
"unit": "degrees",
|
||||||
|
"value": 0.0
|
||||||
|
},
|
||||||
|
"origin": {
|
||||||
|
"type": "local"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"replicate": true
|
||||||
|
}
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"translate": {
|
||||||
|
"x": 0.0,
|
||||||
|
"y": 0.0,
|
||||||
|
"z": 90.0
|
||||||
|
},
|
||||||
|
"scale": {
|
||||||
|
"x": 1.0,
|
||||||
|
"y": 1.0,
|
||||||
|
"z": 1.0
|
||||||
|
},
|
||||||
|
"rotation": {
|
||||||
|
"axis": {
|
||||||
|
"x": 0.0,
|
||||||
|
"y": 0.0,
|
||||||
|
"z": 1.0
|
||||||
|
},
|
||||||
|
"angle": {
|
||||||
|
"unit": "degrees",
|
||||||
|
"value": 0.0
|
||||||
|
},
|
||||||
|
"origin": {
|
||||||
|
"type": "local"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"replicate": true
|
||||||
|
}
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"translate": {
|
||||||
|
"x": 0.0,
|
||||||
|
"y": 0.0,
|
||||||
|
"z": 120.0
|
||||||
|
},
|
||||||
|
"scale": {
|
||||||
|
"x": 1.0,
|
||||||
|
"y": 1.0,
|
||||||
|
"z": 1.0
|
||||||
|
},
|
||||||
|
"rotation": {
|
||||||
|
"axis": {
|
||||||
|
"x": 0.0,
|
||||||
|
"y": 0.0,
|
||||||
|
"z": 1.0
|
||||||
|
},
|
||||||
|
"angle": {
|
||||||
|
"unit": "degrees",
|
||||||
|
"value": 0.0
|
||||||
|
},
|
||||||
|
"origin": {
|
||||||
|
"type": "local"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"replicate": true
|
||||||
|
}
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"translate": {
|
||||||
|
"x": 0.0,
|
||||||
|
"y": 0.0,
|
||||||
|
"z": 150.0
|
||||||
|
},
|
||||||
|
"scale": {
|
||||||
|
"x": 1.0,
|
||||||
|
"y": 1.0,
|
||||||
|
"z": 1.0
|
||||||
|
},
|
||||||
|
"rotation": {
|
||||||
|
"axis": {
|
||||||
|
"x": 0.0,
|
||||||
|
"y": 0.0,
|
||||||
|
"z": 1.0
|
||||||
|
},
|
||||||
|
"angle": {
|
||||||
|
"unit": "degrees",
|
||||||
|
"value": 0.0
|
||||||
|
},
|
||||||
|
"origin": {
|
||||||
|
"type": "local"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"replicate": true
|
||||||
|
}
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"translate": {
|
||||||
|
"x": 0.0,
|
||||||
|
"y": 0.0,
|
||||||
|
"z": 180.0
|
||||||
|
},
|
||||||
|
"scale": {
|
||||||
|
"x": 1.0,
|
||||||
|
"y": 1.0,
|
||||||
|
"z": 1.0
|
||||||
|
},
|
||||||
|
"rotation": {
|
||||||
|
"axis": {
|
||||||
|
"x": 0.0,
|
||||||
|
"y": 0.0,
|
||||||
|
"z": 1.0
|
||||||
|
},
|
||||||
|
"angle": {
|
||||||
|
"unit": "degrees",
|
||||||
|
"value": 0.0
|
||||||
|
},
|
||||||
|
"origin": {
|
||||||
|
"type": "local"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"replicate": true
|
||||||
|
}
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"translate": {
|
||||||
|
"x": 0.0,
|
||||||
|
"y": 0.0,
|
||||||
|
"z": 210.0
|
||||||
|
},
|
||||||
|
"scale": {
|
||||||
|
"x": 1.0,
|
||||||
|
"y": 1.0,
|
||||||
|
"z": 1.0
|
||||||
|
},
|
||||||
|
"rotation": {
|
||||||
|
"axis": {
|
||||||
|
"x": 0.0,
|
||||||
|
"y": 0.0,
|
||||||
|
"z": 1.0
|
||||||
|
},
|
||||||
|
"angle": {
|
||||||
|
"unit": "degrees",
|
||||||
|
"value": 0.0
|
||||||
|
},
|
||||||
|
"origin": {
|
||||||
|
"type": "local"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"replicate": true
|
||||||
|
}
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"translate": {
|
||||||
|
"x": 0.0,
|
||||||
|
"y": 0.0,
|
||||||
|
"z": 240.0
|
||||||
|
},
|
||||||
|
"scale": {
|
||||||
|
"x": 1.0,
|
||||||
|
"y": 1.0,
|
||||||
|
"z": 1.0
|
||||||
|
},
|
||||||
|
"rotation": {
|
||||||
|
"axis": {
|
||||||
|
"x": 0.0,
|
||||||
|
"y": 0.0,
|
||||||
|
"z": 1.0
|
||||||
|
},
|
||||||
|
"angle": {
|
||||||
|
"unit": "degrees",
|
||||||
|
"value": 0.0
|
||||||
|
},
|
||||||
|
"origin": {
|
||||||
|
"type": "local"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"replicate": true
|
||||||
|
}
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"translate": {
|
||||||
|
"x": 0.0,
|
||||||
|
"y": 0.0,
|
||||||
|
"z": 270.0
|
||||||
|
},
|
||||||
|
"scale": {
|
||||||
|
"x": 1.0,
|
||||||
|
"y": 1.0,
|
||||||
|
"z": 1.0
|
||||||
|
},
|
||||||
|
"rotation": {
|
||||||
|
"axis": {
|
||||||
|
"x": 0.0,
|
||||||
|
"y": 0.0,
|
||||||
|
"z": 1.0
|
||||||
|
},
|
||||||
|
"angle": {
|
||||||
|
"unit": "degrees",
|
||||||
|
"value": 0.0
|
||||||
|
},
|
||||||
|
"origin": {
|
||||||
|
"type": "local"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"replicate": true
|
||||||
|
}
|
||||||
|
]
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmdId": "[uuid]",
|
||||||
|
"range": [],
|
||||||
|
"command": {
|
||||||
|
"type": "boolean_subtract",
|
||||||
|
"target_ids": [
|
||||||
|
"[uuid]"
|
||||||
|
],
|
||||||
|
"tool_ids": [
|
||||||
|
"[uuid]",
|
||||||
|
"[uuid]",
|
||||||
|
"[uuid]",
|
||||||
|
"[uuid]",
|
||||||
|
"[uuid]",
|
||||||
|
"[uuid]",
|
||||||
|
"[uuid]",
|
||||||
|
"[uuid]",
|
||||||
|
"[uuid]",
|
||||||
|
"[uuid]"
|
||||||
|
],
|
||||||
|
"tolerance": 0.0000001
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmdId": "[uuid]",
|
||||||
|
"range": [],
|
||||||
|
"command": {
|
||||||
|
"type": "set_object_transform",
|
||||||
|
"object_id": "[uuid]",
|
||||||
|
"transforms": [
|
||||||
|
{
|
||||||
|
"translate": null,
|
||||||
|
"rotate_rpy": null,
|
||||||
|
"rotate_angle_axis": {
|
||||||
|
"property": {
|
||||||
|
"x": 0.0,
|
||||||
|
"y": 1.0,
|
||||||
|
"z": 0.0,
|
||||||
|
"w": 90.0
|
||||||
|
},
|
||||||
|
"set": false,
|
||||||
|
"is_local": true
|
||||||
|
},
|
||||||
|
"scale": null
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
@ -0,0 +1,6 @@
|
|||||||
|
---
|
||||||
|
source: kcl-lib/src/simulation_tests.rs
|
||||||
|
description: Artifact graph flowchart subtract_with_pattern.kcl
|
||||||
|
extension: md
|
||||||
|
snapshot_kind: binary
|
||||||
|
---
|
@ -0,0 +1,135 @@
|
|||||||
|
```mermaid
|
||||||
|
flowchart LR
|
||||||
|
subgraph path3 [Path]
|
||||||
|
3["Path<br>[43, 85, 0]"]
|
||||||
|
%% [ProgramBodyItem { index: 1 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 0 }]
|
||||||
|
5["Segment<br>[93, 114, 0]"]
|
||||||
|
%% [ProgramBodyItem { index: 1 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 1 }]
|
||||||
|
6["Segment<br>[122, 144, 0]"]
|
||||||
|
%% [ProgramBodyItem { index: 1 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 2 }]
|
||||||
|
7["Segment<br>[152, 173, 0]"]
|
||||||
|
%% [ProgramBodyItem { index: 1 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 3 }]
|
||||||
|
8["Segment<br>[181, 237, 0]"]
|
||||||
|
%% [ProgramBodyItem { index: 1 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 4 }]
|
||||||
|
9["Segment<br>[245, 252, 0]"]
|
||||||
|
%% [ProgramBodyItem { index: 1 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 5 }]
|
||||||
|
12[Solid2d]
|
||||||
|
end
|
||||||
|
subgraph path4 [Path]
|
||||||
|
4["Path<br>[349, 406, 0]"]
|
||||||
|
%% [ProgramBodyItem { index: 4 }, VariableDeclarationDeclaration, VariableDeclarationInit]
|
||||||
|
10["Segment<br>[349, 406, 0]"]
|
||||||
|
%% [ProgramBodyItem { index: 4 }, VariableDeclarationDeclaration, VariableDeclarationInit]
|
||||||
|
11[Solid2d]
|
||||||
|
end
|
||||||
|
1["Plane<br>[12, 29, 0]"]
|
||||||
|
%% [ProgramBodyItem { index: 0 }, VariableDeclarationDeclaration, VariableDeclarationInit]
|
||||||
|
2["Plane<br>[317, 334, 0]"]
|
||||||
|
%% [ProgramBodyItem { index: 3 }, VariableDeclarationDeclaration, VariableDeclarationInit]
|
||||||
|
13["Sweep Extrusion<br>[268, 301, 0]"]
|
||||||
|
%% [ProgramBodyItem { index: 2 }, VariableDeclarationDeclaration, VariableDeclarationInit]
|
||||||
|
14["Sweep Extrusion<br>[422, 454, 0]"]
|
||||||
|
%% [ProgramBodyItem { index: 5 }, VariableDeclarationDeclaration, VariableDeclarationInit]
|
||||||
|
15["CompositeSolid Subtract<br>[641, 685, 0]"]
|
||||||
|
%% [ProgramBodyItem { index: 7 }, ExpressionStatementExpr, PipeBodyItem { index: 0 }]
|
||||||
|
16[Wall]
|
||||||
|
%% face_code_ref=Missing NodePath
|
||||||
|
17[Wall]
|
||||||
|
%% face_code_ref=Missing NodePath
|
||||||
|
18[Wall]
|
||||||
|
%% face_code_ref=Missing NodePath
|
||||||
|
19[Wall]
|
||||||
|
%% face_code_ref=Missing NodePath
|
||||||
|
20[Wall]
|
||||||
|
%% face_code_ref=Missing NodePath
|
||||||
|
21["Cap Start"]
|
||||||
|
%% face_code_ref=Missing NodePath
|
||||||
|
22["Cap Start"]
|
||||||
|
%% face_code_ref=Missing NodePath
|
||||||
|
23["Cap End"]
|
||||||
|
%% face_code_ref=Missing NodePath
|
||||||
|
24["Cap End"]
|
||||||
|
%% face_code_ref=Missing NodePath
|
||||||
|
25["SweepEdge Opposite"]
|
||||||
|
26["SweepEdge Opposite"]
|
||||||
|
27["SweepEdge Opposite"]
|
||||||
|
28["SweepEdge Opposite"]
|
||||||
|
29["SweepEdge Opposite"]
|
||||||
|
30["SweepEdge Adjacent"]
|
||||||
|
31["SweepEdge Adjacent"]
|
||||||
|
32["SweepEdge Adjacent"]
|
||||||
|
33["SweepEdge Adjacent"]
|
||||||
|
34["SweepEdge Adjacent"]
|
||||||
|
1 --- 3
|
||||||
|
2 --- 4
|
||||||
|
3 --- 5
|
||||||
|
3 --- 6
|
||||||
|
3 --- 7
|
||||||
|
3 --- 8
|
||||||
|
3 --- 9
|
||||||
|
3 --- 12
|
||||||
|
3 ---- 13
|
||||||
|
3 --- 15
|
||||||
|
4 --- 10
|
||||||
|
4 --- 11
|
||||||
|
4 ---- 14
|
||||||
|
4 --- 15
|
||||||
|
5 --- 19
|
||||||
|
5 x--> 21
|
||||||
|
5 --- 28
|
||||||
|
5 --- 33
|
||||||
|
6 --- 17
|
||||||
|
6 x--> 21
|
||||||
|
6 --- 27
|
||||||
|
6 --- 32
|
||||||
|
7 --- 16
|
||||||
|
7 x--> 21
|
||||||
|
7 --- 26
|
||||||
|
7 --- 31
|
||||||
|
8 --- 18
|
||||||
|
8 x--> 21
|
||||||
|
8 --- 25
|
||||||
|
8 --- 30
|
||||||
|
10 --- 20
|
||||||
|
10 x--> 22
|
||||||
|
10 --- 29
|
||||||
|
10 --- 34
|
||||||
|
13 --- 16
|
||||||
|
13 --- 17
|
||||||
|
13 --- 18
|
||||||
|
13 --- 19
|
||||||
|
13 --- 21
|
||||||
|
13 --- 23
|
||||||
|
13 --- 25
|
||||||
|
13 --- 26
|
||||||
|
13 --- 27
|
||||||
|
13 --- 28
|
||||||
|
13 --- 30
|
||||||
|
13 --- 31
|
||||||
|
13 --- 32
|
||||||
|
13 --- 33
|
||||||
|
14 --- 20
|
||||||
|
14 --- 22
|
||||||
|
14 --- 24
|
||||||
|
14 --- 29
|
||||||
|
14 --- 34
|
||||||
|
16 --- 26
|
||||||
|
16 --- 31
|
||||||
|
32 <--x 16
|
||||||
|
17 --- 27
|
||||||
|
17 --- 32
|
||||||
|
33 <--x 17
|
||||||
|
18 --- 25
|
||||||
|
18 --- 30
|
||||||
|
31 <--x 18
|
||||||
|
19 --- 28
|
||||||
|
30 <--x 19
|
||||||
|
19 --- 33
|
||||||
|
20 --- 29
|
||||||
|
20 --- 34
|
||||||
|
25 <--x 23
|
||||||
|
26 <--x 23
|
||||||
|
27 <--x 23
|
||||||
|
28 <--x 23
|
||||||
|
29 <--x 24
|
||||||
|
```
|
1258
rust/kcl-lib/tests/subtract_with_pattern/ast.snap
Normal file
1258
rust/kcl-lib/tests/subtract_with_pattern/ast.snap
Normal file
File diff suppressed because it is too large
Load Diff
22
rust/kcl-lib/tests/subtract_with_pattern/input.kcl
Normal file
22
rust/kcl-lib/tests/subtract_with_pattern/input.kcl
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
sketch001 = startSketchOn(XY)
|
||||||
|
profile001 = startProfile(sketch001, at = [2.65, 12.2])
|
||||||
|
|> xLine(length = 23.49)
|
||||||
|
|> yLine(length = -22.68)
|
||||||
|
|> xLine(length = -24.2)
|
||||||
|
|> line(endAbsolute = [profileStartX(%), profileStartY(%)])
|
||||||
|
|> close()
|
||||||
|
|
||||||
|
extrude001 = extrude(profile001, length = 500)
|
||||||
|
|
||||||
|
sketch002 = startSketchOn(XZ)
|
||||||
|
profile002 = circle(sketch002, center = [17.5, 22.02], radius = 10.16)
|
||||||
|
|
||||||
|
extrude002 = extrude(profile002, length = 50)
|
||||||
|
myPatterns = patternLinear3d(extrude002,
|
||||||
|
instances = 10,
|
||||||
|
distance = 30,
|
||||||
|
axis = [0,0,1])
|
||||||
|
|
||||||
|
subtract([extrude001], tools = [myPatterns])
|
||||||
|
|> rotate(angle = 90, axis = [0,1,0]) // we do this to ensure the id is okay after the subtract
|
||||||
|
|
285
rust/kcl-lib/tests/subtract_with_pattern/ops.snap
Normal file
285
rust/kcl-lib/tests/subtract_with_pattern/ops.snap
Normal file
@ -0,0 +1,285 @@
|
|||||||
|
---
|
||||||
|
source: kcl-lib/src/simulation_tests.rs
|
||||||
|
description: Operations executed subtract_with_pattern.kcl
|
||||||
|
---
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"labeledArgs": {},
|
||||||
|
"name": "startSketchOn",
|
||||||
|
"sourceRange": [],
|
||||||
|
"type": "StdLibCall",
|
||||||
|
"unlabeledArg": {
|
||||||
|
"value": {
|
||||||
|
"type": "Plane",
|
||||||
|
"artifact_id": "[uuid]"
|
||||||
|
},
|
||||||
|
"sourceRange": []
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"labeledArgs": {
|
||||||
|
"length": {
|
||||||
|
"value": {
|
||||||
|
"type": "Number",
|
||||||
|
"value": 500.0,
|
||||||
|
"ty": {
|
||||||
|
"type": "Default",
|
||||||
|
"len": {
|
||||||
|
"type": "Mm"
|
||||||
|
},
|
||||||
|
"angle": {
|
||||||
|
"type": "Degrees"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"sourceRange": []
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"name": "extrude",
|
||||||
|
"sourceRange": [],
|
||||||
|
"type": "StdLibCall",
|
||||||
|
"unlabeledArg": {
|
||||||
|
"value": {
|
||||||
|
"type": "Sketch",
|
||||||
|
"value": {
|
||||||
|
"artifactId": "[uuid]"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"sourceRange": []
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"labeledArgs": {},
|
||||||
|
"name": "startSketchOn",
|
||||||
|
"sourceRange": [],
|
||||||
|
"type": "StdLibCall",
|
||||||
|
"unlabeledArg": {
|
||||||
|
"value": {
|
||||||
|
"type": "Plane",
|
||||||
|
"artifact_id": "[uuid]"
|
||||||
|
},
|
||||||
|
"sourceRange": []
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"labeledArgs": {
|
||||||
|
"length": {
|
||||||
|
"value": {
|
||||||
|
"type": "Number",
|
||||||
|
"value": 50.0,
|
||||||
|
"ty": {
|
||||||
|
"type": "Default",
|
||||||
|
"len": {
|
||||||
|
"type": "Mm"
|
||||||
|
},
|
||||||
|
"angle": {
|
||||||
|
"type": "Degrees"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"sourceRange": []
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"name": "extrude",
|
||||||
|
"sourceRange": [],
|
||||||
|
"type": "StdLibCall",
|
||||||
|
"unlabeledArg": {
|
||||||
|
"value": {
|
||||||
|
"type": "Sketch",
|
||||||
|
"value": {
|
||||||
|
"artifactId": "[uuid]"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"sourceRange": []
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"labeledArgs": {
|
||||||
|
"axis": {
|
||||||
|
"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"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "Number",
|
||||||
|
"value": 1.0,
|
||||||
|
"ty": {
|
||||||
|
"type": "Default",
|
||||||
|
"len": {
|
||||||
|
"type": "Mm"
|
||||||
|
},
|
||||||
|
"angle": {
|
||||||
|
"type": "Degrees"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"sourceRange": []
|
||||||
|
},
|
||||||
|
"distance": {
|
||||||
|
"value": {
|
||||||
|
"type": "Number",
|
||||||
|
"value": 30.0,
|
||||||
|
"ty": {
|
||||||
|
"type": "Default",
|
||||||
|
"len": {
|
||||||
|
"type": "Mm"
|
||||||
|
},
|
||||||
|
"angle": {
|
||||||
|
"type": "Degrees"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"sourceRange": []
|
||||||
|
},
|
||||||
|
"instances": {
|
||||||
|
"value": {
|
||||||
|
"type": "Number",
|
||||||
|
"value": 10.0,
|
||||||
|
"ty": {
|
||||||
|
"type": "Default",
|
||||||
|
"len": {
|
||||||
|
"type": "Mm"
|
||||||
|
},
|
||||||
|
"angle": {
|
||||||
|
"type": "Degrees"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"sourceRange": []
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"name": "patternLinear3d",
|
||||||
|
"sourceRange": [],
|
||||||
|
"type": "StdLibCall",
|
||||||
|
"unlabeledArg": {
|
||||||
|
"value": {
|
||||||
|
"type": "Solid",
|
||||||
|
"value": {
|
||||||
|
"artifactId": "[uuid]"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"sourceRange": []
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"labeledArgs": {
|
||||||
|
"tools": {
|
||||||
|
"value": {
|
||||||
|
"type": "Array",
|
||||||
|
"value": [
|
||||||
|
{
|
||||||
|
"type": "Array",
|
||||||
|
"value": [
|
||||||
|
{
|
||||||
|
"type": "Solid",
|
||||||
|
"value": {
|
||||||
|
"artifactId": "[uuid]"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "Solid",
|
||||||
|
"value": {
|
||||||
|
"artifactId": "[uuid]"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "Solid",
|
||||||
|
"value": {
|
||||||
|
"artifactId": "[uuid]"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "Solid",
|
||||||
|
"value": {
|
||||||
|
"artifactId": "[uuid]"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "Solid",
|
||||||
|
"value": {
|
||||||
|
"artifactId": "[uuid]"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "Solid",
|
||||||
|
"value": {
|
||||||
|
"artifactId": "[uuid]"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "Solid",
|
||||||
|
"value": {
|
||||||
|
"artifactId": "[uuid]"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "Solid",
|
||||||
|
"value": {
|
||||||
|
"artifactId": "[uuid]"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "Solid",
|
||||||
|
"value": {
|
||||||
|
"artifactId": "[uuid]"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "Solid",
|
||||||
|
"value": {
|
||||||
|
"artifactId": "[uuid]"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"sourceRange": []
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"name": "subtract",
|
||||||
|
"sourceRange": [],
|
||||||
|
"type": "StdLibCall",
|
||||||
|
"unlabeledArg": {
|
||||||
|
"value": {
|
||||||
|
"type": "Array",
|
||||||
|
"value": [
|
||||||
|
{
|
||||||
|
"type": "Solid",
|
||||||
|
"value": {
|
||||||
|
"artifactId": "[uuid]"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"sourceRange": []
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
1706
rust/kcl-lib/tests/subtract_with_pattern/program_memory.snap
Normal file
1706
rust/kcl-lib/tests/subtract_with_pattern/program_memory.snap
Normal file
File diff suppressed because it is too large
Load Diff
BIN
rust/kcl-lib/tests/subtract_with_pattern/rendered_model.png
Normal file
BIN
rust/kcl-lib/tests/subtract_with_pattern/rendered_model.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 39 KiB |
27
rust/kcl-lib/tests/subtract_with_pattern/unparsed.snap
Normal file
27
rust/kcl-lib/tests/subtract_with_pattern/unparsed.snap
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
---
|
||||||
|
source: kcl-lib/src/simulation_tests.rs
|
||||||
|
description: Result of unparsing subtract_with_pattern.kcl
|
||||||
|
---
|
||||||
|
sketch001 = startSketchOn(XY)
|
||||||
|
profile001 = startProfile(sketch001, at = [2.65, 12.2])
|
||||||
|
|> xLine(length = 23.49)
|
||||||
|
|> yLine(length = -22.68)
|
||||||
|
|> xLine(length = -24.2)
|
||||||
|
|> line(endAbsolute = [profileStartX(%), profileStartY(%)])
|
||||||
|
|> close()
|
||||||
|
|
||||||
|
extrude001 = extrude(profile001, length = 500)
|
||||||
|
|
||||||
|
sketch002 = startSketchOn(XZ)
|
||||||
|
profile002 = circle(sketch002, center = [17.5, 22.02], radius = 10.16)
|
||||||
|
|
||||||
|
extrude002 = extrude(profile002, length = 50)
|
||||||
|
myPatterns = patternLinear3d(
|
||||||
|
extrude002,
|
||||||
|
instances = 10,
|
||||||
|
distance = 30,
|
||||||
|
axis = [0, 0, 1],
|
||||||
|
)
|
||||||
|
|
||||||
|
subtract([extrude001], tools = [myPatterns])
|
||||||
|
|> rotate(angle = 90, axis = [0, 1, 0]) // we do this to ensure the id is okay after the subtract
|
@ -0,0 +1,591 @@
|
|||||||
|
---
|
||||||
|
source: kcl-lib/src/simulation_tests.rs
|
||||||
|
description: Artifact commands subtract_with_pattern_cut_thru.kcl
|
||||||
|
---
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"cmdId": "[uuid]",
|
||||||
|
"range": [],
|
||||||
|
"command": {
|
||||||
|
"type": "edge_lines_visible",
|
||||||
|
"hidden": false
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmdId": "[uuid]",
|
||||||
|
"range": [],
|
||||||
|
"command": {
|
||||||
|
"type": "object_visible",
|
||||||
|
"object_id": "[uuid]",
|
||||||
|
"hidden": true
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmdId": "[uuid]",
|
||||||
|
"range": [],
|
||||||
|
"command": {
|
||||||
|
"type": "object_visible",
|
||||||
|
"object_id": "[uuid]",
|
||||||
|
"hidden": true
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmdId": "[uuid]",
|
||||||
|
"range": [],
|
||||||
|
"command": {
|
||||||
|
"type": "make_plane",
|
||||||
|
"origin": {
|
||||||
|
"x": 0.0,
|
||||||
|
"y": 0.0,
|
||||||
|
"z": 0.0
|
||||||
|
},
|
||||||
|
"x_axis": {
|
||||||
|
"x": 1.0,
|
||||||
|
"y": 0.0,
|
||||||
|
"z": 0.0
|
||||||
|
},
|
||||||
|
"y_axis": {
|
||||||
|
"x": 0.0,
|
||||||
|
"y": 1.0,
|
||||||
|
"z": 0.0
|
||||||
|
},
|
||||||
|
"size": 60.0,
|
||||||
|
"clobber": false,
|
||||||
|
"hide": true
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmdId": "[uuid]",
|
||||||
|
"range": [],
|
||||||
|
"command": {
|
||||||
|
"type": "enable_sketch_mode",
|
||||||
|
"entity_id": "[uuid]",
|
||||||
|
"ortho": false,
|
||||||
|
"animated": false,
|
||||||
|
"adjust_camera": false,
|
||||||
|
"planar_normal": {
|
||||||
|
"x": 0.0,
|
||||||
|
"y": 0.0,
|
||||||
|
"z": 1.0
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmdId": "[uuid]",
|
||||||
|
"range": [],
|
||||||
|
"command": {
|
||||||
|
"type": "move_path_pen",
|
||||||
|
"path": "[uuid]",
|
||||||
|
"to": {
|
||||||
|
"x": 2.65,
|
||||||
|
"y": 12.2,
|
||||||
|
"z": 0.0
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmdId": "[uuid]",
|
||||||
|
"range": [],
|
||||||
|
"command": {
|
||||||
|
"type": "sketch_mode_disable"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmdId": "[uuid]",
|
||||||
|
"range": [],
|
||||||
|
"command": {
|
||||||
|
"type": "start_path"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmdId": "[uuid]",
|
||||||
|
"range": [],
|
||||||
|
"command": {
|
||||||
|
"type": "extend_path",
|
||||||
|
"path": "[uuid]",
|
||||||
|
"segment": {
|
||||||
|
"type": "line",
|
||||||
|
"end": {
|
||||||
|
"x": 23.49,
|
||||||
|
"y": 0.0,
|
||||||
|
"z": 0.0
|
||||||
|
},
|
||||||
|
"relative": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmdId": "[uuid]",
|
||||||
|
"range": [],
|
||||||
|
"command": {
|
||||||
|
"type": "extend_path",
|
||||||
|
"path": "[uuid]",
|
||||||
|
"segment": {
|
||||||
|
"type": "line",
|
||||||
|
"end": {
|
||||||
|
"x": 0.0,
|
||||||
|
"y": -22.68,
|
||||||
|
"z": 0.0
|
||||||
|
},
|
||||||
|
"relative": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmdId": "[uuid]",
|
||||||
|
"range": [],
|
||||||
|
"command": {
|
||||||
|
"type": "extend_path",
|
||||||
|
"path": "[uuid]",
|
||||||
|
"segment": {
|
||||||
|
"type": "line",
|
||||||
|
"end": {
|
||||||
|
"x": -24.2,
|
||||||
|
"y": 0.0,
|
||||||
|
"z": 0.0
|
||||||
|
},
|
||||||
|
"relative": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmdId": "[uuid]",
|
||||||
|
"range": [],
|
||||||
|
"command": {
|
||||||
|
"type": "extend_path",
|
||||||
|
"path": "[uuid]",
|
||||||
|
"segment": {
|
||||||
|
"type": "line",
|
||||||
|
"end": {
|
||||||
|
"x": 2.65,
|
||||||
|
"y": 12.2,
|
||||||
|
"z": 0.0
|
||||||
|
},
|
||||||
|
"relative": false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmdId": "[uuid]",
|
||||||
|
"range": [],
|
||||||
|
"command": {
|
||||||
|
"type": "close_path",
|
||||||
|
"path_id": "[uuid]"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmdId": "[uuid]",
|
||||||
|
"range": [],
|
||||||
|
"command": {
|
||||||
|
"type": "enable_sketch_mode",
|
||||||
|
"entity_id": "[uuid]",
|
||||||
|
"ortho": false,
|
||||||
|
"animated": false,
|
||||||
|
"adjust_camera": false,
|
||||||
|
"planar_normal": {
|
||||||
|
"x": 0.0,
|
||||||
|
"y": 0.0,
|
||||||
|
"z": 1.0
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmdId": "[uuid]",
|
||||||
|
"range": [],
|
||||||
|
"command": {
|
||||||
|
"type": "extrude",
|
||||||
|
"target": "[uuid]",
|
||||||
|
"distance": 500.0,
|
||||||
|
"faces": null,
|
||||||
|
"opposite": "None"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmdId": "[uuid]",
|
||||||
|
"range": [],
|
||||||
|
"command": {
|
||||||
|
"type": "object_bring_to_front",
|
||||||
|
"object_id": "[uuid]"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmdId": "[uuid]",
|
||||||
|
"range": [],
|
||||||
|
"command": {
|
||||||
|
"type": "sketch_mode_disable"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmdId": "[uuid]",
|
||||||
|
"range": [],
|
||||||
|
"command": {
|
||||||
|
"type": "solid3d_get_adjacency_info",
|
||||||
|
"object_id": "[uuid]",
|
||||||
|
"edge_id": "[uuid]"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmdId": "[uuid]",
|
||||||
|
"range": [],
|
||||||
|
"command": {
|
||||||
|
"type": "solid3d_get_extrusion_face_info",
|
||||||
|
"object_id": "[uuid]",
|
||||||
|
"edge_id": "[uuid]"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmdId": "[uuid]",
|
||||||
|
"range": [],
|
||||||
|
"command": {
|
||||||
|
"type": "make_plane",
|
||||||
|
"origin": {
|
||||||
|
"x": 0.0,
|
||||||
|
"y": 0.0,
|
||||||
|
"z": 0.0
|
||||||
|
},
|
||||||
|
"x_axis": {
|
||||||
|
"x": 1.0,
|
||||||
|
"y": 0.0,
|
||||||
|
"z": 0.0
|
||||||
|
},
|
||||||
|
"y_axis": {
|
||||||
|
"x": 0.0,
|
||||||
|
"y": 0.0,
|
||||||
|
"z": 1.0
|
||||||
|
},
|
||||||
|
"size": 60.0,
|
||||||
|
"clobber": false,
|
||||||
|
"hide": true
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmdId": "[uuid]",
|
||||||
|
"range": [],
|
||||||
|
"command": {
|
||||||
|
"type": "close_path",
|
||||||
|
"path_id": "[uuid]"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmdId": "[uuid]",
|
||||||
|
"range": [],
|
||||||
|
"command": {
|
||||||
|
"type": "enable_sketch_mode",
|
||||||
|
"entity_id": "[uuid]",
|
||||||
|
"ortho": false,
|
||||||
|
"animated": false,
|
||||||
|
"adjust_camera": false,
|
||||||
|
"planar_normal": {
|
||||||
|
"x": 0.0,
|
||||||
|
"y": -1.0,
|
||||||
|
"z": 0.0
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmdId": "[uuid]",
|
||||||
|
"range": [],
|
||||||
|
"command": {
|
||||||
|
"type": "extend_path",
|
||||||
|
"path": "[uuid]",
|
||||||
|
"segment": {
|
||||||
|
"type": "arc",
|
||||||
|
"center": {
|
||||||
|
"x": 17.5,
|
||||||
|
"y": 42.02
|
||||||
|
},
|
||||||
|
"radius": 30.16,
|
||||||
|
"start": {
|
||||||
|
"unit": "degrees",
|
||||||
|
"value": 0.0
|
||||||
|
},
|
||||||
|
"end": {
|
||||||
|
"unit": "degrees",
|
||||||
|
"value": 360.0
|
||||||
|
},
|
||||||
|
"relative": false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmdId": "[uuid]",
|
||||||
|
"range": [],
|
||||||
|
"command": {
|
||||||
|
"type": "move_path_pen",
|
||||||
|
"path": "[uuid]",
|
||||||
|
"to": {
|
||||||
|
"x": 47.66,
|
||||||
|
"y": 42.02,
|
||||||
|
"z": 0.0
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmdId": "[uuid]",
|
||||||
|
"range": [],
|
||||||
|
"command": {
|
||||||
|
"type": "sketch_mode_disable"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmdId": "[uuid]",
|
||||||
|
"range": [],
|
||||||
|
"command": {
|
||||||
|
"type": "start_path"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmdId": "[uuid]",
|
||||||
|
"range": [],
|
||||||
|
"command": {
|
||||||
|
"type": "enable_sketch_mode",
|
||||||
|
"entity_id": "[uuid]",
|
||||||
|
"ortho": false,
|
||||||
|
"animated": false,
|
||||||
|
"adjust_camera": false,
|
||||||
|
"planar_normal": {
|
||||||
|
"x": 0.0,
|
||||||
|
"y": -1.0,
|
||||||
|
"z": 0.0
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmdId": "[uuid]",
|
||||||
|
"range": [],
|
||||||
|
"command": {
|
||||||
|
"type": "extrude",
|
||||||
|
"target": "[uuid]",
|
||||||
|
"distance": 50.0,
|
||||||
|
"faces": null,
|
||||||
|
"opposite": "None"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmdId": "[uuid]",
|
||||||
|
"range": [],
|
||||||
|
"command": {
|
||||||
|
"type": "object_bring_to_front",
|
||||||
|
"object_id": "[uuid]"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmdId": "[uuid]",
|
||||||
|
"range": [],
|
||||||
|
"command": {
|
||||||
|
"type": "sketch_mode_disable"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmdId": "[uuid]",
|
||||||
|
"range": [],
|
||||||
|
"command": {
|
||||||
|
"type": "solid3d_get_adjacency_info",
|
||||||
|
"object_id": "[uuid]",
|
||||||
|
"edge_id": "[uuid]"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmdId": "[uuid]",
|
||||||
|
"range": [],
|
||||||
|
"command": {
|
||||||
|
"type": "solid3d_get_extrusion_face_info",
|
||||||
|
"object_id": "[uuid]",
|
||||||
|
"edge_id": "[uuid]"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmdId": "[uuid]",
|
||||||
|
"range": [],
|
||||||
|
"command": {
|
||||||
|
"type": "set_object_transform",
|
||||||
|
"object_id": "[uuid]",
|
||||||
|
"transforms": [
|
||||||
|
{
|
||||||
|
"translate": {
|
||||||
|
"property": {
|
||||||
|
"x": 0.0,
|
||||||
|
"y": 30.0,
|
||||||
|
"z": 0.0
|
||||||
|
},
|
||||||
|
"set": false,
|
||||||
|
"is_local": true
|
||||||
|
},
|
||||||
|
"rotate_rpy": null,
|
||||||
|
"rotate_angle_axis": null,
|
||||||
|
"scale": null
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmdId": "[uuid]",
|
||||||
|
"range": [],
|
||||||
|
"command": {
|
||||||
|
"type": "entity_linear_pattern_transform",
|
||||||
|
"entity_id": "[uuid]",
|
||||||
|
"transform": [],
|
||||||
|
"transforms": [
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"translate": {
|
||||||
|
"x": 0.0,
|
||||||
|
"y": 0.0,
|
||||||
|
"z": 80.0
|
||||||
|
},
|
||||||
|
"scale": {
|
||||||
|
"x": 1.0,
|
||||||
|
"y": 1.0,
|
||||||
|
"z": 1.0
|
||||||
|
},
|
||||||
|
"rotation": {
|
||||||
|
"axis": {
|
||||||
|
"x": 0.0,
|
||||||
|
"y": 0.0,
|
||||||
|
"z": 1.0
|
||||||
|
},
|
||||||
|
"angle": {
|
||||||
|
"unit": "degrees",
|
||||||
|
"value": 0.0
|
||||||
|
},
|
||||||
|
"origin": {
|
||||||
|
"type": "local"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"replicate": true
|
||||||
|
}
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"translate": {
|
||||||
|
"x": 0.0,
|
||||||
|
"y": 0.0,
|
||||||
|
"z": 160.0
|
||||||
|
},
|
||||||
|
"scale": {
|
||||||
|
"x": 1.0,
|
||||||
|
"y": 1.0,
|
||||||
|
"z": 1.0
|
||||||
|
},
|
||||||
|
"rotation": {
|
||||||
|
"axis": {
|
||||||
|
"x": 0.0,
|
||||||
|
"y": 0.0,
|
||||||
|
"z": 1.0
|
||||||
|
},
|
||||||
|
"angle": {
|
||||||
|
"unit": "degrees",
|
||||||
|
"value": 0.0
|
||||||
|
},
|
||||||
|
"origin": {
|
||||||
|
"type": "local"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"replicate": true
|
||||||
|
}
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"translate": {
|
||||||
|
"x": 0.0,
|
||||||
|
"y": 0.0,
|
||||||
|
"z": 240.0
|
||||||
|
},
|
||||||
|
"scale": {
|
||||||
|
"x": 1.0,
|
||||||
|
"y": 1.0,
|
||||||
|
"z": 1.0
|
||||||
|
},
|
||||||
|
"rotation": {
|
||||||
|
"axis": {
|
||||||
|
"x": 0.0,
|
||||||
|
"y": 0.0,
|
||||||
|
"z": 1.0
|
||||||
|
},
|
||||||
|
"angle": {
|
||||||
|
"unit": "degrees",
|
||||||
|
"value": 0.0
|
||||||
|
},
|
||||||
|
"origin": {
|
||||||
|
"type": "local"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"replicate": true
|
||||||
|
}
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"translate": {
|
||||||
|
"x": 0.0,
|
||||||
|
"y": 0.0,
|
||||||
|
"z": 320.0
|
||||||
|
},
|
||||||
|
"scale": {
|
||||||
|
"x": 1.0,
|
||||||
|
"y": 1.0,
|
||||||
|
"z": 1.0
|
||||||
|
},
|
||||||
|
"rotation": {
|
||||||
|
"axis": {
|
||||||
|
"x": 0.0,
|
||||||
|
"y": 0.0,
|
||||||
|
"z": 1.0
|
||||||
|
},
|
||||||
|
"angle": {
|
||||||
|
"unit": "degrees",
|
||||||
|
"value": 0.0
|
||||||
|
},
|
||||||
|
"origin": {
|
||||||
|
"type": "local"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"replicate": true
|
||||||
|
}
|
||||||
|
]
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmdId": "[uuid]",
|
||||||
|
"range": [],
|
||||||
|
"command": {
|
||||||
|
"type": "boolean_subtract",
|
||||||
|
"target_ids": [
|
||||||
|
"[uuid]"
|
||||||
|
],
|
||||||
|
"tool_ids": [
|
||||||
|
"[uuid]",
|
||||||
|
"[uuid]",
|
||||||
|
"[uuid]",
|
||||||
|
"[uuid]",
|
||||||
|
"[uuid]"
|
||||||
|
],
|
||||||
|
"tolerance": 0.0000001
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmdId": "[uuid]",
|
||||||
|
"range": [],
|
||||||
|
"command": {
|
||||||
|
"type": "set_object_transform",
|
||||||
|
"object_id": "[uuid]",
|
||||||
|
"transforms": [
|
||||||
|
{
|
||||||
|
"translate": null,
|
||||||
|
"rotate_rpy": null,
|
||||||
|
"rotate_angle_axis": {
|
||||||
|
"property": {
|
||||||
|
"x": 0.0,
|
||||||
|
"y": 1.0,
|
||||||
|
"z": 0.0,
|
||||||
|
"w": 90.0
|
||||||
|
},
|
||||||
|
"set": false,
|
||||||
|
"is_local": true
|
||||||
|
},
|
||||||
|
"scale": null
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
@ -0,0 +1,6 @@
|
|||||||
|
---
|
||||||
|
source: kcl-lib/src/simulation_tests.rs
|
||||||
|
description: Artifact graph flowchart subtract_with_pattern_cut_thru.kcl
|
||||||
|
extension: md
|
||||||
|
snapshot_kind: binary
|
||||||
|
---
|
@ -0,0 +1,135 @@
|
|||||||
|
```mermaid
|
||||||
|
flowchart LR
|
||||||
|
subgraph path3 [Path]
|
||||||
|
3["Path<br>[43, 85, 0]"]
|
||||||
|
%% [ProgramBodyItem { index: 1 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 0 }]
|
||||||
|
5["Segment<br>[93, 114, 0]"]
|
||||||
|
%% [ProgramBodyItem { index: 1 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 1 }]
|
||||||
|
6["Segment<br>[122, 144, 0]"]
|
||||||
|
%% [ProgramBodyItem { index: 1 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 2 }]
|
||||||
|
7["Segment<br>[152, 173, 0]"]
|
||||||
|
%% [ProgramBodyItem { index: 1 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 3 }]
|
||||||
|
8["Segment<br>[181, 237, 0]"]
|
||||||
|
%% [ProgramBodyItem { index: 1 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 4 }]
|
||||||
|
9["Segment<br>[245, 252, 0]"]
|
||||||
|
%% [ProgramBodyItem { index: 1 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 5 }]
|
||||||
|
12[Solid2d]
|
||||||
|
end
|
||||||
|
subgraph path4 [Path]
|
||||||
|
4["Path<br>[349, 406, 0]"]
|
||||||
|
%% [ProgramBodyItem { index: 4 }, VariableDeclarationDeclaration, VariableDeclarationInit]
|
||||||
|
10["Segment<br>[349, 406, 0]"]
|
||||||
|
%% [ProgramBodyItem { index: 4 }, VariableDeclarationDeclaration, VariableDeclarationInit]
|
||||||
|
11[Solid2d]
|
||||||
|
end
|
||||||
|
1["Plane<br>[12, 29, 0]"]
|
||||||
|
%% [ProgramBodyItem { index: 0 }, VariableDeclarationDeclaration, VariableDeclarationInit]
|
||||||
|
2["Plane<br>[317, 334, 0]"]
|
||||||
|
%% [ProgramBodyItem { index: 3 }, VariableDeclarationDeclaration, VariableDeclarationInit]
|
||||||
|
13["Sweep Extrusion<br>[268, 301, 0]"]
|
||||||
|
%% [ProgramBodyItem { index: 2 }, VariableDeclarationDeclaration, VariableDeclarationInit]
|
||||||
|
14["Sweep Extrusion<br>[422, 454, 0]"]
|
||||||
|
%% [ProgramBodyItem { index: 5 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 0 }]
|
||||||
|
15["CompositeSolid Subtract<br>[686, 730, 0]"]
|
||||||
|
%% [ProgramBodyItem { index: 7 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 0 }]
|
||||||
|
16[Wall]
|
||||||
|
%% face_code_ref=Missing NodePath
|
||||||
|
17[Wall]
|
||||||
|
%% face_code_ref=Missing NodePath
|
||||||
|
18[Wall]
|
||||||
|
%% face_code_ref=Missing NodePath
|
||||||
|
19[Wall]
|
||||||
|
%% face_code_ref=Missing NodePath
|
||||||
|
20[Wall]
|
||||||
|
%% face_code_ref=Missing NodePath
|
||||||
|
21["Cap Start"]
|
||||||
|
%% face_code_ref=Missing NodePath
|
||||||
|
22["Cap Start"]
|
||||||
|
%% face_code_ref=Missing NodePath
|
||||||
|
23["Cap End"]
|
||||||
|
%% face_code_ref=Missing NodePath
|
||||||
|
24["Cap End"]
|
||||||
|
%% face_code_ref=Missing NodePath
|
||||||
|
25["SweepEdge Opposite"]
|
||||||
|
26["SweepEdge Opposite"]
|
||||||
|
27["SweepEdge Opposite"]
|
||||||
|
28["SweepEdge Opposite"]
|
||||||
|
29["SweepEdge Opposite"]
|
||||||
|
30["SweepEdge Adjacent"]
|
||||||
|
31["SweepEdge Adjacent"]
|
||||||
|
32["SweepEdge Adjacent"]
|
||||||
|
33["SweepEdge Adjacent"]
|
||||||
|
34["SweepEdge Adjacent"]
|
||||||
|
1 --- 3
|
||||||
|
2 --- 4
|
||||||
|
3 --- 5
|
||||||
|
3 --- 6
|
||||||
|
3 --- 7
|
||||||
|
3 --- 8
|
||||||
|
3 --- 9
|
||||||
|
3 --- 12
|
||||||
|
3 ---- 13
|
||||||
|
3 --- 15
|
||||||
|
4 --- 10
|
||||||
|
4 --- 11
|
||||||
|
4 ---- 14
|
||||||
|
4 --- 15
|
||||||
|
5 --- 19
|
||||||
|
5 x--> 21
|
||||||
|
5 --- 28
|
||||||
|
5 --- 33
|
||||||
|
6 --- 17
|
||||||
|
6 x--> 21
|
||||||
|
6 --- 27
|
||||||
|
6 --- 32
|
||||||
|
7 --- 16
|
||||||
|
7 x--> 21
|
||||||
|
7 --- 26
|
||||||
|
7 --- 31
|
||||||
|
8 --- 18
|
||||||
|
8 x--> 21
|
||||||
|
8 --- 25
|
||||||
|
8 --- 30
|
||||||
|
10 --- 20
|
||||||
|
10 x--> 22
|
||||||
|
10 --- 29
|
||||||
|
10 --- 34
|
||||||
|
13 --- 16
|
||||||
|
13 --- 17
|
||||||
|
13 --- 18
|
||||||
|
13 --- 19
|
||||||
|
13 --- 21
|
||||||
|
13 --- 23
|
||||||
|
13 --- 25
|
||||||
|
13 --- 26
|
||||||
|
13 --- 27
|
||||||
|
13 --- 28
|
||||||
|
13 --- 30
|
||||||
|
13 --- 31
|
||||||
|
13 --- 32
|
||||||
|
13 --- 33
|
||||||
|
14 --- 20
|
||||||
|
14 --- 22
|
||||||
|
14 --- 24
|
||||||
|
14 --- 29
|
||||||
|
14 --- 34
|
||||||
|
16 --- 26
|
||||||
|
16 --- 31
|
||||||
|
32 <--x 16
|
||||||
|
17 --- 27
|
||||||
|
17 --- 32
|
||||||
|
33 <--x 17
|
||||||
|
18 --- 25
|
||||||
|
18 --- 30
|
||||||
|
31 <--x 18
|
||||||
|
19 --- 28
|
||||||
|
30 <--x 19
|
||||||
|
19 --- 33
|
||||||
|
20 --- 29
|
||||||
|
20 --- 34
|
||||||
|
25 <--x 23
|
||||||
|
26 <--x 23
|
||||||
|
27 <--x 23
|
||||||
|
28 <--x 23
|
||||||
|
29 <--x 24
|
||||||
|
```
|
1328
rust/kcl-lib/tests/subtract_with_pattern_cut_thru/ast.snap
Normal file
1328
rust/kcl-lib/tests/subtract_with_pattern_cut_thru/ast.snap
Normal file
File diff suppressed because it is too large
Load Diff
23
rust/kcl-lib/tests/subtract_with_pattern_cut_thru/input.kcl
Normal file
23
rust/kcl-lib/tests/subtract_with_pattern_cut_thru/input.kcl
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
sketch001 = startSketchOn(XY)
|
||||||
|
profile001 = startProfile(sketch001, at = [2.65, 12.2])
|
||||||
|
|> xLine(length = 23.49)
|
||||||
|
|> yLine(length = -22.68)
|
||||||
|
|> xLine(length = -24.2)
|
||||||
|
|> line(endAbsolute = [profileStartX(%), profileStartY(%)])
|
||||||
|
|> close()
|
||||||
|
|
||||||
|
extrude001 = extrude(profile001, length = 500)
|
||||||
|
|
||||||
|
sketch002 = startSketchOn(XZ)
|
||||||
|
profile002 = circle(sketch002, center = [17.5, 42.02], radius = 30.16)
|
||||||
|
|
||||||
|
extrude002 = extrude(profile002, length = 50)
|
||||||
|
|> translate(y=30)
|
||||||
|
|
||||||
|
myPatterns = patternLinear3d(extrude002,
|
||||||
|
instances = 5,
|
||||||
|
distance = 80,
|
||||||
|
axis = [0,0,1])
|
||||||
|
|
||||||
|
results = subtract([extrude001], tools = [myPatterns])
|
||||||
|
|> rotate(angle = 90, axis = [0,1,0]) // we do this to ensure the id is okay after the subtract
|
255
rust/kcl-lib/tests/subtract_with_pattern_cut_thru/ops.snap
Normal file
255
rust/kcl-lib/tests/subtract_with_pattern_cut_thru/ops.snap
Normal file
@ -0,0 +1,255 @@
|
|||||||
|
---
|
||||||
|
source: kcl-lib/src/simulation_tests.rs
|
||||||
|
description: Operations executed subtract_with_pattern_cut_thru.kcl
|
||||||
|
---
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"labeledArgs": {},
|
||||||
|
"name": "startSketchOn",
|
||||||
|
"sourceRange": [],
|
||||||
|
"type": "StdLibCall",
|
||||||
|
"unlabeledArg": {
|
||||||
|
"value": {
|
||||||
|
"type": "Plane",
|
||||||
|
"artifact_id": "[uuid]"
|
||||||
|
},
|
||||||
|
"sourceRange": []
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"labeledArgs": {
|
||||||
|
"length": {
|
||||||
|
"value": {
|
||||||
|
"type": "Number",
|
||||||
|
"value": 500.0,
|
||||||
|
"ty": {
|
||||||
|
"type": "Default",
|
||||||
|
"len": {
|
||||||
|
"type": "Mm"
|
||||||
|
},
|
||||||
|
"angle": {
|
||||||
|
"type": "Degrees"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"sourceRange": []
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"name": "extrude",
|
||||||
|
"sourceRange": [],
|
||||||
|
"type": "StdLibCall",
|
||||||
|
"unlabeledArg": {
|
||||||
|
"value": {
|
||||||
|
"type": "Sketch",
|
||||||
|
"value": {
|
||||||
|
"artifactId": "[uuid]"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"sourceRange": []
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"labeledArgs": {},
|
||||||
|
"name": "startSketchOn",
|
||||||
|
"sourceRange": [],
|
||||||
|
"type": "StdLibCall",
|
||||||
|
"unlabeledArg": {
|
||||||
|
"value": {
|
||||||
|
"type": "Plane",
|
||||||
|
"artifact_id": "[uuid]"
|
||||||
|
},
|
||||||
|
"sourceRange": []
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"labeledArgs": {
|
||||||
|
"length": {
|
||||||
|
"value": {
|
||||||
|
"type": "Number",
|
||||||
|
"value": 50.0,
|
||||||
|
"ty": {
|
||||||
|
"type": "Default",
|
||||||
|
"len": {
|
||||||
|
"type": "Mm"
|
||||||
|
},
|
||||||
|
"angle": {
|
||||||
|
"type": "Degrees"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"sourceRange": []
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"name": "extrude",
|
||||||
|
"sourceRange": [],
|
||||||
|
"type": "StdLibCall",
|
||||||
|
"unlabeledArg": {
|
||||||
|
"value": {
|
||||||
|
"type": "Sketch",
|
||||||
|
"value": {
|
||||||
|
"artifactId": "[uuid]"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"sourceRange": []
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"labeledArgs": {
|
||||||
|
"axis": {
|
||||||
|
"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"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "Number",
|
||||||
|
"value": 1.0,
|
||||||
|
"ty": {
|
||||||
|
"type": "Default",
|
||||||
|
"len": {
|
||||||
|
"type": "Mm"
|
||||||
|
},
|
||||||
|
"angle": {
|
||||||
|
"type": "Degrees"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"sourceRange": []
|
||||||
|
},
|
||||||
|
"distance": {
|
||||||
|
"value": {
|
||||||
|
"type": "Number",
|
||||||
|
"value": 80.0,
|
||||||
|
"ty": {
|
||||||
|
"type": "Default",
|
||||||
|
"len": {
|
||||||
|
"type": "Mm"
|
||||||
|
},
|
||||||
|
"angle": {
|
||||||
|
"type": "Degrees"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"sourceRange": []
|
||||||
|
},
|
||||||
|
"instances": {
|
||||||
|
"value": {
|
||||||
|
"type": "Number",
|
||||||
|
"value": 5.0,
|
||||||
|
"ty": {
|
||||||
|
"type": "Default",
|
||||||
|
"len": {
|
||||||
|
"type": "Mm"
|
||||||
|
},
|
||||||
|
"angle": {
|
||||||
|
"type": "Degrees"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"sourceRange": []
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"name": "patternLinear3d",
|
||||||
|
"sourceRange": [],
|
||||||
|
"type": "StdLibCall",
|
||||||
|
"unlabeledArg": {
|
||||||
|
"value": {
|
||||||
|
"type": "Solid",
|
||||||
|
"value": {
|
||||||
|
"artifactId": "[uuid]"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"sourceRange": []
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"labeledArgs": {
|
||||||
|
"tools": {
|
||||||
|
"value": {
|
||||||
|
"type": "Array",
|
||||||
|
"value": [
|
||||||
|
{
|
||||||
|
"type": "Array",
|
||||||
|
"value": [
|
||||||
|
{
|
||||||
|
"type": "Solid",
|
||||||
|
"value": {
|
||||||
|
"artifactId": "[uuid]"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "Solid",
|
||||||
|
"value": {
|
||||||
|
"artifactId": "[uuid]"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "Solid",
|
||||||
|
"value": {
|
||||||
|
"artifactId": "[uuid]"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "Solid",
|
||||||
|
"value": {
|
||||||
|
"artifactId": "[uuid]"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "Solid",
|
||||||
|
"value": {
|
||||||
|
"artifactId": "[uuid]"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"sourceRange": []
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"name": "subtract",
|
||||||
|
"sourceRange": [],
|
||||||
|
"type": "StdLibCall",
|
||||||
|
"unlabeledArg": {
|
||||||
|
"value": {
|
||||||
|
"type": "Array",
|
||||||
|
"value": [
|
||||||
|
{
|
||||||
|
"type": "Solid",
|
||||||
|
"value": {
|
||||||
|
"artifactId": "[uuid]"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"sourceRange": []
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
File diff suppressed because it is too large
Load Diff
Binary file not shown.
After Width: | Height: | Size: 31 KiB |
@ -0,0 +1,29 @@
|
|||||||
|
---
|
||||||
|
source: kcl-lib/src/simulation_tests.rs
|
||||||
|
description: Result of unparsing subtract_with_pattern_cut_thru.kcl
|
||||||
|
---
|
||||||
|
sketch001 = startSketchOn(XY)
|
||||||
|
profile001 = startProfile(sketch001, at = [2.65, 12.2])
|
||||||
|
|> xLine(length = 23.49)
|
||||||
|
|> yLine(length = -22.68)
|
||||||
|
|> xLine(length = -24.2)
|
||||||
|
|> line(endAbsolute = [profileStartX(%), profileStartY(%)])
|
||||||
|
|> close()
|
||||||
|
|
||||||
|
extrude001 = extrude(profile001, length = 500)
|
||||||
|
|
||||||
|
sketch002 = startSketchOn(XZ)
|
||||||
|
profile002 = circle(sketch002, center = [17.5, 42.02], radius = 30.16)
|
||||||
|
|
||||||
|
extrude002 = extrude(profile002, length = 50)
|
||||||
|
|> translate(y = 30)
|
||||||
|
|
||||||
|
myPatterns = patternLinear3d(
|
||||||
|
extrude002,
|
||||||
|
instances = 5,
|
||||||
|
distance = 80,
|
||||||
|
axis = [0, 0, 1],
|
||||||
|
)
|
||||||
|
|
||||||
|
results = subtract([extrude001], tools = [myPatterns])
|
||||||
|
|> rotate(angle = 90, axis = [0, 1, 0]) // we do this to ensure the id is okay after the subtract
|
@ -1,6 +1,6 @@
|
|||||||
[package]
|
[package]
|
||||||
name = "kcl-python-bindings"
|
name = "kcl-python-bindings"
|
||||||
version = "0.3.73"
|
version = "0.3.74"
|
||||||
edition = "2021"
|
edition = "2021"
|
||||||
repository = "https://github.com/kittycad/modeling-app"
|
repository = "https://github.com/kittycad/modeling-app"
|
||||||
exclude = ["tests/*", "files/*", "venv/*"]
|
exclude = ["tests/*", "files/*", "venv/*"]
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
[package]
|
[package]
|
||||||
name = "kcl-test-server"
|
name = "kcl-test-server"
|
||||||
description = "A test server for KCL"
|
description = "A test server for KCL"
|
||||||
version = "0.1.73"
|
version = "0.1.74"
|
||||||
edition = "2021"
|
edition = "2021"
|
||||||
license = "MIT"
|
license = "MIT"
|
||||||
|
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
[package]
|
[package]
|
||||||
name = "kcl-to-core"
|
name = "kcl-to-core"
|
||||||
description = "Utility methods to convert kcl to engine core executable tests"
|
description = "Utility methods to convert kcl to engine core executable tests"
|
||||||
version = "0.1.73"
|
version = "0.1.74"
|
||||||
edition = "2021"
|
edition = "2021"
|
||||||
license = "MIT"
|
license = "MIT"
|
||||||
repository = "https://github.com/KittyCAD/modeling-app"
|
repository = "https://github.com/KittyCAD/modeling-app"
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
[package]
|
[package]
|
||||||
name = "kcl-wasm-lib"
|
name = "kcl-wasm-lib"
|
||||||
version = "0.1.73"
|
version = "0.1.74"
|
||||||
edition = "2021"
|
edition = "2021"
|
||||||
repository = "https://github.com/KittyCAD/modeling-app"
|
repository = "https://github.com/KittyCAD/modeling-app"
|
||||||
rust-version = "1.83"
|
rust-version = "1.83"
|
||||||
|
Reference in New Issue
Block a user