diff --git a/public/kcl-samples/i-beam/main.kcl b/public/kcl-samples/i-beam/main.kcl
index 053dc8d9c..4b21ff85b 100644
--- a/public/kcl-samples/i-beam/main.kcl
+++ b/public/kcl-samples/i-beam/main.kcl
@@ -1,21 +1,24 @@
// I-beam
-// A structural metal beam with an I shaped cross section. Often used in construction
+// A structural metal beam with an I shaped cross section. Often used in construction and architecture
// Set Units
@settings(defaultLengthUnit = in)
-//Define Beam Dimensions
-beamLength = 24
-beamWidth = 2.663
+// Define Beam Dimensions
+beamLength = 6*ft()
beamHeight = 4
-wallThickness = 0.293
+flangeWidth = 2.663
+flangeThickness = 0.293
+webThickness = 0.193
+rootRadius = 0.457
// Sketch a quadrant of the beam cross section, then mirror for symmetry across each axis. Extrude to the appropriate length
-sketch001 = startSketchOn('-XZ')
- |> startProfileAt([0, beamHeight/2], %)
- |> xLine(length = beamWidth/2)
- |> yLine(length = -wallThickness)
- |> xLine(endAbsolute = wallThickness/2)
+sketch001 = startSketchOn(-XZ)
+ |> startProfileAt([0, beamHeight / 2], %)
+ |> xLine(length = flangeWidth / 2)
+ |> yLine(length = -flangeThickness)
+ |> xLine(endAbsolute = webThickness / 2 + rootRadius)
+ |> tangentialArc({ radius = rootRadius, offset = 90 }, %)
|> yLine(endAbsolute = 0)
|> mirror2d({ axis = 'X' }, %)
|> mirror2d({ axis = 'Y' }, %)
diff --git a/public/kcl-samples/manifest.json b/public/kcl-samples/manifest.json
index f643e9119..d0fd11677 100644
--- a/public/kcl-samples/manifest.json
+++ b/public/kcl-samples/manifest.json
@@ -158,7 +158,7 @@
"pathFromProjectDirectoryToFirstFile": "i-beam/main.kcl",
"multipleFiles": false,
"title": "I-beam",
- "description": "A structural metal beam with an I shaped cross section. Often used in construction"
+ "description": "A structural metal beam with an I shaped cross section. Often used in construction and architecture"
},
{
"file": "main.kcl",
diff --git a/public/kcl-samples/screenshots/i-beam.png b/public/kcl-samples/screenshots/i-beam.png
index 23b205454..19411c20e 100644
Binary files a/public/kcl-samples/screenshots/i-beam.png and b/public/kcl-samples/screenshots/i-beam.png differ
diff --git a/rust/kcl-lib/tests/kcl_samples/i-beam/artifact_commands.snap b/rust/kcl-lib/tests/kcl_samples/i-beam/artifact_commands.snap
index 4007bce0b..3f41ea273 100644
--- a/rust/kcl-lib/tests/kcl_samples/i-beam/artifact_commands.snap
+++ b/rust/kcl-lib/tests/kcl_samples/i-beam/artifact_commands.snap
@@ -156,7 +156,7 @@ description: Artifact commands i-beam.kcl
"segment": {
"type": "line",
"end": {
- "x": 0.1465,
+ "x": 0.5535,
"y": 1.707,
"z": 0.0
},
@@ -164,6 +164,22 @@ description: Artifact commands i-beam.kcl
}
}
},
+ {
+ "cmdId": "[uuid]",
+ "range": [],
+ "command": {
+ "type": "extend_path",
+ "path": "[uuid]",
+ "segment": {
+ "type": "tangential_arc",
+ "radius": 0.457,
+ "offset": {
+ "unit": "degrees",
+ "value": 90.0
+ }
+ }
+ }
+ },
{
"cmdId": "[uuid]",
"range": [],
@@ -173,7 +189,7 @@ description: Artifact commands i-beam.kcl
"segment": {
"type": "line",
"end": {
- "x": 0.1465,
+ "x": 0.0965,
"y": 0.0,
"z": 0.0
},
@@ -243,7 +259,7 @@ description: Artifact commands i-beam.kcl
"command": {
"type": "extrude",
"target": "[uuid]",
- "distance": 24.0,
+ "distance": 72.00000000000001,
"faces": null
}
},
diff --git a/rust/kcl-lib/tests/kcl_samples/i-beam/artifact_graph_flowchart.snap.md b/rust/kcl-lib/tests/kcl_samples/i-beam/artifact_graph_flowchart.snap.md
index 13e16c3ad..2364b74d4 100644
--- a/rust/kcl-lib/tests/kcl_samples/i-beam/artifact_graph_flowchart.snap.md
+++ b/rust/kcl-lib/tests/kcl_samples/i-beam/artifact_graph_flowchart.snap.md
@@ -1,18 +1,20 @@
```mermaid
flowchart LR
subgraph path2 [Path]
- 2["Path
[405, 441, 0]"]
- 3["Segment
[447, 474, 0]"]
- 4["Segment
[480, 510, 0]"]
- 5["Segment
[516, 552, 0]"]
- 6["Segment
[558, 580, 0]"]
+ 2["Path
[469, 507, 0]"]
+ 3["Segment
[513, 544, 0]"]
+ 4["Segment
[550, 582, 0]"]
+ 5["Segment
[588, 638, 0]"]
+ 6["Segment
[644, 698, 0]"]
+ 7["Segment
[704, 726, 0]"]
end
- 1["Plane
[379, 399, 0]"]
- 7["Sweep Extrusion
[652, 680, 0]"]
+ 1["Plane
[445, 463, 0]"]
+ 8["Sweep Extrusion
[798, 826, 0]"]
1 --- 2
2 --- 3
2 --- 4
2 --- 5
2 --- 6
- 2 ---- 7
+ 2 --- 7
+ 2 ---- 8
```
diff --git a/rust/kcl-lib/tests/kcl_samples/i-beam/ast.snap b/rust/kcl-lib/tests/kcl_samples/i-beam/ast.snap
index c64f7add7..a6849c691 100644
--- a/rust/kcl-lib/tests/kcl_samples/i-beam/ast.snap
+++ b/rust/kcl-lib/tests/kcl_samples/i-beam/ast.snap
@@ -6,28 +6,59 @@ description: Result of parsing i-beam.kcl
"Ok": {
"body": [
{
- "commentStart": 143,
+ "commentStart": 160,
"declaration": {
- "commentStart": 170,
+ "commentStart": 188,
"end": 0,
"id": {
- "commentStart": 170,
+ "commentStart": 188,
"end": 0,
"name": "beamLength",
"start": 0,
"type": "Identifier"
},
"init": {
- "commentStart": 183,
+ "commentStart": 201,
"end": 0,
- "raw": "24",
+ "left": {
+ "commentStart": 201,
+ "end": 0,
+ "raw": "6",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 6.0,
+ "suffix": "None"
+ }
+ },
+ "operator": "*",
+ "right": {
+ "arguments": [],
+ "callee": {
+ "abs_path": false,
+ "commentStart": 203,
+ "end": 0,
+ "name": {
+ "commentStart": 203,
+ "end": 0,
+ "name": "ft",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name"
+ },
+ "commentStart": 203,
+ "end": 0,
+ "start": 0,
+ "type": "CallExpression",
+ "type": "CallExpression"
+ },
"start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 24.0,
- "suffix": "None"
- }
+ "type": "BinaryExpression",
+ "type": "BinaryExpression"
},
"start": 0,
"type": "VariableDeclarator"
@@ -42,52 +73,19 @@ description: Result of parsing i-beam.kcl
"type": "VariableDeclaration"
},
{
- "commentStart": 186,
+ "commentStart": 208,
"declaration": {
- "commentStart": 186,
+ "commentStart": 208,
"end": 0,
"id": {
- "commentStart": 186,
- "end": 0,
- "name": "beamWidth",
- "start": 0,
- "type": "Identifier"
- },
- "init": {
- "commentStart": 198,
- "end": 0,
- "raw": "2.663",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 2.663,
- "suffix": "None"
- }
- },
- "start": 0,
- "type": "VariableDeclarator"
- },
- "end": 0,
- "kind": "const",
- "start": 0,
- "type": "VariableDeclaration",
- "type": "VariableDeclaration"
- },
- {
- "commentStart": 204,
- "declaration": {
- "commentStart": 204,
- "end": 0,
- "id": {
- "commentStart": 204,
+ "commentStart": 208,
"end": 0,
"name": "beamHeight",
"start": 0,
"type": "Identifier"
},
"init": {
- "commentStart": 217,
+ "commentStart": 221,
"end": 0,
"raw": "4",
"start": 0,
@@ -108,19 +106,52 @@ description: Result of parsing i-beam.kcl
"type": "VariableDeclaration"
},
{
- "commentStart": 219,
+ "commentStart": 223,
"declaration": {
- "commentStart": 219,
+ "commentStart": 223,
"end": 0,
"id": {
- "commentStart": 219,
+ "commentStart": 223,
"end": 0,
- "name": "wallThickness",
+ "name": "flangeWidth",
"start": 0,
"type": "Identifier"
},
"init": {
- "commentStart": 235,
+ "commentStart": 237,
+ "end": 0,
+ "raw": "2.663",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 2.663,
+ "suffix": "None"
+ }
+ },
+ "start": 0,
+ "type": "VariableDeclarator"
+ },
+ "end": 0,
+ "kind": "const",
+ "start": 0,
+ "type": "VariableDeclaration",
+ "type": "VariableDeclaration"
+ },
+ {
+ "commentStart": 243,
+ "declaration": {
+ "commentStart": 243,
+ "end": 0,
+ "id": {
+ "commentStart": 243,
+ "end": 0,
+ "name": "flangeThickness",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "init": {
+ "commentStart": 261,
"end": 0,
"raw": "0.293",
"start": 0,
@@ -141,12 +172,78 @@ description: Result of parsing i-beam.kcl
"type": "VariableDeclaration"
},
{
- "commentStart": 240,
+ "commentStart": 267,
"declaration": {
- "commentStart": 367,
+ "commentStart": 267,
"end": 0,
"id": {
- "commentStart": 367,
+ "commentStart": 267,
+ "end": 0,
+ "name": "webThickness",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "init": {
+ "commentStart": 282,
+ "end": 0,
+ "raw": "0.193",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 0.193,
+ "suffix": "None"
+ }
+ },
+ "start": 0,
+ "type": "VariableDeclarator"
+ },
+ "end": 0,
+ "kind": "const",
+ "start": 0,
+ "type": "VariableDeclaration",
+ "type": "VariableDeclaration"
+ },
+ {
+ "commentStart": 288,
+ "declaration": {
+ "commentStart": 288,
+ "end": 0,
+ "id": {
+ "commentStart": 288,
+ "end": 0,
+ "name": "rootRadius",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "init": {
+ "commentStart": 301,
+ "end": 0,
+ "raw": "0.457",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 0.457,
+ "suffix": "None"
+ }
+ },
+ "start": 0,
+ "type": "VariableDeclarator"
+ },
+ "end": 0,
+ "kind": "const",
+ "start": 0,
+ "type": "VariableDeclaration",
+ "type": "VariableDeclaration"
+ },
+ {
+ "commentStart": 306,
+ "declaration": {
+ "commentStart": 433,
+ "end": 0,
+ "id": {
+ "commentStart": 433,
"end": 0,
"name": "sketch001",
"start": 0,
@@ -157,21 +254,36 @@ description: Result of parsing i-beam.kcl
{
"arguments": [
{
- "commentStart": 393,
+ "argument": {
+ "abs_path": false,
+ "commentStart": 460,
+ "end": 0,
+ "name": {
+ "commentStart": 460,
+ "end": 0,
+ "name": "XZ",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ },
+ "commentStart": 459,
"end": 0,
- "raw": "'-XZ'",
+ "operator": "-",
"start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": "-XZ"
+ "type": "UnaryExpression",
+ "type": "UnaryExpression"
}
],
"callee": {
"abs_path": false,
- "commentStart": 379,
+ "commentStart": 445,
"end": 0,
"name": {
- "commentStart": 379,
+ "commentStart": 445,
"end": 0,
"name": "startSketchOn",
"start": 0,
@@ -181,7 +293,7 @@ description: Result of parsing i-beam.kcl
"start": 0,
"type": "Name"
},
- "commentStart": 379,
+ "commentStart": 445,
"end": 0,
"start": 0,
"type": "CallExpression",
@@ -190,10 +302,10 @@ description: Result of parsing i-beam.kcl
{
"arguments": [
{
- "commentStart": 420,
+ "commentStart": 484,
"elements": [
{
- "commentStart": 421,
+ "commentStart": 485,
"end": 0,
"raw": "0",
"start": 0,
@@ -205,14 +317,14 @@ description: Result of parsing i-beam.kcl
}
},
{
- "commentStart": 424,
+ "commentStart": 488,
"end": 0,
"left": {
"abs_path": false,
- "commentStart": 424,
+ "commentStart": 488,
"end": 0,
"name": {
- "commentStart": 424,
+ "commentStart": 488,
"end": 0,
"name": "beamHeight",
"start": 0,
@@ -225,7 +337,7 @@ description: Result of parsing i-beam.kcl
},
"operator": "/",
"right": {
- "commentStart": 435,
+ "commentStart": 501,
"end": 0,
"raw": "2",
"start": 0,
@@ -247,7 +359,7 @@ description: Result of parsing i-beam.kcl
"type": "ArrayExpression"
},
{
- "commentStart": 439,
+ "commentStart": 505,
"end": 0,
"start": 0,
"type": "PipeSubstitution",
@@ -256,10 +368,10 @@ description: Result of parsing i-beam.kcl
],
"callee": {
"abs_path": false,
- "commentStart": 405,
+ "commentStart": 469,
"end": 0,
"name": {
- "commentStart": 405,
+ "commentStart": 469,
"end": 0,
"name": "startProfileAt",
"start": 0,
@@ -269,7 +381,7 @@ description: Result of parsing i-beam.kcl
"start": 0,
"type": "Name"
},
- "commentStart": 405,
+ "commentStart": 469,
"end": 0,
"start": 0,
"type": "CallExpression",
@@ -280,23 +392,23 @@ description: Result of parsing i-beam.kcl
{
"type": "LabeledArg",
"label": {
- "commentStart": 453,
+ "commentStart": 519,
"end": 0,
"name": "length",
"start": 0,
"type": "Identifier"
},
"arg": {
- "commentStart": 462,
+ "commentStart": 528,
"end": 0,
"left": {
"abs_path": false,
- "commentStart": 462,
+ "commentStart": 528,
"end": 0,
"name": {
- "commentStart": 462,
+ "commentStart": 528,
"end": 0,
- "name": "beamWidth",
+ "name": "flangeWidth",
"start": 0,
"type": "Identifier"
},
@@ -307,7 +419,7 @@ description: Result of parsing i-beam.kcl
},
"operator": "/",
"right": {
- "commentStart": 472,
+ "commentStart": 542,
"end": 0,
"raw": "2",
"start": 0,
@@ -326,10 +438,10 @@ description: Result of parsing i-beam.kcl
],
"callee": {
"abs_path": false,
- "commentStart": 447,
+ "commentStart": 513,
"end": 0,
"name": {
- "commentStart": 447,
+ "commentStart": 513,
"end": 0,
"name": "xLine",
"start": 0,
@@ -339,7 +451,7 @@ description: Result of parsing i-beam.kcl
"start": 0,
"type": "Name"
},
- "commentStart": 447,
+ "commentStart": 513,
"end": 0,
"start": 0,
"type": "CallExpressionKw",
@@ -351,7 +463,7 @@ description: Result of parsing i-beam.kcl
{
"type": "LabeledArg",
"label": {
- "commentStart": 486,
+ "commentStart": 556,
"end": 0,
"name": "length",
"start": 0,
@@ -360,12 +472,12 @@ description: Result of parsing i-beam.kcl
"arg": {
"argument": {
"abs_path": false,
- "commentStart": 496,
+ "commentStart": 566,
"end": 0,
"name": {
- "commentStart": 496,
+ "commentStart": 566,
"end": 0,
- "name": "wallThickness",
+ "name": "flangeThickness",
"start": 0,
"type": "Identifier"
},
@@ -374,7 +486,7 @@ description: Result of parsing i-beam.kcl
"type": "Name",
"type": "Name"
},
- "commentStart": 495,
+ "commentStart": 565,
"end": 0,
"operator": "-",
"start": 0,
@@ -385,10 +497,10 @@ description: Result of parsing i-beam.kcl
],
"callee": {
"abs_path": false,
- "commentStart": 480,
+ "commentStart": 550,
"end": 0,
"name": {
- "commentStart": 480,
+ "commentStart": 550,
"end": 0,
"name": "yLine",
"start": 0,
@@ -398,7 +510,7 @@ description: Result of parsing i-beam.kcl
"start": 0,
"type": "Name"
},
- "commentStart": 480,
+ "commentStart": 550,
"end": 0,
"start": 0,
"type": "CallExpressionKw",
@@ -410,23 +522,60 @@ description: Result of parsing i-beam.kcl
{
"type": "LabeledArg",
"label": {
- "commentStart": 522,
+ "commentStart": 594,
"end": 0,
"name": "endAbsolute",
"start": 0,
"type": "Identifier"
},
"arg": {
- "commentStart": 536,
+ "commentStart": 608,
"end": 0,
"left": {
+ "commentStart": 608,
+ "end": 0,
+ "left": {
+ "abs_path": false,
+ "commentStart": 608,
+ "end": 0,
+ "name": {
+ "commentStart": 608,
+ "end": 0,
+ "name": "webThickness",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ },
+ "operator": "/",
+ "right": {
+ "commentStart": 623,
+ "end": 0,
+ "raw": "2",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 2.0,
+ "suffix": "None"
+ }
+ },
+ "start": 0,
+ "type": "BinaryExpression",
+ "type": "BinaryExpression"
+ },
+ "operator": "+",
+ "right": {
"abs_path": false,
- "commentStart": 536,
+ "commentStart": 627,
"end": 0,
"name": {
- "commentStart": 536,
+ "commentStart": 627,
"end": 0,
- "name": "wallThickness",
+ "name": "rootRadius",
"start": 0,
"type": "Identifier"
},
@@ -435,19 +584,6 @@ description: Result of parsing i-beam.kcl
"type": "Name",
"type": "Name"
},
- "operator": "/",
- "right": {
- "commentStart": 550,
- "end": 0,
- "raw": "2",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 2.0,
- "suffix": "None"
- }
- },
"start": 0,
"type": "BinaryExpression",
"type": "BinaryExpression"
@@ -456,10 +592,10 @@ description: Result of parsing i-beam.kcl
],
"callee": {
"abs_path": false,
- "commentStart": 516,
+ "commentStart": 588,
"end": 0,
"name": {
- "commentStart": 516,
+ "commentStart": 588,
"end": 0,
"name": "xLine",
"start": 0,
@@ -469,26 +605,120 @@ description: Result of parsing i-beam.kcl
"start": 0,
"type": "Name"
},
- "commentStart": 516,
+ "commentStart": 588,
"end": 0,
"start": 0,
"type": "CallExpressionKw",
"type": "CallExpressionKw",
"unlabeled": null
},
+ {
+ "arguments": [
+ {
+ "commentStart": 658,
+ "end": 0,
+ "properties": [
+ {
+ "commentStart": 660,
+ "end": 0,
+ "key": {
+ "commentStart": 660,
+ "end": 0,
+ "name": "radius",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "start": 0,
+ "type": "ObjectProperty",
+ "value": {
+ "abs_path": false,
+ "commentStart": 669,
+ "end": 0,
+ "name": {
+ "commentStart": 669,
+ "end": 0,
+ "name": "rootRadius",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ }
+ },
+ {
+ "commentStart": 681,
+ "end": 0,
+ "key": {
+ "commentStart": 681,
+ "end": 0,
+ "name": "offset",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "start": 0,
+ "type": "ObjectProperty",
+ "value": {
+ "commentStart": 690,
+ "end": 0,
+ "raw": "90",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 90.0,
+ "suffix": "None"
+ }
+ }
+ }
+ ],
+ "start": 0,
+ "type": "ObjectExpression",
+ "type": "ObjectExpression"
+ },
+ {
+ "commentStart": 696,
+ "end": 0,
+ "start": 0,
+ "type": "PipeSubstitution",
+ "type": "PipeSubstitution"
+ }
+ ],
+ "callee": {
+ "abs_path": false,
+ "commentStart": 644,
+ "end": 0,
+ "name": {
+ "commentStart": 644,
+ "end": 0,
+ "name": "tangentialArc",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name"
+ },
+ "commentStart": 644,
+ "end": 0,
+ "start": 0,
+ "type": "CallExpression",
+ "type": "CallExpression"
+ },
{
"arguments": [
{
"type": "LabeledArg",
"label": {
- "commentStart": 564,
+ "commentStart": 710,
"end": 0,
"name": "endAbsolute",
"start": 0,
"type": "Identifier"
},
"arg": {
- "commentStart": 578,
+ "commentStart": 724,
"end": 0,
"raw": "0",
"start": 0,
@@ -503,10 +733,10 @@ description: Result of parsing i-beam.kcl
],
"callee": {
"abs_path": false,
- "commentStart": 558,
+ "commentStart": 704,
"end": 0,
"name": {
- "commentStart": 558,
+ "commentStart": 704,
"end": 0,
"name": "yLine",
"start": 0,
@@ -516,7 +746,7 @@ description: Result of parsing i-beam.kcl
"start": 0,
"type": "Name"
},
- "commentStart": 558,
+ "commentStart": 704,
"end": 0,
"start": 0,
"type": "CallExpressionKw",
@@ -526,14 +756,14 @@ description: Result of parsing i-beam.kcl
{
"arguments": [
{
- "commentStart": 595,
+ "commentStart": 741,
"end": 0,
"properties": [
{
- "commentStart": 597,
+ "commentStart": 743,
"end": 0,
"key": {
- "commentStart": 597,
+ "commentStart": 743,
"end": 0,
"name": "axis",
"start": 0,
@@ -542,7 +772,7 @@ description: Result of parsing i-beam.kcl
"start": 0,
"type": "ObjectProperty",
"value": {
- "commentStart": 604,
+ "commentStart": 750,
"end": 0,
"raw": "'X'",
"start": 0,
@@ -557,7 +787,7 @@ description: Result of parsing i-beam.kcl
"type": "ObjectExpression"
},
{
- "commentStart": 611,
+ "commentStart": 757,
"end": 0,
"start": 0,
"type": "PipeSubstitution",
@@ -566,10 +796,10 @@ description: Result of parsing i-beam.kcl
],
"callee": {
"abs_path": false,
- "commentStart": 586,
+ "commentStart": 732,
"end": 0,
"name": {
- "commentStart": 586,
+ "commentStart": 732,
"end": 0,
"name": "mirror2d",
"start": 0,
@@ -579,7 +809,7 @@ description: Result of parsing i-beam.kcl
"start": 0,
"type": "Name"
},
- "commentStart": 586,
+ "commentStart": 732,
"end": 0,
"start": 0,
"type": "CallExpression",
@@ -588,14 +818,14 @@ description: Result of parsing i-beam.kcl
{
"arguments": [
{
- "commentStart": 628,
+ "commentStart": 774,
"end": 0,
"properties": [
{
- "commentStart": 630,
+ "commentStart": 776,
"end": 0,
"key": {
- "commentStart": 630,
+ "commentStart": 776,
"end": 0,
"name": "axis",
"start": 0,
@@ -604,7 +834,7 @@ description: Result of parsing i-beam.kcl
"start": 0,
"type": "ObjectProperty",
"value": {
- "commentStart": 637,
+ "commentStart": 783,
"end": 0,
"raw": "'Y'",
"start": 0,
@@ -619,7 +849,7 @@ description: Result of parsing i-beam.kcl
"type": "ObjectExpression"
},
{
- "commentStart": 644,
+ "commentStart": 790,
"end": 0,
"start": 0,
"type": "PipeSubstitution",
@@ -628,10 +858,10 @@ description: Result of parsing i-beam.kcl
],
"callee": {
"abs_path": false,
- "commentStart": 619,
+ "commentStart": 765,
"end": 0,
"name": {
- "commentStart": 619,
+ "commentStart": 765,
"end": 0,
"name": "mirror2d",
"start": 0,
@@ -641,7 +871,7 @@ description: Result of parsing i-beam.kcl
"start": 0,
"type": "Name"
},
- "commentStart": 619,
+ "commentStart": 765,
"end": 0,
"start": 0,
"type": "CallExpression",
@@ -652,7 +882,7 @@ description: Result of parsing i-beam.kcl
{
"type": "LabeledArg",
"label": {
- "commentStart": 660,
+ "commentStart": 806,
"end": 0,
"name": "length",
"start": 0,
@@ -660,10 +890,10 @@ description: Result of parsing i-beam.kcl
},
"arg": {
"abs_path": false,
- "commentStart": 669,
+ "commentStart": 815,
"end": 0,
"name": {
- "commentStart": 669,
+ "commentStart": 815,
"end": 0,
"name": "beamLength",
"start": 0,
@@ -678,10 +908,10 @@ description: Result of parsing i-beam.kcl
],
"callee": {
"abs_path": false,
- "commentStart": 652,
+ "commentStart": 798,
"end": 0,
"name": {
- "commentStart": 652,
+ "commentStart": 798,
"end": 0,
"name": "extrude",
"start": 0,
@@ -691,7 +921,7 @@ description: Result of parsing i-beam.kcl
"start": 0,
"type": "Name"
},
- "commentStart": 652,
+ "commentStart": 798,
"end": 0,
"start": 0,
"type": "CallExpressionKw",
@@ -699,7 +929,7 @@ description: Result of parsing i-beam.kcl
"unlabeled": null
}
],
- "commentStart": 379,
+ "commentStart": 445,
"end": 0,
"start": 0,
"type": "PipeExpression",
@@ -727,7 +957,7 @@ description: Result of parsing i-beam.kcl
"commentStart": 0,
"end": 0,
"name": {
- "commentStart": 111,
+ "commentStart": 128,
"end": 0,
"name": "settings",
"start": 0,
@@ -735,17 +965,17 @@ description: Result of parsing i-beam.kcl
},
"preComments": [
"// I-beam",
- "// A structural metal beam with an I shaped cross section. Often used in construction",
+ "// A structural metal beam with an I shaped cross section. Often used in construction and architecture",
"",
"",
"// Set Units"
],
"properties": [
{
- "commentStart": 120,
+ "commentStart": 137,
"end": 0,
"key": {
- "commentStart": 120,
+ "commentStart": 137,
"end": 0,
"name": "defaultLengthUnit",
"start": 0,
@@ -755,10 +985,10 @@ description: Result of parsing i-beam.kcl
"type": "ObjectProperty",
"value": {
"abs_path": false,
- "commentStart": 140,
+ "commentStart": 157,
"end": 0,
"name": {
- "commentStart": 140,
+ "commentStart": 157,
"end": 0,
"name": "in",
"start": 0,
@@ -779,7 +1009,7 @@ description: Result of parsing i-beam.kcl
"nonCodeNodes": {},
"startNodes": [
{
- "commentStart": 143,
+ "commentStart": 160,
"end": 0,
"start": 0,
"type": "NonCodeNode",
diff --git a/rust/kcl-lib/tests/kcl_samples/i-beam/ops.snap b/rust/kcl-lib/tests/kcl_samples/i-beam/ops.snap
index 4bc417f9d..f721eb5ec 100644
--- a/rust/kcl-lib/tests/kcl_samples/i-beam/ops.snap
+++ b/rust/kcl-lib/tests/kcl_samples/i-beam/ops.snap
@@ -7,8 +7,8 @@ description: Operations executed i-beam.kcl
"labeledArgs": {
"data": {
"value": {
- "type": "String",
- "value": "-XZ"
+ "type": "Plane",
+ "artifact_id": "[uuid]"
},
"sourceRange": []
}
@@ -23,15 +23,9 @@ description: Operations executed i-beam.kcl
"length": {
"value": {
"type": "Number",
- "value": 24.0,
+ "value": 72.00000000000001,
"ty": {
- "type": "Default",
- "len": {
- "type": "Inches"
- },
- "angle": {
- "type": "Degrees"
- }
+ "type": "Unknown"
}
},
"sourceRange": []
diff --git a/rust/kcl-lib/tests/kcl_samples/i-beam/program_memory.snap b/rust/kcl-lib/tests/kcl_samples/i-beam/program_memory.snap
index 58be0e326..26514e776 100644
--- a/rust/kcl-lib/tests/kcl_samples/i-beam/program_memory.snap
+++ b/rust/kcl-lib/tests/kcl_samples/i-beam/program_memory.snap
@@ -18,7 +18,14 @@ description: Variables in memory after executing i-beam.kcl
},
"beamLength": {
"type": "Number",
- "value": 24.0,
+ "value": 72.0,
+ "ty": {
+ "type": "Unknown"
+ }
+ },
+ "flangeThickness": {
+ "type": "Number",
+ "value": 0.293,
"ty": {
"type": "Default",
"len": {
@@ -29,7 +36,7 @@ description: Variables in memory after executing i-beam.kcl
}
}
},
- "beamWidth": {
+ "flangeWidth": {
"type": "Number",
"value": 2.663,
"ty": {
@@ -42,6 +49,19 @@ description: Variables in memory after executing i-beam.kcl
}
}
},
+ "rootRadius": {
+ "type": "Number",
+ "value": 0.457,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Inches"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
"sketch001": {
"type": "Solid",
"value": {
@@ -102,7 +122,7 @@ description: Variables in memory after executing i-beam.kcl
],
"tag": null,
"to": [
- 0.1465,
+ 0.5535,
1.707
],
"type": "ToPoint",
@@ -115,13 +135,37 @@ description: Variables in memory after executing i-beam.kcl
"id": "[uuid]",
"sourceRange": []
},
+ "ccw": true,
+ "center": [
+ 0.5535,
+ 1.25
+ ],
"from": [
- 0.1465,
+ 0.5535,
1.707
],
"tag": null,
"to": [
- 0.1465,
+ 0.0965,
+ 1.25
+ ],
+ "type": "TangentialArc",
+ "units": {
+ "type": "Inches"
+ }
+ },
+ {
+ "__geoMeta": {
+ "id": "[uuid]",
+ "sourceRange": []
+ },
+ "from": [
+ 0.0965,
+ 1.25
+ ],
+ "tag": null,
+ "to": [
+ 0.0965,
0.0
],
"type": "ToPoint",
@@ -183,7 +227,7 @@ description: Variables in memory after executing i-beam.kcl
"type": "Inches"
}
},
- "height": 24.0,
+ "height": 72.00000000000001,
"startCapId": null,
"endCapId": null,
"units": {
@@ -191,9 +235,9 @@ description: Variables in memory after executing i-beam.kcl
}
}
},
- "wallThickness": {
+ "webThickness": {
"type": "Number",
- "value": 0.293,
+ "value": 0.193,
"ty": {
"type": "Default",
"len": {
diff --git a/rust/kcl-lib/tests/kcl_samples/i-beam/rendered_model.png b/rust/kcl-lib/tests/kcl_samples/i-beam/rendered_model.png
index 23b205454..19411c20e 100644
Binary files a/rust/kcl-lib/tests/kcl_samples/i-beam/rendered_model.png and b/rust/kcl-lib/tests/kcl_samples/i-beam/rendered_model.png differ