From 74c07fc0ebaa944f836713dd51f66698d91ab480 Mon Sep 17 00:00:00 2001 From: Josh Gomez <114548659+jgomez720@users.noreply.github.com> Date: Fri, 11 Apr 2025 12:27:29 -0700 Subject: [PATCH] Update onboarding bracket to be robust (#6099) * update onboarding bracket to be robust * update onboarding bracket with bends * checking if asserts causing parse failure * fun fact, it was not the asserts * fix bracket loading Signed-off-by: Jess Frazelle * updates Signed-off-by: Jess Frazelle --------- Signed-off-by: Jess Frazelle Co-authored-by: Pierre Jacquier Co-authored-by: Jess Frazelle Co-authored-by: Jess Frazelle --- .github/workflows/check-exampleKcl.yml | 7 +- e2e/playwright/code-pane-and-errors.spec.ts | 2 +- e2e/playwright/fixtures/bracket.ts | 16 + e2e/playwright/onboarding-tests.spec.ts | 6 +- e2e/playwright/regression-tests.spec.ts | 2 +- .../testing-samples-loading.spec.ts | 11 +- package.json | 1 + public/kcl-samples/bracket/main.kcl | 95 +- .../bracket/artifact_commands.snap | 282 +- .../bracket/artifact_graph_flowchart.snap.md | 128 +- .../tests/kcl_samples/bracket/ast.snap | 2184 ++++-- .../tests/kcl_samples/bracket/ops.snap | 328 +- .../kcl_samples/bracket/program_memory.snap | 6490 ++++++++--------- .../kcl_samples/bracket/rendered_model.png | Bin 60920 -> 66859 bytes src/lib/exampleKcl.ts | 52 +- tsconfig.json | 1 + vite.config.ts | 1 + 17 files changed, 5091 insertions(+), 4515 deletions(-) create mode 100644 e2e/playwright/fixtures/bracket.ts diff --git a/.github/workflows/check-exampleKcl.yml b/.github/workflows/check-exampleKcl.yml index 60ec6418c..de3863b66 100644 --- a/.github/workflows/check-exampleKcl.yml +++ b/.github/workflows/check-exampleKcl.yml @@ -5,6 +5,7 @@ on: types: [opened, synchronize] paths: - 'src/lib/exampleKcl.ts' + - 'public/kcl-samples/bracket/main.kcl' permissions: contents: read @@ -22,11 +23,11 @@ jobs: uses: actions/github-script@v7 with: script: | - const message = '`src/lib/exampleKcl.ts` has been updated in this PR, please review and update the `src/routes/onboarding`, if needed.'; + const message = '`public/kcl-samples/bracket/main.kcl` or `src/lib/exampleKcl.ts` has been updated in this PR, please review and update the `src/routes/onboarding`, if needed.'; const issue_number = context.payload.pull_request.number; const owner = context.repo.owner; const repo = context.repo.repo; - + const { data: comments } = await github.rest.issues.listComments({ owner, repo, @@ -43,4 +44,4 @@ jobs: issue_number, body: message, }); - } \ No newline at end of file + } diff --git a/e2e/playwright/code-pane-and-errors.spec.ts b/e2e/playwright/code-pane-and-errors.spec.ts index 76585cbe4..3a66167a5 100644 --- a/e2e/playwright/code-pane-and-errors.spec.ts +++ b/e2e/playwright/code-pane-and-errors.spec.ts @@ -1,4 +1,4 @@ -import { bracket } from '@src/lib/exampleKcl' +import { bracket } from '@e2e/playwright/fixtures/bracket' import fsp from 'fs/promises' import { join } from 'path' diff --git a/e2e/playwright/fixtures/bracket.ts b/e2e/playwright/fixtures/bracket.ts new file mode 100644 index 000000000..d17bd431f --- /dev/null +++ b/e2e/playwright/fixtures/bracket.ts @@ -0,0 +1,16 @@ +import fs from 'fs' +import path from 'path' + +export const bracket = fs.readFileSync( + path.resolve( + __dirname, + '..', + '..', + '..', + 'public', + 'kcl-samples', + 'bracket', + 'main.kcl' + ), + 'utf8' +) diff --git a/e2e/playwright/onboarding-tests.spec.ts b/e2e/playwright/onboarding-tests.spec.ts index 63963431b..1e397c1ea 100644 --- a/e2e/playwright/onboarding-tests.spec.ts +++ b/e2e/playwright/onboarding-tests.spec.ts @@ -1,4 +1,4 @@ -import { bracket } from '@src/lib/exampleKcl' +import { bracket } from '@e2e/playwright/fixtures/bracket' import { onboardingPaths } from '@src/routes/Onboarding/paths' import fsp from 'fs/promises' import { join } from 'path' @@ -15,6 +15,7 @@ import { executorInputPath, getUtils, orRunWhenFullSuiteEnabled, + runningOnWindows, settingsToToml, } from '@e2e/playwright/test-utils' import { expect, test } from '@e2e/playwright/zoo-test' @@ -279,6 +280,9 @@ test.describe('Onboarding tests', () => { if (!tronApp) { fail() } + if (runningOnWindows()) { + test.fixme(orRunWhenFullSuiteEnabled()) + } await tronApp.cleanProjectDir({ app: { onboarding_status: '/parametric-modeling', diff --git a/e2e/playwright/regression-tests.spec.ts b/e2e/playwright/regression-tests.spec.ts index d713e5cbc..c5deb4b9c 100644 --- a/e2e/playwright/regression-tests.spec.ts +++ b/e2e/playwright/regression-tests.spec.ts @@ -1,5 +1,5 @@ +import { bracket } from '@e2e/playwright/fixtures/bracket' import type { Page } from '@playwright/test' -import { bracket } from '@src/lib/exampleKcl' import { reportRejection } from '@src/lib/trap' import * as fsp from 'fs/promises' import path from 'path' diff --git a/e2e/playwright/testing-samples-loading.spec.ts b/e2e/playwright/testing-samples-loading.spec.ts index affbf289a..4b54d117c 100644 --- a/e2e/playwright/testing-samples-loading.spec.ts +++ b/e2e/playwright/testing-samples-loading.spec.ts @@ -1,9 +1,13 @@ +import { bracket } from '@e2e/playwright/fixtures/bracket' import { FILE_EXT } from '@src/lib/constants' -import { bracket } from '@src/lib/exampleKcl' import * as fsp from 'fs/promises' import { join } from 'path' -import { getUtils } from '@e2e/playwright/test-utils' +import { + getUtils, + orRunWhenFullSuiteEnabled, + runningOnWindows, +} from '@e2e/playwright/test-utils' import { expect, test } from '@e2e/playwright/zoo-test' test.describe('Testing in-app sample loading', () => { @@ -80,6 +84,9 @@ test.describe('Testing in-app sample loading', () => { 'Desktop: should create new file by default, optionally overwrite', { tag: '@electron' }, async ({ editor, context, page, scene, cmdBar }, testInfo) => { + if (runningOnWindows()) { + test.fixme(orRunWhenFullSuiteEnabled()) + } const { dir } = await context.folderSetupFn(async (dir) => { const bracketDir = join(dir, 'bracket') await fsp.mkdir(bracketDir, { recursive: true }) diff --git a/package.json b/package.json index 764cee28d..e5790c23f 100644 --- a/package.json +++ b/package.json @@ -147,6 +147,7 @@ "importOrder": [ "", "^@rust/(.*)$", + "^@public/(.*)$", "^@e2e/(.*)$", "^@src/(.*)$", "^[./]" diff --git a/public/kcl-samples/bracket/main.kcl b/public/kcl-samples/bracket/main.kcl index 60cf0a172..b8e3c56b0 100644 --- a/public/kcl-samples/bracket/main.kcl +++ b/public/kcl-samples/bracket/main.kcl @@ -1,47 +1,84 @@ // Shelf Bracket // This is a bracket that holds a shelf. It is made of aluminum and is designed to hold a force of 300 lbs. The bracket is 6 inches wide and the force is applied at the end of the shelf, 12 inches from the wall. The bracket has a factor of safety of 1.2. The legs of the bracket are 5 inches and 2 inches long. The thickness of the bracket is calculated from the constraints provided. -// Define constants +// Set units +@settings(defaultLengthUnit = in) + +// Define parameters sigmaAllow = 35000 // psi (6061-T6 aluminum) -width = 6 // inch +width = 5.0 p = 300 // Force on shelf - lbs -factorOfSafety = 1.2 // FOS of 1.2 -shelfMountL = 5 // inches -wallMountL = 2 // inches -shelfDepth = 12 // Shelf is 12 inches in depth from the wall -moment = shelfDepth * p // assume the force is applied at the end of the shelf to be conservative (lb-in) +fos = 1.2 // Factor of safety of 1.2 +shelfMountLength = 5.0 +wallMountLength = 2.25 +shelfDepth = 12 // Shelf is 12 inches deep from the wall +shelfMountingHoleDiameter = .50 +wallMountingHoleDiameter = .625 +// Calculated parameters +moment = shelfDepth * p // assume the force is applied at the end of the shelf +thickness = sqrt(moment * fos * 6 / (sigmaAllow * width)) // required thickness for two brackets to hold up the shelf +bendRadius = 0.25 +extBendRadius = bendRadius + thickness +filletRadius = .5 +shelfMountingHolePlacementOffset = shelfMountingHoleDiameter * 1.5 +wallMountingHolePlacementOffset = wallMountingHoleDiameter * 1.5 -// Calculate required thickness of bracket -thickness = sqrt(moment * factorOfSafety * 6 / (sigmaAllow * width)) // this is the calculation of two brackets holding up the shelf (inches) +// Add checks to ensure bracket is possible. These make sure that there is adequate distance between holes and edges. +assertGreaterThanOrEq(wallMountLength, wallMountingHoleDiameter * 3, "Holes not possible. Either decrease hole diameter or increase wallMountLength") +assertGreaterThanOrEq(shelfMountLength, shelfMountingHoleDiameter * 5.5, "wallMountLength must be longer for hole sizes to work. Either decrease mounting hole diameters or increase shelfMountLength") +assertGreaterThanOrEq(width, shelfMountingHoleDiameter * 5.5, "Holes not possible. Either decrease hole diameter or increase width") +assertGreaterThanOrEq(width, wallMountingHoleDiameter * 5.5, "Holes not possible. Either decrease hole diameter or increase width") - -filletRadius = .25 -extFilletRadius = filletRadius + thickness -mountingHoleDiameter = 0.5 - -sketch001 = startSketchOn(XZ) +// Create the body of the bracket +bracketBody = startSketchOn(XZ) |> startProfileAt([0, 0], %) - |> xLine(length = shelfMountL - thickness, tag = $seg01) + |> xLine(length = shelfMountLength - thickness, tag = $seg01) |> yLine(length = thickness, tag = $seg02) - |> xLine(length = -shelfMountL, tag = $seg03) - |> yLine(length = -wallMountL, tag = $seg04) + |> xLine(length = -shelfMountLength, tag = $seg03) + |> yLine(length = -wallMountLength, tag = $seg04) |> xLine(length = thickness, tag = $seg05) |> line(endAbsolute = [profileStartX(%), profileStartY(%)], tag = $seg06) |> close() |> extrude(%, length = width) - |> fillet(radius = extFilletRadius, tags = [getNextAdjacentEdge(seg03)]) - |> fillet(radius = filletRadius, tags = [getNextAdjacentEdge(seg06)]) - |> fillet(radius = filletRadius, tags = [seg02, getOppositeEdge(seg02)]) - |> fillet(radius = filletRadius, tags = [seg05, getOppositeEdge(seg05)]) -sketch002 = startSketchOn(sketch001, seg03) - |> circle(center = [-1.25, 1], radius = mountingHoleDiameter / 2) - |> patternLinear2d(instances = 2, distance = 2.5, axis = [-1, 0]) - |> patternLinear2d(instances = 2, distance = 4, axis = [0, 1]) +// Add mounting holes to mount to the shelf +shelfMountingHoles = startSketchOn(bracketBody, seg03) + |> circle( + center = [ + -(bendRadius + shelfMountingHolePlacementOffset), + shelfMountingHolePlacementOffset + ], + radius = shelfMountingHoleDiameter / 2, + ) + |> patternLinear2d(instances = 2, distance = -(extBendRadius + shelfMountingHolePlacementOffset) + shelfMountLength - shelfMountingHolePlacementOffset, axis = [-1, 0]) + |> patternLinear2d(instances = 2, distance = width - (shelfMountingHolePlacementOffset * 2), axis = [0, 1]) |> extrude(%, length = -thickness - .01) -sketch003 = startSketchOn(sketch001, seg04) - |> circle(center = [1, -1], radius = mountingHoleDiameter / 2) - |> patternLinear2d(instances = 2, distance = 4, axis = [1, 0]) +// Add mounting holes to mount to the wall +wallMountingHoles = startSketchOn(bracketBody, seg04) + |> circle( + center = [ + wallMountLength - wallMountingHolePlacementOffset - bendRadius, + wallMountingHolePlacementOffset + ], + radius = wallMountingHoleDiameter / 2, + ) + |> patternLinear2d(instances = 2, distance = width - (wallMountingHolePlacementOffset * 2), axis = [0, 1]) |> extrude(%, length = -thickness - 0.1) + +// Apply bends +fillet(bracketBody, radius = extBendRadius, tags = [getNextAdjacentEdge(seg03)]) +fillet(bracketBody, radius = bendRadius, tags = [getNextAdjacentEdge(seg06)]) + +// Apply corner fillets +fillet( + bracketBody, + radius = filletRadius, + tags = [ + seg02, + getOppositeEdge(seg02), + seg05, + getOppositeEdge(seg05) + ], +) diff --git a/rust/kcl-lib/tests/kcl_samples/bracket/artifact_commands.snap b/rust/kcl-lib/tests/kcl_samples/bracket/artifact_commands.snap index d0b470633..c1b11d009 100644 --- a/rust/kcl-lib/tests/kcl_samples/bracket/artifact_commands.snap +++ b/rust/kcl-lib/tests/kcl_samples/bracket/artifact_commands.snap @@ -29,6 +29,14 @@ description: Artifact commands bracket.kcl "hidden": true } }, + { + "cmdId": "[uuid]", + "range": [], + "command": { + "type": "set_scene_units", + "unit": "in" + } + }, { "cmdId": "[uuid]", "range": [], @@ -106,7 +114,7 @@ description: Artifact commands bracket.kcl "segment": { "type": "line", "end": { - "x": 4.6487, + "x": 4.6151, "y": 0.0, "z": 0.0 }, @@ -124,7 +132,7 @@ description: Artifact commands bracket.kcl "type": "line", "end": { "x": 0.0, - "y": 0.3513, + "y": 0.3849, "z": 0.0 }, "relative": true @@ -158,7 +166,7 @@ description: Artifact commands bracket.kcl "type": "line", "end": { "x": 0.0, - "y": -2.0, + "y": -2.25, "z": 0.0 }, "relative": true @@ -174,7 +182,7 @@ description: Artifact commands bracket.kcl "segment": { "type": "line", "end": { - "x": 0.3513, + "x": 0.3849, "y": 0.0, "z": 0.0 }, @@ -229,7 +237,7 @@ description: Artifact commands bracket.kcl "command": { "type": "extrude", "target": "[uuid]", - "distance": 6.0, + "distance": 5.0, "faces": null, "opposite": "None" } @@ -378,118 +386,6 @@ description: Artifact commands bracket.kcl "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_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_opposite_edge", - "object_id": "[uuid]", - "edge_id": "[uuid]", - "face_id": "[uuid]" - } - }, - { - "cmdId": "[uuid]", - "range": [], - "command": { - "type": "solid3d_fillet_edge", - "object_id": "[uuid]", - "edge_id": "[uuid]", - "radius": 0.601324026261472, - "tolerance": 0.0000001, - "cut_type": "fillet" - } - }, - { - "cmdId": "[uuid]", - "range": [], - "command": { - "type": "solid3d_fillet_edge", - "object_id": "[uuid]", - "edge_id": "[uuid]", - "radius": 0.25, - "tolerance": 0.0000001, - "cut_type": "fillet" - } - }, - { - "cmdId": "[uuid]", - "range": [], - "command": { - "type": "solid3d_fillet_edge", - "object_id": "[uuid]", - "edge_id": "[uuid]", - "radius": 0.25, - "tolerance": 0.0000001, - "cut_type": "fillet" - } - }, - { - "cmdId": "[uuid]", - "range": [], - "command": { - "type": "solid3d_fillet_edge", - "object_id": "[uuid]", - "edge_id": "[uuid]", - "radius": 0.25, - "tolerance": 0.0000001, - "cut_type": "fillet" - } - }, - { - "cmdId": "[uuid]", - "range": [], - "command": { - "type": "solid3d_fillet_edge", - "object_id": "[uuid]", - "edge_id": "[uuid]", - "radius": 0.25, - "tolerance": 0.0000001, - "cut_type": "fillet" - } - }, - { - "cmdId": "[uuid]", - "range": [], - "command": { - "type": "solid3d_fillet_edge", - "object_id": "[uuid]", - "edge_id": "[uuid]", - "radius": 0.25, - "tolerance": 0.0000001, - "cut_type": "fillet" - } - }, { "cmdId": "[uuid]", "range": [], @@ -516,8 +412,8 @@ description: Artifact commands bracket.kcl "type": "move_path_pen", "path": "[uuid]", "to": { - "x": -1.0, - "y": 1.0, + "x": -0.75, + "y": 0.75, "z": 0.0 } } @@ -538,8 +434,8 @@ description: Artifact commands bracket.kcl "segment": { "type": "arc", "center": { - "x": -1.25, - "y": 1.0 + "x": -1.0, + "y": 0.75 }, "radius": 0.25, "start": { @@ -573,7 +469,7 @@ description: Artifact commands bracket.kcl [ { "translate": { - "x": -2.5, + "x": -2.8651438116461088, "y": 0.0, "z": 0.0 }, @@ -614,7 +510,7 @@ description: Artifact commands bracket.kcl { "translate": { "x": 0.0, - "y": 4.0, + "y": 3.5, "z": 0.0 }, "scale": { @@ -654,7 +550,7 @@ description: Artifact commands bracket.kcl { "translate": { "x": 0.0, - "y": 4.0, + "y": 3.5, "z": 0.0 }, "scale": { @@ -700,7 +596,7 @@ description: Artifact commands bracket.kcl "command": { "type": "extrude", "target": "[uuid]", - "distance": -0.361324026261472, + "distance": -0.39485618835389114, "faces": null, "opposite": "None" } @@ -767,7 +663,7 @@ description: Artifact commands bracket.kcl "command": { "type": "extrude", "target": "[uuid]", - "distance": -0.361324026261472, + "distance": -0.39485618835389114, "faces": null, "opposite": "None" } @@ -834,7 +730,7 @@ description: Artifact commands bracket.kcl "command": { "type": "extrude", "target": "[uuid]", - "distance": -0.361324026261472, + "distance": -0.39485618835389114, "faces": null, "opposite": "None" } @@ -901,7 +797,7 @@ description: Artifact commands bracket.kcl "command": { "type": "extrude", "target": "[uuid]", - "distance": -0.361324026261472, + "distance": -0.39485618835389114, "faces": null, "opposite": "None" } @@ -976,8 +872,8 @@ description: Artifact commands bracket.kcl "type": "move_path_pen", "path": "[uuid]", "to": { - "x": 1.25, - "y": -1.0, + "x": 1.375, + "y": 0.9375, "z": 0.0 } } @@ -998,10 +894,10 @@ description: Artifact commands bracket.kcl "segment": { "type": "arc", "center": { - "x": 1.0, - "y": -1.0 + "x": 1.0625, + "y": 0.9375 }, - "radius": 0.25, + "radius": 0.3125, "start": { "unit": "degrees", "value": 0.0 @@ -1033,8 +929,8 @@ description: Artifact commands bracket.kcl [ { "translate": { - "x": 4.0, - "y": 0.0, + "x": 0.0, + "y": 3.125, "z": 0.0 }, "scale": { @@ -1080,7 +976,7 @@ description: Artifact commands bracket.kcl "command": { "type": "extrude", "target": "[uuid]", - "distance": -0.45132402626147194, + "distance": -0.4848561883538911, "faces": null, "opposite": "None" } @@ -1147,7 +1043,7 @@ description: Artifact commands bracket.kcl "command": { "type": "extrude", "target": "[uuid]", - "distance": -0.45132402626147194, + "distance": -0.4848561883538911, "faces": null, "opposite": "None" } @@ -1195,5 +1091,117 @@ description: Artifact commands bracket.kcl "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_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_opposite_edge", + "object_id": "[uuid]", + "edge_id": "[uuid]", + "face_id": "[uuid]" + } + }, + { + "cmdId": "[uuid]", + "range": [], + "command": { + "type": "solid3d_fillet_edge", + "object_id": "[uuid]", + "edge_id": "[uuid]", + "radius": 0.6348561883538911, + "tolerance": 0.0000001, + "cut_type": "fillet" + } + }, + { + "cmdId": "[uuid]", + "range": [], + "command": { + "type": "solid3d_fillet_edge", + "object_id": "[uuid]", + "edge_id": "[uuid]", + "radius": 0.25, + "tolerance": 0.0000001, + "cut_type": "fillet" + } + }, + { + "cmdId": "[uuid]", + "range": [], + "command": { + "type": "solid3d_fillet_edge", + "object_id": "[uuid]", + "edge_id": "[uuid]", + "radius": 0.5, + "tolerance": 0.0000001, + "cut_type": "fillet" + } + }, + { + "cmdId": "[uuid]", + "range": [], + "command": { + "type": "solid3d_fillet_edge", + "object_id": "[uuid]", + "edge_id": "[uuid]", + "radius": 0.5, + "tolerance": 0.0000001, + "cut_type": "fillet" + } + }, + { + "cmdId": "[uuid]", + "range": [], + "command": { + "type": "solid3d_fillet_edge", + "object_id": "[uuid]", + "edge_id": "[uuid]", + "radius": 0.5, + "tolerance": 0.0000001, + "cut_type": "fillet" + } + }, + { + "cmdId": "[uuid]", + "range": [], + "command": { + "type": "solid3d_fillet_edge", + "object_id": "[uuid]", + "edge_id": "[uuid]", + "radius": 0.5, + "tolerance": 0.0000001, + "cut_type": "fillet" + } } ] diff --git a/rust/kcl-lib/tests/kcl_samples/bracket/artifact_graph_flowchart.snap.md b/rust/kcl-lib/tests/kcl_samples/bracket/artifact_graph_flowchart.snap.md index 9e5dd2358..de1cd13b3 100644 --- a/rust/kcl-lib/tests/kcl_samples/bracket/artifact_graph_flowchart.snap.md +++ b/rust/kcl-lib/tests/kcl_samples/bracket/artifact_graph_flowchart.snap.md @@ -1,28 +1,28 @@ ```mermaid flowchart LR subgraph path2 [Path] - 2["Path
[1085, 1110, 0]"] - 3["Segment
[1116, 1169, 0]"] - 4["Segment
[1175, 1214, 0]"] - 5["Segment
[1220, 1262, 0]"] - 6["Segment
[1268, 1309, 0]"] - 7["Segment
[1315, 1354, 0]"] - 8["Segment
[1360, 1430, 0]"] - 9["Segment
[1436, 1443, 0]"] + 2["Path
[2001, 2026, 0]"] + 3["Segment
[2032, 2090, 0]"] + 4["Segment
[2096, 2135, 0]"] + 5["Segment
[2141, 2188, 0]"] + 6["Segment
[2194, 2240, 0]"] + 7["Segment
[2246, 2285, 0]"] + 8["Segment
[2291, 2361, 0]"] + 9["Segment
[2367, 2374, 0]"] 10[Solid2d] end - subgraph path38 [Path] - 38["Path
[1823, 1885, 0]"] - 39["Segment
[1823, 1885, 0]"] - 40[Solid2d] + subgraph path32 [Path] + 32["Path
[2512, 2702, 0]"] + 33["Segment
[2512, 2702, 0]"] + 34[Solid2d] end - subgraph path48 [Path] - 48["Path
[2112, 2171, 0]"] - 49["Segment
[2112, 2171, 0]"] - 50[Solid2d] + subgraph path42 [Path] + 42["Path
[3129, 3331, 0]"] + 43["Segment
[3129, 3331, 0]"] + 44[Solid2d] end - 1["Plane
[1062, 1079, 0]"] - 11["Sweep Extrusion
[1449, 1475, 0]"] + 1["Plane
[1978, 1995, 0]"] + 11["Sweep Extrusion
[2380, 2406, 0]"] 12[Wall] 13[Wall] 14[Wall] @@ -43,26 +43,26 @@ flowchart LR 29["SweepEdge Adjacent"] 30["SweepEdge Opposite"] 31["SweepEdge Adjacent"] - 32["EdgeCut Fillet
[1481, 1550, 0]"] - 33["EdgeCut Fillet
[1556, 1622, 0]"] - 34["EdgeCut Fillet
[1628, 1697, 0]"] - 35["EdgeCut Fillet
[1628, 1697, 0]"] - 36["EdgeCut Fillet
[1703, 1772, 0]"] - 37["EdgeCut Fillet
[1703, 1772, 0]"] - 41["Sweep Extrusion
[2024, 2061, 0]"] - 42[Wall] - 43["SweepEdge Opposite"] - 44["SweepEdge Adjacent"] - 45["Sweep Extrusion
[2024, 2061, 0]"] - 46["Sweep Extrusion
[2024, 2061, 0]"] - 47["Sweep Extrusion
[2024, 2061, 0]"] - 51["Sweep Extrusion
[2242, 2279, 0]"] - 52[Wall] - 53["SweepEdge Opposite"] - 54["SweepEdge Adjacent"] - 55["Sweep Extrusion
[2242, 2279, 0]"] - 56["StartSketchOnFace
[1786, 1817, 0]"] - 57["StartSketchOnFace
[2075, 2106, 0]"] + 35["Sweep Extrusion
[2988, 3025, 0]"] + 36[Wall] + 37["SweepEdge Opposite"] + 38["SweepEdge Adjacent"] + 39["Sweep Extrusion
[2988, 3025, 0]"] + 40["Sweep Extrusion
[2988, 3025, 0]"] + 41["Sweep Extrusion
[2988, 3025, 0]"] + 45["Sweep Extrusion
[3446, 3483, 0]"] + 46[Wall] + 47["SweepEdge Opposite"] + 48["SweepEdge Adjacent"] + 49["Sweep Extrusion
[3446, 3483, 0]"] + 50["EdgeCut Fillet
[3500, 3580, 0]"] + 51["EdgeCut Fillet
[3581, 3658, 0]"] + 52["EdgeCut Fillet
[3684, 3826, 0]"] + 53["EdgeCut Fillet
[3684, 3826, 0]"] + 54["EdgeCut Fillet
[3684, 3826, 0]"] + 55["EdgeCut Fillet
[3684, 3826, 0]"] + 56["StartSketchOnFace
[2473, 2506, 0]"] + 57["StartSketchOnFace
[3090, 3123, 0]"] 1 --- 2 2 --- 3 2 --- 4 @@ -79,7 +79,7 @@ flowchart LR 4 --- 13 4 --- 22 4 --- 23 - 4 --- 34 + 4 --- 52 5 --- 14 5 --- 24 5 --- 25 @@ -89,7 +89,7 @@ flowchart LR 7 --- 16 7 --- 28 7 --- 29 - 7 --- 36 + 7 --- 54 8 --- 17 8 --- 30 8 --- 31 @@ -113,30 +113,30 @@ flowchart LR 11 --- 29 11 --- 30 11 --- 31 - 14 --- 38 - 15 --- 48 - 25 <--x 32 - 31 <--x 33 - 22 <--x 35 - 28 <--x 37 - 38 --- 39 - 38 ---- 41 - 38 --- 40 - 39 --- 42 - 39 --- 43 - 39 --- 44 - 41 --- 42 - 41 --- 43 - 41 --- 44 - 48 --- 49 - 48 ---- 51 - 48 --- 50 - 49 --- 52 - 49 --- 53 - 49 --- 54 - 51 --- 52 - 51 --- 53 - 51 --- 54 + 14 --- 32 + 15 --- 42 + 32 --- 33 + 32 ---- 35 + 32 --- 34 + 33 --- 36 + 33 --- 37 + 33 --- 38 + 35 --- 36 + 35 --- 37 + 35 --- 38 + 42 --- 43 + 42 ---- 45 + 42 --- 44 + 43 --- 46 + 43 --- 47 + 43 --- 48 + 45 --- 46 + 45 --- 47 + 45 --- 48 + 25 <--x 50 + 31 <--x 51 + 22 <--x 53 + 28 <--x 55 14 <--x 56 15 <--x 57 ``` diff --git a/rust/kcl-lib/tests/kcl_samples/bracket/ast.snap b/rust/kcl-lib/tests/kcl_samples/bracket/ast.snap index 623e8ddcc..70676d210 100644 --- a/rust/kcl-lib/tests/kcl_samples/bracket/ast.snap +++ b/rust/kcl-lib/tests/kcl_samples/bracket/ast.snap @@ -35,11 +35,7 @@ description: Result of parsing bracket.kcl "end": 0, "kind": "const", "preComments": [ - "// Shelf Bracket", - "// This is a bracket that holds a shelf. It is made of aluminum and is designed to hold a force of 300 lbs. The bracket is 6 inches wide and the force is applied at the end of the shelf, 12 inches from the wall. The bracket has a factor of safety of 1.2. The legs of the bracket are 5 inches and 2 inches long. The thickness of the bracket is calculated from the constraints provided.", - "", - "", - "// Define constants" + "// Define parameters" ], "start": 0, "type": "VariableDeclaration", @@ -60,12 +56,12 @@ description: Result of parsing bracket.kcl "init": { "commentStart": 0, "end": 0, - "raw": "6", + "raw": "5.0", "start": 0, "type": "Literal", "type": "Literal", "value": { - "value": 6.0, + "value": 5.0, "suffix": "None" } }, @@ -119,7 +115,7 @@ description: Result of parsing bracket.kcl "id": { "commentStart": 0, "end": 0, - "name": "factorOfSafety", + "name": "fos", "start": 0, "type": "Identifier" }, @@ -152,14 +148,14 @@ description: Result of parsing bracket.kcl "id": { "commentStart": 0, "end": 0, - "name": "shelfMountL", + "name": "shelfMountLength", "start": 0, "type": "Identifier" }, "init": { "commentStart": 0, "end": 0, - "raw": "5", + "raw": "5.0", "start": 0, "type": "Literal", "type": "Literal", @@ -185,19 +181,19 @@ description: Result of parsing bracket.kcl "id": { "commentStart": 0, "end": 0, - "name": "wallMountL", + "name": "wallMountLength", "start": 0, "type": "Identifier" }, "init": { "commentStart": 0, "end": 0, - "raw": "2", + "raw": "2.25", "start": 0, "type": "Literal", "type": "Literal", "value": { - "value": 2.0, + "value": 2.25, "suffix": "None" } }, @@ -243,6 +239,72 @@ description: Result of parsing bracket.kcl "type": "VariableDeclaration", "type": "VariableDeclaration" }, + { + "commentStart": 0, + "declaration": { + "commentStart": 0, + "end": 0, + "id": { + "commentStart": 0, + "end": 0, + "name": "shelfMountingHoleDiameter", + "start": 0, + "type": "Identifier" + }, + "init": { + "commentStart": 0, + "end": 0, + "raw": ".50", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 0.5, + "suffix": "None" + } + }, + "start": 0, + "type": "VariableDeclarator" + }, + "end": 0, + "kind": "const", + "start": 0, + "type": "VariableDeclaration", + "type": "VariableDeclaration" + }, + { + "commentStart": 0, + "declaration": { + "commentStart": 0, + "end": 0, + "id": { + "commentStart": 0, + "end": 0, + "name": "wallMountingHoleDiameter", + "start": 0, + "type": "Identifier" + }, + "init": { + "commentStart": 0, + "end": 0, + "raw": ".625", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 0.625, + "suffix": "None" + } + }, + "start": 0, + "type": "VariableDeclarator" + }, + "end": 0, + "kind": "const", + "start": 0, + "type": "VariableDeclaration", + "type": "VariableDeclaration" + }, { "commentStart": 0, "declaration": { @@ -300,6 +362,11 @@ description: Result of parsing bracket.kcl }, "end": 0, "kind": "const", + "preComments": [ + "", + "", + "// Calculated parameters" + ], "start": 0, "type": "VariableDeclaration", "type": "VariableDeclaration" @@ -351,7 +418,7 @@ description: Result of parsing bracket.kcl "name": { "commentStart": 0, "end": 0, - "name": "factorOfSafety", + "name": "fos", "start": 0, "type": "Identifier" }, @@ -453,9 +520,6 @@ description: Result of parsing bracket.kcl }, "end": 0, "kind": "const", - "preComments": [ - "// Calculate required thickness of bracket" - ], "start": 0, "type": "VariableDeclaration", "type": "VariableDeclaration" @@ -468,14 +532,14 @@ description: Result of parsing bracket.kcl "id": { "commentStart": 0, "end": 0, - "name": "filletRadius", + "name": "bendRadius", "start": 0, "type": "Identifier" }, "init": { "commentStart": 0, "end": 0, - "raw": ".25", + "raw": "0.25", "start": 0, "type": "Literal", "type": "Literal", @@ -501,7 +565,7 @@ description: Result of parsing bracket.kcl "id": { "commentStart": 0, "end": 0, - "name": "extFilletRadius", + "name": "extBendRadius", "start": 0, "type": "Identifier" }, @@ -515,7 +579,7 @@ description: Result of parsing bracket.kcl "name": { "commentStart": 0, "end": 0, - "name": "filletRadius", + "name": "bendRadius", "start": 0, "type": "Identifier" }, @@ -562,14 +626,14 @@ description: Result of parsing bracket.kcl "id": { "commentStart": 0, "end": 0, - "name": "mountingHoleDiameter", + "name": "filletRadius", "start": 0, "type": "Identifier" }, "init": { "commentStart": 0, "end": 0, - "raw": "0.5", + "raw": ".5", "start": 0, "type": "Literal", "type": "Literal", @@ -595,7 +659,494 @@ description: Result of parsing bracket.kcl "id": { "commentStart": 0, "end": 0, - "name": "sketch001", + "name": "shelfMountingHolePlacementOffset", + "start": 0, + "type": "Identifier" + }, + "init": { + "commentStart": 0, + "end": 0, + "left": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "shelfMountingHoleDiameter", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + }, + "operator": "*", + "right": { + "commentStart": 0, + "end": 0, + "raw": "1.5", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 1.5, + "suffix": "None" + } + }, + "start": 0, + "type": "BinaryExpression", + "type": "BinaryExpression" + }, + "start": 0, + "type": "VariableDeclarator" + }, + "end": 0, + "kind": "const", + "start": 0, + "type": "VariableDeclaration", + "type": "VariableDeclaration" + }, + { + "commentStart": 0, + "declaration": { + "commentStart": 0, + "end": 0, + "id": { + "commentStart": 0, + "end": 0, + "name": "wallMountingHolePlacementOffset", + "start": 0, + "type": "Identifier" + }, + "init": { + "commentStart": 0, + "end": 0, + "left": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "wallMountingHoleDiameter", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + }, + "operator": "*", + "right": { + "commentStart": 0, + "end": 0, + "raw": "1.5", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 1.5, + "suffix": "None" + } + }, + "start": 0, + "type": "BinaryExpression", + "type": "BinaryExpression" + }, + "start": 0, + "type": "VariableDeclarator" + }, + "end": 0, + "kind": "const", + "start": 0, + "type": "VariableDeclaration", + "type": "VariableDeclaration" + }, + { + "commentStart": 0, + "end": 0, + "expression": { + "arguments": [ + { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "wallMountLength", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + }, + { + "commentStart": 0, + "end": 0, + "left": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "wallMountingHoleDiameter", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + }, + "operator": "*", + "right": { + "commentStart": 0, + "end": 0, + "raw": "3", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 3.0, + "suffix": "None" + } + }, + "start": 0, + "type": "BinaryExpression", + "type": "BinaryExpression" + }, + { + "commentStart": 0, + "end": 0, + "raw": "\"Holes not possible. Either decrease hole diameter or increase wallMountLength\"", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": "Holes not possible. Either decrease hole diameter or increase wallMountLength" + } + ], + "callee": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "assertGreaterThanOrEq", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name" + }, + "commentStart": 0, + "end": 0, + "start": 0, + "type": "CallExpression", + "type": "CallExpression" + }, + "preComments": [ + "", + "", + "// Add checks to ensure bracket is possible. These make sure that there is adequate distance between holes and edges." + ], + "start": 0, + "type": "ExpressionStatement", + "type": "ExpressionStatement" + }, + { + "commentStart": 0, + "end": 0, + "expression": { + "arguments": [ + { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "shelfMountLength", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + }, + { + "commentStart": 0, + "end": 0, + "left": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "shelfMountingHoleDiameter", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + }, + "operator": "*", + "right": { + "commentStart": 0, + "end": 0, + "raw": "5.5", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 5.5, + "suffix": "None" + } + }, + "start": 0, + "type": "BinaryExpression", + "type": "BinaryExpression" + }, + { + "commentStart": 0, + "end": 0, + "raw": "\"wallMountLength must be longer for hole sizes to work. Either decrease mounting hole diameters or increase shelfMountLength\"", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": "wallMountLength must be longer for hole sizes to work. Either decrease mounting hole diameters or increase shelfMountLength" + } + ], + "callee": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "assertGreaterThanOrEq", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name" + }, + "commentStart": 0, + "end": 0, + "start": 0, + "type": "CallExpression", + "type": "CallExpression" + }, + "start": 0, + "type": "ExpressionStatement", + "type": "ExpressionStatement" + }, + { + "commentStart": 0, + "end": 0, + "expression": { + "arguments": [ + { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "width", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + }, + { + "commentStart": 0, + "end": 0, + "left": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "shelfMountingHoleDiameter", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + }, + "operator": "*", + "right": { + "commentStart": 0, + "end": 0, + "raw": "5.5", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 5.5, + "suffix": "None" + } + }, + "start": 0, + "type": "BinaryExpression", + "type": "BinaryExpression" + }, + { + "commentStart": 0, + "end": 0, + "raw": "\"Holes not possible. Either decrease hole diameter or increase width\"", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": "Holes not possible. Either decrease hole diameter or increase width" + } + ], + "callee": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "assertGreaterThanOrEq", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name" + }, + "commentStart": 0, + "end": 0, + "start": 0, + "type": "CallExpression", + "type": "CallExpression" + }, + "start": 0, + "type": "ExpressionStatement", + "type": "ExpressionStatement" + }, + { + "commentStart": 0, + "end": 0, + "expression": { + "arguments": [ + { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "width", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + }, + { + "commentStart": 0, + "end": 0, + "left": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "wallMountingHoleDiameter", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + }, + "operator": "*", + "right": { + "commentStart": 0, + "end": 0, + "raw": "5.5", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 5.5, + "suffix": "None" + } + }, + "start": 0, + "type": "BinaryExpression", + "type": "BinaryExpression" + }, + { + "commentStart": 0, + "end": 0, + "raw": "\"Holes not possible. Either decrease hole diameter or increase width\"", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": "Holes not possible. Either decrease hole diameter or increase width" + } + ], + "callee": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "assertGreaterThanOrEq", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name" + }, + "commentStart": 0, + "end": 0, + "start": 0, + "type": "CallExpression", + "type": "CallExpression" + }, + "start": 0, + "type": "ExpressionStatement", + "type": "ExpressionStatement" + }, + { + "commentStart": 0, + "declaration": { + "commentStart": 0, + "end": 0, + "id": { + "commentStart": 0, + "end": 0, + "name": "bracketBody", "start": 0, "type": "Identifier" }, @@ -726,7 +1277,7 @@ description: Result of parsing bracket.kcl "name": { "commentStart": 0, "end": 0, - "name": "shelfMountL", + "name": "shelfMountLength", "start": 0, "type": "Identifier" }, @@ -886,7 +1437,7 @@ description: Result of parsing bracket.kcl "name": { "commentStart": 0, "end": 0, - "name": "shelfMountL", + "name": "shelfMountLength", "start": 0, "type": "Identifier" }, @@ -963,7 +1514,7 @@ description: Result of parsing bracket.kcl "name": { "commentStart": 0, "end": 0, - "name": "wallMountL", + "name": "wallMountLength", "start": 0, "type": "Identifier" }, @@ -1293,482 +1844,28 @@ description: Result of parsing bracket.kcl "type": "PipeSubstitution", "type": "PipeSubstitution" } - }, - { - "arguments": [ - { - "type": "LabeledArg", - "label": { - "commentStart": 0, - "end": 0, - "name": "radius", - "start": 0, - "type": "Identifier" - }, - "arg": { - "abs_path": false, - "commentStart": 0, - "end": 0, - "name": { - "commentStart": 0, - "end": 0, - "name": "extFilletRadius", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - } - }, - { - "type": "LabeledArg", - "label": { - "commentStart": 0, - "end": 0, - "name": "tags", - "start": 0, - "type": "Identifier" - }, - "arg": { - "commentStart": 0, - "elements": [ - { - "arguments": [ - { - "abs_path": false, - "commentStart": 0, - "end": 0, - "name": { - "commentStart": 0, - "end": 0, - "name": "seg03", - "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": "getNextAdjacentEdge", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name" - }, - "commentStart": 0, - "end": 0, - "start": 0, - "type": "CallExpression", - "type": "CallExpression" - } - ], - "end": 0, - "start": 0, - "type": "ArrayExpression", - "type": "ArrayExpression" - } - } - ], - "callee": { - "abs_path": false, - "commentStart": 0, - "end": 0, - "name": { - "commentStart": 0, - "end": 0, - "name": "fillet", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name" - }, - "commentStart": 0, - "end": 0, - "start": 0, - "type": "CallExpressionKw", - "type": "CallExpressionKw", - "unlabeled": null - }, - { - "arguments": [ - { - "type": "LabeledArg", - "label": { - "commentStart": 0, - "end": 0, - "name": "radius", - "start": 0, - "type": "Identifier" - }, - "arg": { - "abs_path": false, - "commentStart": 0, - "end": 0, - "name": { - "commentStart": 0, - "end": 0, - "name": "filletRadius", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - } - }, - { - "type": "LabeledArg", - "label": { - "commentStart": 0, - "end": 0, - "name": "tags", - "start": 0, - "type": "Identifier" - }, - "arg": { - "commentStart": 0, - "elements": [ - { - "arguments": [ - { - "abs_path": false, - "commentStart": 0, - "end": 0, - "name": { - "commentStart": 0, - "end": 0, - "name": "seg06", - "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": "getNextAdjacentEdge", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name" - }, - "commentStart": 0, - "end": 0, - "start": 0, - "type": "CallExpression", - "type": "CallExpression" - } - ], - "end": 0, - "start": 0, - "type": "ArrayExpression", - "type": "ArrayExpression" - } - } - ], - "callee": { - "abs_path": false, - "commentStart": 0, - "end": 0, - "name": { - "commentStart": 0, - "end": 0, - "name": "fillet", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name" - }, - "commentStart": 0, - "end": 0, - "start": 0, - "type": "CallExpressionKw", - "type": "CallExpressionKw", - "unlabeled": null - }, - { - "arguments": [ - { - "type": "LabeledArg", - "label": { - "commentStart": 0, - "end": 0, - "name": "radius", - "start": 0, - "type": "Identifier" - }, - "arg": { - "abs_path": false, - "commentStart": 0, - "end": 0, - "name": { - "commentStart": 0, - "end": 0, - "name": "filletRadius", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - } - }, - { - "type": "LabeledArg", - "label": { - "commentStart": 0, - "end": 0, - "name": "tags", - "start": 0, - "type": "Identifier" - }, - "arg": { - "commentStart": 0, - "elements": [ - { - "abs_path": false, - "commentStart": 0, - "end": 0, - "name": { - "commentStart": 0, - "end": 0, - "name": "seg02", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - }, - { - "arguments": [ - { - "abs_path": false, - "commentStart": 0, - "end": 0, - "name": { - "commentStart": 0, - "end": 0, - "name": "seg02", - "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": "getOppositeEdge", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name" - }, - "commentStart": 0, - "end": 0, - "start": 0, - "type": "CallExpression", - "type": "CallExpression" - } - ], - "end": 0, - "start": 0, - "type": "ArrayExpression", - "type": "ArrayExpression" - } - } - ], - "callee": { - "abs_path": false, - "commentStart": 0, - "end": 0, - "name": { - "commentStart": 0, - "end": 0, - "name": "fillet", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name" - }, - "commentStart": 0, - "end": 0, - "start": 0, - "type": "CallExpressionKw", - "type": "CallExpressionKw", - "unlabeled": null - }, - { - "arguments": [ - { - "type": "LabeledArg", - "label": { - "commentStart": 0, - "end": 0, - "name": "radius", - "start": 0, - "type": "Identifier" - }, - "arg": { - "abs_path": false, - "commentStart": 0, - "end": 0, - "name": { - "commentStart": 0, - "end": 0, - "name": "filletRadius", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - } - }, - { - "type": "LabeledArg", - "label": { - "commentStart": 0, - "end": 0, - "name": "tags", - "start": 0, - "type": "Identifier" - }, - "arg": { - "commentStart": 0, - "elements": [ - { - "abs_path": false, - "commentStart": 0, - "end": 0, - "name": { - "commentStart": 0, - "end": 0, - "name": "seg05", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - }, - { - "arguments": [ - { - "abs_path": false, - "commentStart": 0, - "end": 0, - "name": { - "commentStart": 0, - "end": 0, - "name": "seg05", - "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": "getOppositeEdge", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name" - }, - "commentStart": 0, - "end": 0, - "start": 0, - "type": "CallExpression", - "type": "CallExpression" - } - ], - "end": 0, - "start": 0, - "type": "ArrayExpression", - "type": "ArrayExpression" - } - } - ], - "callee": { - "abs_path": false, - "commentStart": 0, - "end": 0, - "name": { - "commentStart": 0, - "end": 0, - "name": "fillet", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name" - }, - "commentStart": 0, - "end": 0, - "start": 0, - "type": "CallExpressionKw", - "type": "CallExpressionKw", - "unlabeled": null } ], "commentStart": 0, "end": 0, + "nonCodeMeta": { + "nonCodeNodes": { + "9": [ + { + "commentStart": 0, + "end": 0, + "start": 0, + "type": "NonCodeNode", + "value": { + "type": "newLineBlockComment", + "value": "Add mounting holes to mount to the shelf", + "style": "line" + } + } + ] + }, + "startNodes": [] + }, "start": 0, "type": "PipeExpression", "type": "PipeExpression" @@ -1778,6 +1875,11 @@ description: Result of parsing bracket.kcl }, "end": 0, "kind": "const", + "preComments": [ + "", + "", + "// Create the body of the bracket" + ], "start": 0, "type": "VariableDeclaration", "type": "VariableDeclaration" @@ -1790,7 +1892,7 @@ description: Result of parsing bracket.kcl "id": { "commentStart": 0, "end": 0, - "name": "sketch002", + "name": "shelfMountingHoles", "start": 0, "type": "Identifier" }, @@ -1805,7 +1907,7 @@ description: Result of parsing bracket.kcl "name": { "commentStart": 0, "end": 0, - "name": "sketch001", + "name": "bracketBody", "start": 0, "type": "Identifier" }, @@ -1870,14 +1972,42 @@ description: Result of parsing bracket.kcl "argument": { "commentStart": 0, "end": 0, - "raw": "1.25", + "left": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "bendRadius", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + }, + "operator": "+", + "right": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "shelfMountingHolePlacementOffset", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + }, "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 1.25, - "suffix": "None" - } + "type": "BinaryExpression", + "type": "BinaryExpression" }, "commentStart": 0, "end": 0, @@ -1887,16 +2017,20 @@ description: Result of parsing bracket.kcl "type": "UnaryExpression" }, { + "abs_path": false, "commentStart": 0, "end": 0, - "raw": "1", + "name": { + "commentStart": 0, + "end": 0, + "name": "shelfMountingHolePlacementOffset", + "start": 0, + "type": "Identifier" + }, + "path": [], "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 1.0, - "suffix": "None" - } + "type": "Name", + "type": "Name" } ], "end": 0, @@ -1924,7 +2058,7 @@ description: Result of parsing bracket.kcl "name": { "commentStart": 0, "end": 0, - "name": "mountingHoleDiameter", + "name": "shelfMountingHoleDiameter", "start": 0, "type": "Identifier" }, @@ -2010,14 +2144,98 @@ description: Result of parsing bracket.kcl "arg": { "commentStart": 0, "end": 0, - "raw": "2.5", + "left": { + "commentStart": 0, + "end": 0, + "left": { + "argument": { + "commentStart": 0, + "end": 0, + "left": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "extBendRadius", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + }, + "operator": "+", + "right": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "shelfMountingHolePlacementOffset", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + }, + "start": 0, + "type": "BinaryExpression", + "type": "BinaryExpression" + }, + "commentStart": 0, + "end": 0, + "operator": "-", + "start": 0, + "type": "UnaryExpression", + "type": "UnaryExpression" + }, + "operator": "+", + "right": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "shelfMountLength", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + }, + "start": 0, + "type": "BinaryExpression", + "type": "BinaryExpression" + }, + "operator": "-", + "right": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "shelfMountingHolePlacementOffset", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + }, "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 2.5, - "suffix": "None" - } + "type": "BinaryExpression", + "type": "BinaryExpression" } }, { @@ -2130,14 +2348,62 @@ description: Result of parsing bracket.kcl "arg": { "commentStart": 0, "end": 0, - "raw": "4", + "left": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "width", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + }, + "operator": "-", + "right": { + "commentStart": 0, + "end": 0, + "left": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "shelfMountingHolePlacementOffset", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + }, + "operator": "*", + "right": { + "commentStart": 0, + "end": 0, + "raw": "2", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 2.0, + "suffix": "None" + } + }, + "start": 0, + "type": "BinaryExpression", + "type": "BinaryExpression" + }, "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 4.0, - "suffix": "None" - } + "type": "BinaryExpression", + "type": "BinaryExpression" } }, { @@ -2294,6 +2560,24 @@ description: Result of parsing bracket.kcl ], "commentStart": 0, "end": 0, + "nonCodeMeta": { + "nonCodeNodes": { + "4": [ + { + "commentStart": 0, + "end": 0, + "start": 0, + "type": "NonCodeNode", + "value": { + "type": "newLineBlockComment", + "value": "Add mounting holes to mount to the wall", + "style": "line" + } + } + ] + }, + "startNodes": [] + }, "start": 0, "type": "PipeExpression", "type": "PipeExpression" @@ -2315,7 +2599,7 @@ description: Result of parsing bracket.kcl "id": { "commentStart": 0, "end": 0, - "name": "sketch003", + "name": "wallMountingHoles", "start": 0, "type": "Identifier" }, @@ -2330,7 +2614,7 @@ description: Result of parsing bracket.kcl "name": { "commentStart": 0, "end": 0, - "name": "sketch001", + "name": "bracketBody", "start": 0, "type": "Identifier" }, @@ -2394,34 +2678,82 @@ description: Result of parsing bracket.kcl { "commentStart": 0, "end": 0, - "raw": "1", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 1.0, - "suffix": "None" - } - }, - { - "argument": { + "left": { "commentStart": 0, "end": 0, - "raw": "1", + "left": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "wallMountLength", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + }, + "operator": "-", + "right": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "wallMountingHolePlacementOffset", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + }, "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 1.0, - "suffix": "None" - } + "type": "BinaryExpression", + "type": "BinaryExpression" }, + "operator": "-", + "right": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "bendRadius", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + }, + "start": 0, + "type": "BinaryExpression", + "type": "BinaryExpression" + }, + { + "abs_path": false, "commentStart": 0, "end": 0, - "operator": "-", + "name": { + "commentStart": 0, + "end": 0, + "name": "wallMountingHolePlacementOffset", + "start": 0, + "type": "Identifier" + }, + "path": [], "start": 0, - "type": "UnaryExpression", - "type": "UnaryExpression" + "type": "Name", + "type": "Name" } ], "end": 0, @@ -2449,7 +2781,7 @@ description: Result of parsing bracket.kcl "name": { "commentStart": 0, "end": 0, - "name": "mountingHoleDiameter", + "name": "wallMountingHoleDiameter", "start": 0, "type": "Identifier" }, @@ -2535,14 +2867,62 @@ description: Result of parsing bracket.kcl "arg": { "commentStart": 0, "end": 0, - "raw": "4", + "left": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "width", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + }, + "operator": "-", + "right": { + "commentStart": 0, + "end": 0, + "left": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "wallMountingHolePlacementOffset", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + }, + "operator": "*", + "right": { + "commentStart": 0, + "end": 0, + "raw": "2", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 2.0, + "suffix": "None" + } + }, + "start": 0, + "type": "BinaryExpression", + "type": "BinaryExpression" + }, "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 4.0, - "suffix": "None" - } + "type": "BinaryExpression", + "type": "BinaryExpression" } }, { @@ -2557,18 +2937,6 @@ description: Result of parsing bracket.kcl "arg": { "commentStart": 0, "elements": [ - { - "commentStart": 0, - "end": 0, - "raw": "1", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 1.0, - "suffix": "None" - } - }, { "commentStart": 0, "end": 0, @@ -2580,6 +2948,18 @@ description: Result of parsing bracket.kcl "value": 0.0, "suffix": "None" } + }, + { + "commentStart": 0, + "end": 0, + "raw": "1", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 1.0, + "suffix": "None" + } } ], "end": 0, @@ -2699,6 +3079,24 @@ description: Result of parsing bracket.kcl ], "commentStart": 0, "end": 0, + "nonCodeMeta": { + "nonCodeNodes": { + "3": [ + { + "commentStart": 0, + "end": 0, + "start": 0, + "type": "NonCodeNode", + "value": { + "type": "newLineBlockComment", + "value": "Apply bends", + "style": "line" + } + } + ] + }, + "startNodes": [] + }, "start": 0, "type": "PipeExpression", "type": "PipeExpression" @@ -2711,10 +3109,536 @@ description: Result of parsing bracket.kcl "start": 0, "type": "VariableDeclaration", "type": "VariableDeclaration" + }, + { + "commentStart": 0, + "end": 0, + "expression": { + "arguments": [ + { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "radius", + "start": 0, + "type": "Identifier" + }, + "arg": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "extBendRadius", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } + }, + { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "tags", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "elements": [ + { + "arguments": [ + { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "seg03", + "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": "getNextAdjacentEdge", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name" + }, + "commentStart": 0, + "end": 0, + "start": 0, + "type": "CallExpression", + "type": "CallExpression" + } + ], + "end": 0, + "start": 0, + "type": "ArrayExpression", + "type": "ArrayExpression" + } + } + ], + "callee": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "fillet", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "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": "bracketBody", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } + }, + "start": 0, + "type": "ExpressionStatement", + "type": "ExpressionStatement" + }, + { + "commentStart": 0, + "end": 0, + "expression": { + "arguments": [ + { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "radius", + "start": 0, + "type": "Identifier" + }, + "arg": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "bendRadius", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } + }, + { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "tags", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "elements": [ + { + "arguments": [ + { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "seg06", + "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": "getNextAdjacentEdge", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name" + }, + "commentStart": 0, + "end": 0, + "start": 0, + "type": "CallExpression", + "type": "CallExpression" + } + ], + "end": 0, + "start": 0, + "type": "ArrayExpression", + "type": "ArrayExpression" + } + } + ], + "callee": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "fillet", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "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": "bracketBody", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } + }, + "start": 0, + "type": "ExpressionStatement", + "type": "ExpressionStatement" + }, + { + "commentStart": 0, + "end": 0, + "expression": { + "arguments": [ + { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "radius", + "start": 0, + "type": "Identifier" + }, + "arg": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "filletRadius", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } + }, + { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "tags", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "elements": [ + { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "seg02", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + }, + { + "arguments": [ + { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "seg02", + "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": "getOppositeEdge", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name" + }, + "commentStart": 0, + "end": 0, + "start": 0, + "type": "CallExpression", + "type": "CallExpression" + }, + { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "seg05", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + }, + { + "arguments": [ + { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "seg05", + "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": "getOppositeEdge", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name" + }, + "commentStart": 0, + "end": 0, + "start": 0, + "type": "CallExpression", + "type": "CallExpression" + } + ], + "end": 0, + "start": 0, + "type": "ArrayExpression", + "type": "ArrayExpression" + } + } + ], + "callee": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "fillet", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "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": "bracketBody", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } + }, + "preComments": [ + "", + "", + "// Apply corner fillets" + ], + "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": [ + "// Shelf Bracket", + "// This is a bracket that holds a shelf. It is made of aluminum and is designed to hold a force of 300 lbs. The bracket is 6 inches wide and the force is applied at the end of the shelf, 12 inches from the wall. The bracket has a factor of safety of 1.2. The legs of the bracket are 5 inches and 2 inches long. The thickness of the bracket is calculated from the constraints provided.", + "", + "", + "// 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": "in", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } + } + ], + "start": 0, + "type": "Annotation" + } + ], "nonCodeMeta": { "nonCodeNodes": { "0": [ @@ -2730,19 +3654,6 @@ description: Result of parsing bracket.kcl } } ], - "1": [ - { - "commentStart": 0, - "end": 0, - "start": 0, - "type": "NonCodeNode", - "value": { - "type": "inlineComment", - "value": "inch", - "style": "line" - } - } - ], "2": [ { "commentStart": 0, @@ -2764,33 +3675,7 @@ description: Result of parsing bracket.kcl "type": "NonCodeNode", "value": { "type": "inlineComment", - "value": "FOS of 1.2", - "style": "line" - } - } - ], - "4": [ - { - "commentStart": 0, - "end": 0, - "start": 0, - "type": "NonCodeNode", - "value": { - "type": "inlineComment", - "value": "inches", - "style": "line" - } - } - ], - "5": [ - { - "commentStart": 0, - "end": 0, - "start": 0, - "type": "NonCodeNode", - "value": { - "type": "inlineComment", - "value": "inches", + "value": "Factor of safety of 1.2", "style": "line" } } @@ -2803,12 +3688,12 @@ description: Result of parsing bracket.kcl "type": "NonCodeNode", "value": { "type": "inlineComment", - "value": "Shelf is 12 inches in depth from the wall", + "value": "Shelf is 12 inches deep from the wall", "style": "line" } } ], - "7": [ + "9": [ { "commentStart": 0, "end": 0, @@ -2816,21 +3701,12 @@ description: Result of parsing bracket.kcl "type": "NonCodeNode", "value": { "type": "inlineComment", - "value": "assume the force is applied at the end of the shelf to be conservative (lb-in)", + "value": "assume the force is applied at the end of the shelf", "style": "line" } - }, - { - "commentStart": 0, - "end": 0, - "start": 0, - "type": "NonCodeNode", - "value": { - "type": "newLine" - } } ], - "8": [ + "10": [ { "commentStart": 0, "end": 0, @@ -2838,55 +3714,23 @@ description: Result of parsing bracket.kcl "type": "NonCodeNode", "value": { "type": "inlineComment", - "value": "this is the calculation of two brackets holding up the shelf (inches)", + "value": "required thickness for two brackets to hold up the shelf", "style": "line" } - }, - { - "commentStart": 0, - "end": 0, - "start": 0, - "type": "NonCodeNode", - "value": { - "type": "newLine" - } - } - ], - "11": [ - { - "commentStart": 0, - "end": 0, - "start": 0, - "type": "NonCodeNode", - "value": { - "type": "newLine" - } - } - ], - "12": [ - { - "commentStart": 0, - "end": 0, - "start": 0, - "type": "NonCodeNode", - "value": { - "type": "newLine" - } - } - ], - "13": [ - { - "commentStart": 0, - "end": 0, - "start": 0, - "type": "NonCodeNode", - "value": { - "type": "newLine" - } } ] }, - "startNodes": [] + "startNodes": [ + { + "commentStart": 0, + "end": 0, + "start": 0, + "type": "NonCodeNode", + "value": { + "type": "newLine" + } + } + ] }, "start": 0 } diff --git a/rust/kcl-lib/tests/kcl_samples/bracket/ops.snap b/rust/kcl-lib/tests/kcl_samples/bracket/ops.snap index 36d9da380..b0862683b 100644 --- a/rust/kcl-lib/tests/kcl_samples/bracket/ops.snap +++ b/rust/kcl-lib/tests/kcl_samples/bracket/ops.snap @@ -23,11 +23,11 @@ description: Operations executed bracket.kcl "length": { "value": { "type": "Number", - "value": 6.0, + "value": 5.0, "ty": { "type": "Default", "len": { - "type": "Mm" + "type": "Inches" }, "angle": { "type": "Degrees" @@ -50,186 +50,6 @@ description: Operations executed bracket.kcl "sourceRange": [] } }, - { - "labeledArgs": { - "radius": { - "value": { - "type": "Number", - "value": 0.601324026261472, - "ty": { - "type": "Unknown" - } - }, - "sourceRange": [] - }, - "tags": { - "value": { - "type": "Array", - "value": [ - { - "type": "Uuid", - "value": "[uuid]" - } - ] - }, - "sourceRange": [] - } - }, - "name": "fillet", - "sourceRange": [], - "type": "StdLibCall", - "unlabeledArg": { - "value": { - "type": "Solid", - "value": { - "artifactId": "[uuid]" - } - }, - "sourceRange": [] - } - }, - { - "labeledArgs": { - "radius": { - "value": { - "type": "Number", - "value": 0.25, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } - }, - "sourceRange": [] - }, - "tags": { - "value": { - "type": "Array", - "value": [ - { - "type": "Uuid", - "value": "[uuid]" - } - ] - }, - "sourceRange": [] - } - }, - "name": "fillet", - "sourceRange": [], - "type": "StdLibCall", - "unlabeledArg": { - "value": { - "type": "Solid", - "value": { - "artifactId": "[uuid]" - } - }, - "sourceRange": [] - } - }, - { - "labeledArgs": { - "radius": { - "value": { - "type": "Number", - "value": 0.25, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } - }, - "sourceRange": [] - }, - "tags": { - "value": { - "type": "Array", - "value": [ - { - "type": "TagIdentifier", - "value": "seg02", - "artifact_id": "[uuid]" - }, - { - "type": "Uuid", - "value": "[uuid]" - } - ] - }, - "sourceRange": [] - } - }, - "name": "fillet", - "sourceRange": [], - "type": "StdLibCall", - "unlabeledArg": { - "value": { - "type": "Solid", - "value": { - "artifactId": "[uuid]" - } - }, - "sourceRange": [] - } - }, - { - "labeledArgs": { - "radius": { - "value": { - "type": "Number", - "value": 0.25, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } - }, - "sourceRange": [] - }, - "tags": { - "value": { - "type": "Array", - "value": [ - { - "type": "TagIdentifier", - "value": "seg05", - "artifact_id": "[uuid]" - }, - { - "type": "Uuid", - "value": "[uuid]" - } - ] - }, - "sourceRange": [] - } - }, - "name": "fillet", - "sourceRange": [], - "type": "StdLibCall", - "unlabeledArg": { - "value": { - "type": "Solid", - "value": { - "artifactId": "[uuid]" - } - }, - "sourceRange": [] - } - }, { "labeledArgs": { "data": { @@ -260,7 +80,7 @@ description: Operations executed bracket.kcl "length": { "value": { "type": "Number", - "value": -0.361324026261472, + "value": -0.39485618835389114, "ty": { "type": "Unknown" } @@ -334,7 +154,7 @@ description: Operations executed bracket.kcl "length": { "value": { "type": "Number", - "value": -0.45132402626147194, + "value": -0.4848561883538911, "ty": { "type": "Unknown" } @@ -365,5 +185,145 @@ description: Operations executed bracket.kcl }, "sourceRange": [] } + }, + { + "labeledArgs": { + "radius": { + "value": { + "type": "Number", + "value": 0.6348561883538911, + "ty": { + "type": "Unknown" + } + }, + "sourceRange": [] + }, + "tags": { + "value": { + "type": "Array", + "value": [ + { + "type": "Uuid", + "value": "[uuid]" + } + ] + }, + "sourceRange": [] + } + }, + "name": "fillet", + "sourceRange": [], + "type": "StdLibCall", + "unlabeledArg": { + "value": { + "type": "Solid", + "value": { + "artifactId": "[uuid]" + } + }, + "sourceRange": [] + } + }, + { + "labeledArgs": { + "radius": { + "value": { + "type": "Number", + "value": 0.25, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + "sourceRange": [] + }, + "tags": { + "value": { + "type": "Array", + "value": [ + { + "type": "Uuid", + "value": "[uuid]" + } + ] + }, + "sourceRange": [] + } + }, + "name": "fillet", + "sourceRange": [], + "type": "StdLibCall", + "unlabeledArg": { + "value": { + "type": "Solid", + "value": { + "artifactId": "[uuid]" + } + }, + "sourceRange": [] + } + }, + { + "labeledArgs": { + "radius": { + "value": { + "type": "Number", + "value": 0.5, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + "sourceRange": [] + }, + "tags": { + "value": { + "type": "Array", + "value": [ + { + "type": "TagIdentifier", + "value": "seg02", + "artifact_id": "[uuid]" + }, + { + "type": "Uuid", + "value": "[uuid]" + }, + { + "type": "TagIdentifier", + "value": "seg05", + "artifact_id": "[uuid]" + }, + { + "type": "Uuid", + "value": "[uuid]" + } + ] + }, + "sourceRange": [] + } + }, + "name": "fillet", + "sourceRange": [], + "type": "StdLibCall", + "unlabeledArg": { + "value": { + "type": "Solid", + "value": { + "artifactId": "[uuid]" + } + }, + "sourceRange": [] + } } ] diff --git a/rust/kcl-lib/tests/kcl_samples/bracket/program_memory.snap b/rust/kcl-lib/tests/kcl_samples/bracket/program_memory.snap index c1852f33d..39ba66236 100644 --- a/rust/kcl-lib/tests/kcl_samples/bracket/program_memory.snap +++ b/rust/kcl-lib/tests/kcl_samples/bracket/program_memory.snap @@ -3,33 +3,393 @@ source: kcl-lib/src/simulation_tests.rs description: Variables in memory after executing bracket.kcl --- { - "extFilletRadius": { + "bendRadius": { "type": "Number", - "value": 0.6013, - "ty": { - "type": "Unknown" - } - }, - "factorOfSafety": { - "type": "Number", - "value": 1.2, + "value": 0.25, "ty": { "type": "Default", "len": { - "type": "Mm" + "type": "Inches" }, "angle": { "type": "Degrees" } } }, + "bracketBody": { + "type": "Solid", + "value": { + "type": "Solid", + "id": "[uuid]", + "artifactId": "[uuid]", + "value": [ + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [], + "tag": { + "commentStart": 2083, + "end": 2089, + "start": 2083, + "type": "TagDeclarator", + "value": "seg01" + }, + "type": "extrudePlane" + }, + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [], + "tag": { + "commentStart": 2128, + "end": 2134, + "start": 2128, + "type": "TagDeclarator", + "value": "seg02" + }, + "type": "extrudePlane" + }, + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [], + "tag": { + "commentStart": 2181, + "end": 2187, + "start": 2181, + "type": "TagDeclarator", + "value": "seg03" + }, + "type": "extrudePlane" + }, + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [], + "tag": { + "commentStart": 2233, + "end": 2239, + "start": 2233, + "type": "TagDeclarator", + "value": "seg04" + }, + "type": "extrudePlane" + }, + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [], + "tag": { + "commentStart": 2278, + "end": 2284, + "start": 2278, + "type": "TagDeclarator", + "value": "seg05" + }, + "type": "extrudePlane" + }, + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [], + "tag": { + "commentStart": 2354, + "end": 2360, + "start": 2354, + "type": "TagDeclarator", + "value": "seg06" + }, + "type": "extrudePlane" + } + ], + "sketch": { + "type": "Sketch", + "id": "[uuid]", + "paths": [ + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [] + }, + "from": [ + 0.0, + 0.0 + ], + "tag": { + "commentStart": 2083, + "end": 2089, + "start": 2083, + "type": "TagDeclarator", + "value": "seg01" + }, + "to": [ + 4.6151, + 0.0 + ], + "type": "ToPoint", + "units": { + "type": "Inches" + } + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [] + }, + "from": [ + 4.6151, + 0.0 + ], + "tag": { + "commentStart": 2128, + "end": 2134, + "start": 2128, + "type": "TagDeclarator", + "value": "seg02" + }, + "to": [ + 4.6151, + 0.3849 + ], + "type": "ToPoint", + "units": { + "type": "Inches" + } + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [] + }, + "from": [ + 4.6151, + 0.3849 + ], + "tag": { + "commentStart": 2181, + "end": 2187, + "start": 2181, + "type": "TagDeclarator", + "value": "seg03" + }, + "to": [ + -0.3849, + 0.3849 + ], + "type": "ToPoint", + "units": { + "type": "Inches" + } + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [] + }, + "from": [ + -0.3849, + 0.3849 + ], + "tag": { + "commentStart": 2233, + "end": 2239, + "start": 2233, + "type": "TagDeclarator", + "value": "seg04" + }, + "to": [ + -0.3849, + -1.8651 + ], + "type": "ToPoint", + "units": { + "type": "Inches" + } + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [] + }, + "from": [ + -0.3849, + -1.8651 + ], + "tag": { + "commentStart": 2278, + "end": 2284, + "start": 2278, + "type": "TagDeclarator", + "value": "seg05" + }, + "to": [ + 0.0, + -1.8651 + ], + "type": "ToPoint", + "units": { + "type": "Inches" + } + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [] + }, + "from": [ + 0.0, + -1.8651 + ], + "tag": { + "commentStart": 2354, + "end": 2360, + "start": 2354, + "type": "TagDeclarator", + "value": "seg06" + }, + "to": [ + 0.0, + 0.0 + ], + "type": "ToPoint", + "units": { + "type": "Inches" + } + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [] + }, + "from": [ + 0.0, + 0.0 + ], + "tag": null, + "to": [ + 0.0, + 0.0 + ], + "type": "ToPoint", + "units": { + "type": "Inches" + } + } + ], + "on": { + "type": "plane", + "id": "[uuid]", + "artifactId": "[uuid]", + "value": "XZ", + "origin": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "xAxis": { + "x": 1.0, + "y": 0.0, + "z": 0.0 + }, + "yAxis": { + "x": 0.0, + "y": 0.0, + "z": 1.0 + }, + "zAxis": { + "x": 0.0, + "y": -1.0, + "z": 0.0 + }, + "units": { + "type": "Inches" + } + }, + "start": { + "from": [ + 0.0, + 0.0 + ], + "to": [ + 0.0, + 0.0 + ], + "units": { + "type": "Inches" + }, + "tag": null, + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [] + } + }, + "tags": { + "seg01": { + "type": "TagIdentifier", + "value": "seg01" + }, + "seg02": { + "type": "TagIdentifier", + "value": "seg02" + }, + "seg03": { + "type": "TagIdentifier", + "value": "seg03" + }, + "seg04": { + "type": "TagIdentifier", + "value": "seg04" + }, + "seg05": { + "type": "TagIdentifier", + "value": "seg05" + }, + "seg06": { + "type": "TagIdentifier", + "value": "seg06" + } + }, + "artifactId": "[uuid]", + "originalId": "[uuid]", + "units": { + "type": "Inches" + } + }, + "height": 5.0, + "startCapId": "[uuid]", + "endCapId": "[uuid]", + "units": { + "type": "Inches" + } + } + }, + "extBendRadius": { + "type": "Number", + "value": 0.6349, + "ty": { + "type": "Unknown" + } + }, "filletRadius": { "type": "Number", - "value": 0.25, + "value": 0.5, "ty": { "type": "Default", "len": { - "type": "Mm" + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + "fos": { + "type": "Number", + "value": 1.2, + "ty": { + "type": "Default", + "len": { + "type": "Inches" }, "angle": { "type": "Degrees" @@ -42,20 +402,7 @@ description: Variables in memory after executing bracket.kcl "ty": { "type": "Default", "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } - }, - "mountingHoleDiameter": { - "type": "Number", - "value": 0.5, - "ty": { - "type": "Default", - "len": { - "type": "Mm" + "type": "Inches" }, "angle": { "type": "Degrees" @@ -68,7 +415,7 @@ description: Variables in memory after executing bracket.kcl "ty": { "type": "Default", "len": { - "type": "Mm" + "type": "Inches" }, "angle": { "type": "Degrees" @@ -111,3401 +458,2798 @@ description: Variables in memory after executing bracket.kcl "ty": { "type": "Default", "len": { - "type": "Mm" + "type": "Inches" }, "angle": { "type": "Degrees" } } }, - "shelfMountL": { + "shelfMountLength": { "type": "Number", "value": 5.0, "ty": { "type": "Default", "len": { - "type": "Mm" + "type": "Inches" }, "angle": { "type": "Degrees" } } }, + "shelfMountingHoleDiameter": { + "type": "Number", + "value": 0.5, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + "shelfMountingHolePlacementOffset": { + "type": "Number", + "value": 0.75, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + "shelfMountingHoles": { + "type": "HomArray", + "value": [ + { + "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": [ + -1.0, + 0.75 + ], + "from": [ + -0.75, + 0.75 + ], + "radius": 0.25, + "tag": null, + "to": [ + -0.75, + 0.75 + ], + "type": "Circle", + "units": { + "type": "Inches" + } + } + ], + "on": { + "type": "face", + "id": "[uuid]", + "artifactId": "[uuid]", + "value": "seg03", + "xAxis": { + "x": 1.0, + "y": 0.0, + "z": 0.0 + }, + "yAxis": { + "x": 0.0, + "y": 0.0, + "z": 1.0 + }, + "zAxis": { + "x": 0.0, + "y": -1.0, + "z": 0.0 + }, + "solid": { + "type": "Solid", + "id": "[uuid]", + "artifactId": "[uuid]", + "value": [ + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [], + "tag": { + "commentStart": 2083, + "end": 2089, + "start": 2083, + "type": "TagDeclarator", + "value": "seg01" + }, + "type": "extrudePlane" + }, + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [], + "tag": { + "commentStart": 2128, + "end": 2134, + "start": 2128, + "type": "TagDeclarator", + "value": "seg02" + }, + "type": "extrudePlane" + }, + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [], + "tag": { + "commentStart": 2181, + "end": 2187, + "start": 2181, + "type": "TagDeclarator", + "value": "seg03" + }, + "type": "extrudePlane" + }, + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [], + "tag": { + "commentStart": 2233, + "end": 2239, + "start": 2233, + "type": "TagDeclarator", + "value": "seg04" + }, + "type": "extrudePlane" + }, + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [], + "tag": { + "commentStart": 2278, + "end": 2284, + "start": 2278, + "type": "TagDeclarator", + "value": "seg05" + }, + "type": "extrudePlane" + }, + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [], + "tag": { + "commentStart": 2354, + "end": 2360, + "start": 2354, + "type": "TagDeclarator", + "value": "seg06" + }, + "type": "extrudePlane" + } + ], + "sketch": { + "type": "Sketch", + "id": "[uuid]", + "paths": [ + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [] + }, + "from": [ + 0.0, + 0.0 + ], + "tag": { + "commentStart": 2083, + "end": 2089, + "start": 2083, + "type": "TagDeclarator", + "value": "seg01" + }, + "to": [ + 4.6151, + 0.0 + ], + "type": "ToPoint", + "units": { + "type": "Inches" + } + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [] + }, + "from": [ + 4.6151, + 0.0 + ], + "tag": { + "commentStart": 2128, + "end": 2134, + "start": 2128, + "type": "TagDeclarator", + "value": "seg02" + }, + "to": [ + 4.6151, + 0.3849 + ], + "type": "ToPoint", + "units": { + "type": "Inches" + } + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [] + }, + "from": [ + 4.6151, + 0.3849 + ], + "tag": { + "commentStart": 2181, + "end": 2187, + "start": 2181, + "type": "TagDeclarator", + "value": "seg03" + }, + "to": [ + -0.3849, + 0.3849 + ], + "type": "ToPoint", + "units": { + "type": "Inches" + } + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [] + }, + "from": [ + -0.3849, + 0.3849 + ], + "tag": { + "commentStart": 2233, + "end": 2239, + "start": 2233, + "type": "TagDeclarator", + "value": "seg04" + }, + "to": [ + -0.3849, + -1.8651 + ], + "type": "ToPoint", + "units": { + "type": "Inches" + } + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [] + }, + "from": [ + -0.3849, + -1.8651 + ], + "tag": { + "commentStart": 2278, + "end": 2284, + "start": 2278, + "type": "TagDeclarator", + "value": "seg05" + }, + "to": [ + 0.0, + -1.8651 + ], + "type": "ToPoint", + "units": { + "type": "Inches" + } + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [] + }, + "from": [ + 0.0, + -1.8651 + ], + "tag": { + "commentStart": 2354, + "end": 2360, + "start": 2354, + "type": "TagDeclarator", + "value": "seg06" + }, + "to": [ + 0.0, + 0.0 + ], + "type": "ToPoint", + "units": { + "type": "Inches" + } + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [] + }, + "from": [ + 0.0, + 0.0 + ], + "tag": null, + "to": [ + 0.0, + 0.0 + ], + "type": "ToPoint", + "units": { + "type": "Inches" + } + } + ], + "on": { + "type": "plane", + "id": "[uuid]", + "artifactId": "[uuid]", + "value": "XZ", + "origin": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "xAxis": { + "x": 1.0, + "y": 0.0, + "z": 0.0 + }, + "yAxis": { + "x": 0.0, + "y": 0.0, + "z": 1.0 + }, + "zAxis": { + "x": 0.0, + "y": -1.0, + "z": 0.0 + }, + "units": { + "type": "Inches" + } + }, + "start": { + "from": [ + 0.0, + 0.0 + ], + "to": [ + 0.0, + 0.0 + ], + "units": { + "type": "Inches" + }, + "tag": null, + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [] + } + }, + "tags": { + "seg01": { + "type": "TagIdentifier", + "value": "seg01" + }, + "seg02": { + "type": "TagIdentifier", + "value": "seg02" + }, + "seg03": { + "type": "TagIdentifier", + "value": "seg03" + }, + "seg04": { + "type": "TagIdentifier", + "value": "seg04" + }, + "seg05": { + "type": "TagIdentifier", + "value": "seg05" + }, + "seg06": { + "type": "TagIdentifier", + "value": "seg06" + } + }, + "artifactId": "[uuid]", + "originalId": "[uuid]", + "units": { + "type": "Inches" + } + }, + "height": 5.0, + "startCapId": "[uuid]", + "endCapId": "[uuid]", + "units": { + "type": "Inches" + } + }, + "units": { + "type": "Inches" + } + }, + "start": { + "from": [ + -0.75, + 0.75 + ], + "to": [ + -0.75, + 0.75 + ], + "units": { + "type": "Inches" + }, + "tag": null, + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [] + } + }, + "artifactId": "[uuid]", + "originalId": "[uuid]", + "units": { + "type": "Inches" + } + }, + "height": -0.39485618835389114, + "startCapId": null, + "endCapId": null, + "units": { + "type": "Inches" + } + } + }, + { + "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": [ + -1.0, + 0.75 + ], + "from": [ + -0.75, + 0.75 + ], + "radius": 0.25, + "tag": null, + "to": [ + -0.75, + 0.75 + ], + "type": "Circle", + "units": { + "type": "Inches" + } + } + ], + "on": { + "type": "face", + "id": "[uuid]", + "artifactId": "[uuid]", + "value": "seg03", + "xAxis": { + "x": 1.0, + "y": 0.0, + "z": 0.0 + }, + "yAxis": { + "x": 0.0, + "y": 0.0, + "z": 1.0 + }, + "zAxis": { + "x": 0.0, + "y": -1.0, + "z": 0.0 + }, + "solid": { + "type": "Solid", + "id": "[uuid]", + "artifactId": "[uuid]", + "value": [ + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [], + "tag": { + "commentStart": 2083, + "end": 2089, + "start": 2083, + "type": "TagDeclarator", + "value": "seg01" + }, + "type": "extrudePlane" + }, + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [], + "tag": { + "commentStart": 2128, + "end": 2134, + "start": 2128, + "type": "TagDeclarator", + "value": "seg02" + }, + "type": "extrudePlane" + }, + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [], + "tag": { + "commentStart": 2181, + "end": 2187, + "start": 2181, + "type": "TagDeclarator", + "value": "seg03" + }, + "type": "extrudePlane" + }, + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [], + "tag": { + "commentStart": 2233, + "end": 2239, + "start": 2233, + "type": "TagDeclarator", + "value": "seg04" + }, + "type": "extrudePlane" + }, + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [], + "tag": { + "commentStart": 2278, + "end": 2284, + "start": 2278, + "type": "TagDeclarator", + "value": "seg05" + }, + "type": "extrudePlane" + }, + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [], + "tag": { + "commentStart": 2354, + "end": 2360, + "start": 2354, + "type": "TagDeclarator", + "value": "seg06" + }, + "type": "extrudePlane" + } + ], + "sketch": { + "type": "Sketch", + "id": "[uuid]", + "paths": [ + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [] + }, + "from": [ + 0.0, + 0.0 + ], + "tag": { + "commentStart": 2083, + "end": 2089, + "start": 2083, + "type": "TagDeclarator", + "value": "seg01" + }, + "to": [ + 4.6151, + 0.0 + ], + "type": "ToPoint", + "units": { + "type": "Inches" + } + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [] + }, + "from": [ + 4.6151, + 0.0 + ], + "tag": { + "commentStart": 2128, + "end": 2134, + "start": 2128, + "type": "TagDeclarator", + "value": "seg02" + }, + "to": [ + 4.6151, + 0.3849 + ], + "type": "ToPoint", + "units": { + "type": "Inches" + } + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [] + }, + "from": [ + 4.6151, + 0.3849 + ], + "tag": { + "commentStart": 2181, + "end": 2187, + "start": 2181, + "type": "TagDeclarator", + "value": "seg03" + }, + "to": [ + -0.3849, + 0.3849 + ], + "type": "ToPoint", + "units": { + "type": "Inches" + } + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [] + }, + "from": [ + -0.3849, + 0.3849 + ], + "tag": { + "commentStart": 2233, + "end": 2239, + "start": 2233, + "type": "TagDeclarator", + "value": "seg04" + }, + "to": [ + -0.3849, + -1.8651 + ], + "type": "ToPoint", + "units": { + "type": "Inches" + } + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [] + }, + "from": [ + -0.3849, + -1.8651 + ], + "tag": { + "commentStart": 2278, + "end": 2284, + "start": 2278, + "type": "TagDeclarator", + "value": "seg05" + }, + "to": [ + 0.0, + -1.8651 + ], + "type": "ToPoint", + "units": { + "type": "Inches" + } + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [] + }, + "from": [ + 0.0, + -1.8651 + ], + "tag": { + "commentStart": 2354, + "end": 2360, + "start": 2354, + "type": "TagDeclarator", + "value": "seg06" + }, + "to": [ + 0.0, + 0.0 + ], + "type": "ToPoint", + "units": { + "type": "Inches" + } + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [] + }, + "from": [ + 0.0, + 0.0 + ], + "tag": null, + "to": [ + 0.0, + 0.0 + ], + "type": "ToPoint", + "units": { + "type": "Inches" + } + } + ], + "on": { + "type": "plane", + "id": "[uuid]", + "artifactId": "[uuid]", + "value": "XZ", + "origin": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "xAxis": { + "x": 1.0, + "y": 0.0, + "z": 0.0 + }, + "yAxis": { + "x": 0.0, + "y": 0.0, + "z": 1.0 + }, + "zAxis": { + "x": 0.0, + "y": -1.0, + "z": 0.0 + }, + "units": { + "type": "Inches" + } + }, + "start": { + "from": [ + 0.0, + 0.0 + ], + "to": [ + 0.0, + 0.0 + ], + "units": { + "type": "Inches" + }, + "tag": null, + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [] + } + }, + "tags": { + "seg01": { + "type": "TagIdentifier", + "value": "seg01" + }, + "seg02": { + "type": "TagIdentifier", + "value": "seg02" + }, + "seg03": { + "type": "TagIdentifier", + "value": "seg03" + }, + "seg04": { + "type": "TagIdentifier", + "value": "seg04" + }, + "seg05": { + "type": "TagIdentifier", + "value": "seg05" + }, + "seg06": { + "type": "TagIdentifier", + "value": "seg06" + } + }, + "artifactId": "[uuid]", + "originalId": "[uuid]", + "units": { + "type": "Inches" + } + }, + "height": 5.0, + "startCapId": "[uuid]", + "endCapId": "[uuid]", + "units": { + "type": "Inches" + } + }, + "units": { + "type": "Inches" + } + }, + "start": { + "from": [ + -0.75, + 0.75 + ], + "to": [ + -0.75, + 0.75 + ], + "units": { + "type": "Inches" + }, + "tag": null, + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [] + } + }, + "artifactId": "[uuid]", + "originalId": "[uuid]", + "units": { + "type": "Inches" + } + }, + "height": -0.39485618835389114, + "startCapId": null, + "endCapId": null, + "units": { + "type": "Inches" + } + } + }, + { + "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": [ + -1.0, + 0.75 + ], + "from": [ + -0.75, + 0.75 + ], + "radius": 0.25, + "tag": null, + "to": [ + -0.75, + 0.75 + ], + "type": "Circle", + "units": { + "type": "Inches" + } + } + ], + "on": { + "type": "face", + "id": "[uuid]", + "artifactId": "[uuid]", + "value": "seg03", + "xAxis": { + "x": 1.0, + "y": 0.0, + "z": 0.0 + }, + "yAxis": { + "x": 0.0, + "y": 0.0, + "z": 1.0 + }, + "zAxis": { + "x": 0.0, + "y": -1.0, + "z": 0.0 + }, + "solid": { + "type": "Solid", + "id": "[uuid]", + "artifactId": "[uuid]", + "value": [ + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [], + "tag": { + "commentStart": 2083, + "end": 2089, + "start": 2083, + "type": "TagDeclarator", + "value": "seg01" + }, + "type": "extrudePlane" + }, + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [], + "tag": { + "commentStart": 2128, + "end": 2134, + "start": 2128, + "type": "TagDeclarator", + "value": "seg02" + }, + "type": "extrudePlane" + }, + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [], + "tag": { + "commentStart": 2181, + "end": 2187, + "start": 2181, + "type": "TagDeclarator", + "value": "seg03" + }, + "type": "extrudePlane" + }, + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [], + "tag": { + "commentStart": 2233, + "end": 2239, + "start": 2233, + "type": "TagDeclarator", + "value": "seg04" + }, + "type": "extrudePlane" + }, + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [], + "tag": { + "commentStart": 2278, + "end": 2284, + "start": 2278, + "type": "TagDeclarator", + "value": "seg05" + }, + "type": "extrudePlane" + }, + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [], + "tag": { + "commentStart": 2354, + "end": 2360, + "start": 2354, + "type": "TagDeclarator", + "value": "seg06" + }, + "type": "extrudePlane" + } + ], + "sketch": { + "type": "Sketch", + "id": "[uuid]", + "paths": [ + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [] + }, + "from": [ + 0.0, + 0.0 + ], + "tag": { + "commentStart": 2083, + "end": 2089, + "start": 2083, + "type": "TagDeclarator", + "value": "seg01" + }, + "to": [ + 4.6151, + 0.0 + ], + "type": "ToPoint", + "units": { + "type": "Inches" + } + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [] + }, + "from": [ + 4.6151, + 0.0 + ], + "tag": { + "commentStart": 2128, + "end": 2134, + "start": 2128, + "type": "TagDeclarator", + "value": "seg02" + }, + "to": [ + 4.6151, + 0.3849 + ], + "type": "ToPoint", + "units": { + "type": "Inches" + } + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [] + }, + "from": [ + 4.6151, + 0.3849 + ], + "tag": { + "commentStart": 2181, + "end": 2187, + "start": 2181, + "type": "TagDeclarator", + "value": "seg03" + }, + "to": [ + -0.3849, + 0.3849 + ], + "type": "ToPoint", + "units": { + "type": "Inches" + } + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [] + }, + "from": [ + -0.3849, + 0.3849 + ], + "tag": { + "commentStart": 2233, + "end": 2239, + "start": 2233, + "type": "TagDeclarator", + "value": "seg04" + }, + "to": [ + -0.3849, + -1.8651 + ], + "type": "ToPoint", + "units": { + "type": "Inches" + } + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [] + }, + "from": [ + -0.3849, + -1.8651 + ], + "tag": { + "commentStart": 2278, + "end": 2284, + "start": 2278, + "type": "TagDeclarator", + "value": "seg05" + }, + "to": [ + 0.0, + -1.8651 + ], + "type": "ToPoint", + "units": { + "type": "Inches" + } + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [] + }, + "from": [ + 0.0, + -1.8651 + ], + "tag": { + "commentStart": 2354, + "end": 2360, + "start": 2354, + "type": "TagDeclarator", + "value": "seg06" + }, + "to": [ + 0.0, + 0.0 + ], + "type": "ToPoint", + "units": { + "type": "Inches" + } + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [] + }, + "from": [ + 0.0, + 0.0 + ], + "tag": null, + "to": [ + 0.0, + 0.0 + ], + "type": "ToPoint", + "units": { + "type": "Inches" + } + } + ], + "on": { + "type": "plane", + "id": "[uuid]", + "artifactId": "[uuid]", + "value": "XZ", + "origin": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "xAxis": { + "x": 1.0, + "y": 0.0, + "z": 0.0 + }, + "yAxis": { + "x": 0.0, + "y": 0.0, + "z": 1.0 + }, + "zAxis": { + "x": 0.0, + "y": -1.0, + "z": 0.0 + }, + "units": { + "type": "Inches" + } + }, + "start": { + "from": [ + 0.0, + 0.0 + ], + "to": [ + 0.0, + 0.0 + ], + "units": { + "type": "Inches" + }, + "tag": null, + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [] + } + }, + "tags": { + "seg01": { + "type": "TagIdentifier", + "value": "seg01" + }, + "seg02": { + "type": "TagIdentifier", + "value": "seg02" + }, + "seg03": { + "type": "TagIdentifier", + "value": "seg03" + }, + "seg04": { + "type": "TagIdentifier", + "value": "seg04" + }, + "seg05": { + "type": "TagIdentifier", + "value": "seg05" + }, + "seg06": { + "type": "TagIdentifier", + "value": "seg06" + } + }, + "artifactId": "[uuid]", + "originalId": "[uuid]", + "units": { + "type": "Inches" + } + }, + "height": 5.0, + "startCapId": "[uuid]", + "endCapId": "[uuid]", + "units": { + "type": "Inches" + } + }, + "units": { + "type": "Inches" + } + }, + "start": { + "from": [ + -0.75, + 0.75 + ], + "to": [ + -0.75, + 0.75 + ], + "units": { + "type": "Inches" + }, + "tag": null, + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [] + } + }, + "artifactId": "[uuid]", + "originalId": "[uuid]", + "units": { + "type": "Inches" + } + }, + "height": -0.39485618835389114, + "startCapId": null, + "endCapId": null, + "units": { + "type": "Inches" + } + } + }, + { + "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": [ + -1.0, + 0.75 + ], + "from": [ + -0.75, + 0.75 + ], + "radius": 0.25, + "tag": null, + "to": [ + -0.75, + 0.75 + ], + "type": "Circle", + "units": { + "type": "Inches" + } + } + ], + "on": { + "type": "face", + "id": "[uuid]", + "artifactId": "[uuid]", + "value": "seg03", + "xAxis": { + "x": 1.0, + "y": 0.0, + "z": 0.0 + }, + "yAxis": { + "x": 0.0, + "y": 0.0, + "z": 1.0 + }, + "zAxis": { + "x": 0.0, + "y": -1.0, + "z": 0.0 + }, + "solid": { + "type": "Solid", + "id": "[uuid]", + "artifactId": "[uuid]", + "value": [ + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [], + "tag": { + "commentStart": 2083, + "end": 2089, + "start": 2083, + "type": "TagDeclarator", + "value": "seg01" + }, + "type": "extrudePlane" + }, + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [], + "tag": { + "commentStart": 2128, + "end": 2134, + "start": 2128, + "type": "TagDeclarator", + "value": "seg02" + }, + "type": "extrudePlane" + }, + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [], + "tag": { + "commentStart": 2181, + "end": 2187, + "start": 2181, + "type": "TagDeclarator", + "value": "seg03" + }, + "type": "extrudePlane" + }, + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [], + "tag": { + "commentStart": 2233, + "end": 2239, + "start": 2233, + "type": "TagDeclarator", + "value": "seg04" + }, + "type": "extrudePlane" + }, + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [], + "tag": { + "commentStart": 2278, + "end": 2284, + "start": 2278, + "type": "TagDeclarator", + "value": "seg05" + }, + "type": "extrudePlane" + }, + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [], + "tag": { + "commentStart": 2354, + "end": 2360, + "start": 2354, + "type": "TagDeclarator", + "value": "seg06" + }, + "type": "extrudePlane" + } + ], + "sketch": { + "type": "Sketch", + "id": "[uuid]", + "paths": [ + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [] + }, + "from": [ + 0.0, + 0.0 + ], + "tag": { + "commentStart": 2083, + "end": 2089, + "start": 2083, + "type": "TagDeclarator", + "value": "seg01" + }, + "to": [ + 4.6151, + 0.0 + ], + "type": "ToPoint", + "units": { + "type": "Inches" + } + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [] + }, + "from": [ + 4.6151, + 0.0 + ], + "tag": { + "commentStart": 2128, + "end": 2134, + "start": 2128, + "type": "TagDeclarator", + "value": "seg02" + }, + "to": [ + 4.6151, + 0.3849 + ], + "type": "ToPoint", + "units": { + "type": "Inches" + } + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [] + }, + "from": [ + 4.6151, + 0.3849 + ], + "tag": { + "commentStart": 2181, + "end": 2187, + "start": 2181, + "type": "TagDeclarator", + "value": "seg03" + }, + "to": [ + -0.3849, + 0.3849 + ], + "type": "ToPoint", + "units": { + "type": "Inches" + } + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [] + }, + "from": [ + -0.3849, + 0.3849 + ], + "tag": { + "commentStart": 2233, + "end": 2239, + "start": 2233, + "type": "TagDeclarator", + "value": "seg04" + }, + "to": [ + -0.3849, + -1.8651 + ], + "type": "ToPoint", + "units": { + "type": "Inches" + } + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [] + }, + "from": [ + -0.3849, + -1.8651 + ], + "tag": { + "commentStart": 2278, + "end": 2284, + "start": 2278, + "type": "TagDeclarator", + "value": "seg05" + }, + "to": [ + 0.0, + -1.8651 + ], + "type": "ToPoint", + "units": { + "type": "Inches" + } + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [] + }, + "from": [ + 0.0, + -1.8651 + ], + "tag": { + "commentStart": 2354, + "end": 2360, + "start": 2354, + "type": "TagDeclarator", + "value": "seg06" + }, + "to": [ + 0.0, + 0.0 + ], + "type": "ToPoint", + "units": { + "type": "Inches" + } + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [] + }, + "from": [ + 0.0, + 0.0 + ], + "tag": null, + "to": [ + 0.0, + 0.0 + ], + "type": "ToPoint", + "units": { + "type": "Inches" + } + } + ], + "on": { + "type": "plane", + "id": "[uuid]", + "artifactId": "[uuid]", + "value": "XZ", + "origin": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "xAxis": { + "x": 1.0, + "y": 0.0, + "z": 0.0 + }, + "yAxis": { + "x": 0.0, + "y": 0.0, + "z": 1.0 + }, + "zAxis": { + "x": 0.0, + "y": -1.0, + "z": 0.0 + }, + "units": { + "type": "Inches" + } + }, + "start": { + "from": [ + 0.0, + 0.0 + ], + "to": [ + 0.0, + 0.0 + ], + "units": { + "type": "Inches" + }, + "tag": null, + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [] + } + }, + "tags": { + "seg01": { + "type": "TagIdentifier", + "value": "seg01" + }, + "seg02": { + "type": "TagIdentifier", + "value": "seg02" + }, + "seg03": { + "type": "TagIdentifier", + "value": "seg03" + }, + "seg04": { + "type": "TagIdentifier", + "value": "seg04" + }, + "seg05": { + "type": "TagIdentifier", + "value": "seg05" + }, + "seg06": { + "type": "TagIdentifier", + "value": "seg06" + } + }, + "artifactId": "[uuid]", + "originalId": "[uuid]", + "units": { + "type": "Inches" + } + }, + "height": 5.0, + "startCapId": "[uuid]", + "endCapId": "[uuid]", + "units": { + "type": "Inches" + } + }, + "units": { + "type": "Inches" + } + }, + "start": { + "from": [ + -0.75, + 0.75 + ], + "to": [ + -0.75, + 0.75 + ], + "units": { + "type": "Inches" + }, + "tag": null, + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [] + } + }, + "artifactId": "[uuid]", + "originalId": "[uuid]", + "units": { + "type": "Inches" + } + }, + "height": -0.39485618835389114, + "startCapId": null, + "endCapId": null, + "units": { + "type": "Inches" + } + } + } + ] + }, "sigmaAllow": { "type": "Number", "value": 35000.0, "ty": { "type": "Default", "len": { - "type": "Mm" + "type": "Inches" }, "angle": { "type": "Degrees" } } }, - "sketch001": { - "type": "Solid", - "value": { - "type": "Solid", - "id": "[uuid]", - "artifactId": "[uuid]", - "value": [ - { - "faceId": "[uuid]", - "id": "[uuid]", - "sourceRange": [], - "tag": { - "commentStart": 1162, - "end": 1168, - "start": 1162, - "type": "TagDeclarator", - "value": "seg01" - }, - "type": "extrudePlane" - }, - { - "faceId": "[uuid]", - "id": "[uuid]", - "sourceRange": [], - "tag": { - "commentStart": 1207, - "end": 1213, - "start": 1207, - "type": "TagDeclarator", - "value": "seg02" - }, - "type": "extrudePlane" - }, - { - "faceId": "[uuid]", - "id": "[uuid]", - "sourceRange": [], - "tag": { - "commentStart": 1255, - "end": 1261, - "start": 1255, - "type": "TagDeclarator", - "value": "seg03" - }, - "type": "extrudePlane" - }, - { - "faceId": "[uuid]", - "id": "[uuid]", - "sourceRange": [], - "tag": { - "commentStart": 1302, - "end": 1308, - "start": 1302, - "type": "TagDeclarator", - "value": "seg04" - }, - "type": "extrudePlane" - }, - { - "faceId": "[uuid]", - "id": "[uuid]", - "sourceRange": [], - "tag": { - "commentStart": 1347, - "end": 1353, - "start": 1347, - "type": "TagDeclarator", - "value": "seg05" - }, - "type": "extrudePlane" - }, - { - "faceId": "[uuid]", - "id": "[uuid]", - "sourceRange": [], - "tag": { - "commentStart": 1423, - "end": 1429, - "start": 1423, - "type": "TagDeclarator", - "value": "seg06" - }, - "type": "extrudePlane" - } - ], - "sketch": { - "type": "Sketch", - "id": "[uuid]", - "paths": [ - { - "__geoMeta": { - "id": "[uuid]", - "sourceRange": [] - }, - "from": [ - 0.0, - 0.0 - ], - "tag": { - "commentStart": 1162, - "end": 1168, - "start": 1162, - "type": "TagDeclarator", - "value": "seg01" - }, - "to": [ - 4.6487, - 0.0 - ], - "type": "ToPoint", - "units": { - "type": "Mm" - } - }, - { - "__geoMeta": { - "id": "[uuid]", - "sourceRange": [] - }, - "from": [ - 4.6487, - 0.0 - ], - "tag": { - "commentStart": 1207, - "end": 1213, - "start": 1207, - "type": "TagDeclarator", - "value": "seg02" - }, - "to": [ - 4.6487, - 0.3513 - ], - "type": "ToPoint", - "units": { - "type": "Mm" - } - }, - { - "__geoMeta": { - "id": "[uuid]", - "sourceRange": [] - }, - "from": [ - 4.6487, - 0.3513 - ], - "tag": { - "commentStart": 1255, - "end": 1261, - "start": 1255, - "type": "TagDeclarator", - "value": "seg03" - }, - "to": [ - -0.3513, - 0.3513 - ], - "type": "ToPoint", - "units": { - "type": "Mm" - } - }, - { - "__geoMeta": { - "id": "[uuid]", - "sourceRange": [] - }, - "from": [ - -0.3513, - 0.3513 - ], - "tag": { - "commentStart": 1302, - "end": 1308, - "start": 1302, - "type": "TagDeclarator", - "value": "seg04" - }, - "to": [ - -0.3513, - -1.6487 - ], - "type": "ToPoint", - "units": { - "type": "Mm" - } - }, - { - "__geoMeta": { - "id": "[uuid]", - "sourceRange": [] - }, - "from": [ - -0.3513, - -1.6487 - ], - "tag": { - "commentStart": 1347, - "end": 1353, - "start": 1347, - "type": "TagDeclarator", - "value": "seg05" - }, - "to": [ - -0.0, - -1.6487 - ], - "type": "ToPoint", - "units": { - "type": "Mm" - } - }, - { - "__geoMeta": { - "id": "[uuid]", - "sourceRange": [] - }, - "from": [ - -0.0, - -1.6487 - ], - "tag": { - "commentStart": 1423, - "end": 1429, - "start": 1423, - "type": "TagDeclarator", - "value": "seg06" - }, - "to": [ - 0.0, - 0.0 - ], - "type": "ToPoint", - "units": { - "type": "Mm" - } - }, - { - "__geoMeta": { - "id": "[uuid]", - "sourceRange": [] - }, - "from": [ - 0.0, - 0.0 - ], - "tag": null, - "to": [ - 0.0, - 0.0 - ], - "type": "ToPoint", - "units": { - "type": "Mm" - } - } - ], - "on": { - "type": "plane", - "id": "[uuid]", - "artifactId": "[uuid]", - "value": "XZ", - "origin": { - "x": 0.0, - "y": 0.0, - "z": 0.0 - }, - "xAxis": { - "x": 1.0, - "y": 0.0, - "z": 0.0 - }, - "yAxis": { - "x": 0.0, - "y": 0.0, - "z": 1.0 - }, - "zAxis": { - "x": 0.0, - "y": -1.0, - "z": 0.0 - }, - "units": { - "type": "Mm" - } - }, - "start": { - "from": [ - 0.0, - 0.0 - ], - "to": [ - 0.0, - 0.0 - ], - "units": { - "type": "Mm" - }, - "tag": null, - "__geoMeta": { - "id": "[uuid]", - "sourceRange": [] - } - }, - "tags": { - "seg01": { - "type": "TagIdentifier", - "value": "seg01" - }, - "seg02": { - "type": "TagIdentifier", - "value": "seg02" - }, - "seg03": { - "type": "TagIdentifier", - "value": "seg03" - }, - "seg04": { - "type": "TagIdentifier", - "value": "seg04" - }, - "seg05": { - "type": "TagIdentifier", - "value": "seg05" - }, - "seg06": { - "type": "TagIdentifier", - "value": "seg06" - } - }, - "artifactId": "[uuid]", - "originalId": "[uuid]", - "units": { - "type": "Mm" - } - }, - "height": 6.0, - "startCapId": "[uuid]", - "endCapId": "[uuid]", - "edgeCuts": [ - { - "type": "fillet", - "id": "[uuid]", - "radius": 0.601324026261472, - "edgeId": "[uuid]", - "tag": null - }, - { - "type": "fillet", - "id": "[uuid]", - "radius": 0.25, - "edgeId": "[uuid]", - "tag": null - }, - { - "type": "fillet", - "id": "[uuid]", - "radius": 0.25, - "edgeId": "[uuid]", - "tag": null - }, - { - "type": "fillet", - "id": "[uuid]", - "radius": 0.25, - "edgeId": "[uuid]", - "tag": null - }, - { - "type": "fillet", - "id": "[uuid]", - "radius": 0.25, - "edgeId": "[uuid]", - "tag": null - }, - { - "type": "fillet", - "id": "[uuid]", - "radius": 0.25, - "edgeId": "[uuid]", - "tag": null - } - ], - "units": { - "type": "Mm" - } - } - }, - "sketch002": { - "type": "HomArray", - "value": [ - { - "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": [ - -1.25, - 1.0 - ], - "from": [ - -1.0, - 1.0 - ], - "radius": 0.25, - "tag": null, - "to": [ - -1.0, - 1.0 - ], - "type": "Circle", - "units": { - "type": "Mm" - } - } - ], - "on": { - "type": "face", - "id": "[uuid]", - "artifactId": "[uuid]", - "value": "seg03", - "xAxis": { - "x": 1.0, - "y": 0.0, - "z": 0.0 - }, - "yAxis": { - "x": 0.0, - "y": 0.0, - "z": 1.0 - }, - "zAxis": { - "x": 0.0, - "y": -1.0, - "z": 0.0 - }, - "solid": { - "type": "Solid", - "id": "[uuid]", - "artifactId": "[uuid]", - "value": [ - { - "faceId": "[uuid]", - "id": "[uuid]", - "sourceRange": [], - "tag": { - "commentStart": 1162, - "end": 1168, - "start": 1162, - "type": "TagDeclarator", - "value": "seg01" - }, - "type": "extrudePlane" - }, - { - "faceId": "[uuid]", - "id": "[uuid]", - "sourceRange": [], - "tag": { - "commentStart": 1207, - "end": 1213, - "start": 1207, - "type": "TagDeclarator", - "value": "seg02" - }, - "type": "extrudePlane" - }, - { - "faceId": "[uuid]", - "id": "[uuid]", - "sourceRange": [], - "tag": { - "commentStart": 1255, - "end": 1261, - "start": 1255, - "type": "TagDeclarator", - "value": "seg03" - }, - "type": "extrudePlane" - }, - { - "faceId": "[uuid]", - "id": "[uuid]", - "sourceRange": [], - "tag": { - "commentStart": 1302, - "end": 1308, - "start": 1302, - "type": "TagDeclarator", - "value": "seg04" - }, - "type": "extrudePlane" - }, - { - "faceId": "[uuid]", - "id": "[uuid]", - "sourceRange": [], - "tag": { - "commentStart": 1347, - "end": 1353, - "start": 1347, - "type": "TagDeclarator", - "value": "seg05" - }, - "type": "extrudePlane" - }, - { - "faceId": "[uuid]", - "id": "[uuid]", - "sourceRange": [], - "tag": { - "commentStart": 1423, - "end": 1429, - "start": 1423, - "type": "TagDeclarator", - "value": "seg06" - }, - "type": "extrudePlane" - } - ], - "sketch": { - "type": "Sketch", - "id": "[uuid]", - "paths": [ - { - "__geoMeta": { - "id": "[uuid]", - "sourceRange": [] - }, - "from": [ - 0.0, - 0.0 - ], - "tag": { - "commentStart": 1162, - "end": 1168, - "start": 1162, - "type": "TagDeclarator", - "value": "seg01" - }, - "to": [ - 4.6487, - 0.0 - ], - "type": "ToPoint", - "units": { - "type": "Mm" - } - }, - { - "__geoMeta": { - "id": "[uuid]", - "sourceRange": [] - }, - "from": [ - 4.6487, - 0.0 - ], - "tag": { - "commentStart": 1207, - "end": 1213, - "start": 1207, - "type": "TagDeclarator", - "value": "seg02" - }, - "to": [ - 4.6487, - 0.3513 - ], - "type": "ToPoint", - "units": { - "type": "Mm" - } - }, - { - "__geoMeta": { - "id": "[uuid]", - "sourceRange": [] - }, - "from": [ - 4.6487, - 0.3513 - ], - "tag": { - "commentStart": 1255, - "end": 1261, - "start": 1255, - "type": "TagDeclarator", - "value": "seg03" - }, - "to": [ - -0.3513, - 0.3513 - ], - "type": "ToPoint", - "units": { - "type": "Mm" - } - }, - { - "__geoMeta": { - "id": "[uuid]", - "sourceRange": [] - }, - "from": [ - -0.3513, - 0.3513 - ], - "tag": { - "commentStart": 1302, - "end": 1308, - "start": 1302, - "type": "TagDeclarator", - "value": "seg04" - }, - "to": [ - -0.3513, - -1.6487 - ], - "type": "ToPoint", - "units": { - "type": "Mm" - } - }, - { - "__geoMeta": { - "id": "[uuid]", - "sourceRange": [] - }, - "from": [ - -0.3513, - -1.6487 - ], - "tag": { - "commentStart": 1347, - "end": 1353, - "start": 1347, - "type": "TagDeclarator", - "value": "seg05" - }, - "to": [ - -0.0, - -1.6487 - ], - "type": "ToPoint", - "units": { - "type": "Mm" - } - }, - { - "__geoMeta": { - "id": "[uuid]", - "sourceRange": [] - }, - "from": [ - -0.0, - -1.6487 - ], - "tag": { - "commentStart": 1423, - "end": 1429, - "start": 1423, - "type": "TagDeclarator", - "value": "seg06" - }, - "to": [ - 0.0, - 0.0 - ], - "type": "ToPoint", - "units": { - "type": "Mm" - } - }, - { - "__geoMeta": { - "id": "[uuid]", - "sourceRange": [] - }, - "from": [ - 0.0, - 0.0 - ], - "tag": null, - "to": [ - 0.0, - 0.0 - ], - "type": "ToPoint", - "units": { - "type": "Mm" - } - } - ], - "on": { - "type": "plane", - "id": "[uuid]", - "artifactId": "[uuid]", - "value": "XZ", - "origin": { - "x": 0.0, - "y": 0.0, - "z": 0.0 - }, - "xAxis": { - "x": 1.0, - "y": 0.0, - "z": 0.0 - }, - "yAxis": { - "x": 0.0, - "y": 0.0, - "z": 1.0 - }, - "zAxis": { - "x": 0.0, - "y": -1.0, - "z": 0.0 - }, - "units": { - "type": "Mm" - } - }, - "start": { - "from": [ - 0.0, - 0.0 - ], - "to": [ - 0.0, - 0.0 - ], - "units": { - "type": "Mm" - }, - "tag": null, - "__geoMeta": { - "id": "[uuid]", - "sourceRange": [] - } - }, - "tags": { - "seg01": { - "type": "TagIdentifier", - "value": "seg01" - }, - "seg02": { - "type": "TagIdentifier", - "value": "seg02" - }, - "seg03": { - "type": "TagIdentifier", - "value": "seg03" - }, - "seg04": { - "type": "TagIdentifier", - "value": "seg04" - }, - "seg05": { - "type": "TagIdentifier", - "value": "seg05" - }, - "seg06": { - "type": "TagIdentifier", - "value": "seg06" - } - }, - "artifactId": "[uuid]", - "originalId": "[uuid]", - "units": { - "type": "Mm" - } - }, - "height": 6.0, - "startCapId": "[uuid]", - "endCapId": "[uuid]", - "edgeCuts": [ - { - "type": "fillet", - "id": "[uuid]", - "radius": 0.601324026261472, - "edgeId": "[uuid]", - "tag": null - }, - { - "type": "fillet", - "id": "[uuid]", - "radius": 0.25, - "edgeId": "[uuid]", - "tag": null - }, - { - "type": "fillet", - "id": "[uuid]", - "radius": 0.25, - "edgeId": "[uuid]", - "tag": null - }, - { - "type": "fillet", - "id": "[uuid]", - "radius": 0.25, - "edgeId": "[uuid]", - "tag": null - }, - { - "type": "fillet", - "id": "[uuid]", - "radius": 0.25, - "edgeId": "[uuid]", - "tag": null - }, - { - "type": "fillet", - "id": "[uuid]", - "radius": 0.25, - "edgeId": "[uuid]", - "tag": null - } - ], - "units": { - "type": "Mm" - } - }, - "units": { - "type": "Mm" - } - }, - "start": { - "from": [ - -1.0, - 1.0 - ], - "to": [ - -1.0, - 1.0 - ], - "units": { - "type": "Mm" - }, - "tag": null, - "__geoMeta": { - "id": "[uuid]", - "sourceRange": [] - } - }, - "artifactId": "[uuid]", - "originalId": "[uuid]", - "units": { - "type": "Mm" - } - }, - "height": -0.361324026261472, - "startCapId": null, - "endCapId": null, - "units": { - "type": "Mm" - } - } - }, - { - "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": [ - -1.25, - 1.0 - ], - "from": [ - -1.0, - 1.0 - ], - "radius": 0.25, - "tag": null, - "to": [ - -1.0, - 1.0 - ], - "type": "Circle", - "units": { - "type": "Mm" - } - } - ], - "on": { - "type": "face", - "id": "[uuid]", - "artifactId": "[uuid]", - "value": "seg03", - "xAxis": { - "x": 1.0, - "y": 0.0, - "z": 0.0 - }, - "yAxis": { - "x": 0.0, - "y": 0.0, - "z": 1.0 - }, - "zAxis": { - "x": 0.0, - "y": -1.0, - "z": 0.0 - }, - "solid": { - "type": "Solid", - "id": "[uuid]", - "artifactId": "[uuid]", - "value": [ - { - "faceId": "[uuid]", - "id": "[uuid]", - "sourceRange": [], - "tag": { - "commentStart": 1162, - "end": 1168, - "start": 1162, - "type": "TagDeclarator", - "value": "seg01" - }, - "type": "extrudePlane" - }, - { - "faceId": "[uuid]", - "id": "[uuid]", - "sourceRange": [], - "tag": { - "commentStart": 1207, - "end": 1213, - "start": 1207, - "type": "TagDeclarator", - "value": "seg02" - }, - "type": "extrudePlane" - }, - { - "faceId": "[uuid]", - "id": "[uuid]", - "sourceRange": [], - "tag": { - "commentStart": 1255, - "end": 1261, - "start": 1255, - "type": "TagDeclarator", - "value": "seg03" - }, - "type": "extrudePlane" - }, - { - "faceId": "[uuid]", - "id": "[uuid]", - "sourceRange": [], - "tag": { - "commentStart": 1302, - "end": 1308, - "start": 1302, - "type": "TagDeclarator", - "value": "seg04" - }, - "type": "extrudePlane" - }, - { - "faceId": "[uuid]", - "id": "[uuid]", - "sourceRange": [], - "tag": { - "commentStart": 1347, - "end": 1353, - "start": 1347, - "type": "TagDeclarator", - "value": "seg05" - }, - "type": "extrudePlane" - }, - { - "faceId": "[uuid]", - "id": "[uuid]", - "sourceRange": [], - "tag": { - "commentStart": 1423, - "end": 1429, - "start": 1423, - "type": "TagDeclarator", - "value": "seg06" - }, - "type": "extrudePlane" - } - ], - "sketch": { - "type": "Sketch", - "id": "[uuid]", - "paths": [ - { - "__geoMeta": { - "id": "[uuid]", - "sourceRange": [] - }, - "from": [ - 0.0, - 0.0 - ], - "tag": { - "commentStart": 1162, - "end": 1168, - "start": 1162, - "type": "TagDeclarator", - "value": "seg01" - }, - "to": [ - 4.6487, - 0.0 - ], - "type": "ToPoint", - "units": { - "type": "Mm" - } - }, - { - "__geoMeta": { - "id": "[uuid]", - "sourceRange": [] - }, - "from": [ - 4.6487, - 0.0 - ], - "tag": { - "commentStart": 1207, - "end": 1213, - "start": 1207, - "type": "TagDeclarator", - "value": "seg02" - }, - "to": [ - 4.6487, - 0.3513 - ], - "type": "ToPoint", - "units": { - "type": "Mm" - } - }, - { - "__geoMeta": { - "id": "[uuid]", - "sourceRange": [] - }, - "from": [ - 4.6487, - 0.3513 - ], - "tag": { - "commentStart": 1255, - "end": 1261, - "start": 1255, - "type": "TagDeclarator", - "value": "seg03" - }, - "to": [ - -0.3513, - 0.3513 - ], - "type": "ToPoint", - "units": { - "type": "Mm" - } - }, - { - "__geoMeta": { - "id": "[uuid]", - "sourceRange": [] - }, - "from": [ - -0.3513, - 0.3513 - ], - "tag": { - "commentStart": 1302, - "end": 1308, - "start": 1302, - "type": "TagDeclarator", - "value": "seg04" - }, - "to": [ - -0.3513, - -1.6487 - ], - "type": "ToPoint", - "units": { - "type": "Mm" - } - }, - { - "__geoMeta": { - "id": "[uuid]", - "sourceRange": [] - }, - "from": [ - -0.3513, - -1.6487 - ], - "tag": { - "commentStart": 1347, - "end": 1353, - "start": 1347, - "type": "TagDeclarator", - "value": "seg05" - }, - "to": [ - -0.0, - -1.6487 - ], - "type": "ToPoint", - "units": { - "type": "Mm" - } - }, - { - "__geoMeta": { - "id": "[uuid]", - "sourceRange": [] - }, - "from": [ - -0.0, - -1.6487 - ], - "tag": { - "commentStart": 1423, - "end": 1429, - "start": 1423, - "type": "TagDeclarator", - "value": "seg06" - }, - "to": [ - 0.0, - 0.0 - ], - "type": "ToPoint", - "units": { - "type": "Mm" - } - }, - { - "__geoMeta": { - "id": "[uuid]", - "sourceRange": [] - }, - "from": [ - 0.0, - 0.0 - ], - "tag": null, - "to": [ - 0.0, - 0.0 - ], - "type": "ToPoint", - "units": { - "type": "Mm" - } - } - ], - "on": { - "type": "plane", - "id": "[uuid]", - "artifactId": "[uuid]", - "value": "XZ", - "origin": { - "x": 0.0, - "y": 0.0, - "z": 0.0 - }, - "xAxis": { - "x": 1.0, - "y": 0.0, - "z": 0.0 - }, - "yAxis": { - "x": 0.0, - "y": 0.0, - "z": 1.0 - }, - "zAxis": { - "x": 0.0, - "y": -1.0, - "z": 0.0 - }, - "units": { - "type": "Mm" - } - }, - "start": { - "from": [ - 0.0, - 0.0 - ], - "to": [ - 0.0, - 0.0 - ], - "units": { - "type": "Mm" - }, - "tag": null, - "__geoMeta": { - "id": "[uuid]", - "sourceRange": [] - } - }, - "tags": { - "seg01": { - "type": "TagIdentifier", - "value": "seg01" - }, - "seg02": { - "type": "TagIdentifier", - "value": "seg02" - }, - "seg03": { - "type": "TagIdentifier", - "value": "seg03" - }, - "seg04": { - "type": "TagIdentifier", - "value": "seg04" - }, - "seg05": { - "type": "TagIdentifier", - "value": "seg05" - }, - "seg06": { - "type": "TagIdentifier", - "value": "seg06" - } - }, - "artifactId": "[uuid]", - "originalId": "[uuid]", - "units": { - "type": "Mm" - } - }, - "height": 6.0, - "startCapId": "[uuid]", - "endCapId": "[uuid]", - "edgeCuts": [ - { - "type": "fillet", - "id": "[uuid]", - "radius": 0.601324026261472, - "edgeId": "[uuid]", - "tag": null - }, - { - "type": "fillet", - "id": "[uuid]", - "radius": 0.25, - "edgeId": "[uuid]", - "tag": null - }, - { - "type": "fillet", - "id": "[uuid]", - "radius": 0.25, - "edgeId": "[uuid]", - "tag": null - }, - { - "type": "fillet", - "id": "[uuid]", - "radius": 0.25, - "edgeId": "[uuid]", - "tag": null - }, - { - "type": "fillet", - "id": "[uuid]", - "radius": 0.25, - "edgeId": "[uuid]", - "tag": null - }, - { - "type": "fillet", - "id": "[uuid]", - "radius": 0.25, - "edgeId": "[uuid]", - "tag": null - } - ], - "units": { - "type": "Mm" - } - }, - "units": { - "type": "Mm" - } - }, - "start": { - "from": [ - -1.0, - 1.0 - ], - "to": [ - -1.0, - 1.0 - ], - "units": { - "type": "Mm" - }, - "tag": null, - "__geoMeta": { - "id": "[uuid]", - "sourceRange": [] - } - }, - "artifactId": "[uuid]", - "originalId": "[uuid]", - "units": { - "type": "Mm" - } - }, - "height": -0.361324026261472, - "startCapId": null, - "endCapId": null, - "units": { - "type": "Mm" - } - } - }, - { - "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": [ - -1.25, - 1.0 - ], - "from": [ - -1.0, - 1.0 - ], - "radius": 0.25, - "tag": null, - "to": [ - -1.0, - 1.0 - ], - "type": "Circle", - "units": { - "type": "Mm" - } - } - ], - "on": { - "type": "face", - "id": "[uuid]", - "artifactId": "[uuid]", - "value": "seg03", - "xAxis": { - "x": 1.0, - "y": 0.0, - "z": 0.0 - }, - "yAxis": { - "x": 0.0, - "y": 0.0, - "z": 1.0 - }, - "zAxis": { - "x": 0.0, - "y": -1.0, - "z": 0.0 - }, - "solid": { - "type": "Solid", - "id": "[uuid]", - "artifactId": "[uuid]", - "value": [ - { - "faceId": "[uuid]", - "id": "[uuid]", - "sourceRange": [], - "tag": { - "commentStart": 1162, - "end": 1168, - "start": 1162, - "type": "TagDeclarator", - "value": "seg01" - }, - "type": "extrudePlane" - }, - { - "faceId": "[uuid]", - "id": "[uuid]", - "sourceRange": [], - "tag": { - "commentStart": 1207, - "end": 1213, - "start": 1207, - "type": "TagDeclarator", - "value": "seg02" - }, - "type": "extrudePlane" - }, - { - "faceId": "[uuid]", - "id": "[uuid]", - "sourceRange": [], - "tag": { - "commentStart": 1255, - "end": 1261, - "start": 1255, - "type": "TagDeclarator", - "value": "seg03" - }, - "type": "extrudePlane" - }, - { - "faceId": "[uuid]", - "id": "[uuid]", - "sourceRange": [], - "tag": { - "commentStart": 1302, - "end": 1308, - "start": 1302, - "type": "TagDeclarator", - "value": "seg04" - }, - "type": "extrudePlane" - }, - { - "faceId": "[uuid]", - "id": "[uuid]", - "sourceRange": [], - "tag": { - "commentStart": 1347, - "end": 1353, - "start": 1347, - "type": "TagDeclarator", - "value": "seg05" - }, - "type": "extrudePlane" - }, - { - "faceId": "[uuid]", - "id": "[uuid]", - "sourceRange": [], - "tag": { - "commentStart": 1423, - "end": 1429, - "start": 1423, - "type": "TagDeclarator", - "value": "seg06" - }, - "type": "extrudePlane" - } - ], - "sketch": { - "type": "Sketch", - "id": "[uuid]", - "paths": [ - { - "__geoMeta": { - "id": "[uuid]", - "sourceRange": [] - }, - "from": [ - 0.0, - 0.0 - ], - "tag": { - "commentStart": 1162, - "end": 1168, - "start": 1162, - "type": "TagDeclarator", - "value": "seg01" - }, - "to": [ - 4.6487, - 0.0 - ], - "type": "ToPoint", - "units": { - "type": "Mm" - } - }, - { - "__geoMeta": { - "id": "[uuid]", - "sourceRange": [] - }, - "from": [ - 4.6487, - 0.0 - ], - "tag": { - "commentStart": 1207, - "end": 1213, - "start": 1207, - "type": "TagDeclarator", - "value": "seg02" - }, - "to": [ - 4.6487, - 0.3513 - ], - "type": "ToPoint", - "units": { - "type": "Mm" - } - }, - { - "__geoMeta": { - "id": "[uuid]", - "sourceRange": [] - }, - "from": [ - 4.6487, - 0.3513 - ], - "tag": { - "commentStart": 1255, - "end": 1261, - "start": 1255, - "type": "TagDeclarator", - "value": "seg03" - }, - "to": [ - -0.3513, - 0.3513 - ], - "type": "ToPoint", - "units": { - "type": "Mm" - } - }, - { - "__geoMeta": { - "id": "[uuid]", - "sourceRange": [] - }, - "from": [ - -0.3513, - 0.3513 - ], - "tag": { - "commentStart": 1302, - "end": 1308, - "start": 1302, - "type": "TagDeclarator", - "value": "seg04" - }, - "to": [ - -0.3513, - -1.6487 - ], - "type": "ToPoint", - "units": { - "type": "Mm" - } - }, - { - "__geoMeta": { - "id": "[uuid]", - "sourceRange": [] - }, - "from": [ - -0.3513, - -1.6487 - ], - "tag": { - "commentStart": 1347, - "end": 1353, - "start": 1347, - "type": "TagDeclarator", - "value": "seg05" - }, - "to": [ - -0.0, - -1.6487 - ], - "type": "ToPoint", - "units": { - "type": "Mm" - } - }, - { - "__geoMeta": { - "id": "[uuid]", - "sourceRange": [] - }, - "from": [ - -0.0, - -1.6487 - ], - "tag": { - "commentStart": 1423, - "end": 1429, - "start": 1423, - "type": "TagDeclarator", - "value": "seg06" - }, - "to": [ - 0.0, - 0.0 - ], - "type": "ToPoint", - "units": { - "type": "Mm" - } - }, - { - "__geoMeta": { - "id": "[uuid]", - "sourceRange": [] - }, - "from": [ - 0.0, - 0.0 - ], - "tag": null, - "to": [ - 0.0, - 0.0 - ], - "type": "ToPoint", - "units": { - "type": "Mm" - } - } - ], - "on": { - "type": "plane", - "id": "[uuid]", - "artifactId": "[uuid]", - "value": "XZ", - "origin": { - "x": 0.0, - "y": 0.0, - "z": 0.0 - }, - "xAxis": { - "x": 1.0, - "y": 0.0, - "z": 0.0 - }, - "yAxis": { - "x": 0.0, - "y": 0.0, - "z": 1.0 - }, - "zAxis": { - "x": 0.0, - "y": -1.0, - "z": 0.0 - }, - "units": { - "type": "Mm" - } - }, - "start": { - "from": [ - 0.0, - 0.0 - ], - "to": [ - 0.0, - 0.0 - ], - "units": { - "type": "Mm" - }, - "tag": null, - "__geoMeta": { - "id": "[uuid]", - "sourceRange": [] - } - }, - "tags": { - "seg01": { - "type": "TagIdentifier", - "value": "seg01" - }, - "seg02": { - "type": "TagIdentifier", - "value": "seg02" - }, - "seg03": { - "type": "TagIdentifier", - "value": "seg03" - }, - "seg04": { - "type": "TagIdentifier", - "value": "seg04" - }, - "seg05": { - "type": "TagIdentifier", - "value": "seg05" - }, - "seg06": { - "type": "TagIdentifier", - "value": "seg06" - } - }, - "artifactId": "[uuid]", - "originalId": "[uuid]", - "units": { - "type": "Mm" - } - }, - "height": 6.0, - "startCapId": "[uuid]", - "endCapId": "[uuid]", - "edgeCuts": [ - { - "type": "fillet", - "id": "[uuid]", - "radius": 0.601324026261472, - "edgeId": "[uuid]", - "tag": null - }, - { - "type": "fillet", - "id": "[uuid]", - "radius": 0.25, - "edgeId": "[uuid]", - "tag": null - }, - { - "type": "fillet", - "id": "[uuid]", - "radius": 0.25, - "edgeId": "[uuid]", - "tag": null - }, - { - "type": "fillet", - "id": "[uuid]", - "radius": 0.25, - "edgeId": "[uuid]", - "tag": null - }, - { - "type": "fillet", - "id": "[uuid]", - "radius": 0.25, - "edgeId": "[uuid]", - "tag": null - }, - { - "type": "fillet", - "id": "[uuid]", - "radius": 0.25, - "edgeId": "[uuid]", - "tag": null - } - ], - "units": { - "type": "Mm" - } - }, - "units": { - "type": "Mm" - } - }, - "start": { - "from": [ - -1.0, - 1.0 - ], - "to": [ - -1.0, - 1.0 - ], - "units": { - "type": "Mm" - }, - "tag": null, - "__geoMeta": { - "id": "[uuid]", - "sourceRange": [] - } - }, - "artifactId": "[uuid]", - "originalId": "[uuid]", - "units": { - "type": "Mm" - } - }, - "height": -0.361324026261472, - "startCapId": null, - "endCapId": null, - "units": { - "type": "Mm" - } - } - }, - { - "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": [ - -1.25, - 1.0 - ], - "from": [ - -1.0, - 1.0 - ], - "radius": 0.25, - "tag": null, - "to": [ - -1.0, - 1.0 - ], - "type": "Circle", - "units": { - "type": "Mm" - } - } - ], - "on": { - "type": "face", - "id": "[uuid]", - "artifactId": "[uuid]", - "value": "seg03", - "xAxis": { - "x": 1.0, - "y": 0.0, - "z": 0.0 - }, - "yAxis": { - "x": 0.0, - "y": 0.0, - "z": 1.0 - }, - "zAxis": { - "x": 0.0, - "y": -1.0, - "z": 0.0 - }, - "solid": { - "type": "Solid", - "id": "[uuid]", - "artifactId": "[uuid]", - "value": [ - { - "faceId": "[uuid]", - "id": "[uuid]", - "sourceRange": [], - "tag": { - "commentStart": 1162, - "end": 1168, - "start": 1162, - "type": "TagDeclarator", - "value": "seg01" - }, - "type": "extrudePlane" - }, - { - "faceId": "[uuid]", - "id": "[uuid]", - "sourceRange": [], - "tag": { - "commentStart": 1207, - "end": 1213, - "start": 1207, - "type": "TagDeclarator", - "value": "seg02" - }, - "type": "extrudePlane" - }, - { - "faceId": "[uuid]", - "id": "[uuid]", - "sourceRange": [], - "tag": { - "commentStart": 1255, - "end": 1261, - "start": 1255, - "type": "TagDeclarator", - "value": "seg03" - }, - "type": "extrudePlane" - }, - { - "faceId": "[uuid]", - "id": "[uuid]", - "sourceRange": [], - "tag": { - "commentStart": 1302, - "end": 1308, - "start": 1302, - "type": "TagDeclarator", - "value": "seg04" - }, - "type": "extrudePlane" - }, - { - "faceId": "[uuid]", - "id": "[uuid]", - "sourceRange": [], - "tag": { - "commentStart": 1347, - "end": 1353, - "start": 1347, - "type": "TagDeclarator", - "value": "seg05" - }, - "type": "extrudePlane" - }, - { - "faceId": "[uuid]", - "id": "[uuid]", - "sourceRange": [], - "tag": { - "commentStart": 1423, - "end": 1429, - "start": 1423, - "type": "TagDeclarator", - "value": "seg06" - }, - "type": "extrudePlane" - } - ], - "sketch": { - "type": "Sketch", - "id": "[uuid]", - "paths": [ - { - "__geoMeta": { - "id": "[uuid]", - "sourceRange": [] - }, - "from": [ - 0.0, - 0.0 - ], - "tag": { - "commentStart": 1162, - "end": 1168, - "start": 1162, - "type": "TagDeclarator", - "value": "seg01" - }, - "to": [ - 4.6487, - 0.0 - ], - "type": "ToPoint", - "units": { - "type": "Mm" - } - }, - { - "__geoMeta": { - "id": "[uuid]", - "sourceRange": [] - }, - "from": [ - 4.6487, - 0.0 - ], - "tag": { - "commentStart": 1207, - "end": 1213, - "start": 1207, - "type": "TagDeclarator", - "value": "seg02" - }, - "to": [ - 4.6487, - 0.3513 - ], - "type": "ToPoint", - "units": { - "type": "Mm" - } - }, - { - "__geoMeta": { - "id": "[uuid]", - "sourceRange": [] - }, - "from": [ - 4.6487, - 0.3513 - ], - "tag": { - "commentStart": 1255, - "end": 1261, - "start": 1255, - "type": "TagDeclarator", - "value": "seg03" - }, - "to": [ - -0.3513, - 0.3513 - ], - "type": "ToPoint", - "units": { - "type": "Mm" - } - }, - { - "__geoMeta": { - "id": "[uuid]", - "sourceRange": [] - }, - "from": [ - -0.3513, - 0.3513 - ], - "tag": { - "commentStart": 1302, - "end": 1308, - "start": 1302, - "type": "TagDeclarator", - "value": "seg04" - }, - "to": [ - -0.3513, - -1.6487 - ], - "type": "ToPoint", - "units": { - "type": "Mm" - } - }, - { - "__geoMeta": { - "id": "[uuid]", - "sourceRange": [] - }, - "from": [ - -0.3513, - -1.6487 - ], - "tag": { - "commentStart": 1347, - "end": 1353, - "start": 1347, - "type": "TagDeclarator", - "value": "seg05" - }, - "to": [ - -0.0, - -1.6487 - ], - "type": "ToPoint", - "units": { - "type": "Mm" - } - }, - { - "__geoMeta": { - "id": "[uuid]", - "sourceRange": [] - }, - "from": [ - -0.0, - -1.6487 - ], - "tag": { - "commentStart": 1423, - "end": 1429, - "start": 1423, - "type": "TagDeclarator", - "value": "seg06" - }, - "to": [ - 0.0, - 0.0 - ], - "type": "ToPoint", - "units": { - "type": "Mm" - } - }, - { - "__geoMeta": { - "id": "[uuid]", - "sourceRange": [] - }, - "from": [ - 0.0, - 0.0 - ], - "tag": null, - "to": [ - 0.0, - 0.0 - ], - "type": "ToPoint", - "units": { - "type": "Mm" - } - } - ], - "on": { - "type": "plane", - "id": "[uuid]", - "artifactId": "[uuid]", - "value": "XZ", - "origin": { - "x": 0.0, - "y": 0.0, - "z": 0.0 - }, - "xAxis": { - "x": 1.0, - "y": 0.0, - "z": 0.0 - }, - "yAxis": { - "x": 0.0, - "y": 0.0, - "z": 1.0 - }, - "zAxis": { - "x": 0.0, - "y": -1.0, - "z": 0.0 - }, - "units": { - "type": "Mm" - } - }, - "start": { - "from": [ - 0.0, - 0.0 - ], - "to": [ - 0.0, - 0.0 - ], - "units": { - "type": "Mm" - }, - "tag": null, - "__geoMeta": { - "id": "[uuid]", - "sourceRange": [] - } - }, - "tags": { - "seg01": { - "type": "TagIdentifier", - "value": "seg01" - }, - "seg02": { - "type": "TagIdentifier", - "value": "seg02" - }, - "seg03": { - "type": "TagIdentifier", - "value": "seg03" - }, - "seg04": { - "type": "TagIdentifier", - "value": "seg04" - }, - "seg05": { - "type": "TagIdentifier", - "value": "seg05" - }, - "seg06": { - "type": "TagIdentifier", - "value": "seg06" - } - }, - "artifactId": "[uuid]", - "originalId": "[uuid]", - "units": { - "type": "Mm" - } - }, - "height": 6.0, - "startCapId": "[uuid]", - "endCapId": "[uuid]", - "edgeCuts": [ - { - "type": "fillet", - "id": "[uuid]", - "radius": 0.601324026261472, - "edgeId": "[uuid]", - "tag": null - }, - { - "type": "fillet", - "id": "[uuid]", - "radius": 0.25, - "edgeId": "[uuid]", - "tag": null - }, - { - "type": "fillet", - "id": "[uuid]", - "radius": 0.25, - "edgeId": "[uuid]", - "tag": null - }, - { - "type": "fillet", - "id": "[uuid]", - "radius": 0.25, - "edgeId": "[uuid]", - "tag": null - }, - { - "type": "fillet", - "id": "[uuid]", - "radius": 0.25, - "edgeId": "[uuid]", - "tag": null - }, - { - "type": "fillet", - "id": "[uuid]", - "radius": 0.25, - "edgeId": "[uuid]", - "tag": null - } - ], - "units": { - "type": "Mm" - } - }, - "units": { - "type": "Mm" - } - }, - "start": { - "from": [ - -1.0, - 1.0 - ], - "to": [ - -1.0, - 1.0 - ], - "units": { - "type": "Mm" - }, - "tag": null, - "__geoMeta": { - "id": "[uuid]", - "sourceRange": [] - } - }, - "artifactId": "[uuid]", - "originalId": "[uuid]", - "units": { - "type": "Mm" - } - }, - "height": -0.361324026261472, - "startCapId": null, - "endCapId": null, - "units": { - "type": "Mm" - } - } - } - ] - }, - "sketch003": { - "type": "HomArray", - "value": [ - { - "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": [ - 1.0, - -1.0 - ], - "from": [ - 1.25, - -1.0 - ], - "radius": 0.25, - "tag": null, - "to": [ - 1.25, - -1.0 - ], - "type": "Circle", - "units": { - "type": "Mm" - } - } - ], - "on": { - "type": "face", - "id": "[uuid]", - "artifactId": "[uuid]", - "value": "seg04", - "xAxis": { - "x": 1.0, - "y": 0.0, - "z": 0.0 - }, - "yAxis": { - "x": 0.0, - "y": 0.0, - "z": 1.0 - }, - "zAxis": { - "x": 0.0, - "y": -1.0, - "z": 0.0 - }, - "solid": { - "type": "Solid", - "id": "[uuid]", - "artifactId": "[uuid]", - "value": [ - { - "faceId": "[uuid]", - "id": "[uuid]", - "sourceRange": [], - "tag": { - "commentStart": 1162, - "end": 1168, - "start": 1162, - "type": "TagDeclarator", - "value": "seg01" - }, - "type": "extrudePlane" - }, - { - "faceId": "[uuid]", - "id": "[uuid]", - "sourceRange": [], - "tag": { - "commentStart": 1207, - "end": 1213, - "start": 1207, - "type": "TagDeclarator", - "value": "seg02" - }, - "type": "extrudePlane" - }, - { - "faceId": "[uuid]", - "id": "[uuid]", - "sourceRange": [], - "tag": { - "commentStart": 1255, - "end": 1261, - "start": 1255, - "type": "TagDeclarator", - "value": "seg03" - }, - "type": "extrudePlane" - }, - { - "faceId": "[uuid]", - "id": "[uuid]", - "sourceRange": [], - "tag": { - "commentStart": 1302, - "end": 1308, - "start": 1302, - "type": "TagDeclarator", - "value": "seg04" - }, - "type": "extrudePlane" - }, - { - "faceId": "[uuid]", - "id": "[uuid]", - "sourceRange": [], - "tag": { - "commentStart": 1347, - "end": 1353, - "start": 1347, - "type": "TagDeclarator", - "value": "seg05" - }, - "type": "extrudePlane" - }, - { - "faceId": "[uuid]", - "id": "[uuid]", - "sourceRange": [], - "tag": { - "commentStart": 1423, - "end": 1429, - "start": 1423, - "type": "TagDeclarator", - "value": "seg06" - }, - "type": "extrudePlane" - } - ], - "sketch": { - "type": "Sketch", - "id": "[uuid]", - "paths": [ - { - "__geoMeta": { - "id": "[uuid]", - "sourceRange": [] - }, - "from": [ - 0.0, - 0.0 - ], - "tag": { - "commentStart": 1162, - "end": 1168, - "start": 1162, - "type": "TagDeclarator", - "value": "seg01" - }, - "to": [ - 4.6487, - 0.0 - ], - "type": "ToPoint", - "units": { - "type": "Mm" - } - }, - { - "__geoMeta": { - "id": "[uuid]", - "sourceRange": [] - }, - "from": [ - 4.6487, - 0.0 - ], - "tag": { - "commentStart": 1207, - "end": 1213, - "start": 1207, - "type": "TagDeclarator", - "value": "seg02" - }, - "to": [ - 4.6487, - 0.3513 - ], - "type": "ToPoint", - "units": { - "type": "Mm" - } - }, - { - "__geoMeta": { - "id": "[uuid]", - "sourceRange": [] - }, - "from": [ - 4.6487, - 0.3513 - ], - "tag": { - "commentStart": 1255, - "end": 1261, - "start": 1255, - "type": "TagDeclarator", - "value": "seg03" - }, - "to": [ - -0.3513, - 0.3513 - ], - "type": "ToPoint", - "units": { - "type": "Mm" - } - }, - { - "__geoMeta": { - "id": "[uuid]", - "sourceRange": [] - }, - "from": [ - -0.3513, - 0.3513 - ], - "tag": { - "commentStart": 1302, - "end": 1308, - "start": 1302, - "type": "TagDeclarator", - "value": "seg04" - }, - "to": [ - -0.3513, - -1.6487 - ], - "type": "ToPoint", - "units": { - "type": "Mm" - } - }, - { - "__geoMeta": { - "id": "[uuid]", - "sourceRange": [] - }, - "from": [ - -0.3513, - -1.6487 - ], - "tag": { - "commentStart": 1347, - "end": 1353, - "start": 1347, - "type": "TagDeclarator", - "value": "seg05" - }, - "to": [ - -0.0, - -1.6487 - ], - "type": "ToPoint", - "units": { - "type": "Mm" - } - }, - { - "__geoMeta": { - "id": "[uuid]", - "sourceRange": [] - }, - "from": [ - -0.0, - -1.6487 - ], - "tag": { - "commentStart": 1423, - "end": 1429, - "start": 1423, - "type": "TagDeclarator", - "value": "seg06" - }, - "to": [ - 0.0, - 0.0 - ], - "type": "ToPoint", - "units": { - "type": "Mm" - } - }, - { - "__geoMeta": { - "id": "[uuid]", - "sourceRange": [] - }, - "from": [ - 0.0, - 0.0 - ], - "tag": null, - "to": [ - 0.0, - 0.0 - ], - "type": "ToPoint", - "units": { - "type": "Mm" - } - } - ], - "on": { - "type": "plane", - "id": "[uuid]", - "artifactId": "[uuid]", - "value": "XZ", - "origin": { - "x": 0.0, - "y": 0.0, - "z": 0.0 - }, - "xAxis": { - "x": 1.0, - "y": 0.0, - "z": 0.0 - }, - "yAxis": { - "x": 0.0, - "y": 0.0, - "z": 1.0 - }, - "zAxis": { - "x": 0.0, - "y": -1.0, - "z": 0.0 - }, - "units": { - "type": "Mm" - } - }, - "start": { - "from": [ - 0.0, - 0.0 - ], - "to": [ - 0.0, - 0.0 - ], - "units": { - "type": "Mm" - }, - "tag": null, - "__geoMeta": { - "id": "[uuid]", - "sourceRange": [] - } - }, - "tags": { - "seg01": { - "type": "TagIdentifier", - "value": "seg01" - }, - "seg02": { - "type": "TagIdentifier", - "value": "seg02" - }, - "seg03": { - "type": "TagIdentifier", - "value": "seg03" - }, - "seg04": { - "type": "TagIdentifier", - "value": "seg04" - }, - "seg05": { - "type": "TagIdentifier", - "value": "seg05" - }, - "seg06": { - "type": "TagIdentifier", - "value": "seg06" - } - }, - "artifactId": "[uuid]", - "originalId": "[uuid]", - "units": { - "type": "Mm" - } - }, - "height": 6.0, - "startCapId": "[uuid]", - "endCapId": "[uuid]", - "edgeCuts": [ - { - "type": "fillet", - "id": "[uuid]", - "radius": 0.601324026261472, - "edgeId": "[uuid]", - "tag": null - }, - { - "type": "fillet", - "id": "[uuid]", - "radius": 0.25, - "edgeId": "[uuid]", - "tag": null - }, - { - "type": "fillet", - "id": "[uuid]", - "radius": 0.25, - "edgeId": "[uuid]", - "tag": null - }, - { - "type": "fillet", - "id": "[uuid]", - "radius": 0.25, - "edgeId": "[uuid]", - "tag": null - }, - { - "type": "fillet", - "id": "[uuid]", - "radius": 0.25, - "edgeId": "[uuid]", - "tag": null - }, - { - "type": "fillet", - "id": "[uuid]", - "radius": 0.25, - "edgeId": "[uuid]", - "tag": null - } - ], - "units": { - "type": "Mm" - } - }, - "units": { - "type": "Mm" - } - }, - "start": { - "from": [ - 1.25, - -1.0 - ], - "to": [ - 1.25, - -1.0 - ], - "units": { - "type": "Mm" - }, - "tag": null, - "__geoMeta": { - "id": "[uuid]", - "sourceRange": [] - } - }, - "artifactId": "[uuid]", - "originalId": "[uuid]", - "units": { - "type": "Mm" - } - }, - "height": -0.45132402626147194, - "startCapId": null, - "endCapId": null, - "units": { - "type": "Mm" - } - } - }, - { - "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": [ - 1.0, - -1.0 - ], - "from": [ - 1.25, - -1.0 - ], - "radius": 0.25, - "tag": null, - "to": [ - 1.25, - -1.0 - ], - "type": "Circle", - "units": { - "type": "Mm" - } - } - ], - "on": { - "type": "face", - "id": "[uuid]", - "artifactId": "[uuid]", - "value": "seg04", - "xAxis": { - "x": 1.0, - "y": 0.0, - "z": 0.0 - }, - "yAxis": { - "x": 0.0, - "y": 0.0, - "z": 1.0 - }, - "zAxis": { - "x": 0.0, - "y": -1.0, - "z": 0.0 - }, - "solid": { - "type": "Solid", - "id": "[uuid]", - "artifactId": "[uuid]", - "value": [ - { - "faceId": "[uuid]", - "id": "[uuid]", - "sourceRange": [], - "tag": { - "commentStart": 1162, - "end": 1168, - "start": 1162, - "type": "TagDeclarator", - "value": "seg01" - }, - "type": "extrudePlane" - }, - { - "faceId": "[uuid]", - "id": "[uuid]", - "sourceRange": [], - "tag": { - "commentStart": 1207, - "end": 1213, - "start": 1207, - "type": "TagDeclarator", - "value": "seg02" - }, - "type": "extrudePlane" - }, - { - "faceId": "[uuid]", - "id": "[uuid]", - "sourceRange": [], - "tag": { - "commentStart": 1255, - "end": 1261, - "start": 1255, - "type": "TagDeclarator", - "value": "seg03" - }, - "type": "extrudePlane" - }, - { - "faceId": "[uuid]", - "id": "[uuid]", - "sourceRange": [], - "tag": { - "commentStart": 1302, - "end": 1308, - "start": 1302, - "type": "TagDeclarator", - "value": "seg04" - }, - "type": "extrudePlane" - }, - { - "faceId": "[uuid]", - "id": "[uuid]", - "sourceRange": [], - "tag": { - "commentStart": 1347, - "end": 1353, - "start": 1347, - "type": "TagDeclarator", - "value": "seg05" - }, - "type": "extrudePlane" - }, - { - "faceId": "[uuid]", - "id": "[uuid]", - "sourceRange": [], - "tag": { - "commentStart": 1423, - "end": 1429, - "start": 1423, - "type": "TagDeclarator", - "value": "seg06" - }, - "type": "extrudePlane" - } - ], - "sketch": { - "type": "Sketch", - "id": "[uuid]", - "paths": [ - { - "__geoMeta": { - "id": "[uuid]", - "sourceRange": [] - }, - "from": [ - 0.0, - 0.0 - ], - "tag": { - "commentStart": 1162, - "end": 1168, - "start": 1162, - "type": "TagDeclarator", - "value": "seg01" - }, - "to": [ - 4.6487, - 0.0 - ], - "type": "ToPoint", - "units": { - "type": "Mm" - } - }, - { - "__geoMeta": { - "id": "[uuid]", - "sourceRange": [] - }, - "from": [ - 4.6487, - 0.0 - ], - "tag": { - "commentStart": 1207, - "end": 1213, - "start": 1207, - "type": "TagDeclarator", - "value": "seg02" - }, - "to": [ - 4.6487, - 0.3513 - ], - "type": "ToPoint", - "units": { - "type": "Mm" - } - }, - { - "__geoMeta": { - "id": "[uuid]", - "sourceRange": [] - }, - "from": [ - 4.6487, - 0.3513 - ], - "tag": { - "commentStart": 1255, - "end": 1261, - "start": 1255, - "type": "TagDeclarator", - "value": "seg03" - }, - "to": [ - -0.3513, - 0.3513 - ], - "type": "ToPoint", - "units": { - "type": "Mm" - } - }, - { - "__geoMeta": { - "id": "[uuid]", - "sourceRange": [] - }, - "from": [ - -0.3513, - 0.3513 - ], - "tag": { - "commentStart": 1302, - "end": 1308, - "start": 1302, - "type": "TagDeclarator", - "value": "seg04" - }, - "to": [ - -0.3513, - -1.6487 - ], - "type": "ToPoint", - "units": { - "type": "Mm" - } - }, - { - "__geoMeta": { - "id": "[uuid]", - "sourceRange": [] - }, - "from": [ - -0.3513, - -1.6487 - ], - "tag": { - "commentStart": 1347, - "end": 1353, - "start": 1347, - "type": "TagDeclarator", - "value": "seg05" - }, - "to": [ - -0.0, - -1.6487 - ], - "type": "ToPoint", - "units": { - "type": "Mm" - } - }, - { - "__geoMeta": { - "id": "[uuid]", - "sourceRange": [] - }, - "from": [ - -0.0, - -1.6487 - ], - "tag": { - "commentStart": 1423, - "end": 1429, - "start": 1423, - "type": "TagDeclarator", - "value": "seg06" - }, - "to": [ - 0.0, - 0.0 - ], - "type": "ToPoint", - "units": { - "type": "Mm" - } - }, - { - "__geoMeta": { - "id": "[uuid]", - "sourceRange": [] - }, - "from": [ - 0.0, - 0.0 - ], - "tag": null, - "to": [ - 0.0, - 0.0 - ], - "type": "ToPoint", - "units": { - "type": "Mm" - } - } - ], - "on": { - "type": "plane", - "id": "[uuid]", - "artifactId": "[uuid]", - "value": "XZ", - "origin": { - "x": 0.0, - "y": 0.0, - "z": 0.0 - }, - "xAxis": { - "x": 1.0, - "y": 0.0, - "z": 0.0 - }, - "yAxis": { - "x": 0.0, - "y": 0.0, - "z": 1.0 - }, - "zAxis": { - "x": 0.0, - "y": -1.0, - "z": 0.0 - }, - "units": { - "type": "Mm" - } - }, - "start": { - "from": [ - 0.0, - 0.0 - ], - "to": [ - 0.0, - 0.0 - ], - "units": { - "type": "Mm" - }, - "tag": null, - "__geoMeta": { - "id": "[uuid]", - "sourceRange": [] - } - }, - "tags": { - "seg01": { - "type": "TagIdentifier", - "value": "seg01" - }, - "seg02": { - "type": "TagIdentifier", - "value": "seg02" - }, - "seg03": { - "type": "TagIdentifier", - "value": "seg03" - }, - "seg04": { - "type": "TagIdentifier", - "value": "seg04" - }, - "seg05": { - "type": "TagIdentifier", - "value": "seg05" - }, - "seg06": { - "type": "TagIdentifier", - "value": "seg06" - } - }, - "artifactId": "[uuid]", - "originalId": "[uuid]", - "units": { - "type": "Mm" - } - }, - "height": 6.0, - "startCapId": "[uuid]", - "endCapId": "[uuid]", - "edgeCuts": [ - { - "type": "fillet", - "id": "[uuid]", - "radius": 0.601324026261472, - "edgeId": "[uuid]", - "tag": null - }, - { - "type": "fillet", - "id": "[uuid]", - "radius": 0.25, - "edgeId": "[uuid]", - "tag": null - }, - { - "type": "fillet", - "id": "[uuid]", - "radius": 0.25, - "edgeId": "[uuid]", - "tag": null - }, - { - "type": "fillet", - "id": "[uuid]", - "radius": 0.25, - "edgeId": "[uuid]", - "tag": null - }, - { - "type": "fillet", - "id": "[uuid]", - "radius": 0.25, - "edgeId": "[uuid]", - "tag": null - }, - { - "type": "fillet", - "id": "[uuid]", - "radius": 0.25, - "edgeId": "[uuid]", - "tag": null - } - ], - "units": { - "type": "Mm" - } - }, - "units": { - "type": "Mm" - } - }, - "start": { - "from": [ - 1.25, - -1.0 - ], - "to": [ - 1.25, - -1.0 - ], - "units": { - "type": "Mm" - }, - "tag": null, - "__geoMeta": { - "id": "[uuid]", - "sourceRange": [] - } - }, - "artifactId": "[uuid]", - "originalId": "[uuid]", - "units": { - "type": "Mm" - } - }, - "height": -0.45132402626147194, - "startCapId": null, - "endCapId": null, - "units": { - "type": "Mm" - } - } - } - ] - }, "thickness": { "type": "Number", - "value": 0.3513, + "value": 0.3849, "ty": { "type": "Unknown" } }, - "wallMountL": { + "wallMountLength": { "type": "Number", - "value": 2.0, + "value": 2.25, "ty": { "type": "Default", "len": { - "type": "Mm" + "type": "Inches" }, "angle": { "type": "Degrees" } } }, - "width": { + "wallMountingHoleDiameter": { "type": "Number", - "value": 6.0, + "value": 0.625, "ty": { "type": "Default", "len": { - "type": "Mm" + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + "wallMountingHolePlacementOffset": { + "type": "Number", + "value": 0.9375, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + "wallMountingHoles": { + "type": "HomArray", + "value": [ + { + "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": [ + 1.0625, + 0.9375 + ], + "from": [ + 1.375, + 0.9375 + ], + "radius": 0.3125, + "tag": null, + "to": [ + 1.375, + 0.9375 + ], + "type": "Circle", + "units": { + "type": "Inches" + } + } + ], + "on": { + "type": "face", + "id": "[uuid]", + "artifactId": "[uuid]", + "value": "seg04", + "xAxis": { + "x": 1.0, + "y": 0.0, + "z": 0.0 + }, + "yAxis": { + "x": 0.0, + "y": 0.0, + "z": 1.0 + }, + "zAxis": { + "x": 0.0, + "y": -1.0, + "z": 0.0 + }, + "solid": { + "type": "Solid", + "id": "[uuid]", + "artifactId": "[uuid]", + "value": [ + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [], + "tag": { + "commentStart": 2083, + "end": 2089, + "start": 2083, + "type": "TagDeclarator", + "value": "seg01" + }, + "type": "extrudePlane" + }, + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [], + "tag": { + "commentStart": 2128, + "end": 2134, + "start": 2128, + "type": "TagDeclarator", + "value": "seg02" + }, + "type": "extrudePlane" + }, + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [], + "tag": { + "commentStart": 2181, + "end": 2187, + "start": 2181, + "type": "TagDeclarator", + "value": "seg03" + }, + "type": "extrudePlane" + }, + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [], + "tag": { + "commentStart": 2233, + "end": 2239, + "start": 2233, + "type": "TagDeclarator", + "value": "seg04" + }, + "type": "extrudePlane" + }, + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [], + "tag": { + "commentStart": 2278, + "end": 2284, + "start": 2278, + "type": "TagDeclarator", + "value": "seg05" + }, + "type": "extrudePlane" + }, + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [], + "tag": { + "commentStart": 2354, + "end": 2360, + "start": 2354, + "type": "TagDeclarator", + "value": "seg06" + }, + "type": "extrudePlane" + } + ], + "sketch": { + "type": "Sketch", + "id": "[uuid]", + "paths": [ + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [] + }, + "from": [ + 0.0, + 0.0 + ], + "tag": { + "commentStart": 2083, + "end": 2089, + "start": 2083, + "type": "TagDeclarator", + "value": "seg01" + }, + "to": [ + 4.6151, + 0.0 + ], + "type": "ToPoint", + "units": { + "type": "Inches" + } + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [] + }, + "from": [ + 4.6151, + 0.0 + ], + "tag": { + "commentStart": 2128, + "end": 2134, + "start": 2128, + "type": "TagDeclarator", + "value": "seg02" + }, + "to": [ + 4.6151, + 0.3849 + ], + "type": "ToPoint", + "units": { + "type": "Inches" + } + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [] + }, + "from": [ + 4.6151, + 0.3849 + ], + "tag": { + "commentStart": 2181, + "end": 2187, + "start": 2181, + "type": "TagDeclarator", + "value": "seg03" + }, + "to": [ + -0.3849, + 0.3849 + ], + "type": "ToPoint", + "units": { + "type": "Inches" + } + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [] + }, + "from": [ + -0.3849, + 0.3849 + ], + "tag": { + "commentStart": 2233, + "end": 2239, + "start": 2233, + "type": "TagDeclarator", + "value": "seg04" + }, + "to": [ + -0.3849, + -1.8651 + ], + "type": "ToPoint", + "units": { + "type": "Inches" + } + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [] + }, + "from": [ + -0.3849, + -1.8651 + ], + "tag": { + "commentStart": 2278, + "end": 2284, + "start": 2278, + "type": "TagDeclarator", + "value": "seg05" + }, + "to": [ + 0.0, + -1.8651 + ], + "type": "ToPoint", + "units": { + "type": "Inches" + } + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [] + }, + "from": [ + 0.0, + -1.8651 + ], + "tag": { + "commentStart": 2354, + "end": 2360, + "start": 2354, + "type": "TagDeclarator", + "value": "seg06" + }, + "to": [ + 0.0, + 0.0 + ], + "type": "ToPoint", + "units": { + "type": "Inches" + } + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [] + }, + "from": [ + 0.0, + 0.0 + ], + "tag": null, + "to": [ + 0.0, + 0.0 + ], + "type": "ToPoint", + "units": { + "type": "Inches" + } + } + ], + "on": { + "type": "plane", + "id": "[uuid]", + "artifactId": "[uuid]", + "value": "XZ", + "origin": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "xAxis": { + "x": 1.0, + "y": 0.0, + "z": 0.0 + }, + "yAxis": { + "x": 0.0, + "y": 0.0, + "z": 1.0 + }, + "zAxis": { + "x": 0.0, + "y": -1.0, + "z": 0.0 + }, + "units": { + "type": "Inches" + } + }, + "start": { + "from": [ + 0.0, + 0.0 + ], + "to": [ + 0.0, + 0.0 + ], + "units": { + "type": "Inches" + }, + "tag": null, + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [] + } + }, + "tags": { + "seg01": { + "type": "TagIdentifier", + "value": "seg01" + }, + "seg02": { + "type": "TagIdentifier", + "value": "seg02" + }, + "seg03": { + "type": "TagIdentifier", + "value": "seg03" + }, + "seg04": { + "type": "TagIdentifier", + "value": "seg04" + }, + "seg05": { + "type": "TagIdentifier", + "value": "seg05" + }, + "seg06": { + "type": "TagIdentifier", + "value": "seg06" + } + }, + "artifactId": "[uuid]", + "originalId": "[uuid]", + "units": { + "type": "Inches" + } + }, + "height": 5.0, + "startCapId": "[uuid]", + "endCapId": "[uuid]", + "units": { + "type": "Inches" + } + }, + "units": { + "type": "Inches" + } + }, + "start": { + "from": [ + 1.375, + 0.9375 + ], + "to": [ + 1.375, + 0.9375 + ], + "units": { + "type": "Inches" + }, + "tag": null, + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [] + } + }, + "artifactId": "[uuid]", + "originalId": "[uuid]", + "units": { + "type": "Inches" + } + }, + "height": -0.4848561883538911, + "startCapId": null, + "endCapId": null, + "units": { + "type": "Inches" + } + } + }, + { + "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": [ + 1.0625, + 0.9375 + ], + "from": [ + 1.375, + 0.9375 + ], + "radius": 0.3125, + "tag": null, + "to": [ + 1.375, + 0.9375 + ], + "type": "Circle", + "units": { + "type": "Inches" + } + } + ], + "on": { + "type": "face", + "id": "[uuid]", + "artifactId": "[uuid]", + "value": "seg04", + "xAxis": { + "x": 1.0, + "y": 0.0, + "z": 0.0 + }, + "yAxis": { + "x": 0.0, + "y": 0.0, + "z": 1.0 + }, + "zAxis": { + "x": 0.0, + "y": -1.0, + "z": 0.0 + }, + "solid": { + "type": "Solid", + "id": "[uuid]", + "artifactId": "[uuid]", + "value": [ + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [], + "tag": { + "commentStart": 2083, + "end": 2089, + "start": 2083, + "type": "TagDeclarator", + "value": "seg01" + }, + "type": "extrudePlane" + }, + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [], + "tag": { + "commentStart": 2128, + "end": 2134, + "start": 2128, + "type": "TagDeclarator", + "value": "seg02" + }, + "type": "extrudePlane" + }, + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [], + "tag": { + "commentStart": 2181, + "end": 2187, + "start": 2181, + "type": "TagDeclarator", + "value": "seg03" + }, + "type": "extrudePlane" + }, + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [], + "tag": { + "commentStart": 2233, + "end": 2239, + "start": 2233, + "type": "TagDeclarator", + "value": "seg04" + }, + "type": "extrudePlane" + }, + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [], + "tag": { + "commentStart": 2278, + "end": 2284, + "start": 2278, + "type": "TagDeclarator", + "value": "seg05" + }, + "type": "extrudePlane" + }, + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [], + "tag": { + "commentStart": 2354, + "end": 2360, + "start": 2354, + "type": "TagDeclarator", + "value": "seg06" + }, + "type": "extrudePlane" + } + ], + "sketch": { + "type": "Sketch", + "id": "[uuid]", + "paths": [ + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [] + }, + "from": [ + 0.0, + 0.0 + ], + "tag": { + "commentStart": 2083, + "end": 2089, + "start": 2083, + "type": "TagDeclarator", + "value": "seg01" + }, + "to": [ + 4.6151, + 0.0 + ], + "type": "ToPoint", + "units": { + "type": "Inches" + } + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [] + }, + "from": [ + 4.6151, + 0.0 + ], + "tag": { + "commentStart": 2128, + "end": 2134, + "start": 2128, + "type": "TagDeclarator", + "value": "seg02" + }, + "to": [ + 4.6151, + 0.3849 + ], + "type": "ToPoint", + "units": { + "type": "Inches" + } + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [] + }, + "from": [ + 4.6151, + 0.3849 + ], + "tag": { + "commentStart": 2181, + "end": 2187, + "start": 2181, + "type": "TagDeclarator", + "value": "seg03" + }, + "to": [ + -0.3849, + 0.3849 + ], + "type": "ToPoint", + "units": { + "type": "Inches" + } + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [] + }, + "from": [ + -0.3849, + 0.3849 + ], + "tag": { + "commentStart": 2233, + "end": 2239, + "start": 2233, + "type": "TagDeclarator", + "value": "seg04" + }, + "to": [ + -0.3849, + -1.8651 + ], + "type": "ToPoint", + "units": { + "type": "Inches" + } + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [] + }, + "from": [ + -0.3849, + -1.8651 + ], + "tag": { + "commentStart": 2278, + "end": 2284, + "start": 2278, + "type": "TagDeclarator", + "value": "seg05" + }, + "to": [ + 0.0, + -1.8651 + ], + "type": "ToPoint", + "units": { + "type": "Inches" + } + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [] + }, + "from": [ + 0.0, + -1.8651 + ], + "tag": { + "commentStart": 2354, + "end": 2360, + "start": 2354, + "type": "TagDeclarator", + "value": "seg06" + }, + "to": [ + 0.0, + 0.0 + ], + "type": "ToPoint", + "units": { + "type": "Inches" + } + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [] + }, + "from": [ + 0.0, + 0.0 + ], + "tag": null, + "to": [ + 0.0, + 0.0 + ], + "type": "ToPoint", + "units": { + "type": "Inches" + } + } + ], + "on": { + "type": "plane", + "id": "[uuid]", + "artifactId": "[uuid]", + "value": "XZ", + "origin": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "xAxis": { + "x": 1.0, + "y": 0.0, + "z": 0.0 + }, + "yAxis": { + "x": 0.0, + "y": 0.0, + "z": 1.0 + }, + "zAxis": { + "x": 0.0, + "y": -1.0, + "z": 0.0 + }, + "units": { + "type": "Inches" + } + }, + "start": { + "from": [ + 0.0, + 0.0 + ], + "to": [ + 0.0, + 0.0 + ], + "units": { + "type": "Inches" + }, + "tag": null, + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [] + } + }, + "tags": { + "seg01": { + "type": "TagIdentifier", + "value": "seg01" + }, + "seg02": { + "type": "TagIdentifier", + "value": "seg02" + }, + "seg03": { + "type": "TagIdentifier", + "value": "seg03" + }, + "seg04": { + "type": "TagIdentifier", + "value": "seg04" + }, + "seg05": { + "type": "TagIdentifier", + "value": "seg05" + }, + "seg06": { + "type": "TagIdentifier", + "value": "seg06" + } + }, + "artifactId": "[uuid]", + "originalId": "[uuid]", + "units": { + "type": "Inches" + } + }, + "height": 5.0, + "startCapId": "[uuid]", + "endCapId": "[uuid]", + "units": { + "type": "Inches" + } + }, + "units": { + "type": "Inches" + } + }, + "start": { + "from": [ + 1.375, + 0.9375 + ], + "to": [ + 1.375, + 0.9375 + ], + "units": { + "type": "Inches" + }, + "tag": null, + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [] + } + }, + "artifactId": "[uuid]", + "originalId": "[uuid]", + "units": { + "type": "Inches" + } + }, + "height": -0.4848561883538911, + "startCapId": null, + "endCapId": null, + "units": { + "type": "Inches" + } + } + } + ] + }, + "width": { + "type": "Number", + "value": 5.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" }, "angle": { "type": "Degrees" diff --git a/rust/kcl-lib/tests/kcl_samples/bracket/rendered_model.png b/rust/kcl-lib/tests/kcl_samples/bracket/rendered_model.png index 9623aaddf8ac126aebc5d0e79e7854f3ad3bae81..cbb37657c85a7ab4cb4c1fc0e338c5eb40f44af2 100644 GIT binary patch literal 66859 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•wx#!y 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 literal 60920 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]Ik&>{1#osGe0 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 startProfileAt([0, 0], %) - |> xLine(length = shelfMountL - thickness, tag = $seg01) - |> yLine(length = thickness, tag = $seg02) - |> xLine(length = -shelfMountL, tag = $seg03) - |> yLine(length = -wallMountL, tag = $seg04) - |> xLine(length = thickness, tag = $seg05) - |> line(endAbsolute = [profileStartX(%), profileStartY(%)], tag = $seg06) - |> close() - -extrude001 = extrude(sketch001, length = width) - |> fillet(radius = extFilletRadius, tags = [getNextAdjacentEdge(seg03)]) - |> fillet(radius = filletRadius, tags = [getNextAdjacentEdge(seg06)]) - |> fillet(radius = filletRadius, tags = [seg02, getOppositeEdge(seg02)]) - |> fillet(radius = filletRadius, tags = [seg05, getOppositeEdge(seg05)]) - -sketch002 = startSketchOn(extrude001, seg03) - |> circle(center = [-1.25, 1], radius = mountingHoleDiameter / 2) - |> patternLinear2d(instances = 2, distance = 2.5, axis = [-1, 0]) - |> patternLinear2d(instances = 2, distance = 4, axis = [0, 1]) - -extrude002 = extrude(sketch002, length = -thickness - .01) - -sketch003 = startSketchOn(extrude002, seg04) - |> circle(center = [1, -1], radius = mountingHoleDiameter / 2) - |> patternLinear2d(instances = 2, distance = 4, axis = [1, 0]) - -extrude003 = extrude(sketch003, length = -thickness - 0.1) -` +export { bracket } /** * @throws Error if the search text is not found in the example code. @@ -70,7 +23,6 @@ function findLineInExampleCode({ } return lineNumber } - export const bracketWidthConstantLine = findLineInExampleCode({ searchText: 'width =', }) diff --git a/tsconfig.json b/tsconfig.json index d379580d9..aa8aaa0a0 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -11,6 +11,7 @@ "@rust/*": ["./rust/*"], "@e2e/*": ["./e2e/*"], "@src/*": ["./src/*"], + "@public/*": ["./public/*"], "@root/*": ["./*"] }, "types": [ diff --git a/vite.config.ts b/vite.config.ts index beef0bbb4..ba923f83e 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -65,6 +65,7 @@ const config = defineConfig({ '@rust': '/rust', '@e2e': '/e2e', '@src': '/src', + '@public': '/public', '@root': '/', }, },