Fix units bug with involuteCircular (#6711)
Signed-off-by: Nick Cameron <nrc@ncameron.org>
This commit is contained in:
6356
rust/kcl-lib/tests/involute_circular_units/artifact_commands.snap
Normal file
6356
rust/kcl-lib/tests/involute_circular_units/artifact_commands.snap
Normal file
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,6 @@
|
||||
---
|
||||
source: kcl-lib/src/simulation_tests.rs
|
||||
description: Artifact graph flowchart involute_circular_units.kcl
|
||||
extension: md
|
||||
snapshot_kind: binary
|
||||
---
|
@ -0,0 +1,121 @@
|
||||
```mermaid
|
||||
flowchart LR
|
||||
subgraph path2 [Path]
|
||||
2["Path<br>[335, 375, 0]"]
|
||||
4["Segment<br>[381, 519, 0]"]
|
||||
5["Segment<br>[525, 571, 0]"]
|
||||
6["Segment<br>[577, 722, 0]"]
|
||||
7["Segment<br>[728, 870, 0]"]
|
||||
8["Segment<br>[876, 922, 0]"]
|
||||
9["Segment<br>[928, 1002, 0]"]
|
||||
10["Segment<br>[1157, 1164, 0]"]
|
||||
13[Solid2d]
|
||||
end
|
||||
subgraph path3 [Path]
|
||||
3["Path<br>[1188, 1223, 0]"]
|
||||
11["Segment<br>[1188, 1223, 0]"]
|
||||
12[Solid2d]
|
||||
end
|
||||
1["Plane<br>[312, 329, 0]"]
|
||||
14["Sweep Extrusion<br>[1230, 1258, 0]"]
|
||||
15[Wall]
|
||||
16[Wall]
|
||||
17[Wall]
|
||||
18[Wall]
|
||||
19[Wall]
|
||||
20[Wall]
|
||||
21["Cap Start"]
|
||||
22["Cap End"]
|
||||
23["SweepEdge Opposite"]
|
||||
24["SweepEdge Opposite"]
|
||||
25["SweepEdge Opposite"]
|
||||
26["SweepEdge Opposite"]
|
||||
27["SweepEdge Opposite"]
|
||||
28["SweepEdge Opposite"]
|
||||
29["SweepEdge Adjacent"]
|
||||
30["SweepEdge Adjacent"]
|
||||
31["SweepEdge Adjacent"]
|
||||
32["SweepEdge Adjacent"]
|
||||
33["SweepEdge Adjacent"]
|
||||
34["SweepEdge Adjacent"]
|
||||
1 --- 2
|
||||
1 --- 3
|
||||
2 --- 4
|
||||
2 --- 5
|
||||
2 --- 6
|
||||
2 --- 7
|
||||
2 --- 8
|
||||
2 --- 9
|
||||
2 --- 10
|
||||
2 --- 13
|
||||
2 ---- 14
|
||||
3 --- 11
|
||||
3 --- 12
|
||||
4 --- 20
|
||||
4 x--> 21
|
||||
4 --- 25
|
||||
4 --- 32
|
||||
5 --- 18
|
||||
5 x--> 21
|
||||
5 --- 23
|
||||
5 --- 29
|
||||
6 --- 17
|
||||
6 x--> 21
|
||||
6 --- 24
|
||||
6 --- 31
|
||||
7 --- 19
|
||||
7 x--> 21
|
||||
7 --- 26
|
||||
7 --- 33
|
||||
8 --- 16
|
||||
8 x--> 21
|
||||
8 --- 28
|
||||
8 --- 30
|
||||
9 --- 15
|
||||
9 x--> 21
|
||||
9 --- 27
|
||||
9 --- 34
|
||||
14 --- 15
|
||||
14 --- 16
|
||||
14 --- 17
|
||||
14 --- 18
|
||||
14 --- 19
|
||||
14 --- 20
|
||||
14 --- 21
|
||||
14 --- 22
|
||||
14 --- 23
|
||||
14 --- 24
|
||||
14 --- 25
|
||||
14 --- 26
|
||||
14 --- 27
|
||||
14 --- 28
|
||||
14 --- 29
|
||||
14 --- 30
|
||||
14 --- 31
|
||||
14 --- 32
|
||||
14 --- 33
|
||||
14 --- 34
|
||||
27 <--x 15
|
||||
30 <--x 15
|
||||
34 <--x 15
|
||||
28 <--x 16
|
||||
30 <--x 16
|
||||
33 <--x 16
|
||||
24 <--x 17
|
||||
29 <--x 17
|
||||
31 <--x 17
|
||||
23 <--x 18
|
||||
29 <--x 18
|
||||
32 <--x 18
|
||||
26 <--x 19
|
||||
31 <--x 19
|
||||
33 <--x 19
|
||||
25 <--x 20
|
||||
32 <--x 20
|
||||
23 <--x 22
|
||||
24 <--x 22
|
||||
25 <--x 22
|
||||
26 <--x 22
|
||||
27 <--x 22
|
||||
28 <--x 22
|
||||
```
|
1979
rust/kcl-lib/tests/involute_circular_units/ast.snap
Normal file
1979
rust/kcl-lib/tests/involute_circular_units/ast.snap
Normal file
File diff suppressed because it is too large
Load Diff
47
rust/kcl-lib/tests/involute_circular_units/input.kcl
Normal file
47
rust/kcl-lib/tests/involute_circular_units/input.kcl
Normal file
@ -0,0 +1,47 @@
|
||||
@settings(defaultLengthUnit = cm)
|
||||
|
||||
// Define parameters
|
||||
nTeeth = 21
|
||||
module = 0.5
|
||||
pitchDiameter = module * nTeeth
|
||||
pressureAngle = 20deg
|
||||
addendum = module
|
||||
deddendum = 1.25 * module
|
||||
baseDiameter = pitchDiameter * cos(pressureAngle)
|
||||
tipDiameter = pitchDiameter + 2 * module
|
||||
gearHeight = .3
|
||||
|
||||
angle001 = 6
|
||||
sketch001 = startSketchOn(XY)
|
||||
|> startProfile(at = [baseDiameter / 2, 0])
|
||||
|> involuteCircular(
|
||||
startRadius = baseDiameter / 2,
|
||||
endRadius = tipDiameter / 2,
|
||||
angle = 0,
|
||||
tag = $seg01,
|
||||
)
|
||||
|> line(endAbsolute = [lastSegX(%), lastSegY(%)])
|
||||
|> arc(
|
||||
angleStart = asin(segEndY(seg01) / segEndX(seg01)),
|
||||
angleEnd = 9,
|
||||
radius = tipDiameter / 2,
|
||||
tag = $seg02,
|
||||
)
|
||||
|> involuteCircular(
|
||||
startRadius = baseDiameter / 2,
|
||||
endRadius = tipDiameter / 2,
|
||||
angle = -12,
|
||||
reverse = true,
|
||||
)
|
||||
|> line(endAbsolute = [lastSegX(%), lastSegY(%)])
|
||||
|> line(endAbsolute = polar(angle = 360 / nTeeth, length = baseDiameter / 2))
|
||||
|> patternCircular2d(
|
||||
%,
|
||||
instances = nTeeth,
|
||||
center = [0, 0],
|
||||
arcDegrees = 360,
|
||||
rotateDuplicates = true,
|
||||
)
|
||||
|> close()
|
||||
|> subtract2d(tool = circle(center = [0, 0], radius = 1))
|
||||
|> extrude(length = gearHeight)
|
124
rust/kcl-lib/tests/involute_circular_units/ops.snap
Normal file
124
rust/kcl-lib/tests/involute_circular_units/ops.snap
Normal file
@ -0,0 +1,124 @@
|
||||
---
|
||||
source: kcl-lib/src/simulation_tests.rs
|
||||
assertion_line: 282
|
||||
description: Operations executed involute_circular_units.kcl
|
||||
---
|
||||
[
|
||||
{
|
||||
"labeledArgs": {},
|
||||
"name": "startSketchOn",
|
||||
"sourceRange": [],
|
||||
"type": "StdLibCall",
|
||||
"unlabeledArg": {
|
||||
"value": {
|
||||
"type": "Plane",
|
||||
"artifact_id": "[uuid]"
|
||||
},
|
||||
"sourceRange": []
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "GroupBegin",
|
||||
"group": {
|
||||
"type": "FunctionCall",
|
||||
"name": "polar",
|
||||
"functionSourceRange": [],
|
||||
"unlabeledArg": null,
|
||||
"labeledArgs": {
|
||||
"angle": {
|
||||
"value": {
|
||||
"type": "Number",
|
||||
"value": 17.142857142857142,
|
||||
"ty": {
|
||||
"type": "Default",
|
||||
"len": {
|
||||
"type": "Cm"
|
||||
},
|
||||
"angle": {
|
||||
"type": "Degrees"
|
||||
}
|
||||
}
|
||||
},
|
||||
"sourceRange": []
|
||||
},
|
||||
"length": {
|
||||
"value": {
|
||||
"type": "Number",
|
||||
"value": 4.933386259126019,
|
||||
"ty": {
|
||||
"type": "Default",
|
||||
"len": {
|
||||
"type": "Cm"
|
||||
},
|
||||
"angle": {
|
||||
"type": "Degrees"
|
||||
}
|
||||
}
|
||||
},
|
||||
"sourceRange": []
|
||||
}
|
||||
}
|
||||
},
|
||||
"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.3,
|
||||
"ty": {
|
||||
"type": "Default",
|
||||
"len": {
|
||||
"type": "Cm"
|
||||
},
|
||||
"angle": {
|
||||
"type": "Degrees"
|
||||
}
|
||||
}
|
||||
},
|
||||
"sourceRange": []
|
||||
}
|
||||
},
|
||||
"name": "extrude",
|
||||
"sourceRange": [],
|
||||
"type": "StdLibCall",
|
||||
"unlabeledArg": {
|
||||
"value": {
|
||||
"type": "Sketch",
|
||||
"value": {
|
||||
"artifactId": "[uuid]"
|
||||
}
|
||||
},
|
||||
"sourceRange": []
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "GroupEnd"
|
||||
}
|
||||
]
|
434
rust/kcl-lib/tests/involute_circular_units/program_memory.snap
Normal file
434
rust/kcl-lib/tests/involute_circular_units/program_memory.snap
Normal file
@ -0,0 +1,434 @@
|
||||
---
|
||||
source: kcl-lib/src/simulation_tests.rs
|
||||
assertion_line: 187
|
||||
description: Variables in memory after executing involute_circular_units.kcl
|
||||
---
|
||||
{
|
||||
"addendum": {
|
||||
"type": "Number",
|
||||
"value": 0.5,
|
||||
"ty": {
|
||||
"type": "Default",
|
||||
"len": {
|
||||
"type": "Cm"
|
||||
},
|
||||
"angle": {
|
||||
"type": "Degrees"
|
||||
}
|
||||
}
|
||||
},
|
||||
"angle001": {
|
||||
"type": "Number",
|
||||
"value": 6.0,
|
||||
"ty": {
|
||||
"type": "Default",
|
||||
"len": {
|
||||
"type": "Cm"
|
||||
},
|
||||
"angle": {
|
||||
"type": "Degrees"
|
||||
}
|
||||
}
|
||||
},
|
||||
"baseDiameter": {
|
||||
"type": "Number",
|
||||
"value": 9.8668,
|
||||
"ty": {
|
||||
"type": "Default",
|
||||
"len": {
|
||||
"type": "Cm"
|
||||
},
|
||||
"angle": {
|
||||
"type": "Degrees"
|
||||
}
|
||||
}
|
||||
},
|
||||
"deddendum": {
|
||||
"type": "Number",
|
||||
"value": 0.625,
|
||||
"ty": {
|
||||
"type": "Default",
|
||||
"len": {
|
||||
"type": "Cm"
|
||||
},
|
||||
"angle": {
|
||||
"type": "Degrees"
|
||||
}
|
||||
}
|
||||
},
|
||||
"gearHeight": {
|
||||
"type": "Number",
|
||||
"value": 0.3,
|
||||
"ty": {
|
||||
"type": "Default",
|
||||
"len": {
|
||||
"type": "Cm"
|
||||
},
|
||||
"angle": {
|
||||
"type": "Degrees"
|
||||
}
|
||||
}
|
||||
},
|
||||
"module": {
|
||||
"type": "Number",
|
||||
"value": 0.5,
|
||||
"ty": {
|
||||
"type": "Default",
|
||||
"len": {
|
||||
"type": "Cm"
|
||||
},
|
||||
"angle": {
|
||||
"type": "Degrees"
|
||||
}
|
||||
}
|
||||
},
|
||||
"nTeeth": {
|
||||
"type": "Number",
|
||||
"value": 21.0,
|
||||
"ty": {
|
||||
"type": "Default",
|
||||
"len": {
|
||||
"type": "Cm"
|
||||
},
|
||||
"angle": {
|
||||
"type": "Degrees"
|
||||
}
|
||||
}
|
||||
},
|
||||
"pitchDiameter": {
|
||||
"type": "Number",
|
||||
"value": 10.5,
|
||||
"ty": {
|
||||
"type": "Default",
|
||||
"len": {
|
||||
"type": "Cm"
|
||||
},
|
||||
"angle": {
|
||||
"type": "Degrees"
|
||||
}
|
||||
}
|
||||
},
|
||||
"pressureAngle": {
|
||||
"type": "Number",
|
||||
"value": 20.0,
|
||||
"ty": {
|
||||
"type": "Known",
|
||||
"type": "Angle",
|
||||
"type": "Degrees"
|
||||
}
|
||||
},
|
||||
"seg01": {
|
||||
"type": "TagIdentifier",
|
||||
"type": "TagIdentifier",
|
||||
"value": "seg01"
|
||||
},
|
||||
"seg02": {
|
||||
"type": "TagIdentifier",
|
||||
"type": "TagIdentifier",
|
||||
"value": "seg02"
|
||||
},
|
||||
"sketch001": {
|
||||
"type": "Solid",
|
||||
"value": {
|
||||
"type": "Solid",
|
||||
"id": "[uuid]",
|
||||
"artifactId": "[uuid]",
|
||||
"value": [
|
||||
{
|
||||
"faceId": "[uuid]",
|
||||
"id": "[uuid]",
|
||||
"sourceRange": [],
|
||||
"tag": {
|
||||
"commentStart": 505,
|
||||
"end": 511,
|
||||
"start": 505,
|
||||
"type": "TagDeclarator",
|
||||
"value": "seg01"
|
||||
},
|
||||
"type": "extrudePlane"
|
||||
},
|
||||
{
|
||||
"faceId": "[uuid]",
|
||||
"id": "[uuid]",
|
||||
"sourceRange": [],
|
||||
"tag": null,
|
||||
"type": "extrudePlane"
|
||||
},
|
||||
{
|
||||
"faceId": "[uuid]",
|
||||
"id": "[uuid]",
|
||||
"sourceRange": [],
|
||||
"tag": {
|
||||
"commentStart": 708,
|
||||
"end": 714,
|
||||
"start": 708,
|
||||
"type": "TagDeclarator",
|
||||
"value": "seg02"
|
||||
},
|
||||
"type": "extrudeArc"
|
||||
},
|
||||
{
|
||||
"faceId": "[uuid]",
|
||||
"id": "[uuid]",
|
||||
"sourceRange": [],
|
||||
"tag": null,
|
||||
"type": "extrudePlane"
|
||||
},
|
||||
{
|
||||
"faceId": "[uuid]",
|
||||
"id": "[uuid]",
|
||||
"sourceRange": [],
|
||||
"tag": null,
|
||||
"type": "extrudePlane"
|
||||
},
|
||||
{
|
||||
"faceId": "[uuid]",
|
||||
"id": "[uuid]",
|
||||
"sourceRange": [],
|
||||
"tag": null,
|
||||
"type": "extrudePlane"
|
||||
}
|
||||
],
|
||||
"sketch": {
|
||||
"type": "Sketch",
|
||||
"id": "[uuid]",
|
||||
"paths": [
|
||||
{
|
||||
"__geoMeta": {
|
||||
"id": "[uuid]",
|
||||
"sourceRange": []
|
||||
},
|
||||
"from": [
|
||||
4.9334,
|
||||
0.0
|
||||
],
|
||||
"tag": {
|
||||
"commentStart": 505,
|
||||
"end": 511,
|
||||
"start": 505,
|
||||
"type": "TagDeclarator",
|
||||
"value": "seg01"
|
||||
},
|
||||
"to": [
|
||||
5.7399,
|
||||
0.3404
|
||||
],
|
||||
"type": "ToPoint",
|
||||
"units": {
|
||||
"type": "Cm"
|
||||
}
|
||||
},
|
||||
{
|
||||
"__geoMeta": {
|
||||
"id": "[uuid]",
|
||||
"sourceRange": []
|
||||
},
|
||||
"from": [
|
||||
5.7399,
|
||||
0.3404
|
||||
],
|
||||
"tag": null,
|
||||
"to": [
|
||||
5.7399,
|
||||
0.3404
|
||||
],
|
||||
"type": "ToPoint",
|
||||
"units": {
|
||||
"type": "Cm"
|
||||
}
|
||||
},
|
||||
{
|
||||
"__geoMeta": {
|
||||
"id": "[uuid]",
|
||||
"sourceRange": []
|
||||
},
|
||||
"ccw": true,
|
||||
"center": [
|
||||
0.0,
|
||||
-0.0006
|
||||
],
|
||||
"from": [
|
||||
5.7399,
|
||||
0.3404
|
||||
],
|
||||
"radius": 5.75,
|
||||
"tag": {
|
||||
"commentStart": 708,
|
||||
"end": 714,
|
||||
"start": 708,
|
||||
"type": "TagDeclarator",
|
||||
"value": "seg02"
|
||||
},
|
||||
"to": [
|
||||
5.6792,
|
||||
0.8989
|
||||
],
|
||||
"type": "Arc",
|
||||
"units": {
|
||||
"type": "Cm"
|
||||
}
|
||||
},
|
||||
{
|
||||
"__geoMeta": {
|
||||
"id": "[uuid]",
|
||||
"sourceRange": []
|
||||
},
|
||||
"from": [
|
||||
5.6792,
|
||||
0.8989
|
||||
],
|
||||
"tag": null,
|
||||
"to": [
|
||||
4.8196,
|
||||
1.0642
|
||||
],
|
||||
"type": "ToPoint",
|
||||
"units": {
|
||||
"type": "Cm"
|
||||
}
|
||||
},
|
||||
{
|
||||
"__geoMeta": {
|
||||
"id": "[uuid]",
|
||||
"sourceRange": []
|
||||
},
|
||||
"from": [
|
||||
4.8196,
|
||||
1.0642
|
||||
],
|
||||
"tag": null,
|
||||
"to": [
|
||||
4.8196,
|
||||
1.0642
|
||||
],
|
||||
"type": "ToPoint",
|
||||
"units": {
|
||||
"type": "Cm"
|
||||
}
|
||||
},
|
||||
{
|
||||
"__geoMeta": {
|
||||
"id": "[uuid]",
|
||||
"sourceRange": []
|
||||
},
|
||||
"from": [
|
||||
4.8196,
|
||||
1.0642
|
||||
],
|
||||
"tag": null,
|
||||
"to": [
|
||||
4.7142,
|
||||
1.4541
|
||||
],
|
||||
"type": "ToPoint",
|
||||
"units": {
|
||||
"type": "Cm"
|
||||
}
|
||||
},
|
||||
{
|
||||
"__geoMeta": {
|
||||
"id": "[uuid]",
|
||||
"sourceRange": []
|
||||
},
|
||||
"from": [
|
||||
4.7142,
|
||||
1.4541
|
||||
],
|
||||
"tag": null,
|
||||
"to": [
|
||||
4.9334,
|
||||
0.0
|
||||
],
|
||||
"type": "ToPoint",
|
||||
"units": {
|
||||
"type": "Cm"
|
||||
}
|
||||
}
|
||||
],
|
||||
"on": {
|
||||
"artifactId": "[uuid]",
|
||||
"id": "[uuid]",
|
||||
"origin": {
|
||||
"x": 0.0,
|
||||
"y": 0.0,
|
||||
"z": 0.0,
|
||||
"units": {
|
||||
"type": "Mm"
|
||||
}
|
||||
},
|
||||
"type": "plane",
|
||||
"value": "XY",
|
||||
"xAxis": {
|
||||
"x": 1.0,
|
||||
"y": 0.0,
|
||||
"z": 0.0,
|
||||
"units": {
|
||||
"type": "Unknown"
|
||||
}
|
||||
},
|
||||
"yAxis": {
|
||||
"x": 0.0,
|
||||
"y": 1.0,
|
||||
"z": 0.0,
|
||||
"units": {
|
||||
"type": "Unknown"
|
||||
}
|
||||
}
|
||||
},
|
||||
"start": {
|
||||
"from": [
|
||||
4.9334,
|
||||
0.0
|
||||
],
|
||||
"to": [
|
||||
4.9334,
|
||||
0.0
|
||||
],
|
||||
"units": {
|
||||
"type": "Cm"
|
||||
},
|
||||
"tag": null,
|
||||
"__geoMeta": {
|
||||
"id": "[uuid]",
|
||||
"sourceRange": []
|
||||
}
|
||||
},
|
||||
"tags": {
|
||||
"seg01": {
|
||||
"type": "TagIdentifier",
|
||||
"value": "seg01"
|
||||
},
|
||||
"seg02": {
|
||||
"type": "TagIdentifier",
|
||||
"value": "seg02"
|
||||
}
|
||||
},
|
||||
"artifactId": "[uuid]",
|
||||
"originalId": "[uuid]",
|
||||
"units": {
|
||||
"type": "Cm"
|
||||
}
|
||||
},
|
||||
"height": 0.3,
|
||||
"startCapId": "[uuid]",
|
||||
"endCapId": "[uuid]",
|
||||
"units": {
|
||||
"type": "Cm"
|
||||
},
|
||||
"sectional": false
|
||||
}
|
||||
},
|
||||
"tipDiameter": {
|
||||
"type": "Number",
|
||||
"value": 11.5,
|
||||
"ty": {
|
||||
"type": "Default",
|
||||
"len": {
|
||||
"type": "Cm"
|
||||
},
|
||||
"angle": {
|
||||
"type": "Degrees"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
BIN
rust/kcl-lib/tests/involute_circular_units/rendered_model.png
Normal file
BIN
rust/kcl-lib/tests/involute_circular_units/rendered_model.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 50 KiB |
52
rust/kcl-lib/tests/involute_circular_units/unparsed.snap
Normal file
52
rust/kcl-lib/tests/involute_circular_units/unparsed.snap
Normal file
@ -0,0 +1,52 @@
|
||||
---
|
||||
source: kcl-lib/src/simulation_tests.rs
|
||||
assertion_line: 109
|
||||
description: Result of unparsing involute_circular_units.kcl
|
||||
---
|
||||
@settings(defaultLengthUnit = cm)
|
||||
|
||||
// Define parameters
|
||||
nTeeth = 21
|
||||
module = 0.5
|
||||
pitchDiameter = module * nTeeth
|
||||
pressureAngle = 20deg
|
||||
addendum = module
|
||||
deddendum = 1.25 * module
|
||||
baseDiameter = pitchDiameter * cos(pressureAngle)
|
||||
tipDiameter = pitchDiameter + 2 * module
|
||||
gearHeight = .3
|
||||
|
||||
angle001 = 6
|
||||
sketch001 = startSketchOn(XY)
|
||||
|> startProfile(at = [baseDiameter / 2, 0])
|
||||
|> involuteCircular(
|
||||
startRadius = baseDiameter / 2,
|
||||
endRadius = tipDiameter / 2,
|
||||
angle = 0,
|
||||
tag = $seg01,
|
||||
)
|
||||
|> line(endAbsolute = [lastSegX(%), lastSegY(%)])
|
||||
|> arc(
|
||||
angleStart = asin(segEndY(seg01) / segEndX(seg01)),
|
||||
angleEnd = 9,
|
||||
radius = tipDiameter / 2,
|
||||
tag = $seg02,
|
||||
)
|
||||
|> involuteCircular(
|
||||
startRadius = baseDiameter / 2,
|
||||
endRadius = tipDiameter / 2,
|
||||
angle = -12,
|
||||
reverse = true,
|
||||
)
|
||||
|> line(endAbsolute = [lastSegX(%), lastSegY(%)])
|
||||
|> line(endAbsolute = polar(angle = 360 / nTeeth, length = baseDiameter / 2))
|
||||
|> patternCircular2d(
|
||||
%,
|
||||
instances = nTeeth,
|
||||
center = [0, 0],
|
||||
arcDegrees = 360,
|
||||
rotateDuplicates = true,
|
||||
)
|
||||
|> close()
|
||||
|> subtract2d(tool = circle(center = [0, 0], radius = 1))
|
||||
|> extrude(length = gearHeight)
|
Reference in New Issue
Block a user