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]]
|
||||
name = "kcl-bumper"
|
||||
version = "0.1.73"
|
||||
version = "0.1.74"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"clap",
|
||||
@ -1826,7 +1826,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "kcl-derive-docs"
|
||||
version = "0.1.73"
|
||||
version = "0.1.74"
|
||||
dependencies = [
|
||||
"Inflector",
|
||||
"anyhow",
|
||||
@ -1845,7 +1845,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "kcl-directory-test-macro"
|
||||
version = "0.1.73"
|
||||
version = "0.1.74"
|
||||
dependencies = [
|
||||
"convert_case",
|
||||
"proc-macro2",
|
||||
@ -1855,7 +1855,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "kcl-language-server"
|
||||
version = "0.2.73"
|
||||
version = "0.2.74"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"clap",
|
||||
@ -1876,7 +1876,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "kcl-language-server-release"
|
||||
version = "0.1.73"
|
||||
version = "0.1.74"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"clap",
|
||||
@ -1896,7 +1896,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "kcl-lib"
|
||||
version = "0.2.73"
|
||||
version = "0.2.74"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"approx 0.5.1",
|
||||
@ -1973,7 +1973,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "kcl-python-bindings"
|
||||
version = "0.3.73"
|
||||
version = "0.3.74"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"kcl-lib",
|
||||
@ -1988,7 +1988,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "kcl-test-server"
|
||||
version = "0.1.73"
|
||||
version = "0.1.74"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"hyper 0.14.32",
|
||||
@ -2001,7 +2001,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "kcl-to-core"
|
||||
version = "0.1.73"
|
||||
version = "0.1.74"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"async-trait",
|
||||
@ -2015,7 +2015,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "kcl-wasm-lib"
|
||||
version = "0.1.73"
|
||||
version = "0.1.74"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"bson",
|
||||
|
@ -1,7 +1,7 @@
|
||||
|
||||
[package]
|
||||
name = "kcl-bumper"
|
||||
version = "0.1.73"
|
||||
version = "0.1.74"
|
||||
edition = "2021"
|
||||
repository = "https://github.com/KittyCAD/modeling-api"
|
||||
rust-version = "1.76"
|
||||
|
@ -1,7 +1,7 @@
|
||||
[package]
|
||||
name = "kcl-derive-docs"
|
||||
description = "A tool for generating documentation from Rust derive macros"
|
||||
version = "0.1.73"
|
||||
version = "0.1.74"
|
||||
edition = "2021"
|
||||
license = "MIT"
|
||||
repository = "https://github.com/KittyCAD/modeling-app"
|
||||
|
@ -1,7 +1,7 @@
|
||||
[package]
|
||||
name = "kcl-directory-test-macro"
|
||||
description = "A tool for generating tests from a directory of kcl files"
|
||||
version = "0.1.73"
|
||||
version = "0.1.74"
|
||||
edition = "2021"
|
||||
license = "MIT"
|
||||
repository = "https://github.com/KittyCAD/modeling-app"
|
||||
|
@ -1,6 +1,6 @@
|
||||
[package]
|
||||
name = "kcl-language-server-release"
|
||||
version = "0.1.73"
|
||||
version = "0.1.74"
|
||||
edition = "2021"
|
||||
authors = ["KittyCAD Inc <kcl@kittycad.io>"]
|
||||
publish = false
|
||||
|
@ -2,7 +2,7 @@
|
||||
name = "kcl-language-server"
|
||||
description = "A language server for KCL."
|
||||
authors = ["KittyCAD Inc <kcl@kittycad.io>"]
|
||||
version = "0.2.73"
|
||||
version = "0.2.74"
|
||||
edition = "2021"
|
||||
license = "MIT"
|
||||
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
||||
|
@ -1,7 +1,7 @@
|
||||
[package]
|
||||
name = "kcl-lib"
|
||||
description = "KittyCAD Language implementation and tools"
|
||||
version = "0.2.73"
|
||||
version = "0.2.74"
|
||||
edition = "2021"
|
||||
license = "MIT"
|
||||
repository = "https://github.com/KittyCAD/modeling-app"
|
||||
|
@ -3086,6 +3086,48 @@ mod error_revolve_on_edge_get_edge {
|
||||
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 {
|
||||
const TEST_NAME: &str = "sketch_on_face_union";
|
||||
|
||||
@ -3107,6 +3149,27 @@ mod sketch_on_face_union {
|
||||
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 {
|
||||
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 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 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]
|
||||
name = "kcl-python-bindings"
|
||||
version = "0.3.73"
|
||||
version = "0.3.74"
|
||||
edition = "2021"
|
||||
repository = "https://github.com/kittycad/modeling-app"
|
||||
exclude = ["tests/*", "files/*", "venv/*"]
|
||||
|
@ -1,7 +1,7 @@
|
||||
[package]
|
||||
name = "kcl-test-server"
|
||||
description = "A test server for KCL"
|
||||
version = "0.1.73"
|
||||
version = "0.1.74"
|
||||
edition = "2021"
|
||||
license = "MIT"
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
[package]
|
||||
name = "kcl-to-core"
|
||||
description = "Utility methods to convert kcl to engine core executable tests"
|
||||
version = "0.1.73"
|
||||
version = "0.1.74"
|
||||
edition = "2021"
|
||||
license = "MIT"
|
||||
repository = "https://github.com/KittyCAD/modeling-app"
|
||||
|
@ -1,6 +1,6 @@
|
||||
[package]
|
||||
name = "kcl-wasm-lib"
|
||||
version = "0.1.73"
|
||||
version = "0.1.74"
|
||||
edition = "2021"
|
||||
repository = "https://github.com/KittyCAD/modeling-app"
|
||||
rust-version = "1.83"
|
||||
|
Reference in New Issue
Block a user