Add files via upload (#6227)

* Add files via upload

Adding parametric pc fan and bottle

* Update and rename globals.kcl to parameters.kcl

* Update fan-housing.kcl

* Update fan-housing.kcl

* Update fan.kcl

* Update motor.kcl

* Update parameters.kcl

* Update kcl-samples simulation test output

* Update main.kcl

avoiding fn imports

* Update kcl-samples simulation test output

* remove functions

* angledLine kwargs

* tangentalArc kwargs

* Update kcl-samples simulation test output

* Update housing middle

more tweaks because I just can't help myself

* Update kcl-samples simulation test output

* Update kcl-samples simulation test output

---------

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: jgomez720 <114548659+jgomez720@users.noreply.github.com>
This commit is contained in:
Nicholas Boone
2025-04-17 10:46:56 -07:00
committed by GitHub
parent 6f2d127c4f
commit f9fbaa2298
24 changed files with 11911 additions and 0 deletions

View File

@ -25,10 +25,14 @@ When you submit a PR to add or modify KCL samples, images and STEP files will be
--- ---
#### [80-20-rail](80-20-rail/main.kcl) ([screenshot](screenshots/80-20-rail.png)) #### [80-20-rail](80-20-rail/main.kcl) ([screenshot](screenshots/80-20-rail.png))
[![80-20-rail](screenshots/80-20-rail.png)](80-20-rail/main.kcl) [![80-20-rail](screenshots/80-20-rail.png)](80-20-rail/main.kcl)
#### [axial-fan](axial-fan/main.kcl) ([screenshot](screenshots/axial-fan.png))
[![axial-fan](screenshots/axial-fan.png)](axial-fan/main.kcl)
#### [ball-bearing](ball-bearing/main.kcl) ([screenshot](screenshots/ball-bearing.png)) #### [ball-bearing](ball-bearing/main.kcl) ([screenshot](screenshots/ball-bearing.png))
[![ball-bearing](screenshots/ball-bearing.png)](ball-bearing/main.kcl) [![ball-bearing](screenshots/ball-bearing.png)](ball-bearing/main.kcl)
#### [bench](bench/main.kcl) ([screenshot](screenshots/bench.png)) #### [bench](bench/main.kcl) ([screenshot](screenshots/bench.png))
[![bench](screenshots/bench.png)](bench/main.kcl) [![bench](screenshots/bench.png)](bench/main.kcl)
#### [bottle](bottle/main.kcl) ([screenshot](screenshots/bottle.png))
[![bottle](screenshots/bottle.png)](bottle/main.kcl)
#### [bracket](bracket/main.kcl) ([screenshot](screenshots/bracket.png)) #### [bracket](bracket/main.kcl) ([screenshot](screenshots/bracket.png))
[![bracket](screenshots/bracket.png)](bracket/main.kcl) [![bracket](screenshots/bracket.png)](bracket/main.kcl)
#### [car-wheel-assembly](car-wheel-assembly/main.kcl) ([screenshot](screenshots/car-wheel-assembly.png)) #### [car-wheel-assembly](car-wheel-assembly/main.kcl) ([screenshot](screenshots/car-wheel-assembly.png))

View File

@ -0,0 +1,153 @@
// Fan Housing
// The plastic housing that contains the fan and the motor
// Set units
@settings(defaultLengthUnit = mm)
// Import parameters
import * from "parameters.kcl"
// Model the housing which holds the motor, the fan, and the mounting provisions
// Bottom mounting face
bottomFaceSketch = startSketchOn(XY)
|> startProfileAt([-fanSize / 2, -fanSize / 2], %)
|> angledLine(angle = 0, length = fanSize, tag = $rectangleSegmentA001)
|> angledLine(angle = segAng(rectangleSegmentA001) + 90, length = fanSize, tag = $rectangleSegmentB001)
|> angledLine(angle = segAng(rectangleSegmentA001), length = -segLen(rectangleSegmentA001), tag = $rectangleSegmentC001)
|> line(endAbsolute = [profileStartX(%), profileStartY(%)], tag = $rectangleSegmentD001)
|> close()
|> hole(circle(center = [0, 0], radius = 4), %)
|> hole(circle(
center = [
mountingHoleSpacing / 2,
mountingHoleSpacing / 2
],
radius = mountingHoleSize / 2,
), %)
|> hole(circle(
center = [
-mountingHoleSpacing / 2,
mountingHoleSpacing / 2
],
radius = mountingHoleSize / 2,
), %)
|> hole(circle(
center = [
mountingHoleSpacing / 2,
-mountingHoleSpacing / 2
],
radius = mountingHoleSize / 2,
), %)
|> hole(circle(
center = [
-mountingHoleSpacing / 2,
-mountingHoleSpacing / 2
],
radius = mountingHoleSize / 2,
), %)
|> extrude(length = 4)
// Add large openings to the bottom face to allow airflow through the fan
airflowPattern = startSketchOn(bottomFaceSketch, face = END)
|> startProfileAt([fanSize * 7 / 25, -fanSize * 9 / 25], %)
|> angledLine(angle = 140, length = fanSize * 12 / 25, tag = $seg01)
|> tangentialArc(radius = fanSize * 1 / 50, angle = 90)
|> angledLine(angle = -130, length = fanSize * 8 / 25)
|> tangentialArc(radius = fanSize * 1 / 50, angle = 90)
|> angledLine(angle = segAng(seg01) + 180, length = fanSize * 2 / 25)
|> tangentialArc(radius = fanSize * 8 / 25, angle = 40)
|> xLine(length = fanSize * 3 / 25)
|> tangentialArc(endAbsolute = [profileStartX(%), profileStartY(%)])
|> close()
|> patternCircular2d(
instances = 4,
center = [0, 0],
arcDegrees = 360,
rotateDuplicates = true,
)
|> extrude(length = -4)
// Create the middle segment of the fan housing body
housingMiddleLength = fanSize / 3
housingMiddleRadius = fanSize / 3 - 1
bodyMiddle = startSketchOn(bottomFaceSketch, face = END)
|> startProfileAt([
housingMiddleLength / 2,
-housingMiddleLength / 2 - housingMiddleRadius
], %)
|> tangentialArc(radius = housingMiddleRadius, angle = 90)
|> yLine(length = housingMiddleLength)
|> tangentialArc(radius = housingMiddleRadius, angle = 90)
|> xLine(length = -housingMiddleLength)
|> tangentialArc(radius = housingMiddleRadius, angle = 90)
|> yLine(length = -housingMiddleLength)
|> tangentialArc(radius = housingMiddleRadius, angle = 90)
|> line(endAbsolute = [profileStartX(%), profileStartY(%)])
|> extrude(length = fanHeight - 4 - 4)
// Cut a hole in the body to accommodate the fan
bodyFanHole = startSketchOn(bodyMiddle, face = END)
|> circle(center = [0, 0], radius = fanSize * 23 / 50)
|> extrude(length = -(fanHeight - 4 - 4))
// Top mounting face. Cut a hole in the face to accommodate the fan
topFaceSketch = startSketchOn(bodyMiddle, face = END)
topHoles = startProfileAt([-fanSize / 2, -fanSize / 2], topFaceSketch)
|> angledLine(angle = 0, length = fanSize, tag = $rectangleSegmentA002)
|> angledLine(angle = segAng(rectangleSegmentA002) + 90, length = fanSize, tag = $rectangleSegmentB002)
|> angledLine(angle = segAng(rectangleSegmentA002), length = -segLen(rectangleSegmentA002), tag = $rectangleSegmentC002)
|> line(endAbsolute = [profileStartX(%), profileStartY(%)], tag = $rectangleSegmentD002)
|> close()
|> hole(circle(center = [0, 0], radius = fanSize * 23 / 50), %)
|> hole(circle(
center = [
mountingHoleSpacing / 2,
mountingHoleSpacing / 2
],
radius = mountingHoleSize / 2,
), %)
|> hole(circle(
center = [
-mountingHoleSpacing / 2,
mountingHoleSpacing / 2
],
radius = mountingHoleSize / 2,
), %)
|> hole(circle(
center = [
mountingHoleSpacing / 2,
-mountingHoleSpacing / 2
],
radius = mountingHoleSize / 2,
), %)
|> hole(circle(
center = [
-mountingHoleSpacing / 2,
-mountingHoleSpacing / 2
],
radius = mountingHoleSize / 2,
), %)
|> extrude(length = 4)
// Create a housing for the electric motor to sit
motorHousing = startSketchOn(bottomFaceSketch, face = END)
|> circle(center = [0, 0], radius = 11.2)
|> extrude(length = 16)
startSketchOn(motorHousing, face = END)
|> circle(center = [0, 0], radius = 10)
|> extrude(length = -16)
|> appearance(color = "#a55e2c")
|> fillet(
radius = abs(fanSize - mountingHoleSpacing) / 2,
tags = [
getNextAdjacentEdge(rectangleSegmentA001),
getNextAdjacentEdge(rectangleSegmentB001),
getNextAdjacentEdge(rectangleSegmentC001),
getNextAdjacentEdge(rectangleSegmentD001),
getNextAdjacentEdge(rectangleSegmentA002),
getNextAdjacentEdge(rectangleSegmentB002),
getNextAdjacentEdge(rectangleSegmentC002),
getNextAdjacentEdge(rectangleSegmentD002)
],
)

View File

@ -0,0 +1,92 @@
// Fan
// Spinning axial fan that moves airflow
// Set units
@settings(defaultLengthUnit = mm)
// Import parameters
import * from "parameters.kcl"
// Model the center of the fan
fanCenter = startSketchOn(XZ)
|> startProfileAt([-0.0001, fanHeight], %)
|> xLine(endAbsolute = -15 + 1.5)
|> tangentialArc(radius = 1.5, angle = 90)
|> yLine(endAbsolute = 4.5)
|> xLine(endAbsolute = -13)
|> yLine(endAbsolute = profileStartY(%) - 5)
|> tangentialArc(radius = 1, angle = -90)
|> xLine(endAbsolute = -1)
|> yLine(length = 2)
|> xLine(length = -0.15)
|> line(endAbsolute = [
profileStartX(%) - 1,
profileStartY(%) - 1.4
])
|> xLine(endAbsolute = profileStartX(%))
|> yLine(endAbsolute = profileStartY(%))
|> close()
|> revolve(axis = {
direction = [0.0, 1.0],
origin = [0.0, 0.0]
})
|> appearance(color = "#f3e2d8")
// Create a function for a lofted fan blade cross section that rotates about the center hub of the fan
fn fanBlade(offsetHeight, startAngle) {
fanBlade = startSketchOn(offsetPlane(XY, offset = offsetHeight))
|> startProfileAt([
15 * cos(toRadians(startAngle)),
15 * sin(toRadians(startAngle))
], %)
|> arc({
angleStart = startAngle,
angleEnd = startAngle + 14,
radius = 15
}, %)
|> arcTo({
end = [
fanSize * 22 / 50 * cos(toRadians(startAngle - 20)),
fanSize * 22 / 50 * sin(toRadians(startAngle - 20))
],
interior = [
fanSize * 11 / 50 * cos(toRadians(startAngle + 3)),
fanSize * 11 / 50 * sin(toRadians(startAngle + 3))
]
}, %)
|> arcTo({
end = [
fanSize * 22 / 50 * cos(toRadians(startAngle - 24)),
fanSize * 22 / 50 * sin(toRadians(startAngle - 24))
],
interior = [
fanSize * 22 / 50 * cos(toRadians(startAngle - 22)),
fanSize * 22 / 50 * sin(toRadians(startAngle - 22))
]
}, %)
|> arcTo({
end = [profileStartX(%), profileStartY(%)],
interior = [
fanSize * 11 / 50 * cos(toRadians(startAngle - 5)),
fanSize * 11 / 50 * sin(toRadians(startAngle - 5))
]
}, %)
|> close()
return fanBlade
}
// Loft the fan blade cross sections into a single blade, then pattern them about the fan center
loft([
fanBlade(4.5, 50),
fanBlade((fanHeight - 2 - 4) / 2, 30),
fanBlade(fanHeight - 2, 0)
])
|> appearance(color = "#f3e2d8")
|> patternCircular3d(
%,
instances = 9,
axis = [0, 0, 1],
center = [0, 0, 0],
arcDegrees = 360,
rotateDuplicates = true,
)

View File

@ -0,0 +1,15 @@
// PC Fan
// A small axial fan, used to push or draw airflow over components to remove excess heat
// Set units
@settings(defaultLengthUnit = mm)
// Import all parts into assembly file
import "fan-housing.kcl" as fanHousing
import "motor.kcl" as motor
import "fan.kcl" as fan
// Produce the model for each imported part
fanHousing
motor
fan

View File

@ -0,0 +1,22 @@
// Motor
// A small electric motor to power the fan
// Set Units
@settings(defaultLengthUnit = mm)
// Import Parameters
import * from "parameters.kcl"
// Model the motor body and stem
topFacePlane = offsetPlane(XY, offset = 4)
motorBody = startSketchOn(topFacePlane)
|> circle(center = [0, 0], radius = 10, tag = $seg04)
|> extrude(length = 17)
|> appearance(color = "#021b55")
|> fillet(radius = 2, tags = [getOppositeEdge(seg04), seg04])
startSketchOn(offsetPlane(XY, offset = 21))
|> circle(center = [0, 0], radius = 1)
|> extrude(length = 3.8)
|> appearance(color = "#dbc89e")

View File

@ -0,0 +1,10 @@
// Global parameters for the axial fan
// Set units
@settings(defaultLengthUnit = mm)
// Define Parameters
export fanSize = 120
export fanHeight = 25
export mountingHoleSpacing = 105
export mountingHoleSize = 4.5

View File

@ -0,0 +1,35 @@
// Bottle
// A simple bottle with a hollow, watertight interior
// Set Units
@settings(defaultLengthUnit = mm)
// Input dimensions to define the bottle
bottleWidth = 80
bottleLength = 125
bottleHeight = 220
neckDepth = 18
neckDiameter = 45
wallThickness = 4
// Create a rounded body for the bottle
bottleBody = startSketchOn(XY)
|> startProfileAt([-bottleLength / 2, 0], %)
|> yLine(length = bottleWidth / 3)
|> arcTo({
end = [bottleLength / 2, bottleWidth / 3],
interior = [0, bottleWidth / 2]
}, %)
|> yLine(endAbsolute = 0)
|> mirror2d(axis = X)
|> close()
|> extrude(length = bottleHeight - neckDepth)
// Create a neck centered at the top of the bottle
bottleNeck = startSketchOn(bottleBody, face = END)
|> circle(center = [0, 0], radius = neckDiameter / 2)
|> extrude(length = neckDepth)
// Define a shell operation so that the entire body and neck are hollow, with only the top face opened
bottleShell = shell(bottleNeck, faces = [END], thickness = wallThickness)
|> appearance(%, color = "#0078c2")

View File

@ -6,6 +6,13 @@
"title": "80/20 Rail", "title": "80/20 Rail",
"description": "An 80/20 extruded aluminum linear rail. T-slot profile adjustable by profile height, rail length, and origin position" "description": "An 80/20 extruded aluminum linear rail. T-slot profile adjustable by profile height, rail length, and origin position"
}, },
{
"file": "main.kcl",
"pathFromProjectDirectoryToFirstFile": "axial-fan/main.kcl",
"multipleFiles": true,
"title": "PC Fan",
"description": "A small axial fan, used to push or draw airflow over components to remove excess heat"
},
{ {
"file": "main.kcl", "file": "main.kcl",
"pathFromProjectDirectoryToFirstFile": "ball-bearing/main.kcl", "pathFromProjectDirectoryToFirstFile": "ball-bearing/main.kcl",
@ -20,6 +27,13 @@
"title": "Bench", "title": "Bench",
"description": "This is a slight remix of Depep1's original 3D Boaty (https://www.printables.com/model/1141963-3d-boaty). This is a tool used for benchmarking 3D FDM printers for bed adhesion, overhangs, bridging and top surface quality. The name of this file is a bit of misnomer, the shape of the object is a typical park bench." "description": "This is a slight remix of Depep1's original 3D Boaty (https://www.printables.com/model/1141963-3d-boaty). This is a tool used for benchmarking 3D FDM printers for bed adhesion, overhangs, bridging and top surface quality. The name of this file is a bit of misnomer, the shape of the object is a typical park bench."
}, },
{
"file": "main.kcl",
"pathFromProjectDirectoryToFirstFile": "bottle/main.kcl",
"multipleFiles": false,
"title": "Bottle",
"description": "A simple bottle with a hollow, watertight interior"
},
{ {
"file": "main.kcl", "file": "main.kcl",
"pathFromProjectDirectoryToFirstFile": "bracket/main.kcl", "pathFromProjectDirectoryToFirstFile": "bracket/main.kcl",

Binary file not shown.

After

Width:  |  Height:  |  Size: 105 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 70 KiB

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 axial-fan.kcl
extension: md
snapshot_kind: binary
---

View File

@ -0,0 +1,754 @@
```mermaid
flowchart LR
subgraph path2 [Path]
2["Path<br>[323, 370, 5]"]
3["Segment<br>[376, 444, 5]"]
4["Segment<br>[450, 550, 5]"]
5["Segment<br>[556, 673, 5]"]
6["Segment<br>[679, 764, 5]"]
7["Segment<br>[770, 777, 5]"]
8[Solid2d]
end
subgraph path9 [Path]
9["Path<br>[788, 823, 5]"]
10["Segment<br>[788, 823, 5]"]
11[Solid2d]
end
subgraph path12 [Path]
12["Path<br>[838, 985, 5]"]
13["Segment<br>[838, 985, 5]"]
14[Solid2d]
end
subgraph path15 [Path]
15["Path<br>[1000, 1148, 5]"]
16["Segment<br>[1000, 1148, 5]"]
17[Solid2d]
end
subgraph path18 [Path]
18["Path<br>[1163, 1311, 5]"]
19["Segment<br>[1163, 1311, 5]"]
20[Solid2d]
end
subgraph path21 [Path]
21["Path<br>[1326, 1475, 5]"]
22["Segment<br>[1326, 1475, 5]"]
23[Solid2d]
end
subgraph path39 [Path]
39["Path<br>[1646, 1702, 5]"]
40["Segment<br>[1708, 1773, 5]"]
41["Segment<br>[1779, 1831, 5]"]
42["Segment<br>[1837, 1888, 5]"]
43["Segment<br>[1894, 1946, 5]"]
44["Segment<br>[1952, 2018, 5]"]
45["Segment<br>[2024, 2076, 5]"]
46["Segment<br>[2082, 2114, 5]"]
47["Segment<br>[2120, 2185, 5]"]
48["Segment<br>[2191, 2198, 5]"]
49[Solid2d]
end
subgraph path78 [Path]
78["Path<br>[2547, 2660, 5]"]
79["Segment<br>[2666, 2721, 5]"]
80["Segment<br>[2727, 2762, 5]"]
81["Segment<br>[2768, 2823, 5]"]
82["Segment<br>[2829, 2865, 5]"]
83["Segment<br>[2871, 2926, 5]"]
84["Segment<br>[2932, 2968, 5]"]
85["Segment<br>[2974, 3029, 5]"]
86["Segment<br>[3035, 3091, 5]"]
end
subgraph path113 [Path]
113["Path<br>[3240, 3291, 5]"]
114["Segment<br>[3240, 3291, 5]"]
115[Solid2d]
end
subgraph path120 [Path]
120["Path<br>[3470, 3529, 5]"]
121["Segment<br>[3535, 3603, 5]"]
122["Segment<br>[3609, 3709, 5]"]
123["Segment<br>[3715, 3832, 5]"]
124["Segment<br>[3838, 3923, 5]"]
125["Segment<br>[3929, 3936, 5]"]
126[Solid2d]
end
subgraph path127 [Path]
127["Path<br>[3947, 3998, 5]"]
128["Segment<br>[3947, 3998, 5]"]
129[Solid2d]
end
subgraph path130 [Path]
130["Path<br>[4013, 4160, 5]"]
131["Segment<br>[4013, 4160, 5]"]
132[Solid2d]
end
subgraph path133 [Path]
133["Path<br>[4175, 4323, 5]"]
134["Segment<br>[4175, 4323, 5]"]
135[Solid2d]
end
subgraph path136 [Path]
136["Path<br>[4338, 4486, 5]"]
137["Segment<br>[4338, 4486, 5]"]
138[Solid2d]
end
subgraph path139 [Path]
139["Path<br>[4501, 4650, 5]"]
140["Segment<br>[4501, 4650, 5]"]
141[Solid2d]
end
subgraph path157 [Path]
157["Path<br>[4795, 4833, 5]"]
158["Segment<br>[4795, 4833, 5]"]
159[Solid2d]
end
subgraph path165 [Path]
165["Path<br>[4906, 4942, 5]"]
166["Segment<br>[4906, 4942, 5]"]
167[Solid2d]
end
subgraph path181 [Path]
181["Path<br>[277, 327, 6]"]
182["Segment<br>[277, 327, 6]"]
183[Solid2d]
end
subgraph path191 [Path]
191["Path<br>[502, 537, 6]"]
192["Segment<br>[502, 537, 6]"]
193[Solid2d]
end
subgraph path203 [Path]
203["Path<br>[216, 255, 7]"]
204["Segment<br>[261, 291, 7]"]
205["Segment<br>[297, 336, 7]"]
206["Segment<br>[342, 366, 7]"]
207["Segment<br>[372, 396, 7]"]
208["Segment<br>[402, 443, 7]"]
209["Segment<br>[449, 487, 7]"]
210["Segment<br>[493, 516, 7]"]
211["Segment<br>[522, 539, 7]"]
212["Segment<br>[545, 566, 7]"]
213["Segment<br>[572, 659, 7]"]
214["Segment<br>[665, 702, 7]"]
215["Segment<br>[708, 745, 7]"]
216["Segment<br>[751, 758, 7]"]
217[Solid2d]
end
subgraph path243 [Path]
243["Path<br>[1100, 1212, 7]"]
244["Segment<br>[1220, 1330, 7]"]
245["Segment<br>[1338, 1672, 7]"]
246["Segment<br>[1680, 2016, 7]"]
247["Segment<br>[2024, 2255, 7]"]
248["Segment<br>[2263, 2270, 7]"]
249[Solid2d]
end
subgraph path251 [Path]
251["Path<br>[1100, 1212, 7]"]
252["Segment<br>[1220, 1330, 7]"]
253["Segment<br>[1338, 1672, 7]"]
254["Segment<br>[1680, 2016, 7]"]
255["Segment<br>[2024, 2255, 7]"]
256["Segment<br>[2263, 2270, 7]"]
257[Solid2d]
end
subgraph path259 [Path]
259["Path<br>[1100, 1212, 7]"]
264["Segment<br>[2263, 2270, 7]"]
265[Solid2d]
end
1["Plane<br>[300, 317, 5]"]
24["Sweep Extrusion<br>[1485, 1504, 5]"]
25[Wall]
26[Wall]
27[Wall]
28[Wall]
29["Cap Start"]
30["Cap End"]
31["SweepEdge Opposite"]
32["SweepEdge Adjacent"]
33["SweepEdge Opposite"]
34["SweepEdge Adjacent"]
35["SweepEdge Opposite"]
36["SweepEdge Adjacent"]
37["SweepEdge Opposite"]
38["SweepEdge Adjacent"]
50["Sweep Extrusion<br>[2338, 2358, 5]"]
51[Wall]
52[Wall]
53[Wall]
54[Wall]
55[Wall]
56[Wall]
57[Wall]
58[Wall]
59["SweepEdge Opposite"]
60["SweepEdge Adjacent"]
61["SweepEdge Opposite"]
62["SweepEdge Adjacent"]
63["SweepEdge Opposite"]
64["SweepEdge Adjacent"]
65["SweepEdge Opposite"]
66["SweepEdge Adjacent"]
67["SweepEdge Opposite"]
68["SweepEdge Adjacent"]
69["SweepEdge Opposite"]
70["SweepEdge Adjacent"]
71["SweepEdge Opposite"]
72["SweepEdge Adjacent"]
73["SweepEdge Opposite"]
74["SweepEdge Adjacent"]
75["Sweep Extrusion<br>[2338, 2358, 5]"]
76["Sweep Extrusion<br>[2338, 2358, 5]"]
77["Sweep Extrusion<br>[2338, 2358, 5]"]
87["Sweep Extrusion<br>[3097, 3132, 5]"]
88[Wall]
89[Wall]
90[Wall]
91[Wall]
92[Wall]
93[Wall]
94[Wall]
95[Wall]
96["Cap End"]
97["SweepEdge Opposite"]
98["SweepEdge Adjacent"]
99["SweepEdge Opposite"]
100["SweepEdge Adjacent"]
101["SweepEdge Opposite"]
102["SweepEdge Adjacent"]
103["SweepEdge Opposite"]
104["SweepEdge Adjacent"]
105["SweepEdge Opposite"]
106["SweepEdge Adjacent"]
107["SweepEdge Opposite"]
108["SweepEdge Adjacent"]
109["SweepEdge Opposite"]
110["SweepEdge Adjacent"]
111["SweepEdge Opposite"]
112["SweepEdge Adjacent"]
116["Sweep Extrusion<br>[3297, 3335, 5]"]
117[Wall]
118["SweepEdge Opposite"]
119["SweepEdge Adjacent"]
142["Sweep Extrusion<br>[4660, 4679, 5]"]
143[Wall]
144[Wall]
145[Wall]
146[Wall]
147["Cap Start"]
148["Cap End"]
149["SweepEdge Opposite"]
150["SweepEdge Adjacent"]
151["SweepEdge Opposite"]
152["SweepEdge Adjacent"]
153["SweepEdge Opposite"]
154["SweepEdge Adjacent"]
155["SweepEdge Opposite"]
156["SweepEdge Adjacent"]
160["Sweep Extrusion<br>[4839, 4859, 5]"]
161[Wall]
162["Cap End"]
163["SweepEdge Opposite"]
164["SweepEdge Adjacent"]
168["Sweep Extrusion<br>[4948, 4969, 5]"]
169[Wall]
170["SweepEdge Opposite"]
171["SweepEdge Adjacent"]
172["EdgeCut Fillet<br>[5010, 5521, 5]"]
173["EdgeCut Fillet<br>[5010, 5521, 5]"]
174["EdgeCut Fillet<br>[5010, 5521, 5]"]
175["EdgeCut Fillet<br>[5010, 5521, 5]"]
176["EdgeCut Fillet<br>[5010, 5521, 5]"]
177["EdgeCut Fillet<br>[5010, 5521, 5]"]
178["EdgeCut Fillet<br>[5010, 5521, 5]"]
179["EdgeCut Fillet<br>[5010, 5521, 5]"]
180["Plane<br>[204, 231, 6]"]
184["Sweep Extrusion<br>[333, 353, 6]"]
185[Wall]
186["Cap Start"]
187["Cap End"]
188["SweepEdge Opposite"]
189["SweepEdge Adjacent"]
190["Plane<br>[467, 495, 6]"]
194["Sweep Extrusion<br>[543, 564, 6]"]
195[Wall]
196["Cap Start"]
197["Cap End"]
198["SweepEdge Opposite"]
199["SweepEdge Adjacent"]
200["EdgeCut Fillet<br>[394, 452, 6]"]
201["EdgeCut Fillet<br>[394, 452, 6]"]
202["Plane<br>[193, 210, 7]"]
218["Sweep Revolve<br>[764, 846, 7]"]
219[Wall]
220[Wall]
221[Wall]
222[Wall]
223[Wall]
224[Wall]
225[Wall]
226[Wall]
227[Wall]
228[Wall]
229[Wall]
230[Wall]
231["SweepEdge Adjacent"]
232["SweepEdge Adjacent"]
233["SweepEdge Adjacent"]
234["SweepEdge Adjacent"]
235["SweepEdge Adjacent"]
236["SweepEdge Adjacent"]
237["SweepEdge Adjacent"]
238["SweepEdge Adjacent"]
239["SweepEdge Adjacent"]
240["SweepEdge Adjacent"]
241["SweepEdge Adjacent"]
242["Plane<br>[1053, 1091, 7]"]
250["Plane<br>[1053, 1091, 7]"]
258["Plane<br>[1053, 1091, 7]"]
260["SweepEdge Opposite"]
261["SweepEdge Opposite"]
262["SweepEdge Opposite"]
263["SweepEdge Opposite"]
266["Sweep Loft<br>[2389, 2509, 7]"]
267[Wall]
268[Wall]
269[Wall]
270[Wall]
271["Cap End"]
272["Cap End"]
273["SweepEdge Adjacent"]
274["SweepEdge Adjacent"]
275["SweepEdge Adjacent"]
276["SweepEdge Adjacent"]
277["StartSketchOnFace<br>[1597, 1640, 5]"]
278["StartSketchOnFace<br>[2498, 2541, 5]"]
279["StartSketchOnFace<br>[3197, 3234, 5]"]
280["StartSketchOnFace<br>[3421, 3458, 5]"]
281["StartSketchOnFace<br>[4746, 4789, 5]"]
282["StartSketchOnFace<br>[4861, 4900, 5]"]
283["StartSketchOnPlane<br>[244, 271, 6]"]
284["StartSketchOnPlane<br>[453, 496, 6]"]
285["StartSketchOnPlane<br>[1039, 1092, 7]"]
286["StartSketchOnPlane<br>[1039, 1092, 7]"]
287["StartSketchOnPlane<br>[1039, 1092, 7]"]
1 --- 2
1 --- 9
1 --- 12
1 --- 15
1 --- 18
1 --- 21
2 --- 3
2 --- 4
2 --- 5
2 --- 6
2 --- 7
2 ---- 24
2 --- 8
3 --- 25
3 --- 31
3 --- 32
4 --- 26
4 --- 33
4 --- 34
5 --- 27
5 --- 35
5 --- 36
6 --- 28
6 --- 37
6 --- 38
9 --- 10
9 --- 11
12 --- 13
12 --- 14
15 --- 16
15 --- 17
18 --- 19
18 --- 20
21 --- 22
21 --- 23
24 --- 25
24 --- 26
24 --- 27
24 --- 28
24 --- 29
24 --- 30
24 --- 31
24 --- 32
24 --- 33
24 --- 34
24 --- 35
24 --- 36
24 --- 37
24 --- 38
30 --- 39
30 --- 78
30 --- 157
39 --- 40
39 --- 41
39 --- 42
39 --- 43
39 --- 44
39 --- 45
39 --- 46
39 --- 47
39 --- 48
39 ---- 50
39 --- 49
40 --- 51
40 --- 59
40 --- 60
41 --- 52
41 --- 61
41 --- 62
42 --- 53
42 --- 63
42 --- 64
43 --- 54
43 --- 65
43 --- 66
44 --- 55
44 --- 67
44 --- 68
45 --- 56
45 --- 69
45 --- 70
46 --- 57
46 --- 71
46 --- 72
47 --- 58
47 --- 73
47 --- 74
50 --- 51
50 --- 52
50 --- 53
50 --- 54
50 --- 55
50 --- 56
50 --- 57
50 --- 58
50 --- 59
50 --- 60
50 --- 61
50 --- 62
50 --- 63
50 --- 64
50 --- 65
50 --- 66
50 --- 67
50 --- 68
50 --- 69
50 --- 70
50 --- 71
50 --- 72
50 --- 73
50 --- 74
78 --- 79
78 --- 80
78 --- 81
78 --- 82
78 --- 83
78 --- 84
78 --- 85
78 --- 86
78 ---- 87
79 --- 88
79 --- 97
79 --- 98
80 --- 89
80 --- 99
80 --- 100
81 --- 90
81 --- 101
81 --- 102
82 --- 91
82 --- 103
82 --- 104
83 --- 92
83 --- 105
83 --- 106
84 --- 93
84 --- 107
84 --- 108
85 --- 94
85 --- 109
85 --- 110
86 --- 95
86 --- 111
86 --- 112
87 --- 88
87 --- 89
87 --- 90
87 --- 91
87 --- 92
87 --- 93
87 --- 94
87 --- 95
87 --- 96
87 --- 97
87 --- 98
87 --- 99
87 --- 100
87 --- 101
87 --- 102
87 --- 103
87 --- 104
87 --- 105
87 --- 106
87 --- 107
87 --- 108
87 --- 109
87 --- 110
87 --- 111
87 --- 112
96 --- 113
96 --- 120
96 --- 127
96 --- 130
96 --- 133
96 --- 136
96 --- 139
113 --- 114
113 ---- 116
113 --- 115
114 --- 117
114 --- 118
114 --- 119
116 --- 117
116 --- 118
116 --- 119
120 --- 121
120 --- 122
120 --- 123
120 --- 124
120 --- 125
120 ---- 142
120 --- 126
121 --- 143
121 --- 149
121 --- 150
122 --- 144
122 --- 151
122 --- 152
123 --- 145
123 --- 153
123 --- 154
124 --- 146
124 --- 155
124 --- 156
127 --- 128
127 --- 129
130 --- 131
130 --- 132
133 --- 134
133 --- 135
136 --- 137
136 --- 138
139 --- 140
139 --- 141
142 --- 143
142 --- 144
142 --- 145
142 --- 146
142 --- 147
142 --- 148
142 --- 149
142 --- 150
142 --- 151
142 --- 152
142 --- 153
142 --- 154
142 --- 155
142 --- 156
157 --- 158
157 ---- 160
157 --- 159
158 --- 161
158 --- 163
158 --- 164
160 --- 161
160 --- 162
160 --- 163
160 --- 164
162 --- 165
165 --- 166
165 ---- 168
165 --- 167
166 --- 169
166 --- 170
166 --- 171
168 --- 169
168 --- 170
168 --- 171
32 <--x 172
34 <--x 173
36 <--x 174
38 <--x 175
150 <--x 176
152 <--x 177
154 <--x 178
156 <--x 179
180 --- 181
181 --- 182
181 ---- 184
181 --- 183
182 --- 185
182 --- 188
182 --- 189
182 --- 201
184 --- 185
184 --- 186
184 --- 187
184 --- 188
184 --- 189
190 --- 191
191 --- 192
191 ---- 194
191 --- 193
192 --- 195
192 --- 198
192 --- 199
194 --- 195
194 --- 196
194 --- 197
194 --- 198
194 --- 199
188 <--x 200
202 --- 203
203 --- 204
203 --- 205
203 --- 206
203 --- 207
203 --- 208
203 --- 209
203 --- 210
203 --- 211
203 --- 212
203 --- 213
203 --- 214
203 --- 215
203 --- 216
203 ---- 218
203 --- 217
204 --- 219
204 x--> 231
205 --- 220
205 --- 231
206 --- 221
206 --- 232
207 --- 222
207 --- 233
208 --- 223
208 --- 234
209 --- 224
209 --- 235
210 --- 225
210 --- 236
211 --- 226
211 --- 237
212 --- 227
212 --- 238
213 --- 228
213 --- 239
214 --- 229
214 --- 240
215 --- 230
215 --- 241
218 --- 219
218 --- 220
218 --- 221
218 --- 222
218 --- 223
218 --- 224
218 --- 225
218 --- 226
218 --- 227
218 --- 228
218 --- 229
218 --- 230
218 <--x 204
218 --- 231
218 <--x 205
218 <--x 206
218 --- 232
218 <--x 207
218 --- 233
218 <--x 208
218 --- 234
218 <--x 209
218 --- 235
218 <--x 210
218 --- 236
218 <--x 211
218 --- 237
218 <--x 212
218 --- 238
218 <--x 213
218 --- 239
218 <--x 214
218 --- 240
218 <--x 215
218 --- 241
242 --- 243
243 --- 244
243 --- 245
243 --- 246
243 --- 247
243 --- 248
243 ---- 266
243 --- 249
244 --- 267
244 --- 260
244 --- 273
245 --- 268
245 --- 261
245 --- 274
246 --- 269
246 --- 262
246 --- 275
247 --- 270
247 --- 263
247 --- 276
250 --- 251
251 --- 252
251 --- 253
251 --- 254
251 --- 255
251 --- 256
251 x---> 266
251 --- 257
258 --- 259
259 x--> 260
259 x--> 261
259 x--> 262
259 x--> 263
259 --- 264
259 x---> 266
259 --- 265
266 --- 260
266 --- 261
266 --- 262
266 --- 263
266 --- 267
266 --- 268
266 --- 269
266 --- 270
266 --- 271
266 --- 272
266 --- 273
266 --- 274
266 --- 275
266 --- 276
30 <--x 277
30 <--x 278
96 <--x 279
96 <--x 280
30 <--x 281
162 <--x 282
180 <--x 283
190 <--x 284
242 <--x 285
250 <--x 286
258 <--x 287
```

View File

@ -0,0 +1,220 @@
---
source: kcl-lib/src/simulation_tests.rs
description: Result of parsing axial-fan.kcl
---
{
"Ok": {
"body": [
{
"commentStart": 0,
"end": 0,
"path": {
"type": "Kcl",
"filename": "fan-housing.kcl"
},
"preComments": [
"// Import all parts into assembly file"
],
"selector": {
"type": "None",
"alias": {
"commentStart": 0,
"end": 0,
"name": "fanHousing",
"start": 0,
"type": "Identifier"
}
},
"start": 0,
"type": "ImportStatement",
"type": "ImportStatement"
},
{
"commentStart": 0,
"end": 0,
"path": {
"type": "Kcl",
"filename": "motor.kcl"
},
"selector": {
"type": "None",
"alias": {
"commentStart": 0,
"end": 0,
"name": "motor",
"start": 0,
"type": "Identifier"
}
},
"start": 0,
"type": "ImportStatement",
"type": "ImportStatement"
},
{
"commentStart": 0,
"end": 0,
"path": {
"type": "Kcl",
"filename": "fan.kcl"
},
"selector": {
"type": "None",
"alias": {
"commentStart": 0,
"end": 0,
"name": "fan",
"start": 0,
"type": "Identifier"
}
},
"start": 0,
"type": "ImportStatement",
"type": "ImportStatement"
},
{
"commentStart": 0,
"end": 0,
"expression": {
"abs_path": false,
"commentStart": 0,
"end": 0,
"name": {
"commentStart": 0,
"end": 0,
"name": "fanHousing",
"start": 0,
"type": "Identifier"
},
"path": [],
"start": 0,
"type": "Name",
"type": "Name"
},
"preComments": [
"",
"",
"// Produce the model for each imported part"
],
"start": 0,
"type": "ExpressionStatement",
"type": "ExpressionStatement"
},
{
"commentStart": 0,
"end": 0,
"expression": {
"abs_path": false,
"commentStart": 0,
"end": 0,
"name": {
"commentStart": 0,
"end": 0,
"name": "motor",
"start": 0,
"type": "Identifier"
},
"path": [],
"start": 0,
"type": "Name",
"type": "Name"
},
"start": 0,
"type": "ExpressionStatement",
"type": "ExpressionStatement"
},
{
"commentStart": 0,
"end": 0,
"expression": {
"abs_path": false,
"commentStart": 0,
"end": 0,
"name": {
"commentStart": 0,
"end": 0,
"name": "fan",
"start": 0,
"type": "Identifier"
},
"path": [],
"start": 0,
"type": "Name",
"type": "Name"
},
"start": 0,
"type": "ExpressionStatement",
"type": "ExpressionStatement"
}
],
"commentStart": 0,
"end": 0,
"innerAttrs": [
{
"commentStart": 0,
"end": 0,
"name": {
"commentStart": 0,
"end": 0,
"name": "settings",
"start": 0,
"type": "Identifier"
},
"preComments": [
"// PC Fan",
"// A small axial fan, used to push or draw airflow over components to remove excess heat",
"",
"",
"// Set units"
],
"properties": [
{
"commentStart": 0,
"end": 0,
"key": {
"commentStart": 0,
"end": 0,
"name": "defaultLengthUnit",
"start": 0,
"type": "Identifier"
},
"start": 0,
"type": "ObjectProperty",
"value": {
"abs_path": false,
"commentStart": 0,
"end": 0,
"name": {
"commentStart": 0,
"end": 0,
"name": "mm",
"start": 0,
"type": "Identifier"
},
"path": [],
"start": 0,
"type": "Name",
"type": "Name"
}
}
],
"start": 0,
"type": "Annotation"
}
],
"nonCodeMeta": {
"nonCodeNodes": {},
"startNodes": [
{
"commentStart": 0,
"end": 0,
"start": 0,
"type": "NonCodeNode",
"value": {
"type": "newLine"
}
}
]
},
"start": 0
}
}

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,18 @@
---
source: kcl-lib/src/simulation_tests.rs
description: Variables in memory after executing axial-fan.kcl
---
{
"fan": {
"type": "Module",
"value": 7
},
"fanHousing": {
"type": "Module",
"value": 5
},
"motor": {
"type": "Module",
"value": 6
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 105 KiB

View File

@ -0,0 +1,544 @@
---
source: kcl-lib/src/simulation_tests.rs
description: Artifact commands bottle.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": "set_scene_units",
"unit": "mm"
}
},
{
"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": "start_path"
}
},
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "move_path_pen",
"path": "[uuid]",
"to": {
"x": -62.5,
"y": 0.0,
"z": 0.0
}
}
},
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "sketch_mode_disable"
}
},
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "extend_path",
"path": "[uuid]",
"segment": {
"type": "line",
"end": {
"x": 0.0,
"y": 26.6667,
"z": 0.0
},
"relative": true
}
}
},
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "extend_path",
"path": "[uuid]",
"segment": {
"type": "arc_to",
"interior": {
"x": 0.0,
"y": 40.0,
"z": 0.0
},
"end": {
"x": 62.5,
"y": 26.6667,
"z": 0.0
},
"relative": false
}
}
},
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "extend_path",
"path": "[uuid]",
"segment": {
"type": "line",
"end": {
"x": 62.5,
"y": 0.0,
"z": 0.0
},
"relative": false
}
}
},
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "entity_mirror",
"ids": [
"[uuid]"
],
"axis": {
"x": 1.0,
"y": 0.0,
"z": 0.0
},
"point": {
"x": 0.0,
"y": 0.0,
"z": 0.0
}
}
},
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "entity_get_all_child_uuids",
"entity_id": "[uuid]"
}
},
{
"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": 202.0,
"faces": null,
"opposite": "None"
}
},
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "sketch_mode_disable"
}
},
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "object_bring_to_front",
"object_id": "[uuid]"
}
},
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_extrusion_face_info",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_opposite_edge",
"object_id": "[uuid]",
"edge_id": "[uuid]",
"face_id": "[uuid]"
}
},
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_next_adjacent_edge",
"object_id": "[uuid]",
"edge_id": "[uuid]",
"face_id": "[uuid]"
}
},
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_opposite_edge",
"object_id": "[uuid]",
"edge_id": "[uuid]",
"face_id": "[uuid]"
}
},
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_next_adjacent_edge",
"object_id": "[uuid]",
"edge_id": "[uuid]",
"face_id": "[uuid]"
}
},
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_opposite_edge",
"object_id": "[uuid]",
"edge_id": "[uuid]",
"face_id": "[uuid]"
}
},
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_next_adjacent_edge",
"object_id": "[uuid]",
"edge_id": "[uuid]",
"face_id": "[uuid]"
}
},
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_opposite_edge",
"object_id": "[uuid]",
"edge_id": "[uuid]",
"face_id": "[uuid]"
}
},
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_next_adjacent_edge",
"object_id": "[uuid]",
"edge_id": "[uuid]",
"face_id": "[uuid]"
}
},
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_opposite_edge",
"object_id": "[uuid]",
"edge_id": "[uuid]",
"face_id": "[uuid]"
}
},
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_next_adjacent_edge",
"object_id": "[uuid]",
"edge_id": "[uuid]",
"face_id": "[uuid]"
}
},
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "enable_sketch_mode",
"entity_id": "[uuid]",
"ortho": false,
"animated": false,
"adjust_camera": false,
"planar_normal": null
}
},
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "start_path"
}
},
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "move_path_pen",
"path": "[uuid]",
"to": {
"x": 22.5,
"y": 0.0,
"z": 0.0
}
}
},
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "sketch_mode_disable"
}
},
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "extend_path",
"path": "[uuid]",
"segment": {
"type": "arc",
"center": {
"x": 0.0,
"y": 0.0
},
"radius": 22.5,
"start": {
"unit": "degrees",
"value": 0.0
},
"end": {
"unit": "degrees",
"value": 360.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": null
}
},
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "extrude",
"target": "[uuid]",
"distance": 18.0,
"faces": null,
"opposite": "None"
}
},
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "sketch_mode_disable"
}
},
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "object_bring_to_front",
"object_id": "[uuid]"
}
},
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_extrusion_face_info",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_opposite_edge",
"object_id": "[uuid]",
"edge_id": "[uuid]",
"face_id": "[uuid]"
}
},
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_next_adjacent_edge",
"object_id": "[uuid]",
"edge_id": "[uuid]",
"face_id": "[uuid]"
}
},
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_shell_face",
"object_id": "[uuid]",
"face_ids": [
"[uuid]"
],
"shell_thickness": 4.0,
"hollow": false
}
},
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "object_set_material_params_pbr",
"object_id": "[uuid]",
"color": {
"r": 0.0,
"g": 0.47058824,
"b": 0.7607843,
"a": 100.0
},
"metalness": 0.0,
"roughness": 0.0,
"ambient_occlusion": 0.0
}
},
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "set_scene_units",
"unit": "mm"
}
},
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "set_scene_units",
"unit": "mm"
}
},
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "set_scene_units",
"unit": "mm"
}
}
]

View File

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

View File

@ -0,0 +1,44 @@
```mermaid
flowchart LR
subgraph path2 [Path]
2["Path<br>[337, 378, 0]"]
3["Segment<br>[384, 415, 0]"]
4["Segment<br>[421, 528, 0]"]
5["Segment<br>[534, 556, 0]"]
6["Segment<br>[586, 593, 0]"]
7[Solid2d]
end
subgraph path10 [Path]
10["Path<br>[750, 800, 0]"]
11["Segment<br>[750, 800, 0]"]
12[Solid2d]
end
1["Plane<br>[314, 331, 0]"]
8["Sweep Extrusion<br>[599, 641, 0]"]
9["Plane<br>[750, 800, 0]"]
13["Sweep Extrusion<br>[806, 833, 0]"]
14[Wall]
15["Cap End"]
16["SweepEdge Opposite"]
17["SweepEdge Adjacent"]
18["StartSketchOnFace<br>[707, 744, 0]"]
1 --- 2
2 --- 3
2 --- 4
2 --- 5
2 --- 6
2 ---- 8
2 --- 7
9 --- 10
10 --- 11
10 ---- 13
10 --- 12
11 --- 14
11 --- 16
11 --- 17
13 --- 14
13 --- 15
13 --- 16
13 --- 17
9 <--x 18
```

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,152 @@
---
source: kcl-lib/src/simulation_tests.rs
description: Operations executed bottle.kcl
---
[
{
"labeledArgs": {
"planeOrSolid": {
"value": {
"type": "Plane",
"artifact_id": "[uuid]"
},
"sourceRange": []
}
},
"name": "startSketchOn",
"sourceRange": [],
"type": "StdLibCall",
"unlabeledArg": null
},
{
"labeledArgs": {
"length": {
"value": {
"type": "Number",
"value": 202.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": {
"face": {
"value": {
"type": "String",
"value": "end"
},
"sourceRange": []
}
},
"name": "startSketchOn",
"sourceRange": [],
"type": "StdLibCall",
"unlabeledArg": {
"value": {
"type": "Solid",
"value": {
"artifactId": "[uuid]"
}
},
"sourceRange": []
}
},
{
"labeledArgs": {
"length": {
"value": {
"type": "Number",
"value": 18.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": {
"faces": {
"value": {
"type": "Array",
"value": [
{
"type": "String",
"value": "end"
}
]
},
"sourceRange": []
},
"thickness": {
"value": {
"type": "Number",
"value": 4.0,
"ty": {
"type": "Default",
"len": {
"type": "Mm"
},
"angle": {
"type": "Degrees"
}
}
},
"sourceRange": []
}
},
"name": "shell",
"sourceRange": [],
"type": "StdLibCall",
"unlabeledArg": {
"value": {
"type": "Solid",
"value": {
"artifactId": "[uuid]"
}
},
"sourceRange": []
}
}
]

View File

@ -0,0 +1,817 @@
---
source: kcl-lib/src/simulation_tests.rs
description: Variables in memory after executing bottle.kcl
---
{
"bottleBody": {
"type": "Solid",
"value": {
"type": "Solid",
"id": "[uuid]",
"artifactId": "[uuid]",
"value": [],
"sketch": {
"type": "Sketch",
"id": "[uuid]",
"paths": [
{
"__geoMeta": {
"id": "[uuid]",
"sourceRange": []
},
"from": [
-62.5,
0.0
],
"tag": null,
"to": [
-62.5,
26.6667
],
"type": "ToPoint",
"units": {
"type": "Mm"
}
},
{
"__geoMeta": {
"id": "[uuid]",
"sourceRange": []
},
"from": [
-62.5,
26.6667
],
"p1": [
-62.5,
26.666666666666668
],
"p2": [
0.0,
40.0
],
"p3": [
62.5,
26.666666666666668
],
"tag": null,
"to": [
62.5,
26.6667
],
"type": "ArcThreePoint",
"units": {
"type": "Mm"
}
},
{
"__geoMeta": {
"id": "[uuid]",
"sourceRange": []
},
"from": [
62.5,
26.6667
],
"tag": null,
"to": [
62.5,
0.0
],
"type": "ToPoint",
"units": {
"type": "Mm"
}
},
{
"__geoMeta": {
"id": "[uuid]",
"sourceRange": []
},
"from": [
62.5,
0.0
],
"tag": null,
"to": [
-62.5,
0.0
],
"type": "ToPoint",
"units": {
"type": "Mm"
}
}
],
"on": {
"type": "plane",
"id": "[uuid]",
"artifactId": "[uuid]",
"value": "XY",
"origin": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"units": {
"type": "Mm"
}
},
"xAxis": {
"x": 1.0,
"y": 0.0,
"z": 0.0,
"units": {
"type": "Mm"
}
},
"yAxis": {
"x": 0.0,
"y": 1.0,
"z": 0.0,
"units": {
"type": "Mm"
}
},
"zAxis": {
"x": 0.0,
"y": 0.0,
"z": 1.0,
"units": {
"type": "Mm"
}
},
"units": {
"type": "Mm"
}
},
"start": {
"from": [
-62.5,
0.0
],
"to": [
-62.5,
0.0
],
"units": {
"type": "Mm"
},
"tag": null,
"__geoMeta": {
"id": "[uuid]",
"sourceRange": []
}
},
"artifactId": "[uuid]",
"originalId": "[uuid]",
"units": {
"type": "Mm"
}
},
"height": 202.0,
"startCapId": "[uuid]",
"endCapId": "[uuid]",
"units": {
"type": "Mm"
}
}
},
"bottleHeight": {
"type": "Number",
"value": 220.0,
"ty": {
"type": "Default",
"len": {
"type": "Mm"
},
"angle": {
"type": "Degrees"
}
}
},
"bottleLength": {
"type": "Number",
"value": 125.0,
"ty": {
"type": "Default",
"len": {
"type": "Mm"
},
"angle": {
"type": "Degrees"
}
}
},
"bottleNeck": {
"type": "Solid",
"value": {
"type": "Solid",
"id": "[uuid]",
"artifactId": "[uuid]",
"value": [
{
"faceId": "[uuid]",
"id": "[uuid]",
"sourceRange": [],
"tag": null,
"type": "extrudeArc"
}
],
"sketch": {
"type": "Sketch",
"id": "[uuid]",
"paths": [
{
"__geoMeta": {
"id": "[uuid]",
"sourceRange": []
},
"ccw": true,
"center": [
0.0,
0.0
],
"from": [
22.5,
0.0
],
"radius": 22.5,
"tag": null,
"to": [
22.5,
0.0
],
"type": "Circle",
"units": {
"type": "Mm"
}
}
],
"on": {
"type": "face",
"id": "[uuid]",
"artifactId": "[uuid]",
"value": "end",
"xAxis": {
"x": 1.0,
"y": 0.0,
"z": 0.0,
"units": {
"type": "Mm"
}
},
"yAxis": {
"x": 0.0,
"y": 1.0,
"z": 0.0,
"units": {
"type": "Mm"
}
},
"zAxis": {
"x": 0.0,
"y": 0.0,
"z": 1.0,
"units": {
"type": "Mm"
}
},
"solid": {
"type": "Solid",
"id": "[uuid]",
"artifactId": "[uuid]",
"value": [],
"sketch": {
"type": "Sketch",
"id": "[uuid]",
"paths": [
{
"__geoMeta": {
"id": "[uuid]",
"sourceRange": []
},
"from": [
-62.5,
0.0
],
"tag": null,
"to": [
-62.5,
26.6667
],
"type": "ToPoint",
"units": {
"type": "Mm"
}
},
{
"__geoMeta": {
"id": "[uuid]",
"sourceRange": []
},
"from": [
-62.5,
26.6667
],
"p1": [
-62.5,
26.666666666666668
],
"p2": [
0.0,
40.0
],
"p3": [
62.5,
26.666666666666668
],
"tag": null,
"to": [
62.5,
26.6667
],
"type": "ArcThreePoint",
"units": {
"type": "Mm"
}
},
{
"__geoMeta": {
"id": "[uuid]",
"sourceRange": []
},
"from": [
62.5,
26.6667
],
"tag": null,
"to": [
62.5,
0.0
],
"type": "ToPoint",
"units": {
"type": "Mm"
}
},
{
"__geoMeta": {
"id": "[uuid]",
"sourceRange": []
},
"from": [
62.5,
0.0
],
"tag": null,
"to": [
-62.5,
0.0
],
"type": "ToPoint",
"units": {
"type": "Mm"
}
}
],
"on": {
"type": "plane",
"id": "[uuid]",
"artifactId": "[uuid]",
"value": "XY",
"origin": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"units": {
"type": "Mm"
}
},
"xAxis": {
"x": 1.0,
"y": 0.0,
"z": 0.0,
"units": {
"type": "Mm"
}
},
"yAxis": {
"x": 0.0,
"y": 1.0,
"z": 0.0,
"units": {
"type": "Mm"
}
},
"zAxis": {
"x": 0.0,
"y": 0.0,
"z": 1.0,
"units": {
"type": "Mm"
}
},
"units": {
"type": "Mm"
}
},
"start": {
"from": [
-62.5,
0.0
],
"to": [
-62.5,
0.0
],
"units": {
"type": "Mm"
},
"tag": null,
"__geoMeta": {
"id": "[uuid]",
"sourceRange": []
}
},
"artifactId": "[uuid]",
"originalId": "[uuid]",
"units": {
"type": "Mm"
}
},
"height": 202.0,
"startCapId": "[uuid]",
"endCapId": "[uuid]",
"units": {
"type": "Mm"
}
},
"units": {
"type": "Mm"
}
},
"start": {
"from": [
22.5,
0.0
],
"to": [
22.5,
0.0
],
"units": {
"type": "Mm"
},
"tag": null,
"__geoMeta": {
"id": "[uuid]",
"sourceRange": []
}
},
"artifactId": "[uuid]",
"originalId": "[uuid]",
"units": {
"type": "Mm"
}
},
"height": 18.0,
"startCapId": null,
"endCapId": "[uuid]",
"units": {
"type": "Mm"
}
}
},
"bottleShell": {
"type": "Solid",
"value": {
"type": "Solid",
"id": "[uuid]",
"artifactId": "[uuid]",
"value": [
{
"faceId": "[uuid]",
"id": "[uuid]",
"sourceRange": [],
"tag": null,
"type": "extrudeArc"
}
],
"sketch": {
"type": "Sketch",
"id": "[uuid]",
"paths": [
{
"__geoMeta": {
"id": "[uuid]",
"sourceRange": []
},
"ccw": true,
"center": [
0.0,
0.0
],
"from": [
22.5,
0.0
],
"radius": 22.5,
"tag": null,
"to": [
22.5,
0.0
],
"type": "Circle",
"units": {
"type": "Mm"
}
}
],
"on": {
"type": "face",
"id": "[uuid]",
"artifactId": "[uuid]",
"value": "end",
"xAxis": {
"x": 1.0,
"y": 0.0,
"z": 0.0,
"units": {
"type": "Mm"
}
},
"yAxis": {
"x": 0.0,
"y": 1.0,
"z": 0.0,
"units": {
"type": "Mm"
}
},
"zAxis": {
"x": 0.0,
"y": 0.0,
"z": 1.0,
"units": {
"type": "Mm"
}
},
"solid": {
"type": "Solid",
"id": "[uuid]",
"artifactId": "[uuid]",
"value": [],
"sketch": {
"type": "Sketch",
"id": "[uuid]",
"paths": [
{
"__geoMeta": {
"id": "[uuid]",
"sourceRange": []
},
"from": [
-62.5,
0.0
],
"tag": null,
"to": [
-62.5,
26.6667
],
"type": "ToPoint",
"units": {
"type": "Mm"
}
},
{
"__geoMeta": {
"id": "[uuid]",
"sourceRange": []
},
"from": [
-62.5,
26.6667
],
"p1": [
-62.5,
26.666666666666668
],
"p2": [
0.0,
40.0
],
"p3": [
62.5,
26.666666666666668
],
"tag": null,
"to": [
62.5,
26.6667
],
"type": "ArcThreePoint",
"units": {
"type": "Mm"
}
},
{
"__geoMeta": {
"id": "[uuid]",
"sourceRange": []
},
"from": [
62.5,
26.6667
],
"tag": null,
"to": [
62.5,
0.0
],
"type": "ToPoint",
"units": {
"type": "Mm"
}
},
{
"__geoMeta": {
"id": "[uuid]",
"sourceRange": []
},
"from": [
62.5,
0.0
],
"tag": null,
"to": [
-62.5,
0.0
],
"type": "ToPoint",
"units": {
"type": "Mm"
}
}
],
"on": {
"type": "plane",
"id": "[uuid]",
"artifactId": "[uuid]",
"value": "XY",
"origin": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"units": {
"type": "Mm"
}
},
"xAxis": {
"x": 1.0,
"y": 0.0,
"z": 0.0,
"units": {
"type": "Mm"
}
},
"yAxis": {
"x": 0.0,
"y": 1.0,
"z": 0.0,
"units": {
"type": "Mm"
}
},
"zAxis": {
"x": 0.0,
"y": 0.0,
"z": 1.0,
"units": {
"type": "Mm"
}
},
"units": {
"type": "Mm"
}
},
"start": {
"from": [
-62.5,
0.0
],
"to": [
-62.5,
0.0
],
"units": {
"type": "Mm"
},
"tag": null,
"__geoMeta": {
"id": "[uuid]",
"sourceRange": []
}
},
"artifactId": "[uuid]",
"originalId": "[uuid]",
"units": {
"type": "Mm"
}
},
"height": 202.0,
"startCapId": "[uuid]",
"endCapId": "[uuid]",
"units": {
"type": "Mm"
}
},
"units": {
"type": "Mm"
}
},
"start": {
"from": [
22.5,
0.0
],
"to": [
22.5,
0.0
],
"units": {
"type": "Mm"
},
"tag": null,
"__geoMeta": {
"id": "[uuid]",
"sourceRange": []
}
},
"artifactId": "[uuid]",
"originalId": "[uuid]",
"units": {
"type": "Mm"
}
},
"height": 18.0,
"startCapId": null,
"endCapId": "[uuid]",
"units": {
"type": "Mm"
}
}
},
"bottleWidth": {
"type": "Number",
"value": 80.0,
"ty": {
"type": "Default",
"len": {
"type": "Mm"
},
"angle": {
"type": "Degrees"
}
}
},
"neckDepth": {
"type": "Number",
"value": 18.0,
"ty": {
"type": "Default",
"len": {
"type": "Mm"
},
"angle": {
"type": "Degrees"
}
}
},
"neckDiameter": {
"type": "Number",
"value": 45.0,
"ty": {
"type": "Default",
"len": {
"type": "Mm"
},
"angle": {
"type": "Degrees"
}
}
},
"wallThickness": {
"type": "Number",
"value": 4.0,
"ty": {
"type": "Default",
"len": {
"type": "Mm"
},
"angle": {
"type": "Degrees"
}
}
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 70 KiB