Kwargs: map and reduce (#6480)

Migrate array's `map`, `reduce` and `push` functions to use keyword arguments.
This commit is contained in:
Adam Chalmers
2025-04-25 19:09:03 -05:00
committed by GitHub
parent 5a4f8bd522
commit 50f8131d83
35 changed files with 3852 additions and 3498 deletions

View File

@ -2,9 +2,10 @@
source: kcl-lib/src/simulation_tests.rs
description: Error from executing argument_error.kcl
---
KCL Type error
KCL Semantic error
× type: Expected an array but found Function
× semantic: This function expected the input argument to be of type
│ Vec<KclValue> but it's actually of type Function
╭─[5:5]
4 │
5 │ map(f, [0, 1])

View File

@ -86,31 +86,25 @@ description: Result of parsing array_elem_push.kcl
"init": {
"arguments": [
{
"abs_path": false,
"commentStart": 0,
"end": 0,
"name": {
"type": "LabeledArg",
"label": {
"commentStart": 0,
"end": 0,
"name": "arr",
"name": "item",
"start": 0,
"type": "Identifier"
},
"path": [],
"start": 0,
"type": "Name",
"type": "Name"
},
{
"commentStart": 0,
"end": 0,
"raw": "4",
"start": 0,
"type": "Literal",
"type": "Literal",
"value": {
"value": 4.0,
"suffix": "None"
"arg": {
"commentStart": 0,
"end": 0,
"raw": "4",
"start": 0,
"type": "Literal",
"type": "Literal",
"value": {
"value": 4.0,
"suffix": "None"
}
}
}
],
@ -132,8 +126,24 @@ description: Result of parsing array_elem_push.kcl
"commentStart": 0,
"end": 0,
"start": 0,
"type": "CallExpression",
"type": "CallExpression"
"type": "CallExpressionKw",
"type": "CallExpressionKw",
"unlabeled": {
"abs_path": false,
"commentStart": 0,
"end": 0,
"name": {
"commentStart": 0,
"end": 0,
"name": "arr",
"start": 0,
"type": "Identifier"
},
"path": [],
"start": 0,
"type": "Name",
"type": "Name"
}
},
"start": 0,
"type": "VariableDeclarator"
@ -159,31 +169,25 @@ description: Result of parsing array_elem_push.kcl
"init": {
"arguments": [
{
"abs_path": false,
"commentStart": 0,
"end": 0,
"name": {
"type": "LabeledArg",
"label": {
"commentStart": 0,
"end": 0,
"name": "new_arr1",
"name": "item",
"start": 0,
"type": "Identifier"
},
"path": [],
"start": 0,
"type": "Name",
"type": "Name"
},
{
"commentStart": 0,
"end": 0,
"raw": "5",
"start": 0,
"type": "Literal",
"type": "Literal",
"value": {
"value": 5.0,
"suffix": "None"
"arg": {
"commentStart": 0,
"end": 0,
"raw": "5",
"start": 0,
"type": "Literal",
"type": "Literal",
"value": {
"value": 5.0,
"suffix": "None"
}
}
}
],
@ -205,8 +209,24 @@ description: Result of parsing array_elem_push.kcl
"commentStart": 0,
"end": 0,
"start": 0,
"type": "CallExpression",
"type": "CallExpression"
"type": "CallExpressionKw",
"type": "CallExpressionKw",
"unlabeled": {
"abs_path": false,
"commentStart": 0,
"end": 0,
"name": {
"commentStart": 0,
"end": 0,
"name": "new_arr1",
"start": 0,
"type": "Identifier"
},
"path": [],
"start": 0,
"type": "Name",
"type": "Name"
}
},
"start": 0,
"type": "VariableDeclarator"

View File

@ -1,6 +1,6 @@
arr = [1, 2, 3]
new_arr1 = push(arr, 4)
new_arr2 = push(new_arr1, 5)
new_arr1 = push(arr, item = 4)
new_arr2 = push(new_arr1, item = 5)
assert(new_arr1[0], isEqualTo = 1, error = "element 0 should not have changed")
assert(new_arr1[1], isEqualTo = 2, error = "element 1 should not have changed")
assert(new_arr1[2], isEqualTo = 3, error = "element 2 should not have changed")

View File

@ -3,8 +3,8 @@ source: kcl-lib/src/simulation_tests.rs
description: Result of unparsing array_elem_push.kcl
---
arr = [1, 2, 3]
new_arr1 = push(arr, 4)
new_arr2 = push(new_arr1, 5)
new_arr1 = push(arr, item = 4)
new_arr2 = push(new_arr1, item = 5)
assert(new_arr1[0], isEqualTo = 1, error = "element 0 should not have changed")
assert(new_arr1[1], isEqualTo = 2, error = "element 1 should not have changed")
assert(new_arr1[2], isEqualTo = 3, error = "element 2 should not have changed")

View File

@ -86,31 +86,25 @@ description: Result of parsing array_elem_push_fail.kcl
"init": {
"arguments": [
{
"abs_path": false,
"commentStart": 0,
"end": 0,
"name": {
"type": "LabeledArg",
"label": {
"commentStart": 0,
"end": 0,
"name": "arr",
"name": "item",
"start": 0,
"type": "Identifier"
},
"path": [],
"start": 0,
"type": "Name",
"type": "Name"
},
{
"commentStart": 0,
"end": 0,
"raw": "4",
"start": 0,
"type": "Literal",
"type": "Literal",
"value": {
"value": 4.0,
"suffix": "None"
"arg": {
"commentStart": 0,
"end": 0,
"raw": "4",
"start": 0,
"type": "Literal",
"type": "Literal",
"value": {
"value": 4.0,
"suffix": "None"
}
}
}
],
@ -132,8 +126,24 @@ description: Result of parsing array_elem_push_fail.kcl
"commentStart": 0,
"end": 0,
"start": 0,
"type": "CallExpression",
"type": "CallExpression"
"type": "CallExpressionKw",
"type": "CallExpressionKw",
"unlabeled": {
"abs_path": false,
"commentStart": 0,
"end": 0,
"name": {
"commentStart": 0,
"end": 0,
"name": "arr",
"start": 0,
"type": "Identifier"
},
"path": [],
"start": 0,
"type": "Name",
"type": "Name"
}
},
"start": 0,
"type": "VariableDeclarator"

View File

@ -6,7 +6,7 @@ KCL UndefinedValue error
× undefined value: The array doesn't have any item at index 3
╭─[3:8]
2 │ pushedArr = push(arr, 4)
2 │ pushedArr = push(arr, item = 4)
3 │ fail = arr[3]
· ───┬──
· ╰── tests/array_elem_push_fail/input.kcl

View File

@ -1,3 +1,3 @@
arr = [1, 2, 3]
pushedArr = push(arr, 4)
pushedArr = push(arr, item = 4)
fail = arr[3]

View File

@ -3,5 +3,5 @@ source: kcl-lib/src/simulation_tests.rs
description: Result of unparsing array_elem_push_fail.kcl
---
arr = [1, 2, 3]
pushedArr = push(arr, 4)
pushedArr = push(arr, item = 4)
fail = arr[3]

View File

@ -181,27 +181,30 @@ description: Result of parsing double_map_fn.kcl
{
"arguments": [
{
"commentStart": 0,
"end": 0,
"start": 0,
"type": "PipeSubstitution",
"type": "PipeSubstitution"
},
{
"abs_path": false,
"commentStart": 0,
"end": 0,
"name": {
"type": "LabeledArg",
"label": {
"commentStart": 0,
"end": 0,
"name": "increment",
"name": "f",
"start": 0,
"type": "Identifier"
},
"path": [],
"start": 0,
"type": "Name",
"type": "Name"
"arg": {
"abs_path": false,
"commentStart": 0,
"end": 0,
"name": {
"commentStart": 0,
"end": 0,
"name": "increment",
"start": 0,
"type": "Identifier"
},
"path": [],
"start": 0,
"type": "Name",
"type": "Name"
}
}
],
"callee": {
@ -222,33 +225,37 @@ description: Result of parsing double_map_fn.kcl
"commentStart": 0,
"end": 0,
"start": 0,
"type": "CallExpression",
"type": "CallExpression"
"type": "CallExpressionKw",
"type": "CallExpressionKw",
"unlabeled": null
},
{
"arguments": [
{
"commentStart": 0,
"end": 0,
"start": 0,
"type": "PipeSubstitution",
"type": "PipeSubstitution"
},
{
"abs_path": false,
"commentStart": 0,
"end": 0,
"name": {
"type": "LabeledArg",
"label": {
"commentStart": 0,
"end": 0,
"name": "increment",
"name": "f",
"start": 0,
"type": "Identifier"
},
"path": [],
"start": 0,
"type": "Name",
"type": "Name"
"arg": {
"abs_path": false,
"commentStart": 0,
"end": 0,
"name": {
"commentStart": 0,
"end": 0,
"name": "increment",
"start": 0,
"type": "Identifier"
},
"path": [],
"start": 0,
"type": "Name",
"type": "Name"
}
}
],
"callee": {
@ -269,8 +276,9 @@ description: Result of parsing double_map_fn.kcl
"commentStart": 0,
"end": 0,
"start": 0,
"type": "CallExpression",
"type": "CallExpression"
"type": "CallExpressionKw",
"type": "CallExpressionKw",
"unlabeled": null
}
],
"commentStart": 0,

View File

@ -4,5 +4,5 @@ fn increment(i) {
xs = [0..2]
ys = xs
|> map(%, increment)
|> map(%, increment)
|> map(f = increment)
|> map(f = increment)

View File

@ -8,5 +8,5 @@ fn increment(i) {
xs = [0..2]
ys = xs
|> map(%, increment)
|> map(%, increment)
|> map(f = increment)
|> map(f = increment)

View File

@ -1,239 +1,239 @@
```mermaid
flowchart LR
subgraph path3 [Path]
3["Path<br>[1061, 1111, 0]"]
4["Segment<br>[1061, 1111, 0]"]
3["Path<br>[1081, 1131, 0]"]
4["Segment<br>[1081, 1131, 0]"]
5[Solid2d]
end
subgraph path13 [Path]
13["Path<br>[1588, 1625, 0]"]
14["Segment<br>[1276, 1314, 0]"]
15["Segment<br>[1276, 1314, 0]"]
16["Segment<br>[1276, 1314, 0]"]
17["Segment<br>[1276, 1314, 0]"]
18["Segment<br>[1276, 1314, 0]"]
19["Segment<br>[1276, 1314, 0]"]
20["Segment<br>[1276, 1314, 0]"]
21["Segment<br>[1276, 1314, 0]"]
22["Segment<br>[1276, 1314, 0]"]
23["Segment<br>[1276, 1314, 0]"]
24["Segment<br>[1276, 1314, 0]"]
25["Segment<br>[1276, 1314, 0]"]
26["Segment<br>[1276, 1314, 0]"]
27["Segment<br>[1276, 1314, 0]"]
28["Segment<br>[1276, 1314, 0]"]
29["Segment<br>[1276, 1314, 0]"]
30["Segment<br>[1276, 1314, 0]"]
31["Segment<br>[1276, 1314, 0]"]
32["Segment<br>[1276, 1314, 0]"]
33["Segment<br>[1276, 1314, 0]"]
34["Segment<br>[1276, 1314, 0]"]
35["Segment<br>[1276, 1314, 0]"]
36["Segment<br>[1276, 1314, 0]"]
37["Segment<br>[1276, 1314, 0]"]
38["Segment<br>[1276, 1314, 0]"]
39["Segment<br>[1276, 1314, 0]"]
40["Segment<br>[1276, 1314, 0]"]
41["Segment<br>[1276, 1314, 0]"]
42["Segment<br>[1276, 1314, 0]"]
43["Segment<br>[1276, 1314, 0]"]
44["Segment<br>[1276, 1314, 0]"]
45["Segment<br>[1276, 1314, 0]"]
46["Segment<br>[1276, 1314, 0]"]
47["Segment<br>[1276, 1314, 0]"]
48["Segment<br>[1276, 1314, 0]"]
49["Segment<br>[1276, 1314, 0]"]
50["Segment<br>[1276, 1314, 0]"]
51["Segment<br>[1276, 1314, 0]"]
52["Segment<br>[1276, 1314, 0]"]
53["Segment<br>[1276, 1314, 0]"]
54["Segment<br>[1276, 1314, 0]"]
55["Segment<br>[1276, 1314, 0]"]
56["Segment<br>[1276, 1314, 0]"]
57["Segment<br>[1276, 1314, 0]"]
58["Segment<br>[1276, 1314, 0]"]
59["Segment<br>[1276, 1314, 0]"]
60["Segment<br>[1276, 1314, 0]"]
61["Segment<br>[1276, 1314, 0]"]
62["Segment<br>[1276, 1314, 0]"]
63["Segment<br>[1276, 1314, 0]"]
64["Segment<br>[1276, 1314, 0]"]
65["Segment<br>[1276, 1314, 0]"]
66["Segment<br>[1276, 1314, 0]"]
67["Segment<br>[1276, 1314, 0]"]
68["Segment<br>[1276, 1314, 0]"]
69["Segment<br>[1276, 1314, 0]"]
70["Segment<br>[1276, 1314, 0]"]
71["Segment<br>[1276, 1314, 0]"]
72["Segment<br>[1276, 1314, 0]"]
73["Segment<br>[1276, 1314, 0]"]
74["Segment<br>[1276, 1314, 0]"]
75["Segment<br>[1276, 1314, 0]"]
76["Segment<br>[1276, 1314, 0]"]
77["Segment<br>[1276, 1314, 0]"]
78["Segment<br>[1276, 1314, 0]"]
79["Segment<br>[1276, 1314, 0]"]
80["Segment<br>[1276, 1314, 0]"]
81["Segment<br>[1276, 1314, 0]"]
82["Segment<br>[1276, 1314, 0]"]
83["Segment<br>[1276, 1314, 0]"]
84["Segment<br>[1276, 1314, 0]"]
85["Segment<br>[1276, 1314, 0]"]
86["Segment<br>[1276, 1314, 0]"]
87["Segment<br>[1276, 1314, 0]"]
88["Segment<br>[1276, 1314, 0]"]
89["Segment<br>[1276, 1314, 0]"]
90["Segment<br>[1276, 1314, 0]"]
91["Segment<br>[1276, 1314, 0]"]
92["Segment<br>[1276, 1314, 0]"]
93["Segment<br>[1276, 1314, 0]"]
94["Segment<br>[1276, 1314, 0]"]
95["Segment<br>[1276, 1314, 0]"]
96["Segment<br>[1276, 1314, 0]"]
97["Segment<br>[1276, 1314, 0]"]
98["Segment<br>[1276, 1314, 0]"]
99["Segment<br>[1276, 1314, 0]"]
100["Segment<br>[1276, 1314, 0]"]
101["Segment<br>[1276, 1314, 0]"]
102["Segment<br>[1276, 1314, 0]"]
103["Segment<br>[1276, 1314, 0]"]
104["Segment<br>[1276, 1314, 0]"]
105["Segment<br>[1276, 1314, 0]"]
106["Segment<br>[1276, 1314, 0]"]
107["Segment<br>[1276, 1314, 0]"]
108["Segment<br>[1276, 1314, 0]"]
109["Segment<br>[1276, 1314, 0]"]
110["Segment<br>[1276, 1314, 0]"]
111["Segment<br>[1276, 1314, 0]"]
112["Segment<br>[1276, 1314, 0]"]
113["Segment<br>[1276, 1314, 0]"]
114["Segment<br>[1276, 1314, 0]"]
115["Segment<br>[1677, 1775, 0]"]
116["Segment<br>[1504, 1534, 0]"]
117["Segment<br>[1504, 1534, 0]"]
118["Segment<br>[1504, 1534, 0]"]
119["Segment<br>[1504, 1534, 0]"]
120["Segment<br>[1504, 1534, 0]"]
121["Segment<br>[1504, 1534, 0]"]
122["Segment<br>[1504, 1534, 0]"]
123["Segment<br>[1504, 1534, 0]"]
124["Segment<br>[1504, 1534, 0]"]
125["Segment<br>[1504, 1534, 0]"]
126["Segment<br>[1504, 1534, 0]"]
127["Segment<br>[1504, 1534, 0]"]
128["Segment<br>[1504, 1534, 0]"]
129["Segment<br>[1504, 1534, 0]"]
130["Segment<br>[1504, 1534, 0]"]
131["Segment<br>[1504, 1534, 0]"]
132["Segment<br>[1504, 1534, 0]"]
133["Segment<br>[1504, 1534, 0]"]
134["Segment<br>[1504, 1534, 0]"]
135["Segment<br>[1504, 1534, 0]"]
136["Segment<br>[1504, 1534, 0]"]
137["Segment<br>[1504, 1534, 0]"]
138["Segment<br>[1504, 1534, 0]"]
139["Segment<br>[1504, 1534, 0]"]
140["Segment<br>[1504, 1534, 0]"]
141["Segment<br>[1504, 1534, 0]"]
142["Segment<br>[1504, 1534, 0]"]
143["Segment<br>[1504, 1534, 0]"]
144["Segment<br>[1504, 1534, 0]"]
145["Segment<br>[1504, 1534, 0]"]
146["Segment<br>[1504, 1534, 0]"]
147["Segment<br>[1504, 1534, 0]"]
148["Segment<br>[1504, 1534, 0]"]
149["Segment<br>[1504, 1534, 0]"]
150["Segment<br>[1504, 1534, 0]"]
151["Segment<br>[1504, 1534, 0]"]
152["Segment<br>[1504, 1534, 0]"]
153["Segment<br>[1504, 1534, 0]"]
154["Segment<br>[1504, 1534, 0]"]
155["Segment<br>[1504, 1534, 0]"]
156["Segment<br>[1504, 1534, 0]"]
157["Segment<br>[1504, 1534, 0]"]
158["Segment<br>[1504, 1534, 0]"]
159["Segment<br>[1504, 1534, 0]"]
160["Segment<br>[1504, 1534, 0]"]
161["Segment<br>[1504, 1534, 0]"]
162["Segment<br>[1504, 1534, 0]"]
163["Segment<br>[1504, 1534, 0]"]
164["Segment<br>[1504, 1534, 0]"]
165["Segment<br>[1504, 1534, 0]"]
166["Segment<br>[1504, 1534, 0]"]
167["Segment<br>[1504, 1534, 0]"]
168["Segment<br>[1504, 1534, 0]"]
169["Segment<br>[1504, 1534, 0]"]
170["Segment<br>[1504, 1534, 0]"]
171["Segment<br>[1504, 1534, 0]"]
172["Segment<br>[1504, 1534, 0]"]
173["Segment<br>[1504, 1534, 0]"]
174["Segment<br>[1504, 1534, 0]"]
175["Segment<br>[1504, 1534, 0]"]
176["Segment<br>[1504, 1534, 0]"]
177["Segment<br>[1504, 1534, 0]"]
178["Segment<br>[1504, 1534, 0]"]
179["Segment<br>[1504, 1534, 0]"]
180["Segment<br>[1504, 1534, 0]"]
181["Segment<br>[1504, 1534, 0]"]
182["Segment<br>[1504, 1534, 0]"]
183["Segment<br>[1504, 1534, 0]"]
184["Segment<br>[1504, 1534, 0]"]
185["Segment<br>[1504, 1534, 0]"]
186["Segment<br>[1504, 1534, 0]"]
187["Segment<br>[1504, 1534, 0]"]
188["Segment<br>[1504, 1534, 0]"]
189["Segment<br>[1504, 1534, 0]"]
190["Segment<br>[1504, 1534, 0]"]
191["Segment<br>[1504, 1534, 0]"]
192["Segment<br>[1504, 1534, 0]"]
193["Segment<br>[1504, 1534, 0]"]
194["Segment<br>[1504, 1534, 0]"]
195["Segment<br>[1504, 1534, 0]"]
196["Segment<br>[1504, 1534, 0]"]
197["Segment<br>[1504, 1534, 0]"]
198["Segment<br>[1504, 1534, 0]"]
199["Segment<br>[1504, 1534, 0]"]
200["Segment<br>[1504, 1534, 0]"]
201["Segment<br>[1504, 1534, 0]"]
202["Segment<br>[1504, 1534, 0]"]
203["Segment<br>[1504, 1534, 0]"]
204["Segment<br>[1504, 1534, 0]"]
205["Segment<br>[1504, 1534, 0]"]
206["Segment<br>[1504, 1534, 0]"]
207["Segment<br>[1504, 1534, 0]"]
208["Segment<br>[1504, 1534, 0]"]
209["Segment<br>[1504, 1534, 0]"]
210["Segment<br>[1504, 1534, 0]"]
211["Segment<br>[1504, 1534, 0]"]
212["Segment<br>[1504, 1534, 0]"]
213["Segment<br>[1504, 1534, 0]"]
214["Segment<br>[1504, 1534, 0]"]
215["Segment<br>[1504, 1534, 0]"]
216["Segment<br>[1504, 1534, 0]"]
217["Segment<br>[1821, 1828, 0]"]
13["Path<br>[1608, 1645, 0]"]
14["Segment<br>[1296, 1334, 0]"]
15["Segment<br>[1296, 1334, 0]"]
16["Segment<br>[1296, 1334, 0]"]
17["Segment<br>[1296, 1334, 0]"]
18["Segment<br>[1296, 1334, 0]"]
19["Segment<br>[1296, 1334, 0]"]
20["Segment<br>[1296, 1334, 0]"]
21["Segment<br>[1296, 1334, 0]"]
22["Segment<br>[1296, 1334, 0]"]
23["Segment<br>[1296, 1334, 0]"]
24["Segment<br>[1296, 1334, 0]"]
25["Segment<br>[1296, 1334, 0]"]
26["Segment<br>[1296, 1334, 0]"]
27["Segment<br>[1296, 1334, 0]"]
28["Segment<br>[1296, 1334, 0]"]
29["Segment<br>[1296, 1334, 0]"]
30["Segment<br>[1296, 1334, 0]"]
31["Segment<br>[1296, 1334, 0]"]
32["Segment<br>[1296, 1334, 0]"]
33["Segment<br>[1296, 1334, 0]"]
34["Segment<br>[1296, 1334, 0]"]
35["Segment<br>[1296, 1334, 0]"]
36["Segment<br>[1296, 1334, 0]"]
37["Segment<br>[1296, 1334, 0]"]
38["Segment<br>[1296, 1334, 0]"]
39["Segment<br>[1296, 1334, 0]"]
40["Segment<br>[1296, 1334, 0]"]
41["Segment<br>[1296, 1334, 0]"]
42["Segment<br>[1296, 1334, 0]"]
43["Segment<br>[1296, 1334, 0]"]
44["Segment<br>[1296, 1334, 0]"]
45["Segment<br>[1296, 1334, 0]"]
46["Segment<br>[1296, 1334, 0]"]
47["Segment<br>[1296, 1334, 0]"]
48["Segment<br>[1296, 1334, 0]"]
49["Segment<br>[1296, 1334, 0]"]
50["Segment<br>[1296, 1334, 0]"]
51["Segment<br>[1296, 1334, 0]"]
52["Segment<br>[1296, 1334, 0]"]
53["Segment<br>[1296, 1334, 0]"]
54["Segment<br>[1296, 1334, 0]"]
55["Segment<br>[1296, 1334, 0]"]
56["Segment<br>[1296, 1334, 0]"]
57["Segment<br>[1296, 1334, 0]"]
58["Segment<br>[1296, 1334, 0]"]
59["Segment<br>[1296, 1334, 0]"]
60["Segment<br>[1296, 1334, 0]"]
61["Segment<br>[1296, 1334, 0]"]
62["Segment<br>[1296, 1334, 0]"]
63["Segment<br>[1296, 1334, 0]"]
64["Segment<br>[1296, 1334, 0]"]
65["Segment<br>[1296, 1334, 0]"]
66["Segment<br>[1296, 1334, 0]"]
67["Segment<br>[1296, 1334, 0]"]
68["Segment<br>[1296, 1334, 0]"]
69["Segment<br>[1296, 1334, 0]"]
70["Segment<br>[1296, 1334, 0]"]
71["Segment<br>[1296, 1334, 0]"]
72["Segment<br>[1296, 1334, 0]"]
73["Segment<br>[1296, 1334, 0]"]
74["Segment<br>[1296, 1334, 0]"]
75["Segment<br>[1296, 1334, 0]"]
76["Segment<br>[1296, 1334, 0]"]
77["Segment<br>[1296, 1334, 0]"]
78["Segment<br>[1296, 1334, 0]"]
79["Segment<br>[1296, 1334, 0]"]
80["Segment<br>[1296, 1334, 0]"]
81["Segment<br>[1296, 1334, 0]"]
82["Segment<br>[1296, 1334, 0]"]
83["Segment<br>[1296, 1334, 0]"]
84["Segment<br>[1296, 1334, 0]"]
85["Segment<br>[1296, 1334, 0]"]
86["Segment<br>[1296, 1334, 0]"]
87["Segment<br>[1296, 1334, 0]"]
88["Segment<br>[1296, 1334, 0]"]
89["Segment<br>[1296, 1334, 0]"]
90["Segment<br>[1296, 1334, 0]"]
91["Segment<br>[1296, 1334, 0]"]
92["Segment<br>[1296, 1334, 0]"]
93["Segment<br>[1296, 1334, 0]"]
94["Segment<br>[1296, 1334, 0]"]
95["Segment<br>[1296, 1334, 0]"]
96["Segment<br>[1296, 1334, 0]"]
97["Segment<br>[1296, 1334, 0]"]
98["Segment<br>[1296, 1334, 0]"]
99["Segment<br>[1296, 1334, 0]"]
100["Segment<br>[1296, 1334, 0]"]
101["Segment<br>[1296, 1334, 0]"]
102["Segment<br>[1296, 1334, 0]"]
103["Segment<br>[1296, 1334, 0]"]
104["Segment<br>[1296, 1334, 0]"]
105["Segment<br>[1296, 1334, 0]"]
106["Segment<br>[1296, 1334, 0]"]
107["Segment<br>[1296, 1334, 0]"]
108["Segment<br>[1296, 1334, 0]"]
109["Segment<br>[1296, 1334, 0]"]
110["Segment<br>[1296, 1334, 0]"]
111["Segment<br>[1296, 1334, 0]"]
112["Segment<br>[1296, 1334, 0]"]
113["Segment<br>[1296, 1334, 0]"]
114["Segment<br>[1296, 1334, 0]"]
115["Segment<br>[1711, 1809, 0]"]
116["Segment<br>[1524, 1554, 0]"]
117["Segment<br>[1524, 1554, 0]"]
118["Segment<br>[1524, 1554, 0]"]
119["Segment<br>[1524, 1554, 0]"]
120["Segment<br>[1524, 1554, 0]"]
121["Segment<br>[1524, 1554, 0]"]
122["Segment<br>[1524, 1554, 0]"]
123["Segment<br>[1524, 1554, 0]"]
124["Segment<br>[1524, 1554, 0]"]
125["Segment<br>[1524, 1554, 0]"]
126["Segment<br>[1524, 1554, 0]"]
127["Segment<br>[1524, 1554, 0]"]
128["Segment<br>[1524, 1554, 0]"]
129["Segment<br>[1524, 1554, 0]"]
130["Segment<br>[1524, 1554, 0]"]
131["Segment<br>[1524, 1554, 0]"]
132["Segment<br>[1524, 1554, 0]"]
133["Segment<br>[1524, 1554, 0]"]
134["Segment<br>[1524, 1554, 0]"]
135["Segment<br>[1524, 1554, 0]"]
136["Segment<br>[1524, 1554, 0]"]
137["Segment<br>[1524, 1554, 0]"]
138["Segment<br>[1524, 1554, 0]"]
139["Segment<br>[1524, 1554, 0]"]
140["Segment<br>[1524, 1554, 0]"]
141["Segment<br>[1524, 1554, 0]"]
142["Segment<br>[1524, 1554, 0]"]
143["Segment<br>[1524, 1554, 0]"]
144["Segment<br>[1524, 1554, 0]"]
145["Segment<br>[1524, 1554, 0]"]
146["Segment<br>[1524, 1554, 0]"]
147["Segment<br>[1524, 1554, 0]"]
148["Segment<br>[1524, 1554, 0]"]
149["Segment<br>[1524, 1554, 0]"]
150["Segment<br>[1524, 1554, 0]"]
151["Segment<br>[1524, 1554, 0]"]
152["Segment<br>[1524, 1554, 0]"]
153["Segment<br>[1524, 1554, 0]"]
154["Segment<br>[1524, 1554, 0]"]
155["Segment<br>[1524, 1554, 0]"]
156["Segment<br>[1524, 1554, 0]"]
157["Segment<br>[1524, 1554, 0]"]
158["Segment<br>[1524, 1554, 0]"]
159["Segment<br>[1524, 1554, 0]"]
160["Segment<br>[1524, 1554, 0]"]
161["Segment<br>[1524, 1554, 0]"]
162["Segment<br>[1524, 1554, 0]"]
163["Segment<br>[1524, 1554, 0]"]
164["Segment<br>[1524, 1554, 0]"]
165["Segment<br>[1524, 1554, 0]"]
166["Segment<br>[1524, 1554, 0]"]
167["Segment<br>[1524, 1554, 0]"]
168["Segment<br>[1524, 1554, 0]"]
169["Segment<br>[1524, 1554, 0]"]
170["Segment<br>[1524, 1554, 0]"]
171["Segment<br>[1524, 1554, 0]"]
172["Segment<br>[1524, 1554, 0]"]
173["Segment<br>[1524, 1554, 0]"]
174["Segment<br>[1524, 1554, 0]"]
175["Segment<br>[1524, 1554, 0]"]
176["Segment<br>[1524, 1554, 0]"]
177["Segment<br>[1524, 1554, 0]"]
178["Segment<br>[1524, 1554, 0]"]
179["Segment<br>[1524, 1554, 0]"]
180["Segment<br>[1524, 1554, 0]"]
181["Segment<br>[1524, 1554, 0]"]
182["Segment<br>[1524, 1554, 0]"]
183["Segment<br>[1524, 1554, 0]"]
184["Segment<br>[1524, 1554, 0]"]
185["Segment<br>[1524, 1554, 0]"]
186["Segment<br>[1524, 1554, 0]"]
187["Segment<br>[1524, 1554, 0]"]
188["Segment<br>[1524, 1554, 0]"]
189["Segment<br>[1524, 1554, 0]"]
190["Segment<br>[1524, 1554, 0]"]
191["Segment<br>[1524, 1554, 0]"]
192["Segment<br>[1524, 1554, 0]"]
193["Segment<br>[1524, 1554, 0]"]
194["Segment<br>[1524, 1554, 0]"]
195["Segment<br>[1524, 1554, 0]"]
196["Segment<br>[1524, 1554, 0]"]
197["Segment<br>[1524, 1554, 0]"]
198["Segment<br>[1524, 1554, 0]"]
199["Segment<br>[1524, 1554, 0]"]
200["Segment<br>[1524, 1554, 0]"]
201["Segment<br>[1524, 1554, 0]"]
202["Segment<br>[1524, 1554, 0]"]
203["Segment<br>[1524, 1554, 0]"]
204["Segment<br>[1524, 1554, 0]"]
205["Segment<br>[1524, 1554, 0]"]
206["Segment<br>[1524, 1554, 0]"]
207["Segment<br>[1524, 1554, 0]"]
208["Segment<br>[1524, 1554, 0]"]
209["Segment<br>[1524, 1554, 0]"]
210["Segment<br>[1524, 1554, 0]"]
211["Segment<br>[1524, 1554, 0]"]
212["Segment<br>[1524, 1554, 0]"]
213["Segment<br>[1524, 1554, 0]"]
214["Segment<br>[1524, 1554, 0]"]
215["Segment<br>[1524, 1554, 0]"]
216["Segment<br>[1524, 1554, 0]"]
217["Segment<br>[1869, 1876, 0]"]
218[Solid2d]
end
subgraph path220 [Path]
220["Path<br>[2309, 2388, 0]"]
221["Segment<br>[2394, 2421, 0]"]
222["Segment<br>[2427, 2455, 0]"]
223["Segment<br>[2461, 2489, 0]"]
224["Segment<br>[2495, 2611, 0]"]
225["Segment<br>[2617, 2722, 0]"]
226["Segment<br>[2728, 2735, 0]"]
220["Path<br>[2357, 2436, 0]"]
221["Segment<br>[2442, 2469, 0]"]
222["Segment<br>[2475, 2503, 0]"]
223["Segment<br>[2509, 2537, 0]"]
224["Segment<br>[2543, 2659, 0]"]
225["Segment<br>[2665, 2770, 0]"]
226["Segment<br>[2776, 2783, 0]"]
227[Solid2d]
end
1["Plane<br>[168, 185, 0]"]
2["Plane<br>[1038, 1055, 0]"]
6["Sweep Extrusion<br>[1117, 1145, 0]"]
2["Plane<br>[1058, 1075, 0]"]
6["Sweep Extrusion<br>[1137, 1165, 0]"]
7[Wall]
8["Cap Start"]
9["Cap End"]
10["SweepEdge Opposite"]
11["SweepEdge Adjacent"]
12["Plane<br>[1565, 1582, 0]"]
219["Sweep Extrusion<br>[1834, 1862, 0]"]
228["Sweep Extrusion<br>[2741, 2770, 0]"]
12["Plane<br>[1585, 1602, 0]"]
219["Sweep Extrusion<br>[1882, 1910, 0]"]
228["Sweep Extrusion<br>[2789, 2818, 0]"]
229[Wall]
230[Wall]
231[Wall]
@ -246,7 +246,7 @@ flowchart LR
238["SweepEdge Adjacent"]
239["SweepEdge Opposite"]
240["SweepEdge Adjacent"]
241["StartSketchOnFace<br>[2272, 2303, 0]"]
241["StartSketchOnFace<br>[2320, 2351, 0]"]
2 --- 3
3 --- 4
3 ---- 6

File diff suppressed because it is too large Load Diff

View File

@ -22,26 +22,26 @@ gearHeight = 3
// Interpolate points along the involute curve
cmo = 101
rs = map([0..cmo], fn(i) {
rs = map([0..cmo], f = fn(i) {
return baseDiameter / 2 + i / cmo * (tipDiameter - baseDiameter) / 2
})
// Calculate operating pressure angle
angles = map(rs, fn(r) {
angles = map(rs, f = fn(r) {
return toDegrees( acos(baseDiameter / 2 / r))
})
// Calculate the involute function
invas = map(angles, fn(a) {
invas = map(angles, f = fn(a) {
return tan(toRadians(a)) - toRadians(a)
})
// Map the involute curve
xs = map([0..cmo], fn(i) {
xs = map([0..cmo], f = fn(i) {
return rs[i] * cos(invas[i]: number(rad))
})
ys = map([0..cmo], fn(i) {
ys = map([0..cmo], f = fn(i) {
return rs[i] * sin(invas[i]: number(rad))
})
@ -67,13 +67,13 @@ fn rightInvolute(i, sg) {
// Draw gear teeth
start = startSketchOn(XY)
|> startProfile(at = [xs[101], ys[101]])
teeth = reduce([0..100], start, leftInvolute)
teeth = reduce([0..100], initial = start, f = leftInvolute)
|> arc(
angleStart = 0,
angleEnd = toothAngle,
radius = baseDiameter / 2,
)
|> reduce([1..101], %, rightInvolute)
|> reduce([1..101], initial = %, f = rightInvolute)
|> close()
|> extrude(length = gearHeight)
|> patternCircular3d(

View File

@ -25,28 +25,43 @@ gearHeight = 3
// Interpolate points along the involute curve
cmo = 101
rs = map([0..cmo], fn(i) {
return baseDiameter / 2 + i / cmo * (tipDiameter - baseDiameter) / 2
})
rs = map(
[0..cmo],
f = fn(i) {
return baseDiameter / 2 + i / cmo * (tipDiameter - baseDiameter) / 2
},
)
// Calculate operating pressure angle
angles = map(rs, fn(r) {
return toDegrees( acos(baseDiameter / 2 / r))
})
angles = map(
rs,
f = fn(r) {
return toDegrees( acos(baseDiameter / 2 / r))
},
)
// Calculate the involute function
invas = map(angles, fn(a) {
return tan(toRadians(a)) - toRadians(a)
})
invas = map(
angles,
f = fn(a) {
return tan(toRadians(a)) - toRadians(a)
},
)
// Map the involute curve
xs = map([0..cmo], fn(i) {
return rs[i] * cos(invas[i]: number(rad))
})
xs = map(
[0..cmo],
f = fn(i) {
return rs[i] * cos(invas[i]: number(rad))
},
)
ys = map([0..cmo], fn(i) {
return rs[i] * sin(invas[i]: number(rad))
})
ys = map(
[0..cmo],
f = fn(i) {
return rs[i] * sin(invas[i]: number(rad))
},
)
// Extrude the gear body
body = startSketchOn(XY)
@ -70,9 +85,9 @@ fn rightInvolute(i, sg) {
// Draw gear teeth
start = startSketchOn(XY)
|> startProfile(at = [xs[101], ys[101]])
teeth = reduce([0..100], start, leftInvolute)
teeth = reduce([0..100], initial = start, f = leftInvolute)
|> arc(angleStart = 0, angleEnd = toothAngle, radius = baseDiameter / 2)
|> reduce([1..101], %, rightInvolute)
|> reduce([1..101], initial = %, f = rightInvolute)
|> close()
|> extrude(length = gearHeight)
|> patternCircular3d(

View File

@ -288,7 +288,7 @@ flowchart LR
262["SweepEdge Adjacent"]
263["SweepEdge Opposite"]
264["SweepEdge Adjacent"]
265["CompositeSolid Intersect<br>[1935, 1965, 0]"]
265["CompositeSolid Intersect<br>[1997, 2027, 0]"]
1 --- 2
2 --- 3
2 --- 4

View File

@ -1999,272 +1999,266 @@ description: Result of parsing dodecahedron.kcl
"init": {
"arguments": [
{
"abs_path": false,
"commentStart": 0,
"end": 0,
"name": {
"type": "LabeledArg",
"label": {
"commentStart": 0,
"end": 0,
"name": "faceRotations",
"name": "f",
"start": 0,
"type": "Identifier"
},
"path": [],
"start": 0,
"type": "Name",
"type": "Name"
},
{
"body": {
"body": [
{
"argument": {
"body": [
{
"arguments": [
{
"arg": {
"body": {
"body": [
{
"argument": {
"body": [
{
"arguments": [
{
"commentStart": 0,
"computed": false,
"end": 0,
"object": {
"commentStart": 0,
"end": 0,
"name": "rotation",
"start": 0,
"type": "Identifier",
"type": "Identifier"
},
"property": {
"commentStart": 0,
"end": 0,
"raw": "3",
"start": 0,
"type": "Literal",
"type": "Literal",
"value": {
"value": 3.0,
"suffix": "None"
}
},
"start": 0,
"type": "MemberExpression",
"type": "MemberExpression"
}
],
"callee": {
"abs_path": false,
"commentStart": 0,
"computed": false,
"end": 0,
"object": {
"name": {
"commentStart": 0,
"end": 0,
"name": "rotation",
"name": "createFaceTemplate",
"start": 0,
"type": "Identifier",
"type": "Identifier"
},
"property": {
"commentStart": 0,
"end": 0,
"raw": "3",
"start": 0,
"type": "Literal",
"type": "Literal",
"value": {
"value": 3.0,
"suffix": "None"
"path": [],
"start": 0,
"type": "Name"
},
"commentStart": 0,
"end": 0,
"start": 0,
"type": "CallExpression",
"type": "CallExpression"
},
{
"arguments": [
{
"type": "LabeledArg",
"label": {
"commentStart": 0,
"end": 0,
"name": "pitch",
"start": 0,
"type": "Identifier"
},
"arg": {
"commentStart": 0,
"computed": false,
"end": 0,
"object": {
"commentStart": 0,
"end": 0,
"name": "rotation",
"start": 0,
"type": "Identifier",
"type": "Identifier"
},
"property": {
"commentStart": 0,
"end": 0,
"raw": "0",
"start": 0,
"type": "Literal",
"type": "Literal",
"value": {
"value": 0.0,
"suffix": "None"
}
},
"start": 0,
"type": "MemberExpression",
"type": "MemberExpression"
}
},
"start": 0,
"type": "MemberExpression",
"type": "MemberExpression"
}
],
"callee": {
"abs_path": false,
"commentStart": 0,
"end": 0,
"name": {
{
"type": "LabeledArg",
"label": {
"commentStart": 0,
"end": 0,
"name": "roll",
"start": 0,
"type": "Identifier"
},
"arg": {
"commentStart": 0,
"computed": false,
"end": 0,
"object": {
"commentStart": 0,
"end": 0,
"name": "rotation",
"start": 0,
"type": "Identifier",
"type": "Identifier"
},
"property": {
"commentStart": 0,
"end": 0,
"raw": "1",
"start": 0,
"type": "Literal",
"type": "Literal",
"value": {
"value": 1.0,
"suffix": "None"
}
},
"start": 0,
"type": "MemberExpression",
"type": "MemberExpression"
}
},
{
"type": "LabeledArg",
"label": {
"commentStart": 0,
"end": 0,
"name": "yaw",
"start": 0,
"type": "Identifier"
},
"arg": {
"commentStart": 0,
"computed": false,
"end": 0,
"object": {
"commentStart": 0,
"end": 0,
"name": "rotation",
"start": 0,
"type": "Identifier",
"type": "Identifier"
},
"property": {
"commentStart": 0,
"end": 0,
"raw": "2",
"start": 0,
"type": "Literal",
"type": "Literal",
"value": {
"value": 2.0,
"suffix": "None"
}
},
"start": 0,
"type": "MemberExpression",
"type": "MemberExpression"
}
},
{
"type": "LabeledArg",
"label": {
"commentStart": 0,
"end": 0,
"name": "global",
"start": 0,
"type": "Identifier"
},
"arg": {
"commentStart": 0,
"end": 0,
"raw": "true",
"start": 0,
"type": "Literal",
"type": "Literal",
"value": true
}
}
],
"callee": {
"abs_path": false,
"commentStart": 0,
"end": 0,
"name": "createFaceTemplate",
"name": {
"commentStart": 0,
"end": 0,
"name": "rotate",
"start": 0,
"type": "Identifier"
},
"path": [],
"start": 0,
"type": "Identifier"
"type": "Name"
},
"path": [],
"start": 0,
"type": "Name"
},
"commentStart": 0,
"end": 0,
"start": 0,
"type": "CallExpression",
"type": "CallExpression"
},
{
"arguments": [
{
"type": "LabeledArg",
"label": {
"commentStart": 0,
"end": 0,
"name": "pitch",
"start": 0,
"type": "Identifier"
},
"arg": {
"commentStart": 0,
"computed": false,
"end": 0,
"object": {
"commentStart": 0,
"end": 0,
"name": "rotation",
"start": 0,
"type": "Identifier",
"type": "Identifier"
},
"property": {
"commentStart": 0,
"end": 0,
"raw": "0",
"start": 0,
"type": "Literal",
"type": "Literal",
"value": {
"value": 0.0,
"suffix": "None"
}
},
"start": 0,
"type": "MemberExpression",
"type": "MemberExpression"
}
},
{
"type": "LabeledArg",
"label": {
"commentStart": 0,
"end": 0,
"name": "roll",
"start": 0,
"type": "Identifier"
},
"arg": {
"commentStart": 0,
"computed": false,
"end": 0,
"object": {
"commentStart": 0,
"end": 0,
"name": "rotation",
"start": 0,
"type": "Identifier",
"type": "Identifier"
},
"property": {
"commentStart": 0,
"end": 0,
"raw": "1",
"start": 0,
"type": "Literal",
"type": "Literal",
"value": {
"value": 1.0,
"suffix": "None"
}
},
"start": 0,
"type": "MemberExpression",
"type": "MemberExpression"
}
},
{
"type": "LabeledArg",
"label": {
"commentStart": 0,
"end": 0,
"name": "yaw",
"start": 0,
"type": "Identifier"
},
"arg": {
"commentStart": 0,
"computed": false,
"end": 0,
"object": {
"commentStart": 0,
"end": 0,
"name": "rotation",
"start": 0,
"type": "Identifier",
"type": "Identifier"
},
"property": {
"commentStart": 0,
"end": 0,
"raw": "2",
"start": 0,
"type": "Literal",
"type": "Literal",
"value": {
"value": 2.0,
"suffix": "None"
}
},
"start": 0,
"type": "MemberExpression",
"type": "MemberExpression"
}
},
{
"type": "LabeledArg",
"label": {
"commentStart": 0,
"end": 0,
"name": "global",
"start": 0,
"type": "Identifier"
},
"arg": {
"commentStart": 0,
"end": 0,
"raw": "true",
"start": 0,
"type": "Literal",
"type": "Literal",
"value": true
}
}
],
"callee": {
"abs_path": false,
"commentStart": 0,
"end": 0,
"name": {
"commentStart": 0,
"end": 0,
"name": "rotate",
"start": 0,
"type": "Identifier"
},
"path": [],
"start": 0,
"type": "Name"
},
"commentStart": 0,
"end": 0,
"start": 0,
"type": "CallExpressionKw",
"type": "CallExpressionKw",
"unlabeled": null
}
],
"type": "CallExpressionKw",
"type": "CallExpressionKw",
"unlabeled": null
}
],
"commentStart": 0,
"end": 0,
"start": 0,
"type": "PipeExpression",
"type": "PipeExpression"
},
"commentStart": 0,
"end": 0,
"start": 0,
"type": "PipeExpression",
"type": "PipeExpression"
},
"commentStart": 0,
"end": 0,
"start": 0,
"type": "ReturnStatement",
"type": "ReturnStatement"
}
],
"type": "ReturnStatement",
"type": "ReturnStatement"
}
],
"commentStart": 0,
"end": 0,
"start": 0
},
"commentStart": 0,
"end": 0,
"start": 0
},
"commentStart": 0,
"end": 0,
"params": [
{
"type": "Parameter",
"identifier": {
"commentStart": 0,
"end": 0,
"name": "rotation",
"start": 0,
"type": "Identifier"
"params": [
{
"type": "Parameter",
"identifier": {
"commentStart": 0,
"end": 0,
"name": "rotation",
"start": 0,
"type": "Identifier"
}
}
}
],
"start": 0,
"type": "FunctionExpression",
"type": "FunctionExpression"
],
"start": 0,
"type": "FunctionExpression",
"type": "FunctionExpression"
}
}
],
"callee": {
@ -2285,8 +2279,24 @@ description: Result of parsing dodecahedron.kcl
"commentStart": 0,
"end": 0,
"start": 0,
"type": "CallExpression",
"type": "CallExpression"
"type": "CallExpressionKw",
"type": "CallExpressionKw",
"unlabeled": {
"abs_path": false,
"commentStart": 0,
"end": 0,
"name": {
"commentStart": 0,
"end": 0,
"name": "faceRotations",
"start": 0,
"type": "Identifier"
},
"path": [],
"start": 0,
"type": "Name",
"type": "Name"
}
},
"start": 0,
"type": "VariableDeclarator"
@ -2321,111 +2331,115 @@ description: Result of parsing dodecahedron.kcl
"argument": {
"arguments": [
{
"abs_path": false,
"commentStart": 0,
"end": 0,
"name": {
"type": "LabeledArg",
"label": {
"commentStart": 0,
"end": 0,
"name": "arr",
"name": "initial",
"start": 0,
"type": "Identifier"
},
"path": [],
"start": 0,
"type": "Name",
"type": "Name"
},
{
"commentStart": 0,
"end": 0,
"raw": "0",
"start": 0,
"type": "Literal",
"type": "Literal",
"value": {
"value": 0.0,
"suffix": "None"
"arg": {
"commentStart": 0,
"end": 0,
"raw": "0",
"start": 0,
"type": "Literal",
"type": "Literal",
"value": {
"value": 0.0,
"suffix": "None"
}
}
},
{
"body": {
"body": [
{
"argument": {
"commentStart": 0,
"end": 0,
"left": {
"abs_path": false,
"commentStart": 0,
"end": 0,
"name": {
"commentStart": 0,
"end": 0,
"name": "accumulator",
"start": 0,
"type": "Identifier"
},
"path": [],
"start": 0,
"type": "Name",
"type": "Name"
},
"operator": "+",
"right": {
"commentStart": 0,
"end": 0,
"raw": "1",
"start": 0,
"type": "Literal",
"type": "Literal",
"value": {
"value": 1.0,
"suffix": "None"
}
},
"start": 0,
"type": "BinaryExpression",
"type": "BinaryExpression"
},
"commentStart": 0,
"end": 0,
"start": 0,
"type": "ReturnStatement",
"type": "ReturnStatement"
}
],
"type": "LabeledArg",
"label": {
"commentStart": 0,
"end": 0,
"start": 0
"name": "f",
"start": 0,
"type": "Identifier"
},
"commentStart": 0,
"end": 0,
"params": [
{
"type": "Parameter",
"identifier": {
"commentStart": 0,
"end": 0,
"name": "item",
"start": 0,
"type": "Identifier"
}
"arg": {
"body": {
"body": [
{
"argument": {
"commentStart": 0,
"end": 0,
"left": {
"abs_path": false,
"commentStart": 0,
"end": 0,
"name": {
"commentStart": 0,
"end": 0,
"name": "accumulator",
"start": 0,
"type": "Identifier"
},
"path": [],
"start": 0,
"type": "Name",
"type": "Name"
},
"operator": "+",
"right": {
"commentStart": 0,
"end": 0,
"raw": "1",
"start": 0,
"type": "Literal",
"type": "Literal",
"value": {
"value": 1.0,
"suffix": "None"
}
},
"start": 0,
"type": "BinaryExpression",
"type": "BinaryExpression"
},
"commentStart": 0,
"end": 0,
"start": 0,
"type": "ReturnStatement",
"type": "ReturnStatement"
}
],
"commentStart": 0,
"end": 0,
"start": 0
},
{
"type": "Parameter",
"identifier": {
"commentStart": 0,
"end": 0,
"name": "accumulator",
"start": 0,
"type": "Identifier"
"commentStart": 0,
"end": 0,
"params": [
{
"type": "Parameter",
"identifier": {
"commentStart": 0,
"end": 0,
"name": "item",
"start": 0,
"type": "Identifier"
}
},
{
"type": "Parameter",
"identifier": {
"commentStart": 0,
"end": 0,
"name": "accumulator",
"start": 0,
"type": "Identifier"
}
}
}
],
"start": 0,
"type": "FunctionExpression",
"type": "FunctionExpression"
],
"start": 0,
"type": "FunctionExpression",
"type": "FunctionExpression"
}
}
],
"callee": {
@ -2446,8 +2460,24 @@ description: Result of parsing dodecahedron.kcl
"commentStart": 0,
"end": 0,
"start": 0,
"type": "CallExpression",
"type": "CallExpression"
"type": "CallExpressionKw",
"type": "CallExpressionKw",
"unlabeled": {
"abs_path": false,
"commentStart": 0,
"end": 0,
"name": {
"commentStart": 0,
"end": 0,
"name": "arr",
"start": 0,
"type": "Identifier"
},
"path": [],
"start": 0,
"type": "Name",
"type": "Name"
}
},
"commentStart": 0,
"end": 0,
@ -2822,52 +2852,56 @@ description: Result of parsing dodecahedron.kcl
"argument": {
"arguments": [
{
"abs_path": false,
"commentStart": 0,
"end": 0,
"name": {
"type": "LabeledArg",
"label": {
"commentStart": 0,
"end": 0,
"name": "remainingSolids",
"name": "initial",
"start": 0,
"type": "Identifier"
},
"path": [],
"start": 0,
"type": "Name",
"type": "Name"
"arg": {
"abs_path": false,
"commentStart": 0,
"end": 0,
"name": {
"commentStart": 0,
"end": 0,
"name": "lastSolid",
"start": 0,
"type": "Identifier"
},
"path": [],
"start": 0,
"type": "Name",
"type": "Name"
}
},
{
"abs_path": false,
"commentStart": 0,
"end": 0,
"name": {
"type": "LabeledArg",
"label": {
"commentStart": 0,
"end": 0,
"name": "lastSolid",
"name": "f",
"start": 0,
"type": "Identifier"
},
"path": [],
"start": 0,
"type": "Name",
"type": "Name"
},
{
"abs_path": false,
"commentStart": 0,
"end": 0,
"name": {
"arg": {
"abs_path": false,
"commentStart": 0,
"end": 0,
"name": "reduceIntersect",
"name": {
"commentStart": 0,
"end": 0,
"name": "reduceIntersect",
"start": 0,
"type": "Identifier"
},
"path": [],
"start": 0,
"type": "Identifier"
},
"path": [],
"start": 0,
"type": "Name",
"type": "Name"
"type": "Name",
"type": "Name"
}
}
],
"callee": {
@ -2888,8 +2922,24 @@ description: Result of parsing dodecahedron.kcl
"commentStart": 0,
"end": 0,
"start": 0,
"type": "CallExpression",
"type": "CallExpression"
"type": "CallExpressionKw",
"type": "CallExpressionKw",
"unlabeled": {
"abs_path": false,
"commentStart": 0,
"end": 0,
"name": {
"commentStart": 0,
"end": 0,
"name": "remainingSolids",
"start": 0,
"type": "Identifier"
},
"path": [],
"start": 0,
"type": "Name",
"type": "Name"
}
},
"commentStart": 0,
"end": 0,

View File

@ -789,8 +789,8 @@ description: Operations executed dodecahedron.kcl
"type": "FunctionCall",
"name": "createIntersection",
"functionSourceRange": [
1871,
2143,
1933,
2219,
0
],
"unlabeledArg": null,
@ -804,8 +804,8 @@ description: Operations executed dodecahedron.kcl
"type": "FunctionCall",
"name": "calculateArrayLength",
"functionSourceRange": [
1759,
1848,
1786,
1910,
0
],
"unlabeledArg": null,

View File

@ -1,238 +1,238 @@
```mermaid
flowchart LR
subgraph path2 [Path]
2["Path<br>[1348, 1398, 0]"]
3["Segment<br>[1348, 1398, 0]"]
2["Path<br>[1425, 1475, 0]"]
3["Segment<br>[1425, 1475, 0]"]
4[Solid2d]
end
subgraph path12 [Path]
12["Path<br>[1875, 1912, 0]"]
13["Segment<br>[1563, 1601, 0]"]
14["Segment<br>[1563, 1601, 0]"]
15["Segment<br>[1563, 1601, 0]"]
16["Segment<br>[1563, 1601, 0]"]
17["Segment<br>[1563, 1601, 0]"]
18["Segment<br>[1563, 1601, 0]"]
19["Segment<br>[1563, 1601, 0]"]
20["Segment<br>[1563, 1601, 0]"]
21["Segment<br>[1563, 1601, 0]"]
22["Segment<br>[1563, 1601, 0]"]
23["Segment<br>[1563, 1601, 0]"]
24["Segment<br>[1563, 1601, 0]"]
25["Segment<br>[1563, 1601, 0]"]
26["Segment<br>[1563, 1601, 0]"]
27["Segment<br>[1563, 1601, 0]"]
28["Segment<br>[1563, 1601, 0]"]
29["Segment<br>[1563, 1601, 0]"]
30["Segment<br>[1563, 1601, 0]"]
31["Segment<br>[1563, 1601, 0]"]
32["Segment<br>[1563, 1601, 0]"]
33["Segment<br>[1563, 1601, 0]"]
34["Segment<br>[1563, 1601, 0]"]
35["Segment<br>[1563, 1601, 0]"]
36["Segment<br>[1563, 1601, 0]"]
37["Segment<br>[1563, 1601, 0]"]
38["Segment<br>[1563, 1601, 0]"]
39["Segment<br>[1563, 1601, 0]"]
40["Segment<br>[1563, 1601, 0]"]
41["Segment<br>[1563, 1601, 0]"]
42["Segment<br>[1563, 1601, 0]"]
43["Segment<br>[1563, 1601, 0]"]
44["Segment<br>[1563, 1601, 0]"]
45["Segment<br>[1563, 1601, 0]"]
46["Segment<br>[1563, 1601, 0]"]
47["Segment<br>[1563, 1601, 0]"]
48["Segment<br>[1563, 1601, 0]"]
49["Segment<br>[1563, 1601, 0]"]
50["Segment<br>[1563, 1601, 0]"]
51["Segment<br>[1563, 1601, 0]"]
52["Segment<br>[1563, 1601, 0]"]
53["Segment<br>[1563, 1601, 0]"]
54["Segment<br>[1563, 1601, 0]"]
55["Segment<br>[1563, 1601, 0]"]
56["Segment<br>[1563, 1601, 0]"]
57["Segment<br>[1563, 1601, 0]"]
58["Segment<br>[1563, 1601, 0]"]
59["Segment<br>[1563, 1601, 0]"]
60["Segment<br>[1563, 1601, 0]"]
61["Segment<br>[1563, 1601, 0]"]
62["Segment<br>[1563, 1601, 0]"]
63["Segment<br>[1563, 1601, 0]"]
64["Segment<br>[1563, 1601, 0]"]
65["Segment<br>[1563, 1601, 0]"]
66["Segment<br>[1563, 1601, 0]"]
67["Segment<br>[1563, 1601, 0]"]
68["Segment<br>[1563, 1601, 0]"]
69["Segment<br>[1563, 1601, 0]"]
70["Segment<br>[1563, 1601, 0]"]
71["Segment<br>[1563, 1601, 0]"]
72["Segment<br>[1563, 1601, 0]"]
73["Segment<br>[1563, 1601, 0]"]
74["Segment<br>[1563, 1601, 0]"]
75["Segment<br>[1563, 1601, 0]"]
76["Segment<br>[1563, 1601, 0]"]
77["Segment<br>[1563, 1601, 0]"]
78["Segment<br>[1563, 1601, 0]"]
79["Segment<br>[1563, 1601, 0]"]
80["Segment<br>[1563, 1601, 0]"]
81["Segment<br>[1563, 1601, 0]"]
82["Segment<br>[1563, 1601, 0]"]
83["Segment<br>[1563, 1601, 0]"]
84["Segment<br>[1563, 1601, 0]"]
85["Segment<br>[1563, 1601, 0]"]
86["Segment<br>[1563, 1601, 0]"]
87["Segment<br>[1563, 1601, 0]"]
88["Segment<br>[1563, 1601, 0]"]
89["Segment<br>[1563, 1601, 0]"]
90["Segment<br>[1563, 1601, 0]"]
91["Segment<br>[1563, 1601, 0]"]
92["Segment<br>[1563, 1601, 0]"]
93["Segment<br>[1563, 1601, 0]"]
94["Segment<br>[1563, 1601, 0]"]
95["Segment<br>[1563, 1601, 0]"]
96["Segment<br>[1563, 1601, 0]"]
97["Segment<br>[1563, 1601, 0]"]
98["Segment<br>[1563, 1601, 0]"]
99["Segment<br>[1563, 1601, 0]"]
100["Segment<br>[1563, 1601, 0]"]
101["Segment<br>[1563, 1601, 0]"]
102["Segment<br>[1563, 1601, 0]"]
103["Segment<br>[1563, 1601, 0]"]
104["Segment<br>[1563, 1601, 0]"]
105["Segment<br>[1563, 1601, 0]"]
106["Segment<br>[1563, 1601, 0]"]
107["Segment<br>[1563, 1601, 0]"]
108["Segment<br>[1563, 1601, 0]"]
109["Segment<br>[1563, 1601, 0]"]
110["Segment<br>[1563, 1601, 0]"]
111["Segment<br>[1563, 1601, 0]"]
112["Segment<br>[1563, 1601, 0]"]
113["Segment<br>[1563, 1601, 0]"]
114["Segment<br>[1964, 2033, 0]"]
115["Segment<br>[1791, 1821, 0]"]
116["Segment<br>[1791, 1821, 0]"]
117["Segment<br>[1791, 1821, 0]"]
118["Segment<br>[1791, 1821, 0]"]
119["Segment<br>[1791, 1821, 0]"]
120["Segment<br>[1791, 1821, 0]"]
121["Segment<br>[1791, 1821, 0]"]
122["Segment<br>[1791, 1821, 0]"]
123["Segment<br>[1791, 1821, 0]"]
124["Segment<br>[1791, 1821, 0]"]
125["Segment<br>[1791, 1821, 0]"]
126["Segment<br>[1791, 1821, 0]"]
127["Segment<br>[1791, 1821, 0]"]
128["Segment<br>[1791, 1821, 0]"]
129["Segment<br>[1791, 1821, 0]"]
130["Segment<br>[1791, 1821, 0]"]
131["Segment<br>[1791, 1821, 0]"]
132["Segment<br>[1791, 1821, 0]"]
133["Segment<br>[1791, 1821, 0]"]
134["Segment<br>[1791, 1821, 0]"]
135["Segment<br>[1791, 1821, 0]"]
136["Segment<br>[1791, 1821, 0]"]
137["Segment<br>[1791, 1821, 0]"]
138["Segment<br>[1791, 1821, 0]"]
139["Segment<br>[1791, 1821, 0]"]
140["Segment<br>[1791, 1821, 0]"]
141["Segment<br>[1791, 1821, 0]"]
142["Segment<br>[1791, 1821, 0]"]
143["Segment<br>[1791, 1821, 0]"]
144["Segment<br>[1791, 1821, 0]"]
145["Segment<br>[1791, 1821, 0]"]
146["Segment<br>[1791, 1821, 0]"]
147["Segment<br>[1791, 1821, 0]"]
148["Segment<br>[1791, 1821, 0]"]
149["Segment<br>[1791, 1821, 0]"]
150["Segment<br>[1791, 1821, 0]"]
151["Segment<br>[1791, 1821, 0]"]
152["Segment<br>[1791, 1821, 0]"]
153["Segment<br>[1791, 1821, 0]"]
154["Segment<br>[1791, 1821, 0]"]
155["Segment<br>[1791, 1821, 0]"]
156["Segment<br>[1791, 1821, 0]"]
157["Segment<br>[1791, 1821, 0]"]
158["Segment<br>[1791, 1821, 0]"]
159["Segment<br>[1791, 1821, 0]"]
160["Segment<br>[1791, 1821, 0]"]
161["Segment<br>[1791, 1821, 0]"]
162["Segment<br>[1791, 1821, 0]"]
163["Segment<br>[1791, 1821, 0]"]
164["Segment<br>[1791, 1821, 0]"]
165["Segment<br>[1791, 1821, 0]"]
166["Segment<br>[1791, 1821, 0]"]
167["Segment<br>[1791, 1821, 0]"]
168["Segment<br>[1791, 1821, 0]"]
169["Segment<br>[1791, 1821, 0]"]
170["Segment<br>[1791, 1821, 0]"]
171["Segment<br>[1791, 1821, 0]"]
172["Segment<br>[1791, 1821, 0]"]
173["Segment<br>[1791, 1821, 0]"]
174["Segment<br>[1791, 1821, 0]"]
175["Segment<br>[1791, 1821, 0]"]
176["Segment<br>[1791, 1821, 0]"]
177["Segment<br>[1791, 1821, 0]"]
178["Segment<br>[1791, 1821, 0]"]
179["Segment<br>[1791, 1821, 0]"]
180["Segment<br>[1791, 1821, 0]"]
181["Segment<br>[1791, 1821, 0]"]
182["Segment<br>[1791, 1821, 0]"]
183["Segment<br>[1791, 1821, 0]"]
184["Segment<br>[1791, 1821, 0]"]
185["Segment<br>[1791, 1821, 0]"]
186["Segment<br>[1791, 1821, 0]"]
187["Segment<br>[1791, 1821, 0]"]
188["Segment<br>[1791, 1821, 0]"]
189["Segment<br>[1791, 1821, 0]"]
190["Segment<br>[1791, 1821, 0]"]
191["Segment<br>[1791, 1821, 0]"]
192["Segment<br>[1791, 1821, 0]"]
193["Segment<br>[1791, 1821, 0]"]
194["Segment<br>[1791, 1821, 0]"]
195["Segment<br>[1791, 1821, 0]"]
196["Segment<br>[1791, 1821, 0]"]
197["Segment<br>[1791, 1821, 0]"]
198["Segment<br>[1791, 1821, 0]"]
199["Segment<br>[1791, 1821, 0]"]
200["Segment<br>[1791, 1821, 0]"]
201["Segment<br>[1791, 1821, 0]"]
202["Segment<br>[1791, 1821, 0]"]
203["Segment<br>[1791, 1821, 0]"]
204["Segment<br>[1791, 1821, 0]"]
205["Segment<br>[1791, 1821, 0]"]
206["Segment<br>[1791, 1821, 0]"]
207["Segment<br>[1791, 1821, 0]"]
208["Segment<br>[1791, 1821, 0]"]
209["Segment<br>[1791, 1821, 0]"]
210["Segment<br>[1791, 1821, 0]"]
211["Segment<br>[1791, 1821, 0]"]
212["Segment<br>[1791, 1821, 0]"]
213["Segment<br>[1791, 1821, 0]"]
214["Segment<br>[1791, 1821, 0]"]
215["Segment<br>[1791, 1821, 0]"]
216["Segment<br>[2079, 2086, 0]"]
12["Path<br>[1952, 1989, 0]"]
13["Segment<br>[1640, 1678, 0]"]
14["Segment<br>[1640, 1678, 0]"]
15["Segment<br>[1640, 1678, 0]"]
16["Segment<br>[1640, 1678, 0]"]
17["Segment<br>[1640, 1678, 0]"]
18["Segment<br>[1640, 1678, 0]"]
19["Segment<br>[1640, 1678, 0]"]
20["Segment<br>[1640, 1678, 0]"]
21["Segment<br>[1640, 1678, 0]"]
22["Segment<br>[1640, 1678, 0]"]
23["Segment<br>[1640, 1678, 0]"]
24["Segment<br>[1640, 1678, 0]"]
25["Segment<br>[1640, 1678, 0]"]
26["Segment<br>[1640, 1678, 0]"]
27["Segment<br>[1640, 1678, 0]"]
28["Segment<br>[1640, 1678, 0]"]
29["Segment<br>[1640, 1678, 0]"]
30["Segment<br>[1640, 1678, 0]"]
31["Segment<br>[1640, 1678, 0]"]
32["Segment<br>[1640, 1678, 0]"]
33["Segment<br>[1640, 1678, 0]"]
34["Segment<br>[1640, 1678, 0]"]
35["Segment<br>[1640, 1678, 0]"]
36["Segment<br>[1640, 1678, 0]"]
37["Segment<br>[1640, 1678, 0]"]
38["Segment<br>[1640, 1678, 0]"]
39["Segment<br>[1640, 1678, 0]"]
40["Segment<br>[1640, 1678, 0]"]
41["Segment<br>[1640, 1678, 0]"]
42["Segment<br>[1640, 1678, 0]"]
43["Segment<br>[1640, 1678, 0]"]
44["Segment<br>[1640, 1678, 0]"]
45["Segment<br>[1640, 1678, 0]"]
46["Segment<br>[1640, 1678, 0]"]
47["Segment<br>[1640, 1678, 0]"]
48["Segment<br>[1640, 1678, 0]"]
49["Segment<br>[1640, 1678, 0]"]
50["Segment<br>[1640, 1678, 0]"]
51["Segment<br>[1640, 1678, 0]"]
52["Segment<br>[1640, 1678, 0]"]
53["Segment<br>[1640, 1678, 0]"]
54["Segment<br>[1640, 1678, 0]"]
55["Segment<br>[1640, 1678, 0]"]
56["Segment<br>[1640, 1678, 0]"]
57["Segment<br>[1640, 1678, 0]"]
58["Segment<br>[1640, 1678, 0]"]
59["Segment<br>[1640, 1678, 0]"]
60["Segment<br>[1640, 1678, 0]"]
61["Segment<br>[1640, 1678, 0]"]
62["Segment<br>[1640, 1678, 0]"]
63["Segment<br>[1640, 1678, 0]"]
64["Segment<br>[1640, 1678, 0]"]
65["Segment<br>[1640, 1678, 0]"]
66["Segment<br>[1640, 1678, 0]"]
67["Segment<br>[1640, 1678, 0]"]
68["Segment<br>[1640, 1678, 0]"]
69["Segment<br>[1640, 1678, 0]"]
70["Segment<br>[1640, 1678, 0]"]
71["Segment<br>[1640, 1678, 0]"]
72["Segment<br>[1640, 1678, 0]"]
73["Segment<br>[1640, 1678, 0]"]
74["Segment<br>[1640, 1678, 0]"]
75["Segment<br>[1640, 1678, 0]"]
76["Segment<br>[1640, 1678, 0]"]
77["Segment<br>[1640, 1678, 0]"]
78["Segment<br>[1640, 1678, 0]"]
79["Segment<br>[1640, 1678, 0]"]
80["Segment<br>[1640, 1678, 0]"]
81["Segment<br>[1640, 1678, 0]"]
82["Segment<br>[1640, 1678, 0]"]
83["Segment<br>[1640, 1678, 0]"]
84["Segment<br>[1640, 1678, 0]"]
85["Segment<br>[1640, 1678, 0]"]
86["Segment<br>[1640, 1678, 0]"]
87["Segment<br>[1640, 1678, 0]"]
88["Segment<br>[1640, 1678, 0]"]
89["Segment<br>[1640, 1678, 0]"]
90["Segment<br>[1640, 1678, 0]"]
91["Segment<br>[1640, 1678, 0]"]
92["Segment<br>[1640, 1678, 0]"]
93["Segment<br>[1640, 1678, 0]"]
94["Segment<br>[1640, 1678, 0]"]
95["Segment<br>[1640, 1678, 0]"]
96["Segment<br>[1640, 1678, 0]"]
97["Segment<br>[1640, 1678, 0]"]
98["Segment<br>[1640, 1678, 0]"]
99["Segment<br>[1640, 1678, 0]"]
100["Segment<br>[1640, 1678, 0]"]
101["Segment<br>[1640, 1678, 0]"]
102["Segment<br>[1640, 1678, 0]"]
103["Segment<br>[1640, 1678, 0]"]
104["Segment<br>[1640, 1678, 0]"]
105["Segment<br>[1640, 1678, 0]"]
106["Segment<br>[1640, 1678, 0]"]
107["Segment<br>[1640, 1678, 0]"]
108["Segment<br>[1640, 1678, 0]"]
109["Segment<br>[1640, 1678, 0]"]
110["Segment<br>[1640, 1678, 0]"]
111["Segment<br>[1640, 1678, 0]"]
112["Segment<br>[1640, 1678, 0]"]
113["Segment<br>[1640, 1678, 0]"]
114["Segment<br>[2055, 2124, 0]"]
115["Segment<br>[1868, 1898, 0]"]
116["Segment<br>[1868, 1898, 0]"]
117["Segment<br>[1868, 1898, 0]"]
118["Segment<br>[1868, 1898, 0]"]
119["Segment<br>[1868, 1898, 0]"]
120["Segment<br>[1868, 1898, 0]"]
121["Segment<br>[1868, 1898, 0]"]
122["Segment<br>[1868, 1898, 0]"]
123["Segment<br>[1868, 1898, 0]"]
124["Segment<br>[1868, 1898, 0]"]
125["Segment<br>[1868, 1898, 0]"]
126["Segment<br>[1868, 1898, 0]"]
127["Segment<br>[1868, 1898, 0]"]
128["Segment<br>[1868, 1898, 0]"]
129["Segment<br>[1868, 1898, 0]"]
130["Segment<br>[1868, 1898, 0]"]
131["Segment<br>[1868, 1898, 0]"]
132["Segment<br>[1868, 1898, 0]"]
133["Segment<br>[1868, 1898, 0]"]
134["Segment<br>[1868, 1898, 0]"]
135["Segment<br>[1868, 1898, 0]"]
136["Segment<br>[1868, 1898, 0]"]
137["Segment<br>[1868, 1898, 0]"]
138["Segment<br>[1868, 1898, 0]"]
139["Segment<br>[1868, 1898, 0]"]
140["Segment<br>[1868, 1898, 0]"]
141["Segment<br>[1868, 1898, 0]"]
142["Segment<br>[1868, 1898, 0]"]
143["Segment<br>[1868, 1898, 0]"]
144["Segment<br>[1868, 1898, 0]"]
145["Segment<br>[1868, 1898, 0]"]
146["Segment<br>[1868, 1898, 0]"]
147["Segment<br>[1868, 1898, 0]"]
148["Segment<br>[1868, 1898, 0]"]
149["Segment<br>[1868, 1898, 0]"]
150["Segment<br>[1868, 1898, 0]"]
151["Segment<br>[1868, 1898, 0]"]
152["Segment<br>[1868, 1898, 0]"]
153["Segment<br>[1868, 1898, 0]"]
154["Segment<br>[1868, 1898, 0]"]
155["Segment<br>[1868, 1898, 0]"]
156["Segment<br>[1868, 1898, 0]"]
157["Segment<br>[1868, 1898, 0]"]
158["Segment<br>[1868, 1898, 0]"]
159["Segment<br>[1868, 1898, 0]"]
160["Segment<br>[1868, 1898, 0]"]
161["Segment<br>[1868, 1898, 0]"]
162["Segment<br>[1868, 1898, 0]"]
163["Segment<br>[1868, 1898, 0]"]
164["Segment<br>[1868, 1898, 0]"]
165["Segment<br>[1868, 1898, 0]"]
166["Segment<br>[1868, 1898, 0]"]
167["Segment<br>[1868, 1898, 0]"]
168["Segment<br>[1868, 1898, 0]"]
169["Segment<br>[1868, 1898, 0]"]
170["Segment<br>[1868, 1898, 0]"]
171["Segment<br>[1868, 1898, 0]"]
172["Segment<br>[1868, 1898, 0]"]
173["Segment<br>[1868, 1898, 0]"]
174["Segment<br>[1868, 1898, 0]"]
175["Segment<br>[1868, 1898, 0]"]
176["Segment<br>[1868, 1898, 0]"]
177["Segment<br>[1868, 1898, 0]"]
178["Segment<br>[1868, 1898, 0]"]
179["Segment<br>[1868, 1898, 0]"]
180["Segment<br>[1868, 1898, 0]"]
181["Segment<br>[1868, 1898, 0]"]
182["Segment<br>[1868, 1898, 0]"]
183["Segment<br>[1868, 1898, 0]"]
184["Segment<br>[1868, 1898, 0]"]
185["Segment<br>[1868, 1898, 0]"]
186["Segment<br>[1868, 1898, 0]"]
187["Segment<br>[1868, 1898, 0]"]
188["Segment<br>[1868, 1898, 0]"]
189["Segment<br>[1868, 1898, 0]"]
190["Segment<br>[1868, 1898, 0]"]
191["Segment<br>[1868, 1898, 0]"]
192["Segment<br>[1868, 1898, 0]"]
193["Segment<br>[1868, 1898, 0]"]
194["Segment<br>[1868, 1898, 0]"]
195["Segment<br>[1868, 1898, 0]"]
196["Segment<br>[1868, 1898, 0]"]
197["Segment<br>[1868, 1898, 0]"]
198["Segment<br>[1868, 1898, 0]"]
199["Segment<br>[1868, 1898, 0]"]
200["Segment<br>[1868, 1898, 0]"]
201["Segment<br>[1868, 1898, 0]"]
202["Segment<br>[1868, 1898, 0]"]
203["Segment<br>[1868, 1898, 0]"]
204["Segment<br>[1868, 1898, 0]"]
205["Segment<br>[1868, 1898, 0]"]
206["Segment<br>[1868, 1898, 0]"]
207["Segment<br>[1868, 1898, 0]"]
208["Segment<br>[1868, 1898, 0]"]
209["Segment<br>[1868, 1898, 0]"]
210["Segment<br>[1868, 1898, 0]"]
211["Segment<br>[1868, 1898, 0]"]
212["Segment<br>[1868, 1898, 0]"]
213["Segment<br>[1868, 1898, 0]"]
214["Segment<br>[1868, 1898, 0]"]
215["Segment<br>[1868, 1898, 0]"]
216["Segment<br>[2184, 2191, 0]"]
217[Solid2d]
end
subgraph path219 [Path]
219["Path<br>[2567, 2667, 0]"]
220["Segment<br>[2673, 2700, 0]"]
221["Segment<br>[2706, 2734, 0]"]
222["Segment<br>[2740, 2768, 0]"]
223["Segment<br>[2774, 2861, 0]"]
224["Segment<br>[2867, 2943, 0]"]
225["Segment<br>[2949, 2956, 0]"]
219["Path<br>[2672, 2772, 0]"]
220["Segment<br>[2778, 2805, 0]"]
221["Segment<br>[2811, 2839, 0]"]
222["Segment<br>[2845, 2873, 0]"]
223["Segment<br>[2879, 2966, 0]"]
224["Segment<br>[2972, 3048, 0]"]
225["Segment<br>[3054, 3061, 0]"]
226[Solid2d]
end
1["Plane<br>[1325, 1342, 0]"]
5["Sweep Extrusion<br>[1404, 1432, 0]"]
1["Plane<br>[1402, 1419, 0]"]
5["Sweep Extrusion<br>[1481, 1509, 0]"]
6[Wall]
7["Cap Start"]
8["Cap End"]
9["SweepEdge Opposite"]
10["SweepEdge Adjacent"]
11["Plane<br>[1852, 1869, 0]"]
218["Sweep Extrusion<br>[2092, 2120, 0]"]
227["Sweep Extrusion<br>[2962, 2991, 0]"]
11["Plane<br>[1929, 1946, 0]"]
218["Sweep Extrusion<br>[2197, 2225, 0]"]
227["Sweep Extrusion<br>[3067, 3096, 0]"]
228[Wall]
229[Wall]
230[Wall]
@ -245,7 +245,7 @@ flowchart LR
237["SweepEdge Adjacent"]
238["SweepEdge Opposite"]
239["SweepEdge Adjacent"]
240["StartSketchOnFace<br>[2530, 2561, 0]"]
240["StartSketchOnFace<br>[2635, 2666, 0]"]
1 --- 2
2 --- 3
2 ---- 5

File diff suppressed because it is too large Load Diff

View File

@ -2,60 +2,60 @@
flowchart LR
subgraph path2 [Path]
2["Path<br>[754, 790, 0]"]
3["Segment<br>[930, 994, 0]"]
4["Segment<br>[930, 994, 0]"]
5["Segment<br>[930, 994, 0]"]
6["Segment<br>[930, 994, 0]"]
7["Segment<br>[930, 994, 0]"]
8["Segment<br>[930, 994, 0]"]
9["Segment<br>[930, 994, 0]"]
10["Segment<br>[930, 994, 0]"]
11["Segment<br>[930, 994, 0]"]
12["Segment<br>[930, 994, 0]"]
13["Segment<br>[930, 994, 0]"]
14["Segment<br>[930, 994, 0]"]
15["Segment<br>[930, 994, 0]"]
16["Segment<br>[930, 994, 0]"]
17["Segment<br>[930, 994, 0]"]
18["Segment<br>[930, 994, 0]"]
19["Segment<br>[930, 994, 0]"]
20["Segment<br>[930, 994, 0]"]
21["Segment<br>[930, 994, 0]"]
22["Segment<br>[930, 994, 0]"]
23["Segment<br>[930, 994, 0]"]
24["Segment<br>[930, 994, 0]"]
25["Segment<br>[930, 994, 0]"]
26["Segment<br>[930, 994, 0]"]
27["Segment<br>[930, 994, 0]"]
28["Segment<br>[930, 994, 0]"]
29["Segment<br>[930, 994, 0]"]
30["Segment<br>[930, 994, 0]"]
31["Segment<br>[930, 994, 0]"]
32["Segment<br>[930, 994, 0]"]
33["Segment<br>[930, 994, 0]"]
34["Segment<br>[930, 994, 0]"]
35["Segment<br>[930, 994, 0]"]
36["Segment<br>[930, 994, 0]"]
37["Segment<br>[930, 994, 0]"]
38["Segment<br>[930, 994, 0]"]
39["Segment<br>[930, 994, 0]"]
40["Segment<br>[930, 994, 0]"]
41["Segment<br>[930, 994, 0]"]
42["Segment<br>[930, 994, 0]"]
43["Segment<br>[930, 994, 0]"]
44["Segment<br>[930, 994, 0]"]
45["Segment<br>[930, 994, 0]"]
46["Segment<br>[930, 994, 0]"]
47["Segment<br>[930, 994, 0]"]
48["Segment<br>[930, 994, 0]"]
49["Segment<br>[930, 994, 0]"]
50["Segment<br>[930, 994, 0]"]
51["Segment<br>[930, 994, 0]"]
52["Segment<br>[1058, 1076, 0]"]
3["Segment<br>[944, 1008, 0]"]
4["Segment<br>[944, 1008, 0]"]
5["Segment<br>[944, 1008, 0]"]
6["Segment<br>[944, 1008, 0]"]
7["Segment<br>[944, 1008, 0]"]
8["Segment<br>[944, 1008, 0]"]
9["Segment<br>[944, 1008, 0]"]
10["Segment<br>[944, 1008, 0]"]
11["Segment<br>[944, 1008, 0]"]
12["Segment<br>[944, 1008, 0]"]
13["Segment<br>[944, 1008, 0]"]
14["Segment<br>[944, 1008, 0]"]
15["Segment<br>[944, 1008, 0]"]
16["Segment<br>[944, 1008, 0]"]
17["Segment<br>[944, 1008, 0]"]
18["Segment<br>[944, 1008, 0]"]
19["Segment<br>[944, 1008, 0]"]
20["Segment<br>[944, 1008, 0]"]
21["Segment<br>[944, 1008, 0]"]
22["Segment<br>[944, 1008, 0]"]
23["Segment<br>[944, 1008, 0]"]
24["Segment<br>[944, 1008, 0]"]
25["Segment<br>[944, 1008, 0]"]
26["Segment<br>[944, 1008, 0]"]
27["Segment<br>[944, 1008, 0]"]
28["Segment<br>[944, 1008, 0]"]
29["Segment<br>[944, 1008, 0]"]
30["Segment<br>[944, 1008, 0]"]
31["Segment<br>[944, 1008, 0]"]
32["Segment<br>[944, 1008, 0]"]
33["Segment<br>[944, 1008, 0]"]
34["Segment<br>[944, 1008, 0]"]
35["Segment<br>[944, 1008, 0]"]
36["Segment<br>[944, 1008, 0]"]
37["Segment<br>[944, 1008, 0]"]
38["Segment<br>[944, 1008, 0]"]
39["Segment<br>[944, 1008, 0]"]
40["Segment<br>[944, 1008, 0]"]
41["Segment<br>[944, 1008, 0]"]
42["Segment<br>[944, 1008, 0]"]
43["Segment<br>[944, 1008, 0]"]
44["Segment<br>[944, 1008, 0]"]
45["Segment<br>[944, 1008, 0]"]
46["Segment<br>[944, 1008, 0]"]
47["Segment<br>[944, 1008, 0]"]
48["Segment<br>[944, 1008, 0]"]
49["Segment<br>[944, 1008, 0]"]
50["Segment<br>[944, 1008, 0]"]
51["Segment<br>[944, 1008, 0]"]
52["Segment<br>[1072, 1090, 0]"]
53[Solid2d]
end
1["Plane<br>[731, 748, 0]"]
54["Sweep Extrusion<br>[1130, 1168, 0]"]
54["Sweep Extrusion<br>[1144, 1182, 0]"]
55[Wall]
56[Wall]
57[Wall]

View File

@ -762,227 +762,191 @@ description: Result of parsing loop_tag.kcl
"init": {
"arguments": [
{
"commentStart": 0,
"end": 0,
"endElement": {
"type": "LabeledArg",
"label": {
"commentStart": 0,
"end": 0,
"left": {
"abs_path": false,
"commentStart": 0,
"end": 0,
"name": {
"commentStart": 0,
"end": 0,
"name": "numSides",
"start": 0,
"type": "Identifier"
},
"path": [],
"start": 0,
"type": "Name",
"type": "Name"
},
"operator": "-",
"right": {
"commentStart": 0,
"end": 0,
"raw": "1",
"start": 0,
"type": "Literal",
"type": "Literal",
"value": {
"value": 1.0,
"suffix": "None"
}
},
"start": 0,
"type": "BinaryExpression",
"type": "BinaryExpression"
},
"endInclusive": true,
"start": 0,
"startElement": {
"commentStart": 0,
"end": 0,
"raw": "1",
"start": 0,
"type": "Literal",
"type": "Literal",
"value": {
"value": 1.0,
"suffix": "None"
}
},
"type": "ArrayRangeExpression",
"type": "ArrayRangeExpression"
},
{
"abs_path": false,
"commentStart": 0,
"end": 0,
"name": {
"commentStart": 0,
"end": 0,
"name": "initialSketch",
"name": "initial",
"start": 0,
"type": "Identifier"
},
"path": [],
"start": 0,
"type": "Name",
"type": "Name"
"arg": {
"abs_path": false,
"commentStart": 0,
"end": 0,
"name": {
"commentStart": 0,
"end": 0,
"name": "initialSketch",
"start": 0,
"type": "Identifier"
},
"path": [],
"start": 0,
"type": "Name",
"type": "Name"
}
},
{
"body": {
"body": [
{
"argument": {
"arguments": [
{
"type": "LabeledArg",
"label": {
"commentStart": 0,
"end": 0,
"name": "end",
"start": 0,
"type": "Identifier"
},
"arg": {
"arguments": [
{
"type": "LabeledArg",
"label": {
"commentStart": 0,
"end": 0,
"name": "f",
"start": 0,
"type": "Identifier"
},
"arg": {
"body": {
"body": [
{
"argument": {
"arguments": [
{
"type": "LabeledArg",
"label": {
"commentStart": 0,
"end": 0,
"name": "end",
"start": 0,
"type": "Identifier"
},
"arg": {
"arguments": [
{
"abs_path": false,
"commentStart": 0,
"end": 0,
"name": {
"commentStart": 0,
"end": 0,
"name": "index",
"start": 0,
"type": "Identifier"
},
"path": [],
"start": 0,
"type": "Name",
"type": "Name"
}
],
"callee": {
"abs_path": false,
"commentStart": 0,
"end": 0,
"name": {
"commentStart": 0,
"end": 0,
"name": "index",
"name": "calculatePoint",
"start": 0,
"type": "Identifier"
},
"path": [],
"start": 0,
"type": "Name",
"type": "Name"
}
],
"callee": {
"abs_path": false,
},
"commentStart": 0,
"end": 0,
"name": {
"commentStart": 0,
"end": 0,
"name": "calculatePoint",
"start": 0,
"type": "Identifier"
},
"path": [],
"start": 0,
"type": "Name"
"type": "CallExpression",
"type": "CallExpression"
}
},
{
"type": "LabeledArg",
"label": {
"commentStart": 0,
"end": 0,
"name": "tag",
"start": 0,
"type": "Identifier"
},
"commentStart": 0,
"end": 0,
"start": 0,
"type": "CallExpression",
"type": "CallExpression"
"arg": {
"commentStart": 0,
"end": 0,
"start": 0,
"type": "TagDeclarator",
"type": "TagDeclarator",
"value": "problematicTag"
}
}
},
{
"type": "LabeledArg",
"label": {
],
"callee": {
"abs_path": false,
"commentStart": 0,
"end": 0,
"name": {
"commentStart": 0,
"end": 0,
"name": "tag",
"name": "line",
"start": 0,
"type": "Identifier"
},
"arg": {
"commentStart": 0,
"end": 0,
"start": 0,
"type": "TagDeclarator",
"type": "TagDeclarator",
"value": "problematicTag"
}
}
],
"callee": {
"abs_path": false,
"path": [],
"start": 0,
"type": "Name"
},
"commentStart": 0,
"end": 0,
"name": {
"start": 0,
"type": "CallExpressionKw",
"type": "CallExpressionKw",
"unlabeled": {
"abs_path": false,
"commentStart": 0,
"end": 0,
"name": "line",
"name": {
"commentStart": 0,
"end": 0,
"name": "sketch",
"start": 0,
"type": "Identifier"
},
"path": [],
"start": 0,
"type": "Identifier"
},
"path": [],
"start": 0,
"type": "Name"
"type": "Name",
"type": "Name"
}
},
"commentStart": 0,
"end": 0,
"start": 0,
"type": "CallExpressionKw",
"type": "CallExpressionKw",
"unlabeled": {
"abs_path": false,
"commentStart": 0,
"end": 0,
"name": {
"commentStart": 0,
"end": 0,
"name": "sketch",
"start": 0,
"type": "Identifier"
},
"path": [],
"start": 0,
"type": "Name",
"type": "Name"
}
},
"commentStart": 0,
"end": 0,
"start": 0,
"type": "ReturnStatement",
"type": "ReturnStatement"
}
],
"type": "ReturnStatement",
"type": "ReturnStatement"
}
],
"commentStart": 0,
"end": 0,
"start": 0
},
"commentStart": 0,
"end": 0,
"start": 0
},
"commentStart": 0,
"end": 0,
"params": [
{
"type": "Parameter",
"identifier": {
"commentStart": 0,
"end": 0,
"name": "index",
"start": 0,
"type": "Identifier"
"params": [
{
"type": "Parameter",
"identifier": {
"commentStart": 0,
"end": 0,
"name": "index",
"start": 0,
"type": "Identifier"
}
},
{
"type": "Parameter",
"identifier": {
"commentStart": 0,
"end": 0,
"name": "sketch",
"start": 0,
"type": "Identifier"
}
}
},
{
"type": "Parameter",
"identifier": {
"commentStart": 0,
"end": 0,
"name": "sketch",
"start": 0,
"type": "Identifier"
}
}
],
"start": 0,
"type": "FunctionExpression",
"type": "FunctionExpression"
],
"start": 0,
"type": "FunctionExpression",
"type": "FunctionExpression"
}
}
],
"callee": {
@ -1003,8 +967,64 @@ description: Result of parsing loop_tag.kcl
"commentStart": 0,
"end": 0,
"start": 0,
"type": "CallExpression",
"type": "CallExpression"
"type": "CallExpressionKw",
"type": "CallExpressionKw",
"unlabeled": {
"commentStart": 0,
"end": 0,
"endElement": {
"commentStart": 0,
"end": 0,
"left": {
"abs_path": false,
"commentStart": 0,
"end": 0,
"name": {
"commentStart": 0,
"end": 0,
"name": "numSides",
"start": 0,
"type": "Identifier"
},
"path": [],
"start": 0,
"type": "Name",
"type": "Name"
},
"operator": "-",
"right": {
"commentStart": 0,
"end": 0,
"raw": "1",
"start": 0,
"type": "Literal",
"type": "Literal",
"value": {
"value": 1.0,
"suffix": "None"
}
},
"start": 0,
"type": "BinaryExpression",
"type": "BinaryExpression"
},
"endInclusive": true,
"start": 0,
"startElement": {
"commentStart": 0,
"end": 0,
"raw": "1",
"start": 0,
"type": "Literal",
"type": "Literal",
"value": {
"value": 1.0,
"suffix": "None"
}
},
"type": "ArrayRangeExpression",
"type": "ArrayRangeExpression"
}
},
"start": 0,
"type": "VariableDeclarator"

View File

@ -26,8 +26,8 @@ initialSketch = startSketchOn(XY)
// Draw lines to form the base of the cylinder
finalSketch = reduce(
[1..numSides-1],
initialSketch,
fn(index, sketch) {
initial = initialSketch,
f = fn(index, sketch) {
return line(sketch, end = calculatePoint(index), tag = $problematicTag)
}
)

File diff suppressed because it is too large Load Diff

View File

@ -31,9 +31,13 @@ initialSketch = startSketchOn(XY)
|> startProfile(at = calculatePoint(0))
// Draw lines to form the base of the cylinder
finalSketch = reduce([1 .. numSides - 1], initialSketch, fn(index, sketch) {
return line(sketch, end = calculatePoint(index), tag = $problematicTag)
})
finalSketch = reduce(
[1 .. numSides - 1],
initial = initialSketch,
f = fn(index, sketch) {
return line(sketch, end = calculatePoint(index), tag = $problematicTag)
},
)
// Close the sketch to complete the base
closedSketch = close(finalSketch)