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:
Jess Frazelle
2025-05-16 16:22:50 -07:00
committed by GitHub
parent da65426ddc
commit 416de9a9fb
39 changed files with 13439 additions and 34 deletions

20
rust/Cargo.lock generated
View File

@ -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",

View File

@ -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"

View File

@ -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"

View File

@ -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"

View File

@ -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

View File

@ -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

View File

@ -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"

View File

@ -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";

View File

@ -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?;

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,6 @@
---
source: kcl-lib/src/simulation_tests.rs
description: Artifact graph flowchart multi_target_csg.kcl
extension: md
snapshot_kind: binary
---

View File

@ -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
```

File diff suppressed because it is too large Load Diff

View 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 │
╰────

View 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)

View 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": []
}
}
]

View 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)

View 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
}
]
}
}
]

View File

@ -0,0 +1,6 @@
---
source: kcl-lib/src/simulation_tests.rs
description: Artifact graph flowchart subtract_with_pattern.kcl
extension: md
snapshot_kind: binary
---

View File

@ -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
```

File diff suppressed because it is too large Load Diff

View 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

View 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": []
}
}
]

File diff suppressed because it is too large Load Diff

Binary file not shown.

After

Width:  |  Height:  |  Size: 39 KiB

View 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

View File

@ -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
}
]
}
}
]

View File

@ -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
---

View File

@ -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
```

File diff suppressed because it is too large Load Diff

View 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

View 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

View File

@ -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

View File

@ -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/*"]

View File

@ -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"

View File

@ -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"

View File

@ -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"