Compare commits
13 Commits
Author | SHA1 | Date | |
---|---|---|---|
129b91518f | |||
c0aa763c3b | |||
319c60d4fa | |||
66f95d25f6 | |||
72ab72cea1 | |||
4e1e9f9c6e | |||
8b14d32879 | |||
7c5170dc16 | |||
a07dbc3aac | |||
7d3294ff78 | |||
121c393466 | |||
c6ec54c138 | |||
1f6b90d383 |
7
.github/workflows/build-apps.yml
vendored
7
.github/workflows/build-apps.yml
vendored
@ -207,6 +207,13 @@ jobs:
|
||||
smctl.exe keypair ls
|
||||
C:\Windows\System32\certutil.exe -csp "DigiCert Signing Manager KSP" -key -user
|
||||
smksp_cert_sync.exe
|
||||
smctl windows certsync
|
||||
# This last line `smctl windows certsync` was added after windows codesign failures started happening
|
||||
# with nightly-v25.4.10. It looks like `smksp_cert_sync.exe` used to do the sync to the local cert store,
|
||||
# but stopped doing it overnight. This extra call that I randomly got from this azure-related doc page
|
||||
# https://docs.digicert.com/en/digicert-keylocker/code-signing/sign-with-third-party-signing-tools/windows-applications/sign-azure-apps-with-signtool-using-ksp-library.html#sync-certificates--windows-only--618365
|
||||
# seems to be doing that extra sync that we need for scripts/sign-win.js to work.
|
||||
# TODO: we still need to make sign-win.js errors fail the workflow, see issue #6276
|
||||
shell: cmd
|
||||
|
||||
- name: Build the app (debug)
|
||||
|
10
.github/workflows/e2e-tests.yml
vendored
10
.github/workflows/e2e-tests.yml
vendored
@ -231,6 +231,11 @@ jobs:
|
||||
env:
|
||||
token: ${{ secrets.KITTYCAD_API_TOKEN_DEV }}
|
||||
snapshottoken: ${{ secrets.KITTYCAD_API_TOKEN }}
|
||||
TAB_API_URL: ${{ secrets.TAB_API_URL }}
|
||||
TAB_API_KEY: ${{ secrets.TAB_API_KEY }}
|
||||
CI_COMMIT_SHA: ${{ github.event.pull_request.head.sha }}
|
||||
CI_PR_NUMBER: ${{ github.event.pull_request.number }}
|
||||
TARGET: web
|
||||
|
||||
- uses: actions/upload-artifact@v4
|
||||
if: ${{ needs.conditions.outputs.should-run == 'true' && !cancelled() && (success() || failure()) }}
|
||||
@ -365,6 +370,11 @@ jobs:
|
||||
env:
|
||||
FAIL_ON_CONSOLE_ERRORS: true
|
||||
token: ${{ secrets.KITTYCAD_API_TOKEN_DEV }}
|
||||
TAB_API_URL: ${{ secrets.TAB_API_URL }}
|
||||
TAB_API_KEY: ${{ secrets.TAB_API_KEY }}
|
||||
CI_COMMIT_SHA: ${{ github.event.pull_request.head.sha }}
|
||||
CI_PR_NUMBER: ${{ github.event.pull_request.number }}
|
||||
TARGET: desktop
|
||||
|
||||
- uses: actions/upload-artifact@v4
|
||||
if: ${{ needs.conditions.outputs.should-run == 'true' && always() }}
|
||||
|
@ -188,9 +188,9 @@ example = extrude(exampleSketch, length = 1)
|
||||
sweepPath = startSketchOn(XZ)
|
||||
|> startProfileAt([0.05, 0.05], %)
|
||||
|> line(end = [0, 7])
|
||||
|> tangentialArc({ offset = 90, radius = 5 }, %)
|
||||
|> tangentialArc(angle = 90, radius = 5)
|
||||
|> line(end = [-3, 0])
|
||||
|> tangentialArc({ offset = -90, radius = 5 }, %)
|
||||
|> tangentialArc(angle = -90, radius = 5)
|
||||
|> line(end = [0, 7])
|
||||
|
||||
pipeHole = startSketchOn(XY)
|
||||
|
@ -65,7 +65,7 @@ case = startSketchOn(-XZ)
|
||||
|> startProfileAt([-size, -size], %)
|
||||
|> line(end = [2 * size, 0])
|
||||
|> line(end = [0, 2 * size])
|
||||
|> tangentialArcTo([-size, size], %)
|
||||
|> tangentialArc(endAbsolute = [-size, size])
|
||||
|> close()
|
||||
|> extrude(length = 65)
|
||||
|
||||
|
@ -128,8 +128,6 @@ layout: manual
|
||||
* [`sweep`](kcl/sweep)
|
||||
* [`tangentToEnd`](kcl/tangentToEnd)
|
||||
* [`tangentialArc`](kcl/tangentialArc)
|
||||
* [`tangentialArcTo`](kcl/tangentialArcTo)
|
||||
* [`tangentialArcToRelative`](kcl/tangentialArcToRelative)
|
||||
* [`toDegrees`](kcl/toDegrees)
|
||||
* [`toRadians`](kcl/toRadians)
|
||||
* [`translate`](kcl/translate)
|
||||
|
@ -57,7 +57,7 @@ case = startSketchOn(XY)
|
||||
|> startProfileAt([-size, -size], %)
|
||||
|> line(end = [2 * size, 0])
|
||||
|> line(end = [0, 2 * size])
|
||||
|> tangentialArcTo([-size, size], %)
|
||||
|> tangentialArc(endAbsolute = [-size, size])
|
||||
|> close(%)
|
||||
|> extrude(length = 65)
|
||||
|
||||
@ -88,7 +88,7 @@ case = startSketchOn(XY)
|
||||
|> startProfileAt([-size, -size], %)
|
||||
|> line(end = [2 * size, 0])
|
||||
|> line(end = [0, 2 * size])
|
||||
|> tangentialArcTo([-size, size], %)
|
||||
|> tangentialArc(endAbsolute = [-size, size])
|
||||
|> close(%)
|
||||
|> extrude(length = 65)
|
||||
|
||||
|
@ -65,9 +65,9 @@ rotate(
|
||||
sweepPath = startSketchOn(XZ)
|
||||
|> startProfileAt([0.05, 0.05], %)
|
||||
|> line(end = [0, 7])
|
||||
|> tangentialArc({ offset = 90, radius = 5 }, %)
|
||||
|> tangentialArc(angle = 90, radius = 5)
|
||||
|> line(end = [-3, 0])
|
||||
|> tangentialArc({ offset = -90, radius = 5 }, %)
|
||||
|> tangentialArc(angle = -90, radius = 5)
|
||||
|> line(end = [0, 7])
|
||||
|
||||
// Create a hole for the pipe.
|
||||
@ -90,9 +90,9 @@ sweepSketch = startSketchOn(XY)
|
||||
sweepPath = startSketchOn(XZ)
|
||||
|> startProfileAt([0.05, 0.05], %)
|
||||
|> line(end = [0, 7])
|
||||
|> tangentialArc({ offset = 90, radius = 5 }, %)
|
||||
|> tangentialArc(angle = 90, radius = 5)
|
||||
|> line(end = [-3, 0])
|
||||
|> tangentialArc({ offset = -90, radius = 5 }, %)
|
||||
|> tangentialArc(angle = -90, radius = 5)
|
||||
|> line(end = [0, 7])
|
||||
|
||||
// Create a hole for the pipe.
|
||||
@ -115,9 +115,9 @@ sweepSketch = startSketchOn(XY)
|
||||
sweepPath = startSketchOn(XZ)
|
||||
|> startProfileAt([0.05, 0.05], %)
|
||||
|> line(end = [0, 7])
|
||||
|> tangentialArc({ offset = 90, radius = 5 }, %)
|
||||
|> tangentialArc(angle = 90, radius = 5)
|
||||
|> line(end = [-3, 0])
|
||||
|> tangentialArc({ offset = -90, radius = 5 }, %)
|
||||
|> tangentialArc(angle = -90, radius = 5)
|
||||
|> line(end = [0, 7])
|
||||
|
||||
// Create a hole for the pipe.
|
||||
@ -162,7 +162,7 @@ circleSketch = circle(sketch001, center = [200, -30.29], radius = 32.63)
|
||||
sketch002 = startSketchOn(YZ)
|
||||
sweepPath = startProfileAt([0, 0], sketch002)
|
||||
|> yLine(length = 231.81)
|
||||
|> tangentialArc({ radius = 80, offset = -90 }, %)
|
||||
|> tangentialArc(radius = 80, angle = -90)
|
||||
|> xLine(length = 384.93)
|
||||
|
||||
parts = sweep([rectangleSketch, circleSketch], path = sweepPath)
|
||||
|
@ -49,9 +49,9 @@ scale(
|
||||
sweepPath = startSketchOn(XZ)
|
||||
|> startProfileAt([0.05, 0.05], %)
|
||||
|> line(end = [0, 7])
|
||||
|> tangentialArc({ offset = 90, radius = 5 }, %)
|
||||
|> tangentialArc(angle = 90, radius = 5)
|
||||
|> line(end = [-3, 0])
|
||||
|> tangentialArc({ offset = -90, radius = 5 }, %)
|
||||
|> tangentialArc(angle = -90, radius = 5)
|
||||
|> line(end = [0, 7])
|
||||
|
||||
// Create a hole for the pipe.
|
||||
@ -96,7 +96,7 @@ circleSketch = circle(sketch001, center = [200, -30.29], radius = 32.63)
|
||||
sketch002 = startSketchOn(YZ)
|
||||
sweepPath = startProfileAt([0, 0], sketch002)
|
||||
|> yLine(length = 231.81)
|
||||
|> tangentialArc({ radius = 80, offset = -90 }, %)
|
||||
|> tangentialArc(radius = 80, angle = -90)
|
||||
|> xLine(length = 384.93)
|
||||
|
||||
parts = sweep([rectangleSketch, circleSketch], path = sweepPath)
|
||||
|
@ -30,7 +30,7 @@ segLen(tag: TagIdentifier): number
|
||||
exampleSketch = startSketchOn(XZ)
|
||||
|> startProfileAt([0, 0], %)
|
||||
|> angledLine(angle = 60, length = 10, tag = $thing)
|
||||
|> tangentialArc({ offset = -120, radius = 5 }, %)
|
||||
|> tangentialArc(angle = -120, radius = 5)
|
||||
|> angledLine(angle = -60, length = segLen(thing))
|
||||
|> close()
|
||||
|
||||
|
@ -103,7 +103,7 @@ case = startSketchOn(-XZ)
|
||||
|> startProfileAt([-size, -size], %)
|
||||
|> line(end = [2 * size, 0])
|
||||
|> line(end = [0, 2 * size])
|
||||
|> tangentialArcTo([-size, size], %)
|
||||
|> tangentialArc(endAbsolute = [-size, size])
|
||||
|> close()
|
||||
|> extrude(length = 65)
|
||||
|
||||
@ -128,7 +128,7 @@ case = startSketchOn(XY)
|
||||
|> startProfileAt([-size, -size], %)
|
||||
|> line(end = [2 * size, 0])
|
||||
|> line(end = [0, 2 * size])
|
||||
|> tangentialArcTo([-size, size], %)
|
||||
|> tangentialArc(endAbsolute = [-size, size])
|
||||
|> close()
|
||||
|> extrude(length = 65)
|
||||
|
||||
@ -156,7 +156,7 @@ case = startSketchOn(XY)
|
||||
|> startProfileAt([-size, -size], %)
|
||||
|> line(end = [2 * size, 0])
|
||||
|> line(end = [0, 2 * size])
|
||||
|> tangentialArcTo([-size, size], %)
|
||||
|> tangentialArc(endAbsolute = [-size, size])
|
||||
|> close()
|
||||
|> extrude(length = 65)
|
||||
|
||||
|
@ -103,9 +103,9 @@ example = extrude(sketch001, length = 10)
|
||||
sketch0011 = startSketchOn(XY)
|
||||
|> startProfileAt([6.77, 0], %)
|
||||
|> yLine(length = 1.27)
|
||||
|> tangentialArcTo([5.96, 2.37], %)
|
||||
|> tangentialArcTo([-6.2, 2.44], %)
|
||||
|> tangentialArcTo([-6.6, 1.82], %)
|
||||
|> tangentialArc(endAbsolute = [5.96, 2.37])
|
||||
|> tangentialArc(endAbsolute = [-6.2, 2.44])
|
||||
|> tangentialArc(endAbsolute = [-6.6, 1.82])
|
||||
|> yLine(length = -1.82)
|
||||
|> mirror2d( axis = X )
|
||||
|> extrude(length = 10)
|
||||
|
16370
docs/kcl/std.json
16370
docs/kcl/std.json
File diff suppressed because it is too large
Load Diff
@ -47,9 +47,9 @@ sweep(
|
||||
sweepPath = startSketchOn(XZ)
|
||||
|> startProfileAt([0.05, 0.05], %)
|
||||
|> line(end = [0, 7])
|
||||
|> tangentialArc({ offset = 90, radius = 5 }, %)
|
||||
|> tangentialArc(angle = 90, radius = 5)
|
||||
|> line(end = [-3, 0])
|
||||
|> tangentialArc({ offset = -90, radius = 5 }, %)
|
||||
|> tangentialArc(angle = -90, radius = 5)
|
||||
|> line(end = [0, 7])
|
||||
|
||||
// Create a hole for the pipe.
|
||||
@ -102,7 +102,7 @@ circleSketch = circle(sketch001, center = [200, -30.29], radius = 32.63)
|
||||
sketch002 = startSketchOn(YZ)
|
||||
sweepPath = startProfileAt([0, 0], sketch002)
|
||||
|> yLine(length = 231.81)
|
||||
|> tangentialArc({ radius = 80, offset = -90 }, %)
|
||||
|> tangentialArc(radius = 80, angle = -90)
|
||||
|> xLine(length = 384.93)
|
||||
|
||||
sweep([rectangleSketch, circleSketch], path = sweepPath)
|
||||
@ -120,7 +120,7 @@ circleSketch = circle(sketch001, center = [200, -30.29], radius = 32.63)
|
||||
sketch002 = startSketchOn(YZ)
|
||||
sweepPath = startProfileAt([0, 0], sketch002)
|
||||
|> yLine(length = 231.81)
|
||||
|> tangentialArc({ radius = 80, offset = -90 }, %)
|
||||
|> tangentialArc(radius = 80, angle = -90)
|
||||
|> xLine(length = 384.93)
|
||||
|
||||
sweep(circleSketch, path = sweepPath, sectional = true)
|
||||
|
@ -31,9 +31,9 @@ tangentToEnd(tag: TagIdentifier): number
|
||||
pillSketch = startSketchOn(XZ)
|
||||
|> startProfileAt([0, 0], %)
|
||||
|> line(end = [20, 0])
|
||||
|> tangentialArcToRelative([0, 10], %, $arc1)
|
||||
|> tangentialArc(end = [0, 10], tag = $arc1)
|
||||
|> angledLine(angle = tangentToEnd(arc1), length = 20)
|
||||
|> tangentialArcToRelative([0, -10], %)
|
||||
|> tangentialArc(end = [0, -10])
|
||||
|> close()
|
||||
|
||||
pillExtrude = extrude(pillSketch, length = 10)
|
||||
@ -46,9 +46,9 @@ pillExtrude = extrude(pillSketch, length = 10)
|
||||
pillSketch = startSketchOn(XZ)
|
||||
|> startProfileAt([0, 0], %)
|
||||
|> line(end = [0, 20])
|
||||
|> tangentialArcTo([10, 20], %, $arc1)
|
||||
|> tangentialArc(endAbsolute = [10, 20], tag = $arc1)
|
||||
|> angledLine(angle = tangentToEnd(arc1), length = 20)
|
||||
|> tangentialArcToRelative([-10, 0], %)
|
||||
|> tangentialArc(end = [-10, 0])
|
||||
|> close()
|
||||
|
||||
pillExtrude = extrude(pillSketch, length = 10)
|
||||
|
File diff suppressed because one or more lines are too long
@ -45,9 +45,9 @@ translate(
|
||||
sweepPath = startSketchOn(XZ)
|
||||
|> startProfileAt([0.05, 0.05], %)
|
||||
|> line(end = [0, 7])
|
||||
|> tangentialArc({ offset = 90, radius = 5 }, %)
|
||||
|> tangentialArc(angle = 90, radius = 5)
|
||||
|> line(end = [-3, 0])
|
||||
|> tangentialArc({ offset = -90, radius = 5 }, %)
|
||||
|> tangentialArc(angle = -90, radius = 5)
|
||||
|> line(end = [0, 7])
|
||||
|
||||
// Create a hole for the pipe.
|
||||
@ -97,7 +97,7 @@ circleSketch = circle(sketch001, center = [200, -30.29], radius = 32.63)
|
||||
sketch002 = startSketchOn(YZ)
|
||||
sweepPath = startProfileAt([0, 0], sketch002)
|
||||
|> yLine(length = 231.81)
|
||||
|> tangentialArc({ radius = 80, offset = -90 }, %)
|
||||
|> tangentialArc(radius = 80, angle = -90)
|
||||
|> xLine(length = 384.93)
|
||||
|
||||
parts = sweep([rectangleSketch, circleSketch], path = sweepPath)
|
||||
|
@ -920,7 +920,7 @@ sketch001 = startSketchOn(XZ)
|
||||
`sketch001 = startSketchOn(XZ)
|
||||
|> startProfileAt([4.61, -14.01], %)
|
||||
|> line(end = [12.73, -0.09])
|
||||
|> tangentialArcTo([24.95, -5.38], %)
|
||||
|> tangentialArc(endAbsolute = [24.95, -5.38])
|
||||
|> close()`
|
||||
)
|
||||
})
|
||||
@ -969,7 +969,7 @@ sketch001 = startSketchOn(XZ)
|
||||
|
||||
// expect the code to have changed
|
||||
await expect(page.locator('.cm-content')).toHaveText(
|
||||
`sketch001 = startSketchOn(XZ) |> startProfileAt([4.61, -14.01], %) |> line(end = [12.73, -0.09]) |> tangentialArcTo([24.95, -5.38], %) |> close()extrude001 = extrude(sketch001, length = 5)`
|
||||
`sketch001 = startSketchOn(XZ) |> startProfileAt([4.61, -14.01], %) |> line(end = [12.73, -0.09]) |> tangentialArc(endAbsolute = [24.95, -5.38]) |> close()extrude001 = extrude(sketch001, length = 5)`
|
||||
)
|
||||
|
||||
// Now hit undo
|
||||
@ -982,7 +982,7 @@ sketch001 = startSketchOn(XZ)
|
||||
.toHaveText(`sketch001 = startSketchOn(XZ)
|
||||
|> startProfileAt([4.61, -14.01], %)
|
||||
|> line(end = [12.73, -0.09])
|
||||
|> tangentialArcTo([24.95, -5.38], %)
|
||||
|> tangentialArc(endAbsolute = [24.95, -5.38])
|
||||
|> close()`)
|
||||
})
|
||||
|
||||
@ -998,7 +998,7 @@ sketch001 = startSketchOn(XZ)
|
||||
sketch001 = startSketchOn(XZ)
|
||||
|> startProfileAt([4.61, -10.01], %)
|
||||
|> line(end = [12.73, -0.09])
|
||||
|> tangentialArcTo([24.95, -0.38], %)
|
||||
|> tangentialArc(endAbsolute = [24.95, -0.38])
|
||||
|> close()
|
||||
|> extrude(length = 5)`
|
||||
)
|
||||
@ -1072,7 +1072,7 @@ sketch001 = startSketchOn(XZ)
|
||||
// we wait so it saves the code
|
||||
await page.waitForTimeout(800)
|
||||
|
||||
// drag tangentialArcTo handle
|
||||
// drag tangentialArc handle
|
||||
const tangentEnd = await u.getBoundingBox('[data-overlay-index="1"]')
|
||||
await page.dragAndDrop('#stream', '#stream', {
|
||||
sourcePosition: { x: tangentEnd.x + 10, y: tangentEnd.y - 5 },
|
||||
@ -1089,7 +1089,7 @@ sketch001 = startSketchOn(XZ)
|
||||
`sketch001 = startSketchOn(XZ)
|
||||
|> startProfileAt([2.71, -2.71], %)
|
||||
|> line(end = [15.4, -2.78])
|
||||
|> tangentialArcTo([27.6, -3.05], %)
|
||||
|> tangentialArc(endAbsolute = [27.6, -3.05])
|
||||
|> close()
|
||||
|> extrude(length = 5)`,
|
||||
{ shouldNormalise: true }
|
||||
@ -1104,7 +1104,7 @@ sketch001 = startSketchOn(XZ)
|
||||
`sketch001 = startSketchOn(XZ)
|
||||
|> startProfileAt([2.71, -2.71], %)
|
||||
|> line(end = [15.4, -2.78])
|
||||
|> tangentialArcTo([24.95, -0.38], %)
|
||||
|> tangentialArc(endAbsolute = [24.95, -0.38])
|
||||
|> close()
|
||||
|> extrude(length = 5)`,
|
||||
{ shouldNormalise: true }
|
||||
@ -1119,7 +1119,7 @@ sketch001 = startSketchOn(XZ)
|
||||
`sketch001 = startSketchOn(XZ)
|
||||
|> startProfileAt([2.71, -2.71], %)
|
||||
|> line(end = [12.73, -0.09])
|
||||
|> tangentialArcTo([24.95, -0.38], %)
|
||||
|> tangentialArc(endAbsolute = [24.95, -0.38])
|
||||
|> close()
|
||||
|> extrude(length = 5)`,
|
||||
{ shouldNormalise: true }
|
||||
@ -1135,7 +1135,7 @@ sketch001 = startSketchOn(XZ)
|
||||
`sketch001 = startSketchOn(XZ)
|
||||
|> startProfileAt([4.61, -10.01], %)
|
||||
|> line(end = [12.73, -0.09])
|
||||
|> tangentialArcTo([24.95, -0.38], %)
|
||||
|> tangentialArc(endAbsolute = [24.95, -0.38])
|
||||
|> close()
|
||||
|> extrude(length = 5)`,
|
||||
{ shouldNormalise: true }
|
||||
|
63
e2e/playwright/lib/api-reporter.ts
Normal file
63
e2e/playwright/lib/api-reporter.ts
Normal file
@ -0,0 +1,63 @@
|
||||
import type { Reporter, TestCase, TestResult } from '@playwright/test/reporter'
|
||||
|
||||
class MyAPIReporter implements Reporter {
|
||||
onTestEnd(test: TestCase, result: TestResult): void {
|
||||
if (!process.env.TAB_API_URL || !process.env.TAB_API_KEY) {
|
||||
return
|
||||
}
|
||||
|
||||
const payload = {
|
||||
// Required information
|
||||
project: 'https://github.com/KittyCAD/modeling-app',
|
||||
branch: process.env.GITHUB_HEAD_REF || process.env.GITHUB_REF_NAME || '',
|
||||
commit: process.env.CI_COMMIT_SHA || process.env.GITHUB_SHA || '',
|
||||
test: test.titlePath().slice(2).join(' › '),
|
||||
status: result.status,
|
||||
// Optional information
|
||||
duration: result.duration / 1000,
|
||||
message: result.error?.stack,
|
||||
target: process.env.TARGET || null,
|
||||
platform: process.env.RUNNER_OS || process.platform,
|
||||
// Extra test and result data
|
||||
annotations: test.annotations.map((a) => a.type),
|
||||
retries: result.retry,
|
||||
// Extra environment variables
|
||||
CI_COMMIT_SHA: process.env.CI_COMMIT_SHA || null,
|
||||
CI_PR_NUMBER: process.env.CI_PR_NUMBER || null,
|
||||
GITHUB_BASE_REF: process.env.GITHUB_BASE_REF || null,
|
||||
GITHUB_EVENT_NAME: process.env.GITHUB_EVENT_NAME || null,
|
||||
GITHUB_HEAD_REF: process.env.GITHUB_HEAD_REF || null,
|
||||
GITHUB_REF_NAME: process.env.GITHUB_REF_NAME || null,
|
||||
GITHUB_REF: process.env.GITHUB_REF || null,
|
||||
GITHUB_SHA: process.env.GITHUB_SHA || null,
|
||||
GITHUB_WORKFLOW: process.env.GITHUB_WORKFLOW || null,
|
||||
RUNNER_ARCH: process.env.RUNNER_ARCH || null,
|
||||
}
|
||||
|
||||
void (async () => {
|
||||
try {
|
||||
const response = await fetch(`${process.env.TAB_API_URL}/api/results`, {
|
||||
method: 'POST',
|
||||
headers: new Headers({
|
||||
'Content-Type': 'application/json',
|
||||
'X-API-Key': process.env.TAB_API_KEY || '',
|
||||
}),
|
||||
body: JSON.stringify(payload),
|
||||
})
|
||||
|
||||
if (!response.ok && !process.env.CI) {
|
||||
console.error(
|
||||
'TAB API - Failed to send test result:',
|
||||
await response.text()
|
||||
)
|
||||
}
|
||||
} catch {
|
||||
if (!process.env.CI) {
|
||||
console.error('TAB API - Unable to send test result')
|
||||
}
|
||||
}
|
||||
})()
|
||||
}
|
||||
}
|
||||
|
||||
export default MyAPIReporter
|
@ -6,7 +6,9 @@ import type { NamedView } from '@rust/kcl-lib/bindings/NamedView'
|
||||
|
||||
import {
|
||||
createProject,
|
||||
perProjectsettingsToToml,
|
||||
orRunWhenFullSuiteEnabled,
|
||||
perProjectSettingsToToml,
|
||||
runningOnMac,
|
||||
tomlToPerProjectSettings,
|
||||
} from '@e2e/playwright/test-utils'
|
||||
import { expect, test } from '@e2e/playwright/zoo-test'
|
||||
@ -57,11 +59,13 @@ function tomlStringOverWriteNamedViewUuids(toml: string): string {
|
||||
settings.settings.app.named_views = remappedNamedViews
|
||||
}
|
||||
}
|
||||
return perProjectsettingsToToml(settings)
|
||||
return perProjectSettingsToToml(settings)
|
||||
}
|
||||
|
||||
test.describe('Named view tests', () => {
|
||||
test.skip() // TODO: Jace is working on these
|
||||
if (runningOnMac()) {
|
||||
test.fixme(orRunWhenFullSuiteEnabled())
|
||||
}
|
||||
test('Verify project.toml is not created', async ({ page }, testInfo) => {
|
||||
// Create project and load it
|
||||
const projectName = 'named-views'
|
||||
@ -105,6 +109,9 @@ test.describe('Named view tests', () => {
|
||||
PROJECT_SETTINGS_FILE_NAME
|
||||
)
|
||||
|
||||
const toastMessage = page.getByText('Named view uuid1 created.')
|
||||
await expect(toastMessage).toBeInViewport()
|
||||
|
||||
// Expect project.toml to be generated on disk since a named view was created
|
||||
await expect(async () => {
|
||||
let exists = await fileExists(tempProjectSettingsFilePath)
|
||||
@ -130,7 +137,6 @@ test.describe('Named view tests', () => {
|
||||
}, testInfo) => {
|
||||
const projectName = 'named-views'
|
||||
const myNamedView1 = 'uuid1'
|
||||
const myNamedView2 = 'uuid2'
|
||||
|
||||
// Create project and go into the project
|
||||
await createProject({ name: projectName, page })
|
||||
@ -142,6 +148,9 @@ test.describe('Named view tests', () => {
|
||||
await cmdBar.argumentInput.fill(myNamedView1)
|
||||
await cmdBar.progressCmdBar(false)
|
||||
|
||||
let toastMessage = page.getByText('Named view uuid1 created.')
|
||||
await expect(toastMessage).toBeInViewport()
|
||||
|
||||
// Generate file paths for project.toml
|
||||
const projectDirName = testInfo.outputPath('electron-test-projects-dir')
|
||||
const tempProjectSettingsFilePath = join(
|
||||
@ -170,17 +179,20 @@ test.describe('Named view tests', () => {
|
||||
// Delete a named view
|
||||
await cmdBar.openCmdBar()
|
||||
await cmdBar.chooseCommand('delete named view')
|
||||
cmdBar.selectOption({ name: myNamedView2 })
|
||||
cmdBar.selectOption({ name: myNamedView1 })
|
||||
await cmdBar.progressCmdBar(false)
|
||||
|
||||
toastMessage = page.getByText('Named view uuid1 removed.')
|
||||
await expect(toastMessage).toBeInViewport()
|
||||
|
||||
await expect(async () => {
|
||||
// Read project.toml into memory again since we deleted a named view
|
||||
let tomlString = await fsp.readFile(tempProjectSettingsFilePath, 'utf-8')
|
||||
// Rewrite the uuids in the named views to match snapshot otherwise they will be randomly generated from rust and break
|
||||
tomlString = tomlStringOverWriteNamedViewUuids(tomlString)
|
||||
|
||||
// // Write the entire tomlString to a snapshot.
|
||||
// // There are many key/value pairs to check this is a safer match.
|
||||
// Write the entire tomlString to a snapshot.
|
||||
// There are many key/value pairs to check this is a safer match.
|
||||
expect(tomlString).toMatchSnapshot('verify-named-view-gets-deleted')
|
||||
}).toPass()
|
||||
})
|
||||
@ -202,6 +214,9 @@ test.describe('Named view tests', () => {
|
||||
await cmdBar.argumentInput.fill(myNamedView)
|
||||
await cmdBar.progressCmdBar(false)
|
||||
|
||||
let toastMessage = page.getByText('Named view uuid1 created.')
|
||||
await expect(toastMessage).toBeInViewport()
|
||||
|
||||
// Generate file paths for project.toml
|
||||
const projectDirName = testInfo.outputPath('electron-test-projects-dir')
|
||||
const tempProjectSettingsFilePath = join(
|
||||
@ -258,26 +273,19 @@ test.describe('Named view tests', () => {
|
||||
await cmdBar.argumentInput.fill(myNamedView1)
|
||||
await cmdBar.progressCmdBar(false)
|
||||
|
||||
await page.waitForTimeout(1000)
|
||||
let toastMessage = page.getByText('Named view uuid1 created.')
|
||||
await expect(toastMessage).toBeInViewport()
|
||||
|
||||
const orbitMouseStart = { x: 800, y: 130 }
|
||||
const orbitMouseEnd = { x: 0, y: 130 }
|
||||
await page.mouse.move(orbitMouseStart.x, orbitMouseStart.y)
|
||||
await page.mouse.down({ button: 'middle' })
|
||||
await page.mouse.move(orbitMouseEnd.x, orbitMouseEnd.y, {
|
||||
steps: 3,
|
||||
})
|
||||
await page.mouse.up({ button: 'middle' })
|
||||
|
||||
await page.waitForTimeout(1000)
|
||||
await scene.moveCameraTo({ x: 608, y: 0, z: 0 }, { x: 0, y: 0, z: 0 })
|
||||
await page.waitForTimeout(2500)
|
||||
|
||||
await cmdBar.openCmdBar()
|
||||
await cmdBar.chooseCommand('create named view')
|
||||
await cmdBar.argumentInput.fill(myNamedView2)
|
||||
await cmdBar.progressCmdBar(false)
|
||||
|
||||
// Wait a moment for the project.toml to get written to disk with the new view point
|
||||
await page.waitForTimeout(1000)
|
||||
toastMessage = page.getByText('Named view uuid2 created.')
|
||||
await expect(toastMessage).toBeInViewport()
|
||||
|
||||
// Generate paths for the project.toml
|
||||
const tempProjectSettingsFilePath = join(
|
||||
|
@ -1,16 +1,5 @@
|
||||
[settings]
|
||||
app = { }
|
||||
modeling = { }
|
||||
text_editor = { }
|
||||
command_bar = { }
|
||||
|
||||
[settings.app.named_views.0656fb1a-9640-473e-b334-591dc70c0138]
|
||||
name = "uuid1"
|
||||
eye_offset = 1_378.0059
|
||||
fov_y = 45
|
||||
is_ortho = false
|
||||
ortho_scale_enabled = true
|
||||
ortho_scale_factor = 1.6
|
||||
pivot_position = [ 0, 0, 0 ]
|
||||
pivot_rotation = [ 0.5380994, 0.0, 0.0, 0.8428814 ]
|
||||
world_coord_system = "right_handed_up_z"
|
||||
version = 1
|
||||
|
@ -17,12 +17,12 @@ version = 1
|
||||
|
||||
[settings.app.named_views.c810cf04-c6cc-4a4a-8b11-17bf445dcab7]
|
||||
name = "uuid2"
|
||||
eye_offset = 1_378.0059
|
||||
eye_offset = 608
|
||||
fov_y = 45
|
||||
is_ortho = false
|
||||
ortho_scale_enabled = true
|
||||
ortho_scale_factor = 1.6
|
||||
pivot_position = [ 1_826.5239, 0.0, 0.0 ]
|
||||
pivot_rotation = [ 0.5380994, 0.0, 0.0, 0.8428814 ]
|
||||
pivot_position = [ 0, 0, 0 ]
|
||||
pivot_rotation = [ 0.5, 0.5, 0.5, 0.5 ]
|
||||
world_coord_system = "right_handed_up_z"
|
||||
version = 1
|
||||
|
@ -550,7 +550,7 @@ openSketch = startSketchOn(XY)
|
||||
|> startProfileAt([-5, 0], %)
|
||||
|> line(endAbsolute = [0, 5])
|
||||
|> xLine(length = 5)
|
||||
|> tangentialArcTo([10, 0], %)
|
||||
|> tangentialArc(endAbsolute = [10, 0])
|
||||
`
|
||||
const viewPortSize = { width: 1000, height: 500 }
|
||||
await page.setBodyDimensions(viewPortSize)
|
||||
@ -634,8 +634,8 @@ openSketch = startSketchOn(XY)
|
||||
// Wait for enter sketch mode to complete
|
||||
await page.waitForTimeout(500)
|
||||
await editor.expectState({
|
||||
activeLines: [`|>tangentialArcTo([10,0],%)`],
|
||||
highlightedCode: 'tangentialArcTo([10,0],%)',
|
||||
activeLines: [`|>tangentialArc(endAbsolute=[10,0])`],
|
||||
highlightedCode: 'tangentialArc(endAbsolute=[10,0])',
|
||||
diagnostics: [],
|
||||
})
|
||||
})
|
||||
@ -1624,7 +1624,7 @@ profile001 = circle(sketch001, center = [0, 0], radius = 500)
|
||||
sketch002 = startSketchOn(XZ)
|
||||
|> startProfileAt([0, 0], %)
|
||||
|> xLine(length = -500)
|
||||
|> tangentialArcTo([-2000, 500], %)`,
|
||||
|> tangentialArc(endAbsolute = [-2000, 500])`,
|
||||
},
|
||||
{
|
||||
targetType: 'rectangle',
|
||||
@ -1640,7 +1640,7 @@ profile001 = startProfileAt([-400, -400], sketch001)
|
||||
sketch002 = startSketchOn(XZ)
|
||||
|> startProfileAt([0, 0], %)
|
||||
|> xLine(length = -500)
|
||||
|> tangentialArcTo([-2000, 500], %)`,
|
||||
|> tangentialArc(endAbsolute = [-2000, 500])`,
|
||||
},
|
||||
]
|
||||
sweepCases.map(({ initialCode, targetType, testPoint }) => {
|
||||
|
@ -63,7 +63,7 @@ test.describe('Sketch tests', { tag: ['@skipWin'] }, () => {
|
||||
part002 = startSketchOn(-XZ)
|
||||
${startProfileAt3}
|
||||
|> xLine(length = width / 4)
|
||||
|> tangentialArcTo([width / 2, 0], %)
|
||||
|> tangentialArc(endAbsolute = [width / 2, 0])
|
||||
|> xLine(length = -width / 4 + wireRadius)
|
||||
|> yLine(length = wireOffset)
|
||||
|> arc({
|
||||
@ -119,7 +119,7 @@ test.describe('Sketch tests', { tag: ['@skipWin'] }, () => {
|
||||
sketch001 = startSketchOn(XZ)
|
||||
|> startProfileAt([2.61, -4.01], %)
|
||||
|> xLine(length = 8.73)
|
||||
|> tangentialArcTo([8.33, -1.31], %)`
|
||||
|> tangentialArc(endAbsolute = [8.33, -1.31])`
|
||||
)
|
||||
})
|
||||
|
||||
@ -130,7 +130,7 @@ sketch001 = startSketchOn(XZ)
|
||||
|
||||
await expect(async () => {
|
||||
await page.mouse.click(700, 200)
|
||||
await page.getByText('tangentialArcTo([8.33, -1.31], %)').click()
|
||||
await page.getByText('tangentialArc(endAbsolute = [8.33, -1.31])').click()
|
||||
await expect(
|
||||
page.getByRole('button', { name: 'Edit Sketch' })
|
||||
).toBeEnabled({ timeout: 2000 })
|
||||
@ -139,7 +139,7 @@ sketch001 = startSketchOn(XZ)
|
||||
|
||||
await page.waitForTimeout(600) // wait for animation
|
||||
|
||||
await page.getByText('tangentialArcTo([8.33, -1.31], %)').click()
|
||||
await page.getByText('tangentialArc(endAbsolute = [8.33, -1.31])').click()
|
||||
await page.keyboard.press('End')
|
||||
await page.keyboard.down('Shift')
|
||||
await page.keyboard.press('ArrowUp')
|
||||
@ -212,7 +212,7 @@ sketch001 = startProfileAt([12.34, -12.34], sketch002)
|
||||
`sketch001 = startSketchOn(XZ)
|
||||
|> startProfileAt([4.61, -14.01], %)
|
||||
|> line(end = [12.73, -0.09])
|
||||
|> tangentialArcTo([24.95, -5.38], %)
|
||||
|> tangentialArc(endAbsolute = [24.95, -5.38])
|
||||
|> arcTo({
|
||||
interior = [20.18, -1.7],
|
||||
end = [11.82, -1.16]
|
||||
@ -262,7 +262,7 @@ sketch001 = startProfileAt([12.34, -12.34], sketch002)
|
||||
await expect(u.codeLocator).toHaveText(`sketch001 = startSketchOn(XZ)
|
||||
|> startProfileAt([4.61, -14.01], %)
|
||||
|> line(end = [12.73, -0.09])
|
||||
|> tangentialArcTo([24.95, -5.38], %)
|
||||
|> tangentialArc(endAbsolute = [24.95, -5.38])
|
||||
|> arcTo({
|
||||
interior = [20.18, -1.7],
|
||||
end = [11.82, -1.16]
|
||||
@ -326,7 +326,7 @@ sketch001 = startProfileAt([12.34, -12.34], sketch002)
|
||||
prevContent = await page.locator('.cm-content').innerText()
|
||||
}
|
||||
|
||||
// drag tangentialArcTo handle
|
||||
// drag tangentialArc handle
|
||||
const tangentEnd = await u.getBoundingBox('[data-overlay-index="1"]')
|
||||
await page.mouse.move(tangentEnd.x, tangentEnd.y - 5)
|
||||
await page.mouse.down()
|
||||
@ -407,7 +407,7 @@ sketch001 = startProfileAt([12.34, -12.34], sketch002)
|
||||
.toHaveText(`sketch001 = startSketchOn(XZ)
|
||||
|> startProfileAt([6.44, -12.07], %)
|
||||
|> line(end = [14.72, 1.97])
|
||||
|> tangentialArcTo([26.92, -3.32], %)
|
||||
|> tangentialArc(endAbsolute = [26.92, -3.32])
|
||||
|> arcTo({
|
||||
interior = [18.11, -3.73],
|
||||
end = [9.77, -3.19]
|
||||
@ -577,7 +577,7 @@ sketch001 = startSketchOn(XZ)
|
||||
sketch001 = startSketchOn(XZ)
|
||||
|> startProfileAt([4.61, -10.01], %)
|
||||
|> line(end = [12.73, -0.09])
|
||||
|> tangentialArcTo([24.95, -0.38], %)
|
||||
|> tangentialArc(endAbsolute = [24.95, -0.38])
|
||||
|> close()
|
||||
|> extrude(length = 5)`
|
||||
)
|
||||
@ -646,7 +646,7 @@ sketch001 = startSketchOn(XZ)
|
||||
await expect(page.locator('.cm-content')).not.toHaveText(prevContent)
|
||||
prevContent = await page.locator('.cm-content').innerText()
|
||||
|
||||
// drag tangentialArcTo handle
|
||||
// drag tangentialArc handle
|
||||
const tangentEnd = await u.getBoundingBox('[data-overlay-index="1"]')
|
||||
await page.dragAndDrop('#stream', '#stream', {
|
||||
sourcePosition: { x: tangentEnd.x + 10, y: tangentEnd.y - 5 },
|
||||
@ -663,7 +663,7 @@ sketch001 = startSketchOn(XZ)
|
||||
`sketch001 = startSketchOn(XZ)
|
||||
|> startProfileAt([7.12, -12.68], %)
|
||||
|> line(end = [12.68, -1.09])
|
||||
|> tangentialArcTo([24.89, 0.68], %)
|
||||
|> tangentialArc(endAbsolute = [24.89, 0.68])
|
||||
|> close()
|
||||
|> extrude(length = 5)`,
|
||||
{ shouldNormalise: true }
|
||||
@ -685,7 +685,7 @@ sketch001 = startSketchOn(XZ)
|
||||
sketch001 = startSketchOn(XZ)
|
||||
|> startProfileAt([4.61, -14.01], %)
|
||||
|> line(end = [12.73, -0.09])
|
||||
|> tangentialArcTo([24.95, -5.38], %)
|
||||
|> tangentialArc(endAbsolute = [24.95, -5.38])
|
||||
|> close()
|
||||
|> revolve(axis = X)`
|
||||
)
|
||||
@ -757,7 +757,7 @@ sketch001 = startSketchOn(XZ)
|
||||
await expect(page.locator('.cm-content')).not.toHaveText(prevContent)
|
||||
prevContent = await page.locator('.cm-content').innerText()
|
||||
|
||||
// drag tangentialArcTo handle
|
||||
// drag tangentialArc handle
|
||||
const tangentEnd = await u.getBoundingBox('[data-overlay-index="1"]')
|
||||
await page.mouse.move(tangentEnd.x, tangentEnd.y - 5)
|
||||
await page.mouse.down()
|
||||
@ -771,7 +771,7 @@ sketch001 = startSketchOn(XZ)
|
||||
`sketch001 = startSketchOn(XZ)
|
||||
|> startProfileAt([6.44, -12.07], %)
|
||||
|> line(end = [14.72, 1.97])
|
||||
|> tangentialArcTo([24.95, -5.38], %)
|
||||
|> tangentialArc(endAbsolute = [24.95, -5.38])
|
||||
|> line(end = [1.97, 2.06])
|
||||
|> close()
|
||||
|> revolve(axis = X)`,
|
||||
@ -1653,7 +1653,7 @@ profile003 = startProfileAt([206.63, -56.73], sketch001)
|
||||
await page.waitForTimeout(600)
|
||||
})
|
||||
|
||||
const codeFromTangentialArc = ` |> tangentialArcTo([39.49, 88.22], %)`
|
||||
const codeFromTangentialArc = ` |> tangentialArc(endAbsolute = [39.49, 88.22])`
|
||||
await test.step('check that tangential tool does not snap to other profile starts', async () => {
|
||||
await toolbar.tangentialArcBtn.click()
|
||||
await page.waitForTimeout(1000)
|
||||
@ -1675,7 +1675,7 @@ profile003 = startProfileAt([206.63, -56.73], sketch001)
|
||||
// check pixel is now gray at tanArcLocation to verify code has executed
|
||||
await scene.expectPixelColor([26, 26, 26], tanArcLocation, 15)
|
||||
await editor.expectEditor.not.toContain(
|
||||
`tangentialArcTo([39.49, 88.22], %)`
|
||||
`tangentialArc(endAbsolute = [39.49, 88.22])`
|
||||
)
|
||||
})
|
||||
|
||||
@ -1876,7 +1876,7 @@ profile003 = startProfileAt([206.63, -56.73], sketch001)
|
||||
|
||||
await endArcStartLine()
|
||||
await editor.expectEditor.toContain(
|
||||
`|> tangentialArcTo([16.61, 4.14], %)`
|
||||
`|> tangentialArc(endAbsolute = [16.61, 4.14])`
|
||||
)
|
||||
|
||||
// Add a three-point arc segment
|
||||
@ -2416,7 +2416,7 @@ sketch001 = startSketchOn(XZ)
|
||||
profile001 = startProfileAt([-63.43, 193.08], sketch001)
|
||||
|> line(end = [168.52, 149.87])
|
||||
|> line(end = [190.29, -39.18])
|
||||
|> tangentialArcTo([319.63, 129.65], %)
|
||||
|> tangentialArc(endAbsolute = [319.63, 129.65])
|
||||
|> line(end = [-217.65, -21.76])
|
||||
|> line(endAbsolute = [profileStartX(%), profileStartY(%)])
|
||||
|> close()
|
||||
|
@ -684,7 +684,7 @@ test.describe(
|
||||
await page.mouse.click(startXPx + PUR * 30, 500 - PUR * 20)
|
||||
|
||||
code += `
|
||||
|> tangentialArcTo([551.2, -62.01], %)`
|
||||
|> tangentialArc(endAbsolute = [551.2, -62.01])`
|
||||
await expect(u.codeLocator).toHaveText(code)
|
||||
|
||||
// click tangential arc tool again to unequip it
|
||||
@ -778,7 +778,7 @@ test.describe(
|
||||
await page.mouse.click(startXPx + PUR * 30, 500 - PUR * 20)
|
||||
|
||||
code += `
|
||||
|> tangentialArcTo([551.2, -62.01], %)`
|
||||
|> tangentialArc(endAbsolute = [551.2, -62.01])`
|
||||
await expect(u.codeLocator).toHaveText(code)
|
||||
|
||||
await page
|
||||
|
@ -98,7 +98,7 @@ part001 = startSketchOn(XZ)
|
||||
intersectTag: a,
|
||||
offset: 0
|
||||
}, %)
|
||||
|> tangentialArcTo([13.14 + 0, 13.14], %)
|
||||
|> tangentialArc(endAbsolute = [13.14 + 0, 13.14])
|
||||
|> close()
|
||||
|> extrude(length = 5 + 7)
|
||||
`
|
||||
|
@ -1140,7 +1140,7 @@ export function tomlToPerProjectSettings(
|
||||
return TOML.parse(toml)
|
||||
}
|
||||
|
||||
export function perProjectsettingsToToml(
|
||||
export function perProjectSettingsToToml(
|
||||
settings: DeepPartial<ProjectConfiguration>
|
||||
) {
|
||||
// eslint-disable-next-line no-restricted-syntax
|
||||
|
@ -229,7 +229,7 @@ test.describe('Testing segment overlays', { tag: ['@skipWin'] }, () => {
|
||||
intersectTag = a,
|
||||
offset = 9
|
||||
}, %)
|
||||
|> tangentialArcTo([5 + 3.14 + 13, 20 + 3.14], %)
|
||||
|> tangentialArc(endAbsolute = [5 + 3.14 + 13, 20 + 3.14])
|
||||
`
|
||||
)
|
||||
})
|
||||
@ -477,7 +477,7 @@ test.describe('Testing segment overlays', { tag: ['@skipWin'] }, () => {
|
||||
intersectTag = a,
|
||||
offset = 9
|
||||
}, %)
|
||||
|> tangentialArcTo([3.14 + 13, 3.14], %)
|
||||
|> tangentialArc(endAbsolute = [3.14 + 13, 3.14])
|
||||
`
|
||||
)
|
||||
localStorage.setItem('disableAxis', 'true')
|
||||
@ -602,7 +602,7 @@ test.describe('Testing segment overlays', { tag: ['@skipWin'] }, () => {
|
||||
intersectTag = a,
|
||||
offset = 9
|
||||
}, %)
|
||||
|> tangentialArcTo([3.14 + 13, 1.14], %)
|
||||
|> tangentialArc(endAbsolute = [3.14 + 13, 1.14])
|
||||
`
|
||||
)
|
||||
localStorage.setItem('disableAxis', 'true')
|
||||
@ -735,11 +735,7 @@ test.describe('Testing segment overlays', { tag: ['@skipWin'] }, () => {
|
||||
locator: '[data-overlay-toolbar-index="11"]',
|
||||
})
|
||||
})
|
||||
test('for segment [tangentialArcTo]', async ({
|
||||
page,
|
||||
editor,
|
||||
homePage,
|
||||
}) => {
|
||||
test('for segment [tangentialArc]', async ({ page, editor, homePage }) => {
|
||||
await page.addInitScript(async () => {
|
||||
localStorage.setItem(
|
||||
'persistCode',
|
||||
@ -762,7 +758,7 @@ test.describe('Testing segment overlays', { tag: ['@skipWin'] }, () => {
|
||||
intersectTag = a,
|
||||
offset = 9
|
||||
}, %)
|
||||
|> tangentialArcTo([3.14 + 13, -3.14], %)
|
||||
|> tangentialArc(endAbsolute = [3.14 + 13, -3.14])
|
||||
`
|
||||
)
|
||||
localStorage.setItem('disableAxis', 'true')
|
||||
@ -787,28 +783,29 @@ test.describe('Testing segment overlays', { tag: ['@skipWin'] }, () => {
|
||||
const clickUnconstrained = _clickUnconstrained(page, editor)
|
||||
const clickConstrained = _clickConstrained(page, editor)
|
||||
|
||||
const tangentialArcTo = await u.getBoundingBox(
|
||||
'[data-overlay-index="12"]'
|
||||
)
|
||||
const tangentialArc = await u.getBoundingBox('[data-overlay-index="12"]')
|
||||
let ang = await u.getAngle('[data-overlay-index="12"]')
|
||||
console.log('tangentialArcTo')
|
||||
console.log('tangentialArc')
|
||||
await clickConstrained({
|
||||
hoverPos: { x: tangentialArcTo.x, y: tangentialArcTo.y },
|
||||
hoverPos: { x: tangentialArc.x, y: tangentialArc.y },
|
||||
constraintType: 'xAbsolute',
|
||||
expectBeforeUnconstrained: 'tangentialArcTo([3.14 + 13, -3.14], %)',
|
||||
expectAfterUnconstrained: 'tangentialArcTo([16.14, -3.14], %)',
|
||||
expectFinal: 'tangentialArcTo([xAbs001, -3.14], %)',
|
||||
expectBeforeUnconstrained:
|
||||
'tangentialArc(endAbsolute = [3.14 + 13, -3.14])',
|
||||
expectAfterUnconstrained: 'tangentialArc(endAbsolute = [16.14, -3.14])',
|
||||
expectFinal: 'tangentialArc(endAbsolute = [xAbs001, -3.14])',
|
||||
ang: ang + 180,
|
||||
steps: 6,
|
||||
locator: '[data-overlay-toolbar-index="12"]',
|
||||
})
|
||||
console.log('tangentialArcTo2')
|
||||
console.log('tangentialArc2')
|
||||
await clickUnconstrained({
|
||||
hoverPos: { x: tangentialArcTo.x, y: tangentialArcTo.y },
|
||||
hoverPos: { x: tangentialArc.x, y: tangentialArc.y },
|
||||
constraintType: 'yAbsolute',
|
||||
expectBeforeUnconstrained: 'tangentialArcTo([xAbs001, -3.14], %)',
|
||||
expectAfterUnconstrained: 'tangentialArcTo([xAbs001, yAbs001], %)',
|
||||
expectFinal: 'tangentialArcTo([xAbs001, -3.14], %)',
|
||||
expectBeforeUnconstrained:
|
||||
'tangentialArc(endAbsolute = [xAbs001, -3.14])',
|
||||
expectAfterUnconstrained:
|
||||
'tangentialArc(endAbsolute = [xAbs001, yAbs001])',
|
||||
expectFinal: 'tangentialArc(endAbsolute = [xAbs001, -3.14])',
|
||||
ang: ang + 180,
|
||||
steps: 10,
|
||||
locator: '[data-overlay-toolbar-index="12"]',
|
||||
@ -1091,7 +1088,7 @@ part001 = startSketchOn(XZ)
|
||||
intersectTag = a,
|
||||
offset = 9
|
||||
}, %)
|
||||
|> tangentialArcTo([3.14 + 13, 1.14], %)
|
||||
|> tangentialArc(endAbsolute = [3.14 + 13, 1.14])
|
||||
|> arcTo({
|
||||
interior = [16.25, 5.12],
|
||||
end = [21.61, 4.15]
|
||||
@ -1161,8 +1158,8 @@ part001 = startSketchOn(XZ)
|
||||
ang = await u.getAngle('[data-overlay-index="12"]')
|
||||
await deleteSegmentSequence({
|
||||
hoverPos: { x: segmentToDelete.x, y: segmentToDelete.y },
|
||||
codeToBeDeleted: 'tangentialArcTo([3.14 + 13, 1.14], %)',
|
||||
stdLibFnName: 'tangentialArcTo',
|
||||
codeToBeDeleted: 'tangentialArc(endAbsolute = [3.14 + 13, 1.14])',
|
||||
stdLibFnName: 'tangentialArc',
|
||||
ang: ang + 180,
|
||||
steps: 6,
|
||||
locator: '[data-overlay-toolbar-index="12"]',
|
||||
|
@ -535,7 +535,7 @@ part001 = startSketchOn(XZ)
|
||||
intersectTag = a,
|
||||
offset = 0
|
||||
}, %)
|
||||
|> tangentialArcTo([13.14 + 0, 13.14], %)
|
||||
|> tangentialArc(endAbsolute = [13.14 + 0, 13.14])
|
||||
|> close()
|
||||
|> extrude(length = 5 + 7)
|
||||
`
|
||||
@ -574,7 +574,7 @@ part001 = startSketchOn(XZ)
|
||||
|
||||
const extrusionTopCap: Coords2d = [800, 240]
|
||||
const flatExtrusionFace: Coords2d = [960, 160]
|
||||
const tangentialArcTo: Coords2d = [840, 160]
|
||||
const tangentialArc: Coords2d = [840, 160]
|
||||
const close: Coords2d = [720, 200]
|
||||
const nothing: Coords2d = [600, 200]
|
||||
const closeEdge: Coords2d = [744, 233]
|
||||
@ -671,28 +671,28 @@ part001 = startSketchOn(XZ)
|
||||
)
|
||||
|
||||
await checkCodeAtHoverPosition(
|
||||
'tangentialArcTo',
|
||||
tangentialArcTo,
|
||||
'tangentialArcTo([13.14+0,13.14],%)extrude(length=5+7)',
|
||||
'tangentialArcTo([13.14 + 0, 13.14], %)'
|
||||
'tangentialArc',
|
||||
tangentialArc,
|
||||
'tangentialArc(endAbsolute=[13.14+0,13.14])extrude(length=5+7)',
|
||||
'tangentialArc(endAbsolute = [13.14 + 0, 13.14])'
|
||||
)
|
||||
await checkCodeAtHoverPosition(
|
||||
'tangentialArcEdge',
|
||||
tangentialArcEdge,
|
||||
`tangentialArcTo([13.14+0,13.14],%)`,
|
||||
'tangentialArcTo([13.14 + 0, 13.14], %)'
|
||||
`tangentialArc(endAbsolute=[13.14+0,13.14])`,
|
||||
'tangentialArc(endAbsolute = [13.14 + 0, 13.14])'
|
||||
)
|
||||
await checkCodeAtHoverPosition(
|
||||
'tangentialArcOppositeEdge',
|
||||
tangentialArcOppositeEdge,
|
||||
`tangentialArcTo([13.14+0,13.14],%)`,
|
||||
'tangentialArcTo([13.14 + 0, 13.14], %)'
|
||||
`tangentialArc(endAbsolute=[13.14+0,13.14])`,
|
||||
'tangentialArc(endAbsolute = [13.14 + 0, 13.14])'
|
||||
)
|
||||
await checkCodeAtHoverPosition(
|
||||
'tangentialArcAdjacentEdge',
|
||||
tangentialArcAdjacentEdge,
|
||||
`tangentialArcTo([13.14+0,13.14],%)`,
|
||||
'tangentialArcTo([13.14 + 0, 13.14], %)'
|
||||
`tangentialArc(endAbsolute=[13.14+0,13.14])`,
|
||||
'tangentialArc(endAbsolute = [13.14 + 0, 13.14])'
|
||||
)
|
||||
|
||||
await checkCodeAtHoverPosition(
|
||||
@ -940,7 +940,7 @@ part001 = startSketchOn(XZ)
|
||||
},
|
||||
{
|
||||
pos: [1107, 161],
|
||||
expectedCode: 'tangentialArcTo([167.95, -28.85], %)',
|
||||
expectedCode: 'tangentialArc(endAbsolute = [167.95, -28.85])',
|
||||
},
|
||||
] as const
|
||||
await page.addInitScript(
|
||||
|
@ -234,7 +234,7 @@
|
||||
"ts-node": "^10.0.0",
|
||||
"typescript": "^5.8.3",
|
||||
"typescript-eslint": "^8.29.0",
|
||||
"vite": "^5.4.17",
|
||||
"vite": "^5.4.18",
|
||||
"vite-plugin-package-version": "^1.1.0",
|
||||
"vite-plugin-top-level-await": "^1.5.0",
|
||||
"vite-tsconfig-paths": "^4.3.2",
|
||||
|
@ -834,9 +834,9 @@ vite-tsconfig-paths@^5.1.4:
|
||||
tsconfck "^3.0.3"
|
||||
|
||||
"vite@^5.0.0 || ^6.0.0":
|
||||
version "6.2.5"
|
||||
resolved "https://registry.yarnpkg.com/vite/-/vite-6.2.5.tgz#d093b5fe8eb96e594761584a966ab13f24457820"
|
||||
integrity sha512-j023J/hCAa4pRIUH6J9HemwYfjB5llR2Ps0CWeikOtdR8+pAURAk0DoJC5/mm9kd+UgdnIy7d6HE4EAvlYhPhA==
|
||||
version "6.2.6"
|
||||
resolved "https://registry.yarnpkg.com/vite/-/vite-6.2.6.tgz#7f0ccf2fdc0c1eda079ce258508728e2473d3f61"
|
||||
integrity sha512-9xpjNl3kR4rVDZgPNdTL0/c6ao4km69a/2ihNQbcANz8RuCOK3hQBmLSJf3bRKVQjVMda+YvizNE8AwvogcPbw==
|
||||
dependencies:
|
||||
esbuild "^0.25.0"
|
||||
postcss "^8.5.3"
|
||||
|
@ -45,6 +45,7 @@ export default defineConfig({
|
||||
[process.env.CI ? 'dot' : 'list'],
|
||||
['json', { outputFile: './test-results/report.json' }],
|
||||
['html'],
|
||||
['./e2e/playwright/lib/api-reporter.ts'],
|
||||
],
|
||||
/* Shared settings for all the projects below. See https://playwright.dev/docs/api/class-testoptions. */
|
||||
use: {
|
||||
|
@ -45,6 +45,7 @@ export default defineConfig({
|
||||
['dot'],
|
||||
['json', { outputFile: './test-results/report.json' }],
|
||||
['html'],
|
||||
['./e2e/playwright/lib/api-reporter.ts'],
|
||||
],
|
||||
/* Shared settings for all the projects below. See https://playwright.dev/docs/api/class-testoptions. */
|
||||
use: {
|
||||
|
@ -10,25 +10,25 @@ fn dividerSketch(plane) {
|
||||
sketch000 = startSketchOn(plane)
|
||||
|> startProfileAt([-16.82, 21.2], %)
|
||||
|> line(end = [-0.13, -1.27])
|
||||
|> tangentialArcTo([-15.94, profileStartY(%) - 7.73], %)
|
||||
|> tangentialArcTo([-16.6, profileStartY(%) - 15.52], %)
|
||||
|> tangentialArcTo([-18.38, profileStartY(%) - 18.63], %)
|
||||
|> tangentialArc(endAbsolute = [-15.94, profileStartY(%) - 7.73])
|
||||
|> tangentialArc(endAbsolute = [-16.6, profileStartY(%) - 15.52])
|
||||
|> tangentialArc(endAbsolute = [-18.38, profileStartY(%) - 18.63])
|
||||
|> line(end = [-1.25, -2.6])
|
||||
|> xLine(length = 6.04)
|
||||
|> line(end = [6.68, 7.87])
|
||||
|> tangentialArcTo([10.06, profileStartY(%) - 12.69], %)
|
||||
|> tangentialArc(endAbsolute = [10.06, profileStartY(%) - 12.69])
|
||||
|> line(end = [7.28, -8.47])
|
||||
|> xLine(length = 5.98)
|
||||
|> line(end = [-1.3, 3.01])
|
||||
|> tangentialArcTo([22.45, profileStartY(%) - 2.84], %)
|
||||
|> tangentialArcTo([25.08, profileStartY(%) + 6.42], %)
|
||||
|> tangentialArc(endAbsolute = [22.45, profileStartY(%) - 2.84])
|
||||
|> tangentialArc(endAbsolute = [25.08, profileStartY(%) + 6.42])
|
||||
|> line(end = [2.35, 16.36])
|
||||
|> line(end = [1.78, 1.15])
|
||||
|> tangentialArcTo([23.93, profileStartY(%) + 27.29], %)
|
||||
|> tangentialArc(endAbsolute = [23.93, profileStartY(%) + 27.29])
|
||||
|> line(end = [-1.92, 0.21])
|
||||
|> line(end = [-3.74, -26.54])
|
||||
|> tangentialArcTo([15.13, profileStartY(%) - 1.72], %)
|
||||
|> tangentialArcTo(profileStart(%), %)
|
||||
|> tangentialArc(endAbsolute = [15.13, profileStartY(%) - 1.72])
|
||||
|> tangentialArc(endAbsolute = profileStart(%))
|
||||
|> close()
|
||||
return sketch000
|
||||
}
|
||||
|
@ -17,66 +17,42 @@ brakeCaliperSketch = startSketchOn(XY)
|
||||
0,
|
||||
rotorTotalThickness + caliperTolerance - caliperInnerEdgeRadius
|
||||
])
|
||||
|> tangentialArc({
|
||||
offset = 90,
|
||||
radius = caliperInnerEdgeRadius
|
||||
}, %)
|
||||
|> tangentialArc(angle = 90, radius = caliperInnerEdgeRadius)
|
||||
|> line(end = [
|
||||
-caliperPadLength + 2 * caliperInnerEdgeRadius,
|
||||
0
|
||||
])
|
||||
|> tangentialArc({
|
||||
offset = -90,
|
||||
radius = caliperInnerEdgeRadius
|
||||
}, %)
|
||||
|> tangentialArc(angle = -90, radius = caliperInnerEdgeRadius)
|
||||
|> line(end = [
|
||||
0,
|
||||
caliperThickness - (caliperInnerEdgeRadius * 2)
|
||||
])
|
||||
|> tangentialArc({
|
||||
offset = -90,
|
||||
radius = caliperInnerEdgeRadius
|
||||
}, %)
|
||||
|> tangentialArc(angle = -90, radius = caliperInnerEdgeRadius)
|
||||
|> line(end = [
|
||||
caliperPadLength + caliperThickness - caliperOuterEdgeRadius - caliperInnerEdgeRadius,
|
||||
0
|
||||
])
|
||||
|> tangentialArc({
|
||||
offset = -90,
|
||||
radius = caliperOuterEdgeRadius
|
||||
}, %)
|
||||
|> tangentialArc(angle = -90, radius = caliperOuterEdgeRadius)
|
||||
|> line(end = [
|
||||
0,
|
||||
-2 * caliperTolerance - (2 * caliperThickness) - rotorTotalThickness + 2 * caliperOuterEdgeRadius
|
||||
])
|
||||
|> tangentialArc({
|
||||
offset = -90,
|
||||
radius = caliperOuterEdgeRadius
|
||||
}, %)
|
||||
|> tangentialArc(angle = -90, radius = caliperOuterEdgeRadius)
|
||||
|> line(end = [
|
||||
-caliperPadLength - caliperThickness + caliperOuterEdgeRadius + caliperInnerEdgeRadius,
|
||||
0
|
||||
])
|
||||
|> tangentialArc({
|
||||
offset = -90,
|
||||
radius = caliperInnerEdgeRadius
|
||||
}, %)
|
||||
|> tangentialArc(angle = -90, radius = caliperInnerEdgeRadius)
|
||||
|> line(end = [
|
||||
0,
|
||||
caliperThickness - (2 * caliperInnerEdgeRadius)
|
||||
])
|
||||
|> tangentialArc({
|
||||
offset = -90,
|
||||
radius = caliperInnerEdgeRadius
|
||||
}, %)
|
||||
|> tangentialArc(angle = -90, radius = caliperInnerEdgeRadius)
|
||||
|> line(end = [
|
||||
caliperPadLength - (2 * caliperInnerEdgeRadius),
|
||||
0
|
||||
])
|
||||
|> tangentialArc({
|
||||
offset = 90,
|
||||
radius = caliperInnerEdgeRadius
|
||||
}, %)
|
||||
|> tangentialArc(angle = 90, radius = caliperInnerEdgeRadius)
|
||||
|> close()
|
||||
|
||||
// Revolve the brake caliper sketch
|
||||
|
@ -17,7 +17,7 @@ tireSketch = startSketchOn(XY)
|
||||
],
|
||||
tag = $edge1,
|
||||
)
|
||||
|> tangentialArc({ offset = -90, radius = bendRadius }, %)
|
||||
|> tangentialArc(angle = -90, radius = bendRadius)
|
||||
|> line(endAbsolute = [
|
||||
tireOuterDiameter / 2,
|
||||
tireDepth / 2 - tireTreadOffset
|
||||
@ -36,7 +36,7 @@ tireSketch = startSketchOn(XY)
|
||||
tireOuterDiameter / 2,
|
||||
-tireDepth / 2 + bendRadius
|
||||
])
|
||||
|> tangentialArc({ offset = -90, radius = bendRadius }, %)
|
||||
|> tangentialArc(angle = -90, radius = bendRadius)
|
||||
|> line(endAbsolute = [tireInnerDiameter / 2, -tireDepth / 2], tag = $edge2)
|
||||
|> close()
|
||||
|
||||
|
@ -26,7 +26,7 @@ fn lug(plane, length, diameter) {
|
||||
|> angledLine(angle = 70, lengthY = lugHeadLength)
|
||||
|> xLine(endAbsolute = lugDiameter / 2)
|
||||
|> yLine(endAbsolute = lugLength)
|
||||
|> tangentialArc({ offset = 90, radius = fromMm(3) }, %)
|
||||
|> tangentialArc(angle = 90, radius = fromMm(3))
|
||||
|> xLine(endAbsolute = 0 + .001, tag = $c1)
|
||||
|> yLine(endAbsolute = lugThreadDepth)
|
||||
|> xLine(endAbsolute = lugThreadDiameter)
|
||||
|
@ -19,17 +19,11 @@ fn cycloidalGear(gearPitch, gearHeight, holeDiameter, helixAngle) {
|
||||
angleEnd = -90 + helixAngleP,
|
||||
radius = gearPitch
|
||||
}, %)
|
||||
|> tangentialArc({
|
||||
radius = gearPitch * 1.67,
|
||||
offset = 60
|
||||
}, %)
|
||||
|> tangentialArc({ radius = gearPitch, offset = -180 }, %)
|
||||
|> tangentialArc({
|
||||
radius = gearPitch * 1.67,
|
||||
offset = 60
|
||||
}, %)
|
||||
|> tangentialArc({ radius = gearPitch, offset = -180 }, %)
|
||||
|> tangentialArcTo([profileStartX(%), profileStartY(%)], %)
|
||||
|> tangentialArc(radius = gearPitch * 1.67, angle = 60)
|
||||
|> tangentialArc(radius = gearPitch, angle = -180)
|
||||
|> tangentialArc(radius = gearPitch * 1.67, angle = 60)
|
||||
|> tangentialArc(radius = gearPitch, angle = -180)
|
||||
|> tangentialArc(endAbsolute = [profileStartX(%), profileStartY(%)])
|
||||
|> close(%)
|
||||
|> hole(circle(center = [0, 0], radius = holeDiameter / 2), %)
|
||||
return gearProfile
|
||||
|
@ -184,15 +184,15 @@ handlePlane = startSketchOn(offsetPlane(XY, offset = handleHeightAboveTheFloor))
|
||||
|
||||
handleProfilePath = startProfileAt([0 + handleOffset, 0], handlePlane)
|
||||
|> yLine(length = -handleLengthSegmentA)
|
||||
|> tangentialArcTo([
|
||||
|> tangentialArc(endAbsolute = [
|
||||
handleFillet + handleOffset,
|
||||
-handleDepth
|
||||
], %)
|
||||
])
|
||||
|> xLine(length = handleLengthSegmentB)
|
||||
|> tangentialArcTo([
|
||||
|> tangentialArc(endAbsolute = [
|
||||
handleOffset + handleWidth,
|
||||
-handleLengthSegmentA
|
||||
], %)
|
||||
])
|
||||
|> yLine(length = handleLengthSegmentA)
|
||||
handleSectionPlane = startSketchOn(XZ)
|
||||
handleProfileSection = circle(
|
||||
|
@ -33,9 +33,9 @@ fn primaryTube(n, angle001, length001, length002, length003) {
|
||||
sweepPath = startSketchOn(sweepPlane)
|
||||
|> startProfileAt([0, plateHeight], %)
|
||||
|> line(end = [0, length001])
|
||||
|> tangentialArc({ offset = -80, radius = bendRadius }, %, $arc01)
|
||||
|> tangentialArc(angle = -80, radius = bendRadius, tag = $arc01)
|
||||
|> angledLine(angle = tangentToEnd(arc01), length = length002)
|
||||
|> tangentialArc({ offset = 85, radius = bendRadius }, %, $arc02)
|
||||
|> tangentialArc(angle = 85, radius = bendRadius, tag = $arc02)
|
||||
|> angledLine(angle = tangentToEnd(arc02), length = length003)
|
||||
|
||||
// Create the cross section of each tube and sweep them
|
||||
@ -57,21 +57,21 @@ primaryTube(3, 25.2, 5, 5, 3)
|
||||
flangeSketch = startSketchOn(XY)
|
||||
|> startProfileAt([3 + 1.3, -1.25], %)
|
||||
|> xLine(length = -2.6, tag = $seg01)
|
||||
|> tangentialArc({ radius = .3, offset = -40 }, %)
|
||||
|> tangentialArc({ radius = .9, offset = 80 }, %)
|
||||
|> tangentialArc({ radius = .3, offset = -40 }, %)
|
||||
|> tangentialArc(radius = .3, angle = -40)
|
||||
|> tangentialArc(radius = .9, angle = 80)
|
||||
|> tangentialArc(radius = .3, angle = -40)
|
||||
|> xLine(length = -1.4, tag = $seg03)
|
||||
|> yLine(length = segLen(seg01), tag = $seg04)
|
||||
|> xLine(length = 3.1, tag = $seg05)
|
||||
|> tangentialArc({ radius = .3, offset = -40 }, %)
|
||||
|> tangentialArc({ radius = 1.5, offset = 80 }, %)
|
||||
|> tangentialArc({ radius = .3, offset = -40 }, %)
|
||||
|> tangentialArc(radius = .3, angle = -40)
|
||||
|> tangentialArc(radius = 1.5, angle = 80)
|
||||
|> tangentialArc(radius = .3, angle = -40)
|
||||
|> xLine(length = segLen(seg05), tag = $seg07)
|
||||
|> yLine(endAbsolute = profileStartY(%), tag = $seg08)
|
||||
|> xLine(length = -segLen(seg03), tag = $seg09)
|
||||
|> tangentialArc({ radius = .3, offset = -40 }, %)
|
||||
|> tangentialArc({ radius = .9, offset = 80 }, %)
|
||||
|> tangentialArcTo([profileStartX(%), profileStartY(%)], %)
|
||||
|> tangentialArc(radius = .3, angle = -40)
|
||||
|> tangentialArc(radius = .9, angle = 80)
|
||||
|> tangentialArc(endAbsolute = [profileStartX(%), profileStartY(%)])
|
||||
|> close()
|
||||
|
||||
// Create openings in the flange to accommodate each tube
|
||||
|
@ -36,9 +36,9 @@ fn slot(sketch1, start, end, width) {
|
||||
ystart = width / 2 * sin(toRadians(angle - 90)) + start[1]
|
||||
slotSketch = startProfileAt([xstart, ystart], sketch1)
|
||||
|> angledLine(angle = angle, length = dist)
|
||||
|> tangentialArc({ radius = width / 2, offset = 180 }, %)
|
||||
|> tangentialArc(radius = width / 2, angle = 180)
|
||||
|> angledLine(angle = angle, length = -dist)
|
||||
|> tangentialArcTo([profileStartX(%), profileStartY(%)], %)
|
||||
|> tangentialArc(endAbsolute = [profileStartX(%), profileStartY(%)])
|
||||
|> close()
|
||||
return slotSketch
|
||||
}
|
||||
|
@ -127,7 +127,7 @@ sketch006 = startSketchOn(XZ)
|
||||
|> yLine(length = 10)
|
||||
|> line(end = [0.6, 0])
|
||||
|> yLine(length = -.05)
|
||||
|> tangentialArc({ radius = 0.6, offset = -90 }, %)
|
||||
|> tangentialArc(radius = 0.6, angle = -90)
|
||||
|> line(endAbsolute = [profileStartX(%), profileStartY(%)])
|
||||
|> close()
|
||||
|> revolve(axis = Y)
|
||||
@ -192,15 +192,15 @@ sketch011 = startSketchOn(XZ)
|
||||
sketch012 = startSketchOn(offsetPlane(XZ, offset = handleThickness / 2))
|
||||
|> startProfileAt([2.3, 6.4], %)
|
||||
|> line(end = [0.56, 0])
|
||||
|> tangentialArcTo([4.1, 5.26], %)
|
||||
|> tangentialArcTo([4.17, 1.6], %)
|
||||
|> tangentialArcTo([3.13, 0.61], %)
|
||||
|> tangentialArc(endAbsolute = [4.1, 5.26])
|
||||
|> tangentialArc(endAbsolute = [4.17, 1.6])
|
||||
|> tangentialArc(endAbsolute = [3.13, 0.61])
|
||||
|> line(end = [-1.09, 0])
|
||||
|> line(end = [0, 0.43])
|
||||
|> line(end = [0.99, -0.02])
|
||||
|> tangentialArcTo([3.63, 1.6], %)
|
||||
|> tangentialArcTo([3.56, 5.15], %)
|
||||
|> tangentialArcTo([2.72, 5.88], %)
|
||||
|> tangentialArc(endAbsolute = [3.63, 1.6])
|
||||
|> tangentialArc(endAbsolute = [3.56, 5.15])
|
||||
|> tangentialArc(endAbsolute = [2.72, 5.88])
|
||||
|> line(end = [-0.4, 0])
|
||||
|> line(endAbsolute = [profileStartX(%), profileStartY(%)])
|
||||
|> close()
|
||||
|
@ -24,13 +24,13 @@ rackBody = startSketchOn(XY)
|
||||
fn tooth() {
|
||||
toothSketch = startSketchOn(XY)
|
||||
|> startProfileAt([-length / 2 + 0.567672, minHeight], %)
|
||||
|> tangentialArcToRelative([0.157636, 0.110378], %)
|
||||
|> tangentialArc(end = [0.157636, 0.110378])
|
||||
|> line(end = [0.329118, 0.904244])
|
||||
|> tangentialArcToRelative([0.157636, 0.110378], %)
|
||||
|> tangentialArc(end = [0.157636, 0.110378])
|
||||
|> line(end = [0.186505, 0])
|
||||
|> tangentialArcToRelative([0.157636, -0.110378], %)
|
||||
|> tangentialArc(end = [0.157636, -0.110378])
|
||||
|> line(end = [0.329118, -0.904244])
|
||||
|> tangentialArcToRelative([0.157636, -0.110378], %)
|
||||
|> tangentialArc(end = [0.157636, -0.110378])
|
||||
|> close()
|
||||
|> extrude(length = width)
|
||||
return toothSketch
|
||||
@ -44,7 +44,7 @@ teeth = tooth()
|
||||
endCapTooth = startSketchOn(XY)
|
||||
|> startProfileAt([-length / 2, 11.849525], %)
|
||||
|> line(end = [0.314524, -0.864147])
|
||||
|> tangentialArcToRelative([0.157636, -0.110378], %)
|
||||
|> tangentialArc(end = [0.157636, -0.110378])
|
||||
|> line(endAbsolute = [-length / 2, minHeight])
|
||||
|> close()
|
||||
|> extrude(length = width)
|
||||
@ -53,7 +53,7 @@ endCapTooth = startSketchOn(XY)
|
||||
endCapTooth2 = startSketchOn(XY)
|
||||
|> startProfileAt([length / 2, 11.849525], %)
|
||||
|> line(end = [-0.314524, -0.864147])
|
||||
|> tangentialArcToRelative([-0.157636, -0.110378], %)
|
||||
|> tangentialArc(end = [-0.157636, -0.110378])
|
||||
|> line(endAbsolute = [length / 2, minHeight])
|
||||
|> close()
|
||||
|> extrude(length = width)
|
||||
|
@ -18,7 +18,7 @@ iBeam = startSketchOn(-XZ)
|
||||
|> xLine(length = flangeWidth / 2)
|
||||
|> yLine(length = -flangeThickness)
|
||||
|> xLine(endAbsolute = webThickness / 2 + rootRadius)
|
||||
|> tangentialArc({ radius = rootRadius, offset = 90 }, %)
|
||||
|> tangentialArc(radius = rootRadius, angle = 90)
|
||||
|> yLine(endAbsolute = 0)
|
||||
|> mirror2d(axis = X)
|
||||
|> mirror2d(axis = Y)
|
||||
|
@ -74,11 +74,11 @@ fn keyFn(originStart, keyWidth, keyHeight, repeats, color) {
|
||||
radius = 0.1
|
||||
}, %)
|
||||
|> angledLine(angle = 0, length = keyWidth - .2, tag = $rectangleSegmentA001)
|
||||
|> tangentialArc({ radius = 0.1, offset = 90 }, %)
|
||||
|> tangentialArc(radius = 0.1, angle = 90)
|
||||
|> angledLine(angle = segAng(rectangleSegmentA001) + 90, length = keyHeight - .2, tag = $rectangleSegmentB001)
|
||||
|> tangentialArc({ radius = 0.1, offset = 90 }, %)
|
||||
|> tangentialArc(radius = 0.1, angle = 90)
|
||||
|> angledLine(angle = segAng(rectangleSegmentA001), length = -segLen(rectangleSegmentA001), tag = $rectangleSegmentC001)
|
||||
|> tangentialArc({ radius = 0.1, offset = 90 }, %)
|
||||
|> tangentialArc(radius = 0.1, angle = 90)
|
||||
|> line(endAbsolute = [profileStartX(%), profileStartY(%)], tag = $rectangleSegmentD001)
|
||||
|> close()
|
||||
|> extrude(length = keyDepth)
|
||||
|
@ -69,7 +69,7 @@ customPlane = {
|
||||
}
|
||||
sketch003 = startSketchOn(customPlane)
|
||||
|> startProfileAt([0, 0], %)
|
||||
|> tangentialArc({ offset = 60, radius = height }, %)
|
||||
|> tangentialArc(angle = 60, radius = height)
|
||||
|> angledLine(angle = 60, endAbsoluteY = 0)
|
||||
|> close()
|
||||
|> extrude(length = wallThickness)
|
||||
@ -85,11 +85,11 @@ sketch004 = startSketchOn(sketch002, 'END')
|
||||
|> angledLine(angle = 60, endAbsoluteY = segEndY(seg01))
|
||||
|> yLine(endAbsolute = height)
|
||||
|> xLine(length = wallThickness)
|
||||
|> tangentialArcTo([
|
||||
|> tangentialArc(endAbsolute = [
|
||||
(frontLength - wallsWidth) / 2 + wallsWidth,
|
||||
height - ((height - exitHeight) / 2)
|
||||
], %)
|
||||
|> tangentialArcTo([frontLength, exitHeight], %)
|
||||
])
|
||||
|> tangentialArc(endAbsolute = [frontLength, exitHeight])
|
||||
|> yLine(endAbsolute = 0)
|
||||
|> close(tag = $seg04)
|
||||
|> extrude(length = wallThickness)
|
||||
@ -110,11 +110,11 @@ sketch005 = startSketchOn(customPlane2)
|
||||
|> startProfileAt([0, 0], %)
|
||||
|> yLine(endAbsolute = height)
|
||||
|> xLine(endAbsolute = wallsWidth)
|
||||
|> tangentialArcTo([
|
||||
|> tangentialArc(endAbsolute = [
|
||||
(frontLength - wallsWidth) / 2 + wallsWidth,
|
||||
height - ((height - exitHeight) / 2)
|
||||
], %)
|
||||
|> tangentialArcTo([frontLength, exitHeight], %)
|
||||
])
|
||||
|> tangentialArc(endAbsolute = [frontLength, exitHeight])
|
||||
|> yLine(endAbsolute = 0, tag = $seg03)
|
||||
|> close()
|
||||
|> extrude(length = wallThickness)
|
||||
|
@ -37,49 +37,25 @@ bracketProfile = startSketchOn(XZ)
|
||||
0
|
||||
], %)
|
||||
|> xLine(length = flangeLength)
|
||||
|> tangentialArc({
|
||||
radius = exteriorBendRadius,
|
||||
offset = bendAngle
|
||||
}, %)
|
||||
|> tangentialArc(radius = exteriorBendRadius, angle = bendAngle)
|
||||
|> angledLine(angle = bendAngle, endAbsoluteY = hatHeight - thickness, tag = $seg01)
|
||||
|> tangentialArc({
|
||||
radius = interiorBendRadius,
|
||||
offset = -bendAngle
|
||||
}, %)
|
||||
|> tangentialArc(radius = interiorBendRadius, angle = -bendAngle)
|
||||
|> xLine(endAbsolute = 0, tag = $seg02)
|
||||
|> xLine(length = segLen(seg02))
|
||||
|> tangentialArc({
|
||||
radius = interiorBendRadius,
|
||||
offset = -bendAngle
|
||||
}, %)
|
||||
|> tangentialArc(radius = interiorBendRadius, angle = -bendAngle)
|
||||
|> angledLine(angle = -bendAngle, length = segLen(seg01))
|
||||
|> tangentialArc({
|
||||
radius = exteriorBendRadius,
|
||||
offset = bendAngle
|
||||
}, %)
|
||||
|> tangentialArc(radius = exteriorBendRadius, angle = bendAngle)
|
||||
|> xLine(length = flangeLength)
|
||||
|> yLine(length = thickness, tag = $seg03)
|
||||
|> xLine(length = -flangeLength, tag = $seg04)
|
||||
|> tangentialArc({
|
||||
radius = interiorBendRadius,
|
||||
offset = -bendAngle
|
||||
}, %)
|
||||
|> tangentialArc(radius = interiorBendRadius, angle = -bendAngle)
|
||||
|> angledLine(angle = 180 - bendAngle, length = segLen(seg01))
|
||||
|> tangentialArc({
|
||||
radius = exteriorBendRadius,
|
||||
offset = bendAngle
|
||||
}, %)
|
||||
|> tangentialArc(radius = exteriorBendRadius, angle = bendAngle)
|
||||
|> xLine(endAbsolute = 0, tag = $seg05)
|
||||
|> xLine(length = -segLen(seg05))
|
||||
|> tangentialArc({
|
||||
radius = exteriorBendRadius,
|
||||
offset = bendAngle
|
||||
}, %)
|
||||
|> tangentialArc(radius = exteriorBendRadius, angle = bendAngle)
|
||||
|> angledLine(angle = bendAngle - 180, length = segLen(seg01))
|
||||
|> tangentialArc({
|
||||
radius = interiorBendRadius,
|
||||
offset = -bendAngle
|
||||
}, %)
|
||||
|> tangentialArc(radius = interiorBendRadius, angle = -bendAngle)
|
||||
|> xLine(length = -flangeLength, tag = $seg06)
|
||||
|> line(endAbsolute = [profileStartX(%), profileStartY(%)], tag = $seg07)
|
||||
|> close()
|
||||
|
24
rust/Cargo.lock
generated
24
rust/Cargo.lock
generated
@ -2762,9 +2762,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "pyo3"
|
||||
version = "0.24.0"
|
||||
version = "0.24.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "7f1c6c3591120564d64db2261bec5f910ae454f01def849b9c22835a84695e86"
|
||||
checksum = "17da310086b068fbdcefbba30aeb3721d5bb9af8db4987d6735b2183ca567229"
|
||||
dependencies = [
|
||||
"cfg-if",
|
||||
"indoc",
|
||||
@ -2781,9 +2781,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "pyo3-build-config"
|
||||
version = "0.24.0"
|
||||
version = "0.24.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "e9b6c2b34cf71427ea37c7001aefbaeb85886a074795e35f161f5aecc7620a7a"
|
||||
checksum = "e27165889bd793000a098bb966adc4300c312497ea25cf7a690a9f0ac5aa5fc1"
|
||||
dependencies = [
|
||||
"once_cell",
|
||||
"target-lexicon",
|
||||
@ -2791,9 +2791,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "pyo3-ffi"
|
||||
version = "0.24.0"
|
||||
version = "0.24.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "5507651906a46432cdda02cd02dd0319f6064f1374c9147c45b978621d2c3a9c"
|
||||
checksum = "05280526e1dbf6b420062f3ef228b78c0c54ba94e157f5cb724a609d0f2faabc"
|
||||
dependencies = [
|
||||
"libc",
|
||||
"pyo3-build-config",
|
||||
@ -2801,9 +2801,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "pyo3-macros"
|
||||
version = "0.24.0"
|
||||
version = "0.24.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "b0d394b5b4fd8d97d48336bb0dd2aebabad39f1d294edd6bcd2cccf2eefe6f42"
|
||||
checksum = "5c3ce5686aa4d3f63359a5100c62a127c9f15e8398e5fdeb5deef1fed5cd5f44"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"pyo3-macros-backend",
|
||||
@ -2813,9 +2813,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "pyo3-macros-backend"
|
||||
version = "0.24.0"
|
||||
version = "0.24.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "fd72da09cfa943b1080f621f024d2ef7e2773df7badd51aa30a2be1f8caa7c8e"
|
||||
checksum = "f4cf6faa0cbfb0ed08e89beb8103ae9724eb4750e3a78084ba4017cbe94f3855"
|
||||
dependencies = [
|
||||
"heck",
|
||||
"proc-macro2",
|
||||
@ -3956,9 +3956,9 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20"
|
||||
|
||||
[[package]]
|
||||
name = "tokio"
|
||||
version = "1.44.1"
|
||||
version = "1.44.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "f382da615b842244d4b8738c82ed1275e6c5dd90c459a30941cd07080b06c91a"
|
||||
checksum = "e6b88822cbe49de4185e3a4cbf8321dd487cf5fe0c5c65695fef6346371e9c48"
|
||||
dependencies = [
|
||||
"backtrace",
|
||||
"bytes",
|
||||
|
@ -39,7 +39,7 @@ kittycad = { version = "0.3.36", default-features = false, features = ["js", "re
|
||||
kittycad-modeling-cmds = { version = "0.2.113", features = ["ts-rs", "websocket"] }
|
||||
lazy_static = "1.5.0"
|
||||
miette = "7.5.0"
|
||||
pyo3 = { version = "0.24.0" }
|
||||
pyo3 = { version = "0.24.1" }
|
||||
serde = { version = "1", features = ["derive"] }
|
||||
serde_json = { version = "1" }
|
||||
slog = "2.7.0"
|
||||
|
@ -32,7 +32,7 @@ tracing-subscriber = { workspace = true }
|
||||
|
||||
[target.'cfg(not(target_arch = "wasm32"))'.dependencies]
|
||||
signal-hook = "0.3.17"
|
||||
tokio = { version = "1.43.0", features = ["full"] }
|
||||
tokio = { version = "1.44.2", features = ["full"] }
|
||||
tower-lsp = { version = "0.20.0", features = ["proposed"] }
|
||||
|
||||
[target.'cfg(target_arch = "wasm32")'.dependencies]
|
||||
|
@ -126,7 +126,7 @@ insta = { version = "1.41.1", features = ["json", "filters", "redactions"] }
|
||||
kcl-directory-test-macro = { version = "0.1", path = "../kcl-directory-test-macro" }
|
||||
miette = { version = "7.5.0", features = ["fancy"] }
|
||||
pretty_assertions = "1.4.1"
|
||||
tokio = { version = "1.41.1", features = ["rt-multi-thread", "macros", "time"] }
|
||||
tokio = { version = "1.44.2", features = ["rt-multi-thread", "macros", "time"] }
|
||||
twenty-twenty = "0.8.0"
|
||||
|
||||
[lints]
|
||||
|
@ -10,41 +10,41 @@ let corner_radius = 5.0
|
||||
let brace_base = startSketchOn(XY)
|
||||
|> startProfileAt([corner_radius, 0], %)
|
||||
|> line(end = [width - corner_radius, 0.0])
|
||||
|> tangentialArcToRelative([corner_radius, corner_radius], %)
|
||||
|> tangentialArc(end = [corner_radius, corner_radius])
|
||||
|> yLine(length = 25.0 - corner_radius)
|
||||
|> tangentialArcToRelative([-corner_radius, corner_radius], %)
|
||||
|> tangentialArc(end = [-corner_radius, corner_radius])
|
||||
|> xLine(length = -(d_wrist_circumference[0] - (corner_radius * 2)))
|
||||
|> tangentialArcToRelative([-corner_radius, corner_radius], %)
|
||||
|> tangentialArc(end = [-corner_radius, corner_radius])
|
||||
|> yLine(length = length - 25.0 - 23.0 - (corner_radius * 2))
|
||||
|> tangentialArcToRelative([corner_radius, corner_radius], %)
|
||||
|> tangentialArc(end = [corner_radius, corner_radius])
|
||||
|> xLine(length = 15.0 - (corner_radius * 2))
|
||||
|> tangentialArcToRelative([corner_radius, corner_radius], %)
|
||||
|> tangentialArc(end = [corner_radius, corner_radius])
|
||||
|> yLine(length = 23.0 - corner_radius)
|
||||
|> tangentialArcToRelative([-corner_radius, corner_radius], %)
|
||||
|> tangentialArc(end = [-corner_radius, corner_radius])
|
||||
|> xLine(length = -(hand_thickness + 15.0 + 15.0 - (corner_radius * 2)))
|
||||
|> tangentialArcToRelative([-corner_radius, -corner_radius], %)
|
||||
|> tangentialArc(end = [-corner_radius, -corner_radius])
|
||||
|> yLine(length = -(23.0 - corner_radius))
|
||||
|> tangentialArcToRelative([corner_radius, -corner_radius], %)
|
||||
|> tangentialArc(end = [corner_radius, -corner_radius])
|
||||
|> xLine(length = 15.0 - (corner_radius * 2))
|
||||
|> tangentialArcToRelative([corner_radius, -corner_radius], %)
|
||||
|> tangentialArc(end = [corner_radius, -corner_radius])
|
||||
|> yLine(length = -(length - 25.0 - 23.0 - (corner_radius * 2)))
|
||||
|> tangentialArcToRelative([-corner_radius, -corner_radius], %)
|
||||
|> tangentialArc(end = [-corner_radius, -corner_radius])
|
||||
|> xLine(length = -(d_wrist_circumference[1] + d_wrist_circumference[2] + d_wrist_circumference[3] - hand_thickness - corner_radius))
|
||||
|> tangentialArcToRelative([-corner_radius, -corner_radius], %)
|
||||
|> tangentialArc(end = [-corner_radius, -corner_radius])
|
||||
|> yLine(length = -(25.0 - corner_radius))
|
||||
|> tangentialArcToRelative([corner_radius, -corner_radius], %)
|
||||
|> tangentialArc(end = [corner_radius, -corner_radius])
|
||||
|> close()
|
||||
|
||||
let inner = startSketchOn(XY)
|
||||
|> startProfileAt([0, 0], %)
|
||||
|> xLine(length = 1.0)
|
||||
|> tangentialArcToRelative([corner_radius, corner_radius], %)
|
||||
|> tangentialArc(end = [corner_radius, corner_radius])
|
||||
|> yLine(length = 25.0 - (corner_radius * 2))
|
||||
|> tangentialArcToRelative([-corner_radius, corner_radius], %)
|
||||
|> tangentialArc(end = [-corner_radius, corner_radius])
|
||||
|> xLine(length = -1.0)
|
||||
|> tangentialArcToRelative([-corner_radius, -corner_radius], %)
|
||||
|> tangentialArc(end = [-corner_radius, -corner_radius])
|
||||
|> yLine(length = -(25.0 - (corner_radius * 2)))
|
||||
|> tangentialArcToRelative([corner_radius, -corner_radius], %)
|
||||
|> tangentialArc(end = [corner_radius, -corner_radius])
|
||||
|> close()
|
||||
|
||||
let final = brace_base
|
||||
|
@ -11,17 +11,17 @@ const wallMountL = 8
|
||||
const bracket = startSketchOn(XY)
|
||||
|> startProfileAt([0, 0], %)
|
||||
|> line(end = [0, wallMountL])
|
||||
|> tangentialArc({
|
||||
radius: filletR,
|
||||
offset: 90
|
||||
}, %)
|
||||
|> tangentialArc(
|
||||
radius = filletR,
|
||||
angle = 90,
|
||||
)
|
||||
|> line(end = [-shelfMountL, 0])
|
||||
|> line(end = [0, -thickness])
|
||||
|> line(end = [shelfMountL, 0])
|
||||
|> tangentialArc({
|
||||
radius: filletR - thickness,
|
||||
offset: -90
|
||||
}, %)
|
||||
|> tangentialArc(
|
||||
radius = filletR - thickness,
|
||||
angle = -90,
|
||||
)
|
||||
|> line(end = [0, -wallMountL])
|
||||
|> close()
|
||||
|> extrude(length = width)
|
||||
|
@ -763,9 +763,9 @@ const sketch010fl = startSketchOn(extrude001fl, 'START')
|
||||
originStart[2] + .81 - (.438 / 2)
|
||||
], %)
|
||||
|> xLine(length = 0.75 - .438)
|
||||
|> tangentialArcTo([-0.66 - originStart[0],originStart[2] + .81 + .438 / 2], %)
|
||||
|> tangentialArc(endAbsolute = [-0.66 - originStart[0],originStart[2] + .81 + .438 / 2])
|
||||
|> xLine(length = -0.75 + .438)
|
||||
|> tangentialArcTo([profileStartX(%), profileStartY(%)], %)
|
||||
|> tangentialArc(endAbsolute = [profileStartX(%), profileStartY(%)])
|
||||
|> close()
|
||||
|> patternLinear2d(
|
||||
axis = [0, 1],
|
||||
@ -781,12 +781,12 @@ const sketch011fl = startSketchOn(extrude001fl, 'START')
|
||||
originStart[2] + railHeight * 1.75 / 2 + .438 / 2
|
||||
], %)
|
||||
|> xLine(length = 0.75 - .438)
|
||||
|> tangentialArcTo([
|
||||
-0.66 - originStart[0],originStart[2]+
|
||||
railHeight * 1.75 / 2 - (.438 / 2)
|
||||
], %)
|
||||
|> tangentialArc(endAbsolute = [
|
||||
-0.66 - originStart[0],
|
||||
originStart[2] + railHeight * 1.75 / 2 - (.438 / 2)
|
||||
])
|
||||
|> xLine(length = -0.75 + .438)
|
||||
|> tangentialArcTo([profileStartX(%), profileStartY(%)], %)
|
||||
|> tangentialArc(endAbsolute = [profileStartX(%), profileStartY(%)])
|
||||
|> close()
|
||||
|
||||
const extrude011fl = extrude(sketch011fl, length = -thickness)
|
||||
@ -798,12 +798,12 @@ const sketch012fl = startSketchOn(extrude001fl, 'START')
|
||||
railHeight * 1.75 - .81 + .438 / 2
|
||||
], %)
|
||||
|> xLine(length = 0.75 - .438)
|
||||
|> tangentialArcTo([
|
||||
|> tangentialArc(endAbsolute = [
|
||||
-0.66 - originStart[0], originStart[2]+
|
||||
railHeight * 1.75 - .81 - (.438 / 2)
|
||||
], %)
|
||||
])
|
||||
|> xLine(length = -0.75 + .438)
|
||||
|> tangentialArcTo([profileStartX(%), profileStartY(%)], %)
|
||||
|> tangentialArc(endAbsolute = [profileStartX(%), profileStartY(%)])
|
||||
|> close()
|
||||
|> patternLinear2d(
|
||||
axis = [0, -1],
|
||||
@ -1006,12 +1006,12 @@ const sketch010fr = startSketchOn(extrude001fr, 'START')
|
||||
originStart[2] + .81 - (.438 / 2)
|
||||
], %)
|
||||
|> xLine(length = 0.75 - .438)
|
||||
|> tangentialArcTo([
|
||||
|> tangentialArc(endAbsolute = [
|
||||
-0.66 - originStart[0],
|
||||
originStart[2] + .81 + .438 / 2
|
||||
], %)
|
||||
])
|
||||
|> xLine(length = -0.75 + .438)
|
||||
|> tangentialArcTo([profileStartX(%), profileStartY(%)], %)
|
||||
|> tangentialArc(endAbsolute = [profileStartX(%), profileStartY(%)])
|
||||
|> close()
|
||||
|> patternLinear2d(
|
||||
axis = [0, 1],
|
||||
@ -1027,12 +1027,12 @@ const sketch011fr = startSketchOn(extrude001fr, 'START')
|
||||
originStart[2] + railHeight * 1.75 / 2 + .438 / 2
|
||||
], %)
|
||||
|> xLine(length = 0.75 - .438)
|
||||
|> tangentialArcTo([
|
||||
|> tangentialArc(endAbsolute = [
|
||||
-0.66 - originStart[0],
|
||||
originStart[2] + railHeight * 1.75 / 2 - (.438 / 2)
|
||||
], %)
|
||||
])
|
||||
|> xLine(length = -0.75 + .438)
|
||||
|> tangentialArcTo([profileStartX(%), profileStartY(%)], %)
|
||||
|> tangentialArc(endAbsolute = [profileStartX(%), profileStartY(%)])
|
||||
|> close()
|
||||
|
||||
const extrude011fr = extrude(sketch011fr, length = -thickness)
|
||||
@ -1044,12 +1044,12 @@ const sketch012fr = startSketchOn(extrude001fr, 'START')
|
||||
originStart[2] + railHeight * 1.75 - .81 + .438 / 2
|
||||
], %)
|
||||
|> xLine(length = 0.75 - .438)
|
||||
|> tangentialArcTo([
|
||||
|> tangentialArc(endAbsolute = [
|
||||
-0.66 - originStart[0],
|
||||
originStart[2] + railHeight * 1.75 - .81 - (.438 / 2)
|
||||
], %)
|
||||
])
|
||||
|> xLine(length = -0.75 + .438)
|
||||
|> tangentialArcTo([profileStartX(%), profileStartY(%)], %)
|
||||
|> tangentialArc(endAbsolute = [profileStartX(%), profileStartY(%)])
|
||||
|> close()
|
||||
|> patternLinear2d(
|
||||
axis = [0, -1],
|
||||
@ -1252,12 +1252,12 @@ const sketch010rr = startSketchOn(extrude001rr, 'START')
|
||||
originStart[2] + .81 - (.438 / 2)
|
||||
], %)
|
||||
|> xLine(length = 0.75 - .438)
|
||||
|> tangentialArcTo([
|
||||
|> tangentialArc(endAbsolute = [
|
||||
-0.66 - originStart[0]+1.5-serverDepth,
|
||||
originStart[2] + .81 + .438 / 2
|
||||
], %)
|
||||
])
|
||||
|> xLine(length = -0.75 + .438)
|
||||
|> tangentialArcTo([profileStartX(%), profileStartY(%)], %)
|
||||
|> tangentialArc(endAbsolute = [profileStartX(%), profileStartY(%)])
|
||||
|> close()
|
||||
|> patternLinear2d(
|
||||
axis = [0, 1],
|
||||
@ -1273,12 +1273,12 @@ const sketch011rr = startSketchOn(extrude001rr, 'START')
|
||||
originStart[2] + railHeight * 1.75 / 2 + .438 / 2
|
||||
], %)
|
||||
|> xLine(length = 0.75 - .438)
|
||||
|> tangentialArcTo([
|
||||
|> tangentialArc(endAbsolute = [
|
||||
-0.66 - originStart[0]+1.5-serverDepth,
|
||||
originStart[2] + railHeight * 1.75 / 2 - (.438 / 2)
|
||||
], %)
|
||||
])
|
||||
|> xLine(length = -0.75 + .438)
|
||||
|> tangentialArcTo([profileStartX(%), profileStartY(%)], %)
|
||||
|> tangentialArc(endAbsolute = [profileStartX(%), profileStartY(%)])
|
||||
|> close()
|
||||
|
||||
const extrude011rr = extrude(sketch011rr, length = -thickness)
|
||||
@ -1290,12 +1290,12 @@ const sketch012rr = startSketchOn(extrude001rr, 'START')
|
||||
originStart[2] + railHeight * 1.75 - .81 + .438 / 2
|
||||
], %)
|
||||
|> xLine(length = 0.75 - .438)
|
||||
|> tangentialArcTo([
|
||||
|> tangentialArc(endAbsolute = [
|
||||
-0.66 - originStart[0]+1.5-serverDepth,
|
||||
originStart[2] + railHeight * 1.75 - .81 - (.438 / 2)
|
||||
], %)
|
||||
])
|
||||
|> xLine(length = -0.75 + .438)
|
||||
|> tangentialArcTo([profileStartX(%), profileStartY(%)], %)
|
||||
|> tangentialArc(endAbsolute = [profileStartX(%), profileStartY(%)])
|
||||
|> close()
|
||||
|> patternLinear2d(
|
||||
axis = [0, -1],
|
||||
@ -1497,12 +1497,12 @@ const sketch010rl = startSketchOn(extrude001rl, 'START')
|
||||
originStart[2] + .81 - (.438 / 2)
|
||||
], %)
|
||||
|> xLine(length = 0.75 - .438)
|
||||
|> tangentialArcTo([
|
||||
|> tangentialArc(endAbsolute = [
|
||||
-0.66 - originStart[0] - serverDepth + 1.5,
|
||||
originStart[2] + .81 + .438 / 2
|
||||
], %)
|
||||
])
|
||||
|> xLine(length = -0.75 + .438)
|
||||
|> tangentialArcTo([profileStartX(%), profileStartY(%)], %)
|
||||
|> tangentialArc(endAbsolute = [profileStartX(%), profileStartY(%)])
|
||||
|> close()
|
||||
|> patternLinear2d(
|
||||
axis = [0, 1],
|
||||
@ -1518,12 +1518,12 @@ const sketch011rl = startSketchOn(extrude001rl, 'START')
|
||||
originStart[2] + railHeight * 1.75 / 2 + .438 / 2
|
||||
], %)
|
||||
|> xLine(length = 0.75 - .438)
|
||||
|> tangentialArcTo([
|
||||
|> tangentialArc(endAbsolute = [
|
||||
-0.66 - originStart[0] - serverDepth + 1.5,
|
||||
originStart[2] + railHeight * 1.75 / 2 - (.438 / 2)
|
||||
], %)
|
||||
])
|
||||
|> xLine(length = -0.75 + .438)
|
||||
|> tangentialArcTo([profileStartX(%), profileStartY(%)], %)
|
||||
|> tangentialArc(endAbsolute = [profileStartX(%), profileStartY(%)])
|
||||
|> close()
|
||||
|
||||
const extrude011rl = extrude(sketch011rl, length = -thickness)
|
||||
@ -1535,12 +1535,12 @@ const sketch012rl = startSketchOn(extrude001rl, 'START')
|
||||
originStart[2] + railHeight * 1.75 - .81 + .438 / 2
|
||||
], %)
|
||||
|> xLine(length = 0.75 - .438)
|
||||
|> tangentialArcTo([
|
||||
|> tangentialArc(endAbsolute = [
|
||||
-0.66 - originStart[0] - serverDepth + 1.5,
|
||||
originStart[2] + railHeight * 1.75 - .81 - (.438 / 2)
|
||||
], %)
|
||||
])
|
||||
|> xLine(length = -0.75 + .438)
|
||||
|> tangentialArcTo([profileStartX(%), profileStartY(%)], %)
|
||||
|> tangentialArc(endAbsolute = [profileStartX(%), profileStartY(%)])
|
||||
|> close()
|
||||
|> patternLinear2d(
|
||||
axis = [0, -1],
|
||||
@ -1593,15 +1593,15 @@ fn streamServer = (serverPos) => {
|
||||
|> xLine(length = 0.2)
|
||||
|> yLine(length = -0.36)
|
||||
|> xLine(length = 0.5)
|
||||
|> tangentialArcTo([
|
||||
|> tangentialArc(endAbsolute = [
|
||||
0.3,
|
||||
17.15 + 4.114 + 1 + serverPos * 1.75 - 11.114
|
||||
], %)
|
||||
])
|
||||
|> yLine(length = -1.77)
|
||||
|> tangentialArcTo([
|
||||
|> tangentialArc(endAbsolute = [
|
||||
-0.13,
|
||||
14.89 + 4.114 + 1 + serverPos * 1.75 - 11.114
|
||||
], %)
|
||||
])
|
||||
|> xLine(length = -0.52)
|
||||
|> yLine(length = -0.42)
|
||||
|> line(end = [0.34, -0.15])
|
||||
@ -1617,15 +1617,15 @@ fn streamServer = (serverPos) => {
|
||||
|> xLine(length = 0.2)
|
||||
|> yLine(length = -0.36)
|
||||
|> xLine(length = 0.5)
|
||||
|> tangentialArcTo([
|
||||
|> tangentialArc(endAbsolute = [
|
||||
0.3,
|
||||
17.15 + 4.114 + 1 + serverPos * 1.75 - 11.114
|
||||
], %)
|
||||
])
|
||||
|> yLine(length = -1.77)
|
||||
|> tangentialArcTo([
|
||||
|> tangentialArc(endAbsolute = [
|
||||
-0.13,
|
||||
14.89 + 4.114 + 1 + serverPos * 1.75 - 11.114
|
||||
], %)
|
||||
])
|
||||
|> xLine(length = -0.52)
|
||||
|> yLine(length = -0.42)
|
||||
|> line(end = [0.34, -0.15])
|
||||
|
@ -676,12 +676,12 @@ const sketch010fl = startSketchOn(extrude001fl, 'START')
|
||||
originStart[2] + .81 - (.438 / 2)
|
||||
], %)
|
||||
|> xLine(length = 0.75 - .438)
|
||||
|> tangentialArcTo([
|
||||
|> tangentialArc(endAbsolute = [
|
||||
-0.66 - originStart[0],
|
||||
originStart[2] + .81 + .438 / 2
|
||||
], %)
|
||||
])
|
||||
|> xLine(length = -0.75 + .438)
|
||||
|> tangentialArcTo([profileStartX(%), profileStartY(%)], %)
|
||||
|> tangentialArc(endAbsolute = [profileStartX(%), profileStartY(%)])
|
||||
|> close()
|
||||
|> patternLinear2d(
|
||||
axis = [0, 1],
|
||||
@ -697,12 +697,12 @@ const sketch011fl = startSketchOn(extrude001fl, 'START')
|
||||
originStart[2] + railHeight * 1.75 / 2 + .438 / 2
|
||||
], %)
|
||||
|> xLine(length = 0.75 - .438)
|
||||
|> tangentialArcTo([
|
||||
|> tangentialArc(endAbsolute = [
|
||||
-0.66 - originStart[0],
|
||||
originStart[2] + railHeight * 1.75 / 2 - (.438 / 2)
|
||||
], %)
|
||||
])
|
||||
|> xLine(length = -0.75 + .438)
|
||||
|> tangentialArcTo([profileStartX(%), profileStartY(%)], %)
|
||||
|> tangentialArc(endAbsolute = [profileStartX(%), profileStartY(%)])
|
||||
|> close()
|
||||
|
||||
const extrude011fl = extrude(sketch011fl, length = -thickness)
|
||||
@ -714,12 +714,12 @@ const sketch012fl = startSketchOn(extrude001fl, 'START')
|
||||
originStart[2] + railHeight * 1.75 - .81 + .438 / 2
|
||||
], %)
|
||||
|> xLine(length = 0.75 - .438)
|
||||
|> tangentialArcTo([
|
||||
|> tangentialArc(endAbsolute = [
|
||||
-0.66 - originStart[0],
|
||||
originStart[2] + railHeight * 1.75 - .81 - (.438 / 2)
|
||||
], %)
|
||||
])
|
||||
|> xLine(length = -0.75 + .438)
|
||||
|> tangentialArcTo([profileStartX(%), profileStartY(%)], %)
|
||||
|> tangentialArc(endAbsolute = [profileStartX(%), profileStartY(%)])
|
||||
|> close()
|
||||
|> patternLinear2d(
|
||||
axis = [0, -1],
|
||||
@ -814,12 +814,12 @@ const sketch010fr = startSketchOn(extrude001fr, 'START')
|
||||
originStart[2] + .81 - (.438 / 2)
|
||||
], %)
|
||||
|> xLine(length = 0.75 - .438)
|
||||
|> tangentialArcTo([
|
||||
|> tangentialArc(endAbsolute = [
|
||||
-0.66 - originStart[0],
|
||||
originStart[2] + .81 + .438 / 2
|
||||
], %)
|
||||
])
|
||||
|> xLine(length = -0.75 + .438)
|
||||
|> tangentialArcTo([profileStartX(%), profileStartY(%)], %)
|
||||
|> tangentialArc(endAbsolute = [profileStartX(%), profileStartY(%)])
|
||||
|> close()
|
||||
|> patternLinear2d(
|
||||
axis = [0, 1],
|
||||
@ -835,12 +835,12 @@ const sketch011fr = startSketchOn(extrude001fr, 'START')
|
||||
originStart[2] + railHeight * 1.75 / 2 + .438 / 2
|
||||
], %)
|
||||
|> xLine(length = 0.75 - .438)
|
||||
|> tangentialArcTo([
|
||||
|> tangentialArc(endAbsolute = [
|
||||
-0.66 - originStart[0],
|
||||
originStart[2] + railHeight * 1.75 / 2 - (.438 / 2)
|
||||
], %)
|
||||
])
|
||||
|> xLine(length = -0.75 + .438)
|
||||
|> tangentialArcTo([profileStartX(%), profileStartY(%)], %)
|
||||
|> tangentialArc(endAbsolute = [profileStartX(%), profileStartY(%)])
|
||||
|> close()
|
||||
|
||||
const extrude011fr = extrude(sketch011fr, length = -thickness)
|
||||
@ -852,12 +852,12 @@ const sketch012fr = startSketchOn(extrude001fr, 'START')
|
||||
originStart[2] + railHeight * 1.75 - .81 + .438 / 2
|
||||
], %)
|
||||
|> xLine(length = 0.75 - .438)
|
||||
|> tangentialArcTo([
|
||||
|> tangentialArc(endAbsolute = [
|
||||
-0.66 - originStart[0],
|
||||
originStart[2] + railHeight * 1.75 - .81 - (.438 / 2)
|
||||
], %)
|
||||
])
|
||||
|> xLine(length = -0.75 + .438)
|
||||
|> tangentialArcTo([profileStartX(%), profileStartY(%)], %)
|
||||
|> tangentialArc(endAbsolute = [profileStartX(%), profileStartY(%)])
|
||||
|> close()
|
||||
|> patternLinear2d(
|
||||
axis = [0, -1],
|
||||
@ -952,12 +952,12 @@ const sketch010rr = startSketchOn(extrude001rr, 'START')
|
||||
originStart[2] + .81 - (.438 / 2)
|
||||
], %)
|
||||
|> xLine(length = 0.75 - .438)
|
||||
|> tangentialArcTo([
|
||||
|> tangentialArc(endAbsolute = [
|
||||
-0.66 - originStart[0] + 1.5 - serverDepth,
|
||||
originStart[2] + .81 + .438 / 2
|
||||
], %)
|
||||
])
|
||||
|> xLine(length = -0.75 + .438)
|
||||
|> tangentialArcTo([profileStartX(%), profileStartY(%)], %)
|
||||
|> tangentialArc(endAbsolute = [profileStartX(%), profileStartY(%)])
|
||||
|> close()
|
||||
|> patternLinear2d(
|
||||
axis = [0, 1],
|
||||
@ -973,12 +973,12 @@ const sketch011rr = startSketchOn(extrude001rr, 'START')
|
||||
originStart[2] + railHeight * 1.75 / 2 + .438 / 2
|
||||
], %)
|
||||
|> xLine(length = 0.75 - .438)
|
||||
|> tangentialArcTo([
|
||||
|> tangentialArc(endAbsolute = [
|
||||
-0.66 - originStart[0] + 1.5 - serverDepth,
|
||||
originStart[2] + railHeight * 1.75 / 2 - (.438 / 2)
|
||||
], %)
|
||||
])
|
||||
|> xLine(length = -0.75 + .438)
|
||||
|> tangentialArcTo([profileStartX(%), profileStartY(%)], %)
|
||||
|> tangentialArc(endAbsolute = [profileStartX(%), profileStartY(%)])
|
||||
|> close()
|
||||
|
||||
const extrude011rr = extrude(sketch011rr, length = -thickness)
|
||||
@ -990,12 +990,12 @@ const sketch012rr = startSketchOn(extrude001rr, 'START')
|
||||
originStart[2] + railHeight * 1.75 - .81 + .438 / 2
|
||||
], %)
|
||||
|> xLine(length = 0.75 - .438)
|
||||
|> tangentialArcTo([
|
||||
|> tangentialArc(endAbsolute = [
|
||||
-0.66 - originStart[0] + 1.5 - serverDepth,
|
||||
originStart[2] + railHeight * 1.75 - .81 - (.438 / 2)
|
||||
], %)
|
||||
])
|
||||
|> xLine(length = -0.75 + .438)
|
||||
|> tangentialArcTo([profileStartX(%), profileStartY(%)], %)
|
||||
|> tangentialArc(endAbsolute = [profileStartX(%), profileStartY(%)])
|
||||
|> close()
|
||||
|> patternLinear2d(
|
||||
axis = [0, -1],
|
||||
@ -1089,12 +1089,12 @@ const sketch010rl = startSketchOn(extrude001rl, 'START')
|
||||
originStart[2] + .81 - (.438 / 2)
|
||||
], %)
|
||||
|> xLine(length = 0.75 - .438)
|
||||
|> tangentialArcTo([
|
||||
|> tangentialArc(endAbsolute = [
|
||||
-0.66 - originStart[0] - serverDepth + 1.5,
|
||||
originStart[2] + .81 + .438 / 2
|
||||
], %)
|
||||
])
|
||||
|> xLine(length = -0.75 + .438)
|
||||
|> tangentialArcTo([profileStartX(%), profileStartY(%)], %)
|
||||
|> tangentialArc(endAbsolute = [profileStartX(%), profileStartY(%)])
|
||||
|> close()
|
||||
|> patternLinear2d(
|
||||
axis = [0, 1],
|
||||
@ -1110,12 +1110,12 @@ const sketch011rl = startSketchOn(extrude001rl, 'START')
|
||||
originStart[2] + railHeight * 1.75 / 2 + .438 / 2
|
||||
], %)
|
||||
|> xLine(length = 0.75 - .438)
|
||||
|> tangentialArcTo([
|
||||
|> tangentialArc(endAbsolute = [
|
||||
-0.66 - originStart[0] - serverDepth + 1.5,
|
||||
originStart[2] + railHeight * 1.75 / 2 - (.438 / 2)
|
||||
], %)
|
||||
])
|
||||
|> xLine(length = -0.75 + .438)
|
||||
|> tangentialArcTo([profileStartX(%), profileStartY(%)], %)
|
||||
|> tangentialArc(endAbsolute = [profileStartX(%), profileStartY(%)])
|
||||
|> close()
|
||||
|
||||
const extrude011rl = extrude(sketch011rl, length = -thickness)
|
||||
@ -1127,12 +1127,12 @@ const sketch012rl = startSketchOn(extrude001rl, 'START')
|
||||
originStart[2] + railHeight * 1.75 - .81 + .438 / 2
|
||||
], %)
|
||||
|> xLine(length = 0.75 - .438)
|
||||
|> tangentialArcTo([
|
||||
|> tangentialArc(endAbsolute = [
|
||||
-0.66 - originStart[0] - serverDepth + 1.5,
|
||||
originStart[2] + railHeight * 1.75 - .81 - (.438 / 2)
|
||||
], %)
|
||||
])
|
||||
|> xLine(length = -0.75 + .438)
|
||||
|> tangentialArcTo([profileStartX(%), profileStartY(%)], %)
|
||||
|> tangentialArc(endAbsolute = [profileStartX(%), profileStartY(%)])
|
||||
|> close()
|
||||
|> patternLinear2d(
|
||||
axis = [0, -1],
|
||||
@ -1184,15 +1184,15 @@ fn streamServer = (serverPos) => {
|
||||
|> xLine(length = 0.2)
|
||||
|> yLine(length = -0.36)
|
||||
|> xLine(length = 0.5)
|
||||
|> tangentialArcTo([
|
||||
|> tangentialArc(endAbsolute = [
|
||||
0.3,
|
||||
17.15 + 4.114 + 1 + serverPos * 1.75 - 11.114
|
||||
], %)
|
||||
])
|
||||
|> yLine(length = -1.77)
|
||||
|> tangentialArcTo([
|
||||
|> tangentialArc(endAbsolute = [
|
||||
-0.13,
|
||||
14.89 + 4.114 + 1 + serverPos * 1.75 - 11.114
|
||||
], %)
|
||||
])
|
||||
|> xLine(length = -0.52)
|
||||
|> yLine(length = -0.42)
|
||||
|> line(end = [0.34, -0.15])
|
||||
@ -1208,15 +1208,15 @@ fn streamServer = (serverPos) => {
|
||||
|> xLine(length = 0.2)
|
||||
|> yLine(length = -0.36)
|
||||
|> xLine(length = 0.5)
|
||||
|> tangentialArcTo([
|
||||
|> tangentialArc(endAbsolute = [
|
||||
0.3,
|
||||
17.15 + 4.114 + 1 + serverPos * 1.75 - 11.114
|
||||
], %)
|
||||
])
|
||||
|> yLine(length = -1.77)
|
||||
|> tangentialArcTo([
|
||||
|> tangentialArc(endAbsolute = [
|
||||
-0.13,
|
||||
14.89 + 4.114 + 1 + serverPos * 1.75 - 11.114
|
||||
], %)
|
||||
])
|
||||
|> xLine(length = -0.52)
|
||||
|> yLine(length = -0.42)
|
||||
|> line(end = [0.34, -0.15])
|
||||
|
@ -10,16 +10,17 @@ startSketchOn(XY)
|
||||
angle = angleStart,
|
||||
length = .000001,
|
||||
)
|
||||
|> tangentialArc({
|
||||
offset: angleOffset,
|
||||
|> tangentialArc(
|
||||
angle = angleOffset,
|
||||
radius: r,
|
||||
}, %, $arc1)
|
||||
|> tangentialArc({
|
||||
offset: angleOffset,
|
||||
radius: 0.5*r,
|
||||
}, %, $arc2)
|
||||
|> tangentialArc({
|
||||
offset: -angleOffset,
|
||||
radius: 0.5*r,
|
||||
}, %, $arc3)
|
||||
tag = $arc1,
|
||||
)
|
||||
|> tangentialArc(
|
||||
angle = angleOffset,
|
||||
radius = 0.5*r,
|
||||
tag = $arc2)
|
||||
|> tangentialArc(
|
||||
angle = -angleOffset,
|
||||
radius = 0.5*r,
|
||||
tag = $arc3)
|
||||
|> xLine(endAbsolute = 1)
|
||||
|
@ -1,6 +1,6 @@
|
||||
const boxSketch = startSketchOn(XY)
|
||||
|> startProfileAt([0, 0], %)
|
||||
|> line(end = [0, 10])
|
||||
|> tangentialArc({radius: 5, offset: 90}, %)
|
||||
|> tangentialArc(radius = 5, angle = 90)
|
||||
|> line(end = [5, -15])
|
||||
|> extrude(length = 10)
|
||||
|
@ -159,7 +159,7 @@ async fn kcl_test_basic_tangential_arc_with_point() {
|
||||
let code = r#"boxSketch = startSketchOn(XY)
|
||||
|> startProfileAt([0, 0], %)
|
||||
|> line(end = [0, 10])
|
||||
|> tangentialArcToRelative([-5, 5], %)
|
||||
|> tangentialArc(end = [-5, 5])
|
||||
|> line(end = [5, -15])
|
||||
|> extrude(length = 10)
|
||||
"#;
|
||||
@ -173,7 +173,7 @@ async fn kcl_test_basic_tangential_arc_to() {
|
||||
let code = r#"boxSketch = startSketchOn(XY)
|
||||
|> startProfileAt([0, 0], %)
|
||||
|> line(end = [0, 10])
|
||||
|> tangentialArcTo([-5, 15], %)
|
||||
|> tangentialArc(endAbsolute = [-5, 15])
|
||||
|> line(end = [5, -15])
|
||||
|> extrude(length = 10)
|
||||
"#;
|
||||
@ -224,14 +224,14 @@ wallMountL = 8
|
||||
bracket = startSketchOn(XY)
|
||||
|> startProfileAt([0, 0], %)
|
||||
|> line(end = [0, wallMountL])
|
||||
|> tangentialArc({ radius= filletR, offset: 90 }, %)
|
||||
|> tangentialArc(radius = filletR, angle = 90 )
|
||||
|> line(end = [-shelfMountL, 0])
|
||||
|> line(end = [0, -thickness])
|
||||
|> line(end = [shelfMountL, 0])
|
||||
|> tangentialArc({
|
||||
radius= filletR - thickness,
|
||||
offset: -90
|
||||
}, %)
|
||||
|> tangentialArc(
|
||||
radius = filletR - thickness,
|
||||
angle = -90,
|
||||
)
|
||||
|> line(end = [0, -wallMountL])
|
||||
|> close()
|
||||
|> extrude(length = width)
|
||||
@ -306,7 +306,7 @@ thing = other_circle([2, 2], 20)
|
||||
#[tokio::test(flavor = "multi_thread")]
|
||||
async fn kcl_test_rounded_with_holes() {
|
||||
let code = r#"fn tarc = (to, sktch, tag?) => {
|
||||
return tangentialArcTo(to, sktch, tag)
|
||||
return tangentialArc(sktch, endAbsolute = to, tag = tag)
|
||||
}
|
||||
|
||||
fn roundedRectangle = (pos, w, l, cornerRadius) => {
|
||||
@ -705,7 +705,7 @@ async fn kcl_test_error_sketch_on_arc_face() {
|
||||
let code = r#"fn cube = (pos, scale) => {
|
||||
sg = startSketchOn(XY)
|
||||
|> startProfileAt(pos, %)
|
||||
|> tangentialArcToRelative([0, scale], %, $here)
|
||||
|> tangentialArc(end = [0, scale], tag = $here)
|
||||
|> line(end = [scale, 0])
|
||||
|> line(end = [0, -scale])
|
||||
|
||||
@ -1342,7 +1342,7 @@ async fn kcl_test_error_empty_start_sketch_on_string() {
|
||||
|> line(end = [190.03, -118.13])
|
||||
|> line(end = [-33.38, -202.86])
|
||||
|> line(end = [-315.86, -64.2])
|
||||
|> tangentialArcTo([-147.66, 121.34], %)
|
||||
|> tangentialArc(endAbsolute = [-147.66, 121.34])
|
||||
|> close()
|
||||
|> extrude(length = 100)
|
||||
|
||||
@ -1352,10 +1352,11 @@ secondSketch = startSketchOn(part001, '')
|
||||
"#;
|
||||
|
||||
let result = execute_and_snapshot(code, None).await;
|
||||
assert!(result.is_err());
|
||||
let err = result.unwrap_err();
|
||||
let err = err.as_kcl_error().unwrap();
|
||||
assert_eq!(
|
||||
result.err().unwrap().to_string(),
|
||||
r#"semantic: KclErrorDetails { source_ranges: [SourceRange([297, 299, 0])], message: "Argument at index 1 was supposed to be type Option<FaceTag> but found string (text)" }"#
|
||||
err.message(),
|
||||
"Argument at index 1 was supposed to be type Option<FaceTag> but found string (text)"
|
||||
);
|
||||
}
|
||||
|
||||
|
@ -7,6 +7,7 @@ use schemars::JsonSchema;
|
||||
use serde::{Deserialize, Serialize};
|
||||
use uuid::Uuid;
|
||||
|
||||
use super::types::NumericType;
|
||||
use crate::{
|
||||
errors::{KclError, KclErrorDetails, Severity},
|
||||
execution::{
|
||||
@ -22,8 +23,6 @@ use crate::{
|
||||
CompilationError,
|
||||
};
|
||||
|
||||
use super::types::NumericType;
|
||||
|
||||
/// State for executing a program.
|
||||
#[derive(Debug, Clone)]
|
||||
pub struct ExecState {
|
||||
|
@ -807,6 +807,7 @@ pub enum UnitAngle {
|
||||
impl UnitAngle {
|
||||
fn adjust_to(self, value: f64, to: UnitAngle) -> f64 {
|
||||
use std::f64::consts::PI;
|
||||
|
||||
use UnitAngle::*;
|
||||
|
||||
if !*CHECK_NUMERIC_TYPES {
|
||||
@ -1171,9 +1172,8 @@ impl KclValue {
|
||||
|
||||
#[cfg(test)]
|
||||
mod test {
|
||||
use crate::execution::{parse_execute, ExecTestResults};
|
||||
|
||||
use super::*;
|
||||
use crate::execution::{parse_execute, ExecTestResults};
|
||||
|
||||
fn values(exec_state: &mut ExecState) -> Vec<KclValue> {
|
||||
vec![
|
||||
|
@ -241,15 +241,9 @@ pub async fn appearance(exec_state: &mut ExecState, args: Args) -> Result<KclVal
|
||||
/// sweepPath = startSketchOn(XZ)
|
||||
/// |> startProfileAt([0.05, 0.05], %)
|
||||
/// |> line(end = [0, 7])
|
||||
/// |> tangentialArc({
|
||||
/// offset: 90,
|
||||
/// radius: 5
|
||||
/// }, %)
|
||||
/// |> tangentialArc(angle = 90, radius = 5)
|
||||
/// |> line(end = [-3, 0])
|
||||
/// |> tangentialArc({
|
||||
/// offset: -90,
|
||||
/// radius: 5
|
||||
/// }, %)
|
||||
/// |> tangentialArc(angle = -90, radius = 5)
|
||||
/// |> line(end = [0, 7])
|
||||
///
|
||||
/// pipeHole = startSketchOn(XY)
|
||||
|
@ -151,6 +151,10 @@ impl Args {
|
||||
let Some(arg) = self.kw_args.labeled.get(label) else {
|
||||
return Ok(None);
|
||||
};
|
||||
if let KclValue::KclNone { .. } = arg.value {
|
||||
// It is set, but it's an optional parameter that wasn't provided.
|
||||
return Ok(None);
|
||||
}
|
||||
|
||||
T::from_kcl_val(&arg.value).map(Some).ok_or_else(|| {
|
||||
KclError::Type(KclErrorDetails {
|
||||
|
@ -9,8 +9,7 @@ use kcmc::{
|
||||
length_unit::LengthUnit,
|
||||
ok_response::OkModelingCmdResponse,
|
||||
output::ExtrusionFaceInfo,
|
||||
shared::ExtrusionFaceCapType,
|
||||
shared::Opposite,
|
||||
shared::{ExtrusionFaceCapType, Opposite},
|
||||
websocket::{ModelingCmdReq, OkWebSocketResponseData},
|
||||
ModelingCmd,
|
||||
};
|
||||
|
@ -85,8 +85,6 @@ lazy_static! {
|
||||
Box::new(crate::std::sketch::Arc),
|
||||
Box::new(crate::std::sketch::ArcTo),
|
||||
Box::new(crate::std::sketch::TangentialArc),
|
||||
Box::new(crate::std::sketch::TangentialArcTo),
|
||||
Box::new(crate::std::sketch::TangentialArcToRelative),
|
||||
Box::new(crate::std::sketch::BezierCurve),
|
||||
Box::new(crate::std::sketch::Hole),
|
||||
Box::new(crate::std::patterns::PatternLinear2D),
|
||||
|
@ -824,7 +824,7 @@ pub async fn pattern_linear_3d(exec_state: &mut ExecState, args: Args) -> Result
|
||||
/// |> startProfileAt([-size, -size], %)
|
||||
/// |> line(end = [2 * size, 0])
|
||||
/// |> line(end = [0, 2 * size])
|
||||
/// |> tangentialArcTo([-size, size], %)
|
||||
/// |> tangentialArc(endAbsolute = [-size, size])
|
||||
/// |> close(%)
|
||||
/// |> extrude(length = 65)
|
||||
///
|
||||
@ -852,7 +852,7 @@ pub async fn pattern_linear_3d(exec_state: &mut ExecState, args: Args) -> Result
|
||||
/// |> startProfileAt([-size, -size], %)
|
||||
/// |> line(end = [2 * size, 0])
|
||||
/// |> line(end = [0, 2 * size])
|
||||
/// |> tangentialArcTo([-size, size], %)
|
||||
/// |> tangentialArc(endAbsolute = [-size, size])
|
||||
/// |> close(%)
|
||||
/// |> extrude(length = 65)
|
||||
///
|
||||
|
@ -1,7 +1,12 @@
|
||||
//! Standard library revolution surfaces.
|
||||
|
||||
use anyhow::Result;
|
||||
use kcmc::{each_cmd as mcmd, length_unit::LengthUnit, shared::Angle, shared::Opposite, ModelingCmd};
|
||||
use kcmc::{
|
||||
each_cmd as mcmd,
|
||||
length_unit::LengthUnit,
|
||||
shared::{Angle, Opposite},
|
||||
ModelingCmd,
|
||||
};
|
||||
use kittycad_modeling_cmds::{self as kcmc, shared::Point3d};
|
||||
|
||||
use super::DEFAULT_TOLERANCE;
|
||||
|
@ -393,10 +393,7 @@ pub async fn segment_length(exec_state: &mut ExecState, args: Args) -> Result<Kc
|
||||
/// length = 10,
|
||||
/// tag = $thing,
|
||||
/// )
|
||||
/// |> tangentialArc({
|
||||
/// offset = -120,
|
||||
/// radius = 5,
|
||||
/// }, %)
|
||||
/// |> tangentialArc(angle = -120, radius = 5)
|
||||
/// |> angledLine(
|
||||
/// angle = -60,
|
||||
/// length = segLen(thing),
|
||||
@ -485,12 +482,12 @@ pub async fn tangent_to_end(exec_state: &mut ExecState, args: Args) -> Result<Kc
|
||||
/// pillSketch = startSketchOn('XZ')
|
||||
/// |> startProfileAt([0, 0], %)
|
||||
/// |> line(end = [20, 0])
|
||||
/// |> tangentialArcToRelative([0, 10], %, $arc1)
|
||||
/// |> tangentialArc(end = [0, 10], tag = $arc1)
|
||||
/// |> angledLine(
|
||||
/// angle = tangentToEnd(arc1),
|
||||
/// length = 20,
|
||||
/// )
|
||||
/// |> tangentialArcToRelative([0, -10], %)
|
||||
/// |> tangentialArc(end = [0, -10])
|
||||
/// |> close()
|
||||
///
|
||||
/// pillExtrude = extrude(pillSketch, length = 10)
|
||||
@ -501,12 +498,12 @@ pub async fn tangent_to_end(exec_state: &mut ExecState, args: Args) -> Result<Kc
|
||||
/// pillSketch = startSketchOn('XZ')
|
||||
/// |> startProfileAt([0, 0], %)
|
||||
/// |> line(end = [0, 20])
|
||||
/// |> tangentialArcTo([10, 20], %, $arc1)
|
||||
/// |> tangentialArc(endAbsolute = [10, 20], tag = $arc1)
|
||||
/// |> angledLine(
|
||||
/// angle = tangentToEnd(arc1),
|
||||
/// length = 20,
|
||||
/// )
|
||||
/// |> tangentialArcToRelative([-10, 0], %)
|
||||
/// |> tangentialArc(end = [-10, 0])
|
||||
/// |> close()
|
||||
///
|
||||
/// pillExtrude = extrude(pillSketch, length = 10)
|
||||
|
@ -104,7 +104,7 @@ pub async fn shell(exec_state: &mut ExecState, args: Args) -> Result<KclValue, K
|
||||
/// |> startProfileAt([-size, -size], %)
|
||||
/// |> line(end = [2 * size, 0])
|
||||
/// |> line(end = [0, 2 * size])
|
||||
/// |> tangentialArcTo([-size, size], %)
|
||||
/// |> tangentialArc(endAbsolute = [-size, size])
|
||||
/// |> close()
|
||||
/// |> extrude(length = 65)
|
||||
///
|
||||
@ -127,7 +127,7 @@ pub async fn shell(exec_state: &mut ExecState, args: Args) -> Result<KclValue, K
|
||||
/// |> startProfileAt([-size, -size], %)
|
||||
/// |> line(end = [2 * size, 0])
|
||||
/// |> line(end = [0, 2 * size])
|
||||
/// |> tangentialArcTo([-size, size], %)
|
||||
/// |> tangentialArc(endAbsolute = [-size, size])
|
||||
/// |> close()
|
||||
/// |> extrude(length = 65)
|
||||
///
|
||||
@ -152,7 +152,7 @@ pub async fn shell(exec_state: &mut ExecState, args: Args) -> Result<KclValue, K
|
||||
/// |> startProfileAt([-size, -size], %)
|
||||
/// |> line(end = [2 * size, 0])
|
||||
/// |> line(end = [0, 2 * size])
|
||||
/// |> tangentialArcTo([-size, size], %)
|
||||
/// |> tangentialArc(endAbsolute = [-size, size])
|
||||
/// |> close()
|
||||
/// |> extrude(length = 65)
|
||||
///
|
||||
@ -287,7 +287,7 @@ pub async fn hollow(exec_state: &mut ExecState, args: Args) -> Result<KclValue,
|
||||
/// |> startProfileAt([-size, -size], %)
|
||||
/// |> line(end = [2 * size, 0])
|
||||
/// |> line(end = [0, 2 * size])
|
||||
/// |> tangentialArcTo([-size, size], %)
|
||||
/// |> tangentialArc(endAbsolute = [-size, size])
|
||||
/// |> close()
|
||||
/// |> extrude(length = 65)
|
||||
///
|
||||
|
@ -1705,6 +1705,127 @@ pub(crate) async fn inner_arc_to(
|
||||
Ok(new_sketch)
|
||||
}
|
||||
|
||||
/// Draw a tangential arc to a specific point.
|
||||
pub async fn tangential_arc(exec_state: &mut ExecState, args: Args) -> Result<KclValue, KclError> {
|
||||
let sketch =
|
||||
args.get_unlabeled_kw_arg_typed("sketch", &RuntimeType::Primitive(PrimitiveType::Sketch), exec_state)?;
|
||||
let end = args.get_kw_arg_opt("end")?;
|
||||
let end_absolute = args.get_kw_arg_opt("endAbsolute")?;
|
||||
let radius = args.get_kw_arg_opt("radius")?;
|
||||
let angle = args.get_kw_arg_opt("angle")?;
|
||||
let tag = args.get_kw_arg_opt(NEW_TAG_KW)?;
|
||||
|
||||
let new_sketch = inner_tangential_arc(sketch, end_absolute, end, radius, angle, tag, exec_state, args).await?;
|
||||
Ok(KclValue::Sketch {
|
||||
value: Box::new(new_sketch),
|
||||
})
|
||||
}
|
||||
|
||||
/// Starting at the current sketch's origin, draw a curved line segment along
|
||||
/// some part of an imaginary circle until it reaches the desired (x, y)
|
||||
/// coordinates.
|
||||
///
|
||||
/// When using radius and angle, draw a curved line segment along part of an
|
||||
/// imaginary circle. The arc is constructed such that the last line segment is
|
||||
/// placed tangent to the imaginary circle of the specified radius. The
|
||||
/// resulting arc is the segment of the imaginary circle from that tangent point
|
||||
/// for 'angle' degrees along the imaginary circle.
|
||||
///
|
||||
/// ```no_run
|
||||
/// exampleSketch = startSketchOn(XZ)
|
||||
/// |> startProfileAt([0, 0], %)
|
||||
/// |> angledLine(
|
||||
/// angle = 45,
|
||||
/// length = 10,
|
||||
/// )
|
||||
/// |> tangentialArc(end = [0, -10])
|
||||
/// |> line(end = [-10, 0])
|
||||
/// |> close()
|
||||
///
|
||||
/// example = extrude(exampleSketch, length = 10)
|
||||
/// ```
|
||||
///
|
||||
/// ```no_run
|
||||
/// exampleSketch = startSketchOn(XZ)
|
||||
/// |> startProfileAt([0, 0], %)
|
||||
/// |> angledLine(
|
||||
/// angle = 60,
|
||||
/// length = 10,
|
||||
/// )
|
||||
/// |> tangentialArc(endAbsolute = [15, 15])
|
||||
/// |> line(end = [10, -15])
|
||||
/// |> close()
|
||||
///
|
||||
/// example = extrude(exampleSketch, length = 10)
|
||||
/// ```
|
||||
///
|
||||
/// ```no_run
|
||||
/// exampleSketch = startSketchOn(XZ)
|
||||
/// |> startProfileAt([0, 0], %)
|
||||
/// |> angledLine(
|
||||
/// angle = 60,
|
||||
/// length = 10,
|
||||
/// )
|
||||
/// |> tangentialArc(radius = 10, angle = -120)
|
||||
/// |> angledLine(
|
||||
/// angle = -60,
|
||||
/// length = 10,
|
||||
/// )
|
||||
/// |> close()
|
||||
///
|
||||
/// example = extrude(exampleSketch, length = 10)
|
||||
/// ```
|
||||
#[stdlib {
|
||||
name = "tangentialArc",
|
||||
keywords = true,
|
||||
unlabeled_first = true,
|
||||
args = {
|
||||
sketch = { docs = "Which sketch should this path be added to?"},
|
||||
end_absolute = { docs = "Which absolute point should this arc go to? Incompatible with `end`, `radius`, and `offset`."},
|
||||
end = { docs = "How far away (along the X and Y axes) should this arc go? Incompatible with `endAbsolute`, `radius`, and `offset`.", include_in_snippet = true },
|
||||
radius = { docs = "Radius of the imaginary circle. `angle` must be given. Incompatible with `end` and `endAbsolute`."},
|
||||
angle = { docs = "Offset of the arc in degrees. `radius` must be given. Incompatible with `end` and `endAbsolute`."},
|
||||
tag = { docs = "Create a new tag which refers to this arc"},
|
||||
}
|
||||
}]
|
||||
#[allow(clippy::too_many_arguments)]
|
||||
async fn inner_tangential_arc(
|
||||
sketch: Sketch,
|
||||
end_absolute: Option<[f64; 2]>,
|
||||
end: Option<[f64; 2]>,
|
||||
radius: Option<f64>,
|
||||
angle: Option<f64>,
|
||||
tag: Option<TagNode>,
|
||||
exec_state: &mut ExecState,
|
||||
args: Args,
|
||||
) -> Result<Sketch, KclError> {
|
||||
match (end_absolute, end, radius, angle) {
|
||||
(Some(point), None, None, None) => {
|
||||
inner_tangential_arc_to_point(sketch, point, true, tag, exec_state, args).await
|
||||
}
|
||||
(None, Some(point), None, None) => {
|
||||
inner_tangential_arc_to_point(sketch, point, false, tag, exec_state, args).await
|
||||
}
|
||||
(None, None, Some(radius), Some(angle)) => {
|
||||
let data = TangentialArcData::RadiusAndOffset { radius, offset: angle };
|
||||
inner_tangential_arc_radius_angle(data, sketch, tag, exec_state, args).await
|
||||
}
|
||||
(Some(_), Some(_), None, None) => Err(KclError::Semantic(KclErrorDetails {
|
||||
source_ranges: vec![args.source_range],
|
||||
message: "You cannot give both `end` and `endAbsolute` params, you have to choose one or the other"
|
||||
.to_owned(),
|
||||
})),
|
||||
(None, None, Some(_), None) | (None, None, None, Some(_)) => Err(KclError::Semantic(KclErrorDetails {
|
||||
source_ranges: vec![args.source_range],
|
||||
message: "You must supply both `radius` and `angle` arguments".to_owned(),
|
||||
})),
|
||||
(_, _, _, _) => Err(KclError::Semantic(KclErrorDetails {
|
||||
source_ranges: vec![args.source_range],
|
||||
message: "You must supply `end`, `endAbsolute`, or both `radius` and `angle` arguments".to_owned(),
|
||||
})),
|
||||
}
|
||||
}
|
||||
|
||||
/// Data to draw a tangential arc.
|
||||
#[derive(Debug, Clone, Deserialize, Serialize, PartialEq, JsonSchema, ts_rs::TS)]
|
||||
#[ts(export)]
|
||||
@ -1719,44 +1840,13 @@ pub enum TangentialArcData {
|
||||
},
|
||||
}
|
||||
|
||||
/// Draw a tangential arc.
|
||||
pub async fn tangential_arc(exec_state: &mut ExecState, args: Args) -> Result<KclValue, KclError> {
|
||||
let (data, sketch, tag): (TangentialArcData, Sketch, Option<TagNode>) =
|
||||
args.get_data_and_sketch_and_tag(exec_state)?;
|
||||
|
||||
let new_sketch = inner_tangential_arc(data, sketch, tag, exec_state, args).await?;
|
||||
Ok(KclValue::Sketch {
|
||||
value: Box::new(new_sketch),
|
||||
})
|
||||
}
|
||||
|
||||
/// Draw a curved line segment along part of an imaginary circle.
|
||||
///
|
||||
/// The arc is constructed such that the last line segment is placed tangent
|
||||
/// to the imaginary circle of the specified radius. The resulting arc is the
|
||||
/// segment of the imaginary circle from that tangent point for 'offset'
|
||||
/// segment of the imaginary circle from that tangent point for 'angle'
|
||||
/// degrees along the imaginary circle.
|
||||
///
|
||||
/// ```no_run
|
||||
/// exampleSketch = startSketchOn(XZ)
|
||||
/// |> startProfileAt([0, 0], %)
|
||||
/// |> angledLine(
|
||||
/// angle = 60,
|
||||
/// length = 10,
|
||||
/// )
|
||||
/// |> tangentialArc({ radius = 10, offset = -120 }, %)
|
||||
/// |> angledLine(
|
||||
/// angle = -60,
|
||||
/// length = 10,
|
||||
/// )
|
||||
/// |> close()
|
||||
///
|
||||
/// example = extrude(exampleSketch, length = 10)
|
||||
/// ```
|
||||
#[stdlib {
|
||||
name = "tangentialArc",
|
||||
}]
|
||||
async fn inner_tangential_arc(
|
||||
async fn inner_tangential_arc_radius_angle(
|
||||
data: TangentialArcData,
|
||||
sketch: Sketch,
|
||||
tag: Option<TagNode>,
|
||||
@ -1847,49 +1937,10 @@ fn tan_arc_to(sketch: &Sketch, to: &[f64; 2]) -> ModelingCmd {
|
||||
})
|
||||
}
|
||||
|
||||
/// Draw a tangential arc to a specific point.
|
||||
pub async fn tangential_arc_to(exec_state: &mut ExecState, args: Args) -> Result<KclValue, KclError> {
|
||||
let (to, sketch, tag): ([f64; 2], Sketch, Option<TagNode>) = args.get_data_and_sketch_and_tag(exec_state)?;
|
||||
|
||||
let new_sketch = inner_tangential_arc_to(to, sketch, tag, exec_state, args).await?;
|
||||
Ok(KclValue::Sketch {
|
||||
value: Box::new(new_sketch),
|
||||
})
|
||||
}
|
||||
|
||||
/// Draw a tangential arc to point some distance away..
|
||||
pub async fn tangential_arc_to_relative(exec_state: &mut ExecState, args: Args) -> Result<KclValue, KclError> {
|
||||
let (delta, sketch, tag): ([f64; 2], Sketch, Option<TagNode>) = args.get_data_and_sketch_and_tag(exec_state)?;
|
||||
|
||||
let new_sketch = inner_tangential_arc_to_relative(delta, sketch, tag, exec_state, args).await?;
|
||||
Ok(KclValue::Sketch {
|
||||
value: Box::new(new_sketch),
|
||||
})
|
||||
}
|
||||
|
||||
/// Starting at the current sketch's origin, draw a curved line segment along
|
||||
/// some part of an imaginary circle until it reaches the desired (x, y)
|
||||
/// coordinates.
|
||||
///
|
||||
/// ```no_run
|
||||
/// exampleSketch = startSketchOn(XZ)
|
||||
/// |> startProfileAt([0, 0], %)
|
||||
/// |> angledLine(
|
||||
/// angle = 60,
|
||||
/// length = 10,
|
||||
/// )
|
||||
/// |> tangentialArcTo([15, 15], %)
|
||||
/// |> line(end = [10, -15])
|
||||
/// |> close()
|
||||
///
|
||||
/// example = extrude(exampleSketch, length = 10)
|
||||
/// ```
|
||||
#[stdlib {
|
||||
name = "tangentialArcTo",
|
||||
}]
|
||||
async fn inner_tangential_arc_to(
|
||||
to: [f64; 2],
|
||||
async fn inner_tangential_arc_to_point(
|
||||
sketch: Sketch,
|
||||
point: [f64; 2],
|
||||
is_absolute: bool,
|
||||
tag: Option<TagNode>,
|
||||
exec_state: &mut ExecState,
|
||||
args: Args,
|
||||
@ -1897,6 +1948,12 @@ async fn inner_tangential_arc_to(
|
||||
let from: Point2d = sketch.current_pen_position()?;
|
||||
let tangent_info = sketch.get_tangential_info_from_paths();
|
||||
let tan_previous_point = tangent_info.tan_previous_point(from.into());
|
||||
|
||||
let to = if is_absolute {
|
||||
point
|
||||
} else {
|
||||
[from.x + point[0], from.y + point[1]]
|
||||
};
|
||||
let [to_x, to_y] = to;
|
||||
let result = get_tangential_arc_to_info(TangentialArcInfoInput {
|
||||
arc_start_point: [from.x, from.y],
|
||||
@ -1905,75 +1962,6 @@ async fn inner_tangential_arc_to(
|
||||
obtuse: true,
|
||||
});
|
||||
|
||||
let delta = [to_x - from.x, to_y - from.y];
|
||||
let id = exec_state.next_uuid();
|
||||
args.batch_modeling_cmd(id, tan_arc_to(&sketch, &delta)).await?;
|
||||
|
||||
let current_path = Path::TangentialArcTo {
|
||||
base: BasePath {
|
||||
from: from.into(),
|
||||
to,
|
||||
tag: tag.clone(),
|
||||
units: sketch.units,
|
||||
geo_meta: GeoMeta {
|
||||
id,
|
||||
metadata: args.source_range.into(),
|
||||
},
|
||||
},
|
||||
center: result.center,
|
||||
ccw: result.ccw > 0,
|
||||
};
|
||||
|
||||
let mut new_sketch = sketch.clone();
|
||||
if let Some(tag) = &tag {
|
||||
new_sketch.add_tag(tag, ¤t_path, exec_state);
|
||||
}
|
||||
|
||||
new_sketch.paths.push(current_path);
|
||||
|
||||
Ok(new_sketch)
|
||||
}
|
||||
|
||||
/// Starting at the current sketch's origin, draw a curved line segment along
|
||||
/// some part of an imaginary circle until it reaches a point the given (x, y)
|
||||
/// distance away.
|
||||
///
|
||||
/// ```no_run
|
||||
/// exampleSketch = startSketchOn(XZ)
|
||||
/// |> startProfileAt([0, 0], %)
|
||||
/// |> angledLine(
|
||||
/// angle = 45,
|
||||
/// length = 10,
|
||||
/// )
|
||||
/// |> tangentialArcToRelative([0, -10], %)
|
||||
/// |> line(end = [-10, 0])
|
||||
/// |> close()
|
||||
///
|
||||
/// example = extrude(exampleSketch, length = 10)
|
||||
/// ```
|
||||
#[stdlib {
|
||||
name = "tangentialArcToRelative",
|
||||
}]
|
||||
async fn inner_tangential_arc_to_relative(
|
||||
delta: [f64; 2],
|
||||
sketch: Sketch,
|
||||
tag: Option<TagNode>,
|
||||
exec_state: &mut ExecState,
|
||||
args: Args,
|
||||
) -> Result<Sketch, KclError> {
|
||||
let from: Point2d = sketch.current_pen_position()?;
|
||||
let to = [from.x + delta[0], from.y + delta[1]];
|
||||
let tangent_info = sketch.get_tangential_info_from_paths();
|
||||
let tan_previous_point = tangent_info.tan_previous_point(from.into());
|
||||
|
||||
let [dx, dy] = delta;
|
||||
let result = get_tangential_arc_to_info(TangentialArcInfoInput {
|
||||
arc_start_point: [from.x, from.y],
|
||||
arc_end_point: [from.x + dx, from.y + dy],
|
||||
tan_previous_point,
|
||||
obtuse: true,
|
||||
});
|
||||
|
||||
if result.center[0].is_infinite() {
|
||||
return Err(KclError::Semantic(KclErrorDetails {
|
||||
source_ranges: vec![args.source_range],
|
||||
@ -1990,6 +1978,11 @@ async fn inner_tangential_arc_to_relative(
|
||||
}));
|
||||
}
|
||||
|
||||
let delta = if is_absolute {
|
||||
[to_x - from.x, to_y - from.y]
|
||||
} else {
|
||||
point
|
||||
};
|
||||
let id = exec_state.next_uuid();
|
||||
args.batch_modeling_cmd(id, tan_arc_to(&sketch, &delta)).await?;
|
||||
|
||||
|
@ -58,15 +58,9 @@ pub async fn sweep(exec_state: &mut ExecState, args: Args) -> Result<KclValue, K
|
||||
/// sweepPath = startSketchOn(XZ)
|
||||
/// |> startProfileAt([0.05, 0.05], %)
|
||||
/// |> line(end = [0, 7])
|
||||
/// |> tangentialArc({
|
||||
/// offset: 90,
|
||||
/// radius: 5
|
||||
/// }, %)
|
||||
/// |> tangentialArc(angle = 90, radius = 5)
|
||||
/// |> line(end = [-3, 0])
|
||||
/// |> tangentialArc({
|
||||
/// offset: -90,
|
||||
/// radius: 5
|
||||
/// }, %)
|
||||
/// |> tangentialArc(angle = -90, radius = 5)
|
||||
/// |> line(end = [0, 7])
|
||||
///
|
||||
/// // Create a hole for the pipe.
|
||||
@ -127,10 +121,7 @@ pub async fn sweep(exec_state: &mut ExecState, args: Args) -> Result<KclValue, K
|
||||
/// sketch002 = startSketchOn(YZ)
|
||||
/// sweepPath = startProfileAt([0, 0], sketch002)
|
||||
/// |> yLine(length = 231.81)
|
||||
/// |> tangentialArc({
|
||||
/// radius = 80,
|
||||
/// offset = -90,
|
||||
/// }, %)
|
||||
/// |> tangentialArc(radius = 80, angle = -90)
|
||||
/// |> xLine(length = 384.93)
|
||||
///
|
||||
/// sweep([rectangleSketch, circleSketch], path = sweepPath)
|
||||
@ -144,10 +135,7 @@ pub async fn sweep(exec_state: &mut ExecState, args: Args) -> Result<KclValue, K
|
||||
/// sketch002 = startSketchOn('YZ')
|
||||
/// sweepPath = startProfileAt([0, 0], sketch002)
|
||||
/// |> yLine(length = 231.81)
|
||||
/// |> tangentialArc({
|
||||
/// radius = 80,
|
||||
/// offset = -90,
|
||||
/// }, %)
|
||||
/// |> tangentialArc(radius = 80, angle = -90)
|
||||
/// |> xLine(length = 384.93)
|
||||
///
|
||||
/// sweep(circleSketch, path = sweepPath, sectional = true)
|
||||
|
@ -67,15 +67,9 @@ pub async fn scale(exec_state: &mut ExecState, args: Args) -> Result<KclValue, K
|
||||
/// sweepPath = startSketchOn('XZ')
|
||||
/// |> startProfileAt([0.05, 0.05], %)
|
||||
/// |> line(end = [0, 7])
|
||||
/// |> tangentialArc({
|
||||
/// offset: 90,
|
||||
/// radius: 5
|
||||
/// }, %)
|
||||
/// |> tangentialArc(angle = 90, radius = 5)
|
||||
/// |> line(end = [-3, 0])
|
||||
/// |> tangentialArc({
|
||||
/// offset: -90,
|
||||
/// radius: 5
|
||||
/// }, %)
|
||||
/// |> tangentialArc(angle = -90, radius = 5)
|
||||
/// |> line(end = [0, 7])
|
||||
///
|
||||
/// // Create a hole for the pipe.
|
||||
@ -130,10 +124,7 @@ pub async fn scale(exec_state: &mut ExecState, args: Args) -> Result<KclValue, K
|
||||
/// sketch002 = startSketchOn('YZ')
|
||||
/// sweepPath = startProfileAt([0, 0], sketch002)
|
||||
/// |> yLine(length = 231.81)
|
||||
/// |> tangentialArc({
|
||||
/// radius = 80,
|
||||
/// offset = -90,
|
||||
/// }, %)
|
||||
/// |> tangentialArc(radius = 80, angle = -90)
|
||||
/// |> xLine(length = 384.93)
|
||||
///
|
||||
/// parts = sweep([rectangleSketch, circleSketch], path = sweepPath)
|
||||
@ -241,15 +232,9 @@ pub async fn translate(exec_state: &mut ExecState, args: Args) -> Result<KclValu
|
||||
/// sweepPath = startSketchOn('XZ')
|
||||
/// |> startProfileAt([0.05, 0.05], %)
|
||||
/// |> line(end = [0, 7])
|
||||
/// |> tangentialArc({
|
||||
/// offset: 90,
|
||||
/// radius: 5
|
||||
/// }, %)
|
||||
/// |> tangentialArc(angle = 90, radius = 5)
|
||||
/// |> line(end = [-3, 0])
|
||||
/// |> tangentialArc({
|
||||
/// offset: -90,
|
||||
/// radius: 5
|
||||
/// }, %)
|
||||
/// |> tangentialArc(angle = -90, radius = 5)
|
||||
/// |> line(end = [0, 7])
|
||||
///
|
||||
/// // Create a hole for the pipe.
|
||||
@ -318,10 +303,7 @@ pub async fn translate(exec_state: &mut ExecState, args: Args) -> Result<KclValu
|
||||
/// sketch002 = startSketchOn('YZ')
|
||||
/// sweepPath = startProfileAt([0, 0], sketch002)
|
||||
/// |> yLine(length = 231.81)
|
||||
/// |> tangentialArc({
|
||||
/// radius = 80,
|
||||
/// offset = -90,
|
||||
/// }, %)
|
||||
/// |> tangentialArc(radius = 80, angle = -90)
|
||||
/// |> xLine(length = 384.93)
|
||||
///
|
||||
/// parts = sweep([rectangleSketch, circleSketch], path = sweepPath)
|
||||
@ -575,15 +557,9 @@ pub async fn rotate(exec_state: &mut ExecState, args: Args) -> Result<KclValue,
|
||||
/// sweepPath = startSketchOn('XZ')
|
||||
/// |> startProfileAt([0.05, 0.05], %)
|
||||
/// |> line(end = [0, 7])
|
||||
/// |> tangentialArc({
|
||||
/// offset: 90,
|
||||
/// radius: 5
|
||||
/// }, %)
|
||||
/// |> tangentialArc(angle = 90, radius = 5)
|
||||
/// |> line(end = [-3, 0])
|
||||
/// |> tangentialArc({
|
||||
/// offset: -90,
|
||||
/// radius: 5
|
||||
/// }, %)
|
||||
/// |> tangentialArc(angle = -90, radius = 5)
|
||||
/// |> line(end = [0, 7])
|
||||
///
|
||||
/// // Create a hole for the pipe.
|
||||
@ -614,15 +590,9 @@ pub async fn rotate(exec_state: &mut ExecState, args: Args) -> Result<KclValue,
|
||||
/// sweepPath = startSketchOn('XZ')
|
||||
/// |> startProfileAt([0.05, 0.05], %)
|
||||
/// |> line(end = [0, 7])
|
||||
/// |> tangentialArc({
|
||||
/// offset: 90,
|
||||
/// radius: 5
|
||||
/// }, %)
|
||||
/// |> tangentialArc(angle = 90, radius = 5)
|
||||
/// |> line(end = [-3, 0])
|
||||
/// |> tangentialArc({
|
||||
/// offset: -90,
|
||||
/// radius: 5
|
||||
/// }, %)
|
||||
/// |> tangentialArc(angle = -90, radius = 5)
|
||||
/// |> line(end = [0, 7])
|
||||
///
|
||||
/// // Create a hole for the pipe.
|
||||
@ -651,15 +621,9 @@ pub async fn rotate(exec_state: &mut ExecState, args: Args) -> Result<KclValue,
|
||||
/// sweepPath = startSketchOn('XZ')
|
||||
/// |> startProfileAt([0.05, 0.05], %)
|
||||
/// |> line(end = [0, 7])
|
||||
/// |> tangentialArc({
|
||||
/// offset: 90,
|
||||
/// radius: 5
|
||||
/// }, %)
|
||||
/// |> tangentialArc(angle = 90, radius = 5)
|
||||
/// |> line(end = [-3, 0])
|
||||
/// |> tangentialArc({
|
||||
/// offset: -90,
|
||||
/// radius: 5
|
||||
/// }, %)
|
||||
/// |> tangentialArc(angle = -90, radius = 5)
|
||||
/// |> line(end = [0, 7])
|
||||
///
|
||||
/// // Create a hole for the pipe.
|
||||
@ -716,10 +680,7 @@ pub async fn rotate(exec_state: &mut ExecState, args: Args) -> Result<KclValue,
|
||||
/// sketch002 = startSketchOn('YZ')
|
||||
/// sweepPath = startProfileAt([0, 0], sketch002)
|
||||
/// |> yLine(length = 231.81)
|
||||
/// |> tangentialArc({
|
||||
/// radius = 80,
|
||||
/// offset = -90,
|
||||
/// }, %)
|
||||
/// |> tangentialArc(radius = 80, angle = -90)
|
||||
/// |> xLine(length = 384.93)
|
||||
///
|
||||
/// parts = sweep([rectangleSketch, circleSketch], path = sweepPath)
|
||||
@ -846,15 +807,9 @@ mod tests {
|
||||
const PIPE: &str = r#"sweepPath = startSketchOn('XZ')
|
||||
|> startProfileAt([0.05, 0.05], %)
|
||||
|> line(end = [0, 7])
|
||||
|> tangentialArc({
|
||||
offset: 90,
|
||||
radius: 5
|
||||
}, %)
|
||||
|> tangentialArc(angle = 90, radius = 5)
|
||||
|> line(end = [-3, 0])
|
||||
|> tangentialArc({
|
||||
offset: -90,
|
||||
radius: 5
|
||||
}, %)
|
||||
|> tangentialArc(angle = -90, radius = 5)
|
||||
|> line(end = [0, 7])
|
||||
|
||||
// Create a hole for the pipe.
|
||||
|
@ -234,40 +234,37 @@ pub fn is_on_circumference(center: Point2d, point: Point2d, radius: f64) -> bool
|
||||
(distance_squared - radius.powi(2)).abs() < 1e-9
|
||||
}
|
||||
|
||||
// Calculate the center of 3 points
|
||||
// To calculate the center of the 3 point circle 2 perpendicular lines are created
|
||||
// These perpendicular lines will intersect at the center of the circle.
|
||||
// Calculate the center of 3 points using an algebraic method
|
||||
// Handles if 3 points lie on the same line (collinear) by returning the average of the points (could return None instead..)
|
||||
pub fn calculate_circle_center(p1: [f64; 2], p2: [f64; 2], p3: [f64; 2]) -> [f64; 2] {
|
||||
// y2 - y1
|
||||
let y_2_1 = p2[1] - p1[1];
|
||||
// y3 - y2
|
||||
let y_3_2 = p3[1] - p2[1];
|
||||
// x2 - x1
|
||||
let x_2_1 = p2[0] - p1[0];
|
||||
// x3 - x2
|
||||
let x_3_2 = p3[0] - p2[0];
|
||||
let (x1, y1) = (p1[0], p1[1]);
|
||||
let (x2, y2) = (p2[0], p2[1]);
|
||||
let (x3, y3) = (p3[0], p3[1]);
|
||||
|
||||
// Slope of two perpendicular lines
|
||||
let slope_a = y_2_1 / x_2_1;
|
||||
let slope_b = y_3_2 / x_3_2;
|
||||
// Compute the determinant d = 2 * (x1*(y2-y3) + x2*(y3-y1) + x3*(y1-y2))
|
||||
// Visually d is twice the area of the triangle formed by the points,
|
||||
// also the same as: cross(p2 - p1, p3 - p1)
|
||||
let d = 2.0 * (x1 * (y2 - y3) + x2 * (y3 - y1) + x3 * (y1 - y2));
|
||||
|
||||
// Values for line intersection
|
||||
// y1 - y3
|
||||
let y_1_3 = p1[1] - p3[1];
|
||||
// x1 + x2
|
||||
let x_1_2 = p1[0] + p2[0];
|
||||
// x2 + x3
|
||||
let x_2_3 = p2[0] + p3[0];
|
||||
// y1 + y2
|
||||
let y_1_2 = p1[1] + p2[1];
|
||||
// If d is nearly zero, the points are collinear, and a unique circle cannot be defined.
|
||||
if d.abs() < f64::EPSILON {
|
||||
return [(x1 + x2 + x3) / 3.0, (y1 + y2 + y3) / 3.0];
|
||||
}
|
||||
|
||||
// Solve for the intersection of these two lines
|
||||
let numerator = (slope_a * slope_b * y_1_3) + (slope_b * x_1_2) - (slope_a * x_2_3);
|
||||
let x = numerator / (2.0 * (slope_b - slope_a));
|
||||
// squared lengths
|
||||
let p1_sq = x1 * x1 + y1 * y1;
|
||||
let p2_sq = x2 * x2 + y2 * y2;
|
||||
let p3_sq = x3 * x3 + y3 * y3;
|
||||
|
||||
let y = ((-1.0 / slope_a) * (x - (x_1_2 / 2.0))) + (y_1_2 / 2.0);
|
||||
|
||||
[x, y]
|
||||
// This formula is derived from the circle equations:
|
||||
// (x - cx)^2 + (y - cy)^2 = r^2
|
||||
// All 3 points will satisfy this equation, so we have 3 equations. Radius can be eliminated
|
||||
// by subtracting one of the equations from the other two and the remaining 2 equations can
|
||||
// be solved for cx and cy.
|
||||
[
|
||||
(p1_sq * (y2 - y3) + p2_sq * (y3 - y1) + p3_sq * (y1 - y2)) / d,
|
||||
(p1_sq * (x3 - x2) + p2_sq * (x1 - x3) + p3_sq * (x2 - x1)) / d,
|
||||
]
|
||||
}
|
||||
|
||||
pub struct CircleParams {
|
||||
@ -286,9 +283,11 @@ pub fn calculate_circle_from_3_points(points: [Point2d; 3]) -> CircleParams {
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
// Here you can bring your functions into scope
|
||||
use approx::assert_relative_eq;
|
||||
use pretty_assertions::assert_eq;
|
||||
use std::f64::consts::TAU;
|
||||
|
||||
use super::{get_x_component, get_y_component, Angle};
|
||||
use super::{calculate_circle_center, get_x_component, get_y_component, Angle};
|
||||
use crate::SourceRange;
|
||||
|
||||
static EACH_QUAD: [(i32, [i32; 2]); 12] = [
|
||||
@ -453,6 +452,75 @@ mod tests {
|
||||
assert_eq!(angle_start.to_degrees().round(), 0.0);
|
||||
assert_eq!(angle_end.to_degrees().round(), 180.0);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_calculate_circle_center() {
|
||||
const EPS: f64 = 1e-4;
|
||||
|
||||
// Test: circle center = (4.1, 1.9)
|
||||
let p1 = [1.0, 2.0];
|
||||
let p2 = [4.0, 5.0];
|
||||
let p3 = [7.0, 3.0];
|
||||
let center = calculate_circle_center(p1, p2, p3);
|
||||
assert_relative_eq!(center[0], 4.1, epsilon = EPS);
|
||||
assert_relative_eq!(center[1], 1.9, epsilon = EPS);
|
||||
|
||||
// Tests: Generate a few circles and test its points
|
||||
let center = [3.2, 0.7];
|
||||
let radius_array = [0.001, 0.01, 0.6, 1.0, 5.0, 60.0, 500.0, 2000.0, 400_000.0];
|
||||
let points_array = [[0.0, 0.33, 0.66], [0.0, 0.1, 0.2], [0.0, -0.1, 0.1], [0.0, 0.5, 0.7]];
|
||||
|
||||
let get_point = |radius: f64, t: f64| {
|
||||
let angle = t * TAU;
|
||||
[center[0] + radius * angle.cos(), center[1] + radius * angle.sin()]
|
||||
};
|
||||
|
||||
for radius in radius_array {
|
||||
for point in points_array {
|
||||
let p1 = get_point(radius, point[0]);
|
||||
let p2 = get_point(radius, point[1]);
|
||||
let p3 = get_point(radius, point[2]);
|
||||
let c = calculate_circle_center(p1, p2, p3);
|
||||
assert_relative_eq!(c[0], center[0], epsilon = EPS);
|
||||
assert_relative_eq!(c[1], center[1], epsilon = EPS);
|
||||
}
|
||||
}
|
||||
|
||||
// Test: Equilateral triangle
|
||||
let p1 = [0.0, 0.0];
|
||||
let p2 = [1.0, 0.0];
|
||||
let p3 = [0.5, 3.0_f64.sqrt() / 2.0];
|
||||
let center = calculate_circle_center(p1, p2, p3);
|
||||
assert_relative_eq!(center[0], 0.5, epsilon = EPS);
|
||||
assert_relative_eq!(center[1], 1.0 / (2.0 * 3.0_f64.sqrt()), epsilon = EPS);
|
||||
|
||||
// Test: Collinear points (should return the average of the points)
|
||||
let p1 = [0.0, 0.0];
|
||||
let p2 = [1.0, 0.0];
|
||||
let p3 = [2.0, 0.0];
|
||||
let center = calculate_circle_center(p1, p2, p3);
|
||||
assert_relative_eq!(center[0], 1.0, epsilon = EPS);
|
||||
assert_relative_eq!(center[1], 0.0, epsilon = EPS);
|
||||
|
||||
// Test: Points forming a circle with radius = 1
|
||||
let p1 = [0.0, 0.0];
|
||||
let p2 = [0.0, 2.0];
|
||||
let p3 = [2.0, 0.0];
|
||||
let center = calculate_circle_center(p1, p2, p3);
|
||||
assert_relative_eq!(center[0], 1.0, epsilon = EPS);
|
||||
assert_relative_eq!(center[1], 1.0, epsilon = EPS);
|
||||
|
||||
// Test: Integer coordinates
|
||||
let p1 = [0.0, 0.0];
|
||||
let p2 = [0.0, 6.0];
|
||||
let p3 = [6.0, 0.0];
|
||||
let center = calculate_circle_center(p1, p2, p3);
|
||||
assert_relative_eq!(center[0], 3.0, epsilon = EPS);
|
||||
assert_relative_eq!(center[1], 3.0, epsilon = EPS);
|
||||
// Verify radius (should be 3 * sqrt(2))
|
||||
let radius = ((center[0] - p1[0]).powi(2) + (center[1] - p1[1]).powi(2)).sqrt();
|
||||
assert_relative_eq!(radius, 3.0 * 2.0_f64.sqrt(), epsilon = EPS);
|
||||
}
|
||||
}
|
||||
|
||||
pub type Coords2d = [f64; 2];
|
||||
|
@ -103,9 +103,9 @@ export fn circle(
|
||||
/// sketch0011 = startSketchOn(XY)
|
||||
/// |> startProfileAt([6.77, 0], %)
|
||||
/// |> yLine(length = 1.27)
|
||||
/// |> tangentialArcTo([5.96, 2.37], %)
|
||||
/// |> tangentialArcTo([-6.2, 2.44], %)
|
||||
/// |> tangentialArcTo([-6.6, 1.82], %)
|
||||
/// |> tangentialArc(endAbsolute = [5.96, 2.37])
|
||||
/// |> tangentialArc(endAbsolute = [-6.2, 2.44])
|
||||
/// |> tangentialArc(endAbsolute = [-6.6, 1.82])
|
||||
/// |> yLine(length = -1.82)
|
||||
/// |> mirror2d( axis = X )
|
||||
/// |> extrude(length = 10)
|
||||
|
@ -12,8 +12,8 @@ flowchart LR
|
||||
subgraph path10 [Path]
|
||||
10["Path<br>[479, 508, 0]"]
|
||||
11["Segment<br>[514, 539, 0]"]
|
||||
12["Segment<br>[545, 571, 0]"]
|
||||
13["Segment<br>[577, 609, 0]"]
|
||||
12["Segment<br>[545, 580, 0]"]
|
||||
13["Segment<br>[586, 627, 0]"]
|
||||
end
|
||||
1["Plane<br>[12, 31, 0]"]
|
||||
9["Plane<br>[453, 473, 0]"]
|
||||
|
@ -816,6 +816,15 @@ description: Result of parsing artifact_graph_example_code_no_3d.kcl
|
||||
{
|
||||
"arguments": [
|
||||
{
|
||||
"type": "LabeledArg",
|
||||
"label": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"name": "endAbsolute",
|
||||
"start": 0,
|
||||
"type": "Identifier"
|
||||
},
|
||||
"arg": {
|
||||
"commentStart": 0,
|
||||
"elements": [
|
||||
{
|
||||
@ -847,13 +856,7 @@ description: Result of parsing artifact_graph_example_code_no_3d.kcl
|
||||
"start": 0,
|
||||
"type": "ArrayExpression",
|
||||
"type": "ArrayExpression"
|
||||
},
|
||||
{
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"start": 0,
|
||||
"type": "PipeSubstitution",
|
||||
"type": "PipeSubstitution"
|
||||
}
|
||||
}
|
||||
],
|
||||
"callee": {
|
||||
@ -863,7 +866,7 @@ description: Result of parsing artifact_graph_example_code_no_3d.kcl
|
||||
"name": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"name": "tangentialArcTo",
|
||||
"name": "tangentialArc",
|
||||
"start": 0,
|
||||
"type": "Identifier"
|
||||
},
|
||||
@ -874,12 +877,22 @@ description: Result of parsing artifact_graph_example_code_no_3d.kcl
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"start": 0,
|
||||
"type": "CallExpression",
|
||||
"type": "CallExpression"
|
||||
"type": "CallExpressionKw",
|
||||
"type": "CallExpressionKw",
|
||||
"unlabeled": null
|
||||
},
|
||||
{
|
||||
"arguments": [
|
||||
{
|
||||
"type": "LabeledArg",
|
||||
"label": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"name": "endAbsolute",
|
||||
"start": 0,
|
||||
"type": "Identifier"
|
||||
},
|
||||
"arg": {
|
||||
"commentStart": 0,
|
||||
"elements": [
|
||||
{
|
||||
@ -919,13 +932,7 @@ description: Result of parsing artifact_graph_example_code_no_3d.kcl
|
||||
"start": 0,
|
||||
"type": "ArrayExpression",
|
||||
"type": "ArrayExpression"
|
||||
},
|
||||
{
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"start": 0,
|
||||
"type": "PipeSubstitution",
|
||||
"type": "PipeSubstitution"
|
||||
}
|
||||
}
|
||||
],
|
||||
"callee": {
|
||||
@ -935,7 +942,7 @@ description: Result of parsing artifact_graph_example_code_no_3d.kcl
|
||||
"name": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"name": "tangentialArcTo",
|
||||
"name": "tangentialArc",
|
||||
"start": 0,
|
||||
"type": "Identifier"
|
||||
},
|
||||
@ -946,8 +953,9 @@ description: Result of parsing artifact_graph_example_code_no_3d.kcl
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"start": 0,
|
||||
"type": "CallExpression",
|
||||
"type": "CallExpression"
|
||||
"type": "CallExpressionKw",
|
||||
"type": "CallExpressionKw",
|
||||
"unlabeled": null
|
||||
}
|
||||
],
|
||||
"commentStart": 0,
|
||||
|
@ -8,5 +8,5 @@ sketch003 = startSketchOn('YZ')
|
||||
sketch004 = startSketchOn('-XZ')
|
||||
|> startProfileAt([0, 14.36], %)
|
||||
|> line(end = [15.49, 0.05])
|
||||
|> tangentialArcTo([0, 0], %)
|
||||
|> tangentialArcTo([-6.8, 8.17], %)
|
||||
|> tangentialArc(endAbsolute = [0, 0])
|
||||
|> tangentialArc(endAbsolute = [-6.8, 8.17])
|
||||
|
@ -12,5 +12,5 @@ sketch003 = startSketchOn(YZ)
|
||||
sketch004 = startSketchOn(-XZ)
|
||||
|> startProfileAt([0, 14.36], %)
|
||||
|> line(end = [15.49, 0.05])
|
||||
|> tangentialArcTo([0, 0], %)
|
||||
|> tangentialArcTo([-6.8, 8.17], %)
|
||||
|> tangentialArc(endAbsolute = [0, 0])
|
||||
|> tangentialArc(endAbsolute = [-6.8, 8.17])
|
||||
|
@ -85,7 +85,7 @@ description: Artifact commands circle_three_point.kcl
|
||||
"path": "[uuid]",
|
||||
"to": {
|
||||
"x": 30.00594901040716,
|
||||
"y": 19.749999999999996,
|
||||
"y": 19.75,
|
||||
"z": 0.0
|
||||
}
|
||||
}
|
||||
@ -109,7 +109,7 @@ description: Artifact commands circle_three_point.kcl
|
||||
"x": 24.75,
|
||||
"y": 19.75
|
||||
},
|
||||
"radius": 5.255949010407163,
|
||||
"radius": 5.25594901040716,
|
||||
"start": {
|
||||
"unit": "degrees",
|
||||
"value": 0.0
|
||||
|
@ -3,48 +3,48 @@ flowchart LR
|
||||
subgraph path2 [Path]
|
||||
2["Path<br>[422, 459, 0]"]
|
||||
3["Segment<br>[465, 505, 0]"]
|
||||
4["Segment<br>[511, 569, 0]"]
|
||||
5["Segment<br>[575, 611, 0]"]
|
||||
6["Segment<br>[617, 676, 0]"]
|
||||
7["Segment<br>[682, 747, 0]"]
|
||||
8["Segment<br>[753, 812, 0]"]
|
||||
9["Segment<br>[818, 876, 0]"]
|
||||
10["Segment<br>[882, 940, 0]"]
|
||||
11["Segment<br>[946, 988, 0]"]
|
||||
12["Segment<br>[994, 1052, 0]"]
|
||||
13["Segment<br>[1058, 1094, 0]"]
|
||||
14["Segment<br>[1100, 1159, 0]"]
|
||||
15["Segment<br>[1165, 1234, 0]"]
|
||||
16["Segment<br>[1240, 1300, 0]"]
|
||||
17["Segment<br>[1306, 1345, 0]"]
|
||||
18["Segment<br>[1351, 1410, 0]"]
|
||||
19["Segment<br>[1416, 1458, 0]"]
|
||||
20["Segment<br>[1464, 1523, 0]"]
|
||||
21["Segment<br>[1529, 1590, 0]"]
|
||||
22["Segment<br>[1596, 1656, 0]"]
|
||||
23["Segment<br>[1662, 1792, 0]"]
|
||||
24["Segment<br>[1798, 1858, 0]"]
|
||||
25["Segment<br>[1864, 1903, 0]"]
|
||||
26["Segment<br>[1909, 1968, 0]"]
|
||||
27["Segment<br>[1974, 1982, 0]"]
|
||||
4["Segment<br>[511, 562, 0]"]
|
||||
5["Segment<br>[568, 604, 0]"]
|
||||
6["Segment<br>[610, 662, 0]"]
|
||||
7["Segment<br>[668, 733, 0]"]
|
||||
8["Segment<br>[739, 791, 0]"]
|
||||
9["Segment<br>[797, 855, 0]"]
|
||||
10["Segment<br>[861, 912, 0]"]
|
||||
11["Segment<br>[918, 960, 0]"]
|
||||
12["Segment<br>[966, 1017, 0]"]
|
||||
13["Segment<br>[1023, 1059, 0]"]
|
||||
14["Segment<br>[1065, 1117, 0]"]
|
||||
15["Segment<br>[1123, 1192, 0]"]
|
||||
16["Segment<br>[1198, 1251, 0]"]
|
||||
17["Segment<br>[1257, 1296, 0]"]
|
||||
18["Segment<br>[1302, 1354, 0]"]
|
||||
19["Segment<br>[1360, 1402, 0]"]
|
||||
20["Segment<br>[1408, 1460, 0]"]
|
||||
21["Segment<br>[1466, 1527, 0]"]
|
||||
22["Segment<br>[1533, 1586, 0]"]
|
||||
23["Segment<br>[1592, 1722, 0]"]
|
||||
24["Segment<br>[1728, 1781, 0]"]
|
||||
25["Segment<br>[1787, 1826, 0]"]
|
||||
26["Segment<br>[1832, 1884, 0]"]
|
||||
27["Segment<br>[1890, 1898, 0]"]
|
||||
28[Solid2d]
|
||||
end
|
||||
subgraph path30 [Path]
|
||||
30["Path<br>[2015, 2040, 0]"]
|
||||
31["Segment<br>[2046, 2065, 0]"]
|
||||
32["Segment<br>[2071, 2129, 0]"]
|
||||
33["Segment<br>[2135, 2177, 0]"]
|
||||
34["Segment<br>[2183, 2242, 0]"]
|
||||
35["Segment<br>[2248, 2268, 0]"]
|
||||
36["Segment<br>[2274, 2334, 0]"]
|
||||
37["Segment<br>[2340, 2385, 0]"]
|
||||
38["Segment<br>[2391, 2450, 0]"]
|
||||
39["Segment<br>[2456, 2464, 0]"]
|
||||
30["Path<br>[1931, 1956, 0]"]
|
||||
31["Segment<br>[1962, 1981, 0]"]
|
||||
32["Segment<br>[1987, 2038, 0]"]
|
||||
33["Segment<br>[2044, 2086, 0]"]
|
||||
34["Segment<br>[2092, 2144, 0]"]
|
||||
35["Segment<br>[2150, 2170, 0]"]
|
||||
36["Segment<br>[2176, 2229, 0]"]
|
||||
37["Segment<br>[2235, 2280, 0]"]
|
||||
38["Segment<br>[2286, 2338, 0]"]
|
||||
39["Segment<br>[2344, 2352, 0]"]
|
||||
40[Solid2d]
|
||||
end
|
||||
1["Plane<br>[399, 416, 0]"]
|
||||
29["Plane<br>[1992, 2009, 0]"]
|
||||
41["Sweep Extrusion<br>[2510, 2531, 0]"]
|
||||
29["Plane<br>[1908, 1925, 0]"]
|
||||
41["Sweep Extrusion<br>[2398, 2419, 0]"]
|
||||
42[Wall]
|
||||
43[Wall]
|
||||
44[Wall]
|
||||
|
@ -560,6 +560,15 @@ description: Result of parsing i_shape.kcl
|
||||
{
|
||||
"arguments": [
|
||||
{
|
||||
"type": "LabeledArg",
|
||||
"label": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"name": "end",
|
||||
"start": 0,
|
||||
"type": "Identifier"
|
||||
},
|
||||
"arg": {
|
||||
"commentStart": 0,
|
||||
"elements": [
|
||||
{
|
||||
@ -599,13 +608,7 @@ description: Result of parsing i_shape.kcl
|
||||
"start": 0,
|
||||
"type": "ArrayExpression",
|
||||
"type": "ArrayExpression"
|
||||
},
|
||||
{
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"start": 0,
|
||||
"type": "PipeSubstitution",
|
||||
"type": "PipeSubstitution"
|
||||
}
|
||||
}
|
||||
],
|
||||
"callee": {
|
||||
@ -615,7 +618,7 @@ description: Result of parsing i_shape.kcl
|
||||
"name": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"name": "tangentialArcToRelative",
|
||||
"name": "tangentialArc",
|
||||
"start": 0,
|
||||
"type": "Identifier"
|
||||
},
|
||||
@ -626,8 +629,9 @@ description: Result of parsing i_shape.kcl
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"start": 0,
|
||||
"type": "CallExpression",
|
||||
"type": "CallExpression"
|
||||
"type": "CallExpressionKw",
|
||||
"type": "CallExpressionKw",
|
||||
"unlabeled": null
|
||||
},
|
||||
{
|
||||
"arguments": [
|
||||
@ -703,6 +707,15 @@ description: Result of parsing i_shape.kcl
|
||||
{
|
||||
"arguments": [
|
||||
{
|
||||
"type": "LabeledArg",
|
||||
"label": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"name": "end",
|
||||
"start": 0,
|
||||
"type": "Identifier"
|
||||
},
|
||||
"arg": {
|
||||
"commentStart": 0,
|
||||
"elements": [
|
||||
{
|
||||
@ -750,13 +763,7 @@ description: Result of parsing i_shape.kcl
|
||||
"start": 0,
|
||||
"type": "ArrayExpression",
|
||||
"type": "ArrayExpression"
|
||||
},
|
||||
{
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"start": 0,
|
||||
"type": "PipeSubstitution",
|
||||
"type": "PipeSubstitution"
|
||||
}
|
||||
}
|
||||
],
|
||||
"callee": {
|
||||
@ -766,7 +773,7 @@ description: Result of parsing i_shape.kcl
|
||||
"name": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"name": "tangentialArcToRelative",
|
||||
"name": "tangentialArc",
|
||||
"start": 0,
|
||||
"type": "Identifier"
|
||||
},
|
||||
@ -777,8 +784,9 @@ description: Result of parsing i_shape.kcl
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"start": 0,
|
||||
"type": "CallExpression",
|
||||
"type": "CallExpression"
|
||||
"type": "CallExpressionKw",
|
||||
"type": "CallExpressionKw",
|
||||
"unlabeled": null
|
||||
},
|
||||
{
|
||||
"arguments": [
|
||||
@ -898,6 +906,15 @@ description: Result of parsing i_shape.kcl
|
||||
{
|
||||
"arguments": [
|
||||
{
|
||||
"type": "LabeledArg",
|
||||
"label": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"name": "end",
|
||||
"start": 0,
|
||||
"type": "Identifier"
|
||||
},
|
||||
"arg": {
|
||||
"commentStart": 0,
|
||||
"elements": [
|
||||
{
|
||||
@ -945,13 +962,7 @@ description: Result of parsing i_shape.kcl
|
||||
"start": 0,
|
||||
"type": "ArrayExpression",
|
||||
"type": "ArrayExpression"
|
||||
},
|
||||
{
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"start": 0,
|
||||
"type": "PipeSubstitution",
|
||||
"type": "PipeSubstitution"
|
||||
}
|
||||
}
|
||||
],
|
||||
"callee": {
|
||||
@ -961,7 +972,7 @@ description: Result of parsing i_shape.kcl
|
||||
"name": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"name": "tangentialArcToRelative",
|
||||
"name": "tangentialArc",
|
||||
"start": 0,
|
||||
"type": "Identifier"
|
||||
},
|
||||
@ -972,8 +983,9 @@ description: Result of parsing i_shape.kcl
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"start": 0,
|
||||
"type": "CallExpression",
|
||||
"type": "CallExpression"
|
||||
"type": "CallExpressionKw",
|
||||
"type": "CallExpressionKw",
|
||||
"unlabeled": null
|
||||
},
|
||||
{
|
||||
"arguments": [
|
||||
@ -1113,6 +1125,15 @@ description: Result of parsing i_shape.kcl
|
||||
{
|
||||
"arguments": [
|
||||
{
|
||||
"type": "LabeledArg",
|
||||
"label": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"name": "end",
|
||||
"start": 0,
|
||||
"type": "Identifier"
|
||||
},
|
||||
"arg": {
|
||||
"commentStart": 0,
|
||||
"elements": [
|
||||
{
|
||||
@ -1152,13 +1173,7 @@ description: Result of parsing i_shape.kcl
|
||||
"start": 0,
|
||||
"type": "ArrayExpression",
|
||||
"type": "ArrayExpression"
|
||||
},
|
||||
{
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"start": 0,
|
||||
"type": "PipeSubstitution",
|
||||
"type": "PipeSubstitution"
|
||||
}
|
||||
}
|
||||
],
|
||||
"callee": {
|
||||
@ -1168,7 +1183,7 @@ description: Result of parsing i_shape.kcl
|
||||
"name": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"name": "tangentialArcToRelative",
|
||||
"name": "tangentialArc",
|
||||
"start": 0,
|
||||
"type": "Identifier"
|
||||
},
|
||||
@ -1179,8 +1194,9 @@ description: Result of parsing i_shape.kcl
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"start": 0,
|
||||
"type": "CallExpression",
|
||||
"type": "CallExpression"
|
||||
"type": "CallExpressionKw",
|
||||
"type": "CallExpressionKw",
|
||||
"unlabeled": null
|
||||
},
|
||||
{
|
||||
"arguments": [
|
||||
@ -1276,6 +1292,15 @@ description: Result of parsing i_shape.kcl
|
||||
{
|
||||
"arguments": [
|
||||
{
|
||||
"type": "LabeledArg",
|
||||
"label": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"name": "end",
|
||||
"start": 0,
|
||||
"type": "Identifier"
|
||||
},
|
||||
"arg": {
|
||||
"commentStart": 0,
|
||||
"elements": [
|
||||
{
|
||||
@ -1315,13 +1340,7 @@ description: Result of parsing i_shape.kcl
|
||||
"start": 0,
|
||||
"type": "ArrayExpression",
|
||||
"type": "ArrayExpression"
|
||||
},
|
||||
{
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"start": 0,
|
||||
"type": "PipeSubstitution",
|
||||
"type": "PipeSubstitution"
|
||||
}
|
||||
}
|
||||
],
|
||||
"callee": {
|
||||
@ -1331,7 +1350,7 @@ description: Result of parsing i_shape.kcl
|
||||
"name": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"name": "tangentialArcToRelative",
|
||||
"name": "tangentialArc",
|
||||
"start": 0,
|
||||
"type": "Identifier"
|
||||
},
|
||||
@ -1342,8 +1361,9 @@ description: Result of parsing i_shape.kcl
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"start": 0,
|
||||
"type": "CallExpression",
|
||||
"type": "CallExpression"
|
||||
"type": "CallExpressionKw",
|
||||
"type": "CallExpressionKw",
|
||||
"unlabeled": null
|
||||
},
|
||||
{
|
||||
"arguments": [
|
||||
@ -1419,6 +1439,15 @@ description: Result of parsing i_shape.kcl
|
||||
{
|
||||
"arguments": [
|
||||
{
|
||||
"type": "LabeledArg",
|
||||
"label": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"name": "end",
|
||||
"start": 0,
|
||||
"type": "Identifier"
|
||||
},
|
||||
"arg": {
|
||||
"commentStart": 0,
|
||||
"elements": [
|
||||
{
|
||||
@ -1466,13 +1495,7 @@ description: Result of parsing i_shape.kcl
|
||||
"start": 0,
|
||||
"type": "ArrayExpression",
|
||||
"type": "ArrayExpression"
|
||||
},
|
||||
{
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"start": 0,
|
||||
"type": "PipeSubstitution",
|
||||
"type": "PipeSubstitution"
|
||||
}
|
||||
}
|
||||
],
|
||||
"callee": {
|
||||
@ -1482,7 +1505,7 @@ description: Result of parsing i_shape.kcl
|
||||
"name": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"name": "tangentialArcToRelative",
|
||||
"name": "tangentialArc",
|
||||
"start": 0,
|
||||
"type": "Identifier"
|
||||
},
|
||||
@ -1493,8 +1516,9 @@ description: Result of parsing i_shape.kcl
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"start": 0,
|
||||
"type": "CallExpression",
|
||||
"type": "CallExpression"
|
||||
"type": "CallExpressionKw",
|
||||
"type": "CallExpressionKw",
|
||||
"unlabeled": null
|
||||
},
|
||||
{
|
||||
"arguments": [
|
||||
@ -1642,6 +1666,15 @@ description: Result of parsing i_shape.kcl
|
||||
{
|
||||
"arguments": [
|
||||
{
|
||||
"type": "LabeledArg",
|
||||
"label": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"name": "end",
|
||||
"start": 0,
|
||||
"type": "Identifier"
|
||||
},
|
||||
"arg": {
|
||||
"commentStart": 0,
|
||||
"elements": [
|
||||
{
|
||||
@ -1697,13 +1730,7 @@ description: Result of parsing i_shape.kcl
|
||||
"start": 0,
|
||||
"type": "ArrayExpression",
|
||||
"type": "ArrayExpression"
|
||||
},
|
||||
{
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"start": 0,
|
||||
"type": "PipeSubstitution",
|
||||
"type": "PipeSubstitution"
|
||||
}
|
||||
}
|
||||
],
|
||||
"callee": {
|
||||
@ -1713,7 +1740,7 @@ description: Result of parsing i_shape.kcl
|
||||
"name": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"name": "tangentialArcToRelative",
|
||||
"name": "tangentialArc",
|
||||
"start": 0,
|
||||
"type": "Identifier"
|
||||
},
|
||||
@ -1724,8 +1751,9 @@ description: Result of parsing i_shape.kcl
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"start": 0,
|
||||
"type": "CallExpression",
|
||||
"type": "CallExpression"
|
||||
"type": "CallExpressionKw",
|
||||
"type": "CallExpressionKw",
|
||||
"unlabeled": null
|
||||
},
|
||||
{
|
||||
"arguments": [
|
||||
@ -1809,6 +1837,15 @@ description: Result of parsing i_shape.kcl
|
||||
{
|
||||
"arguments": [
|
||||
{
|
||||
"type": "LabeledArg",
|
||||
"label": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"name": "end",
|
||||
"start": 0,
|
||||
"type": "Identifier"
|
||||
},
|
||||
"arg": {
|
||||
"commentStart": 0,
|
||||
"elements": [
|
||||
{
|
||||
@ -1856,13 +1893,7 @@ description: Result of parsing i_shape.kcl
|
||||
"start": 0,
|
||||
"type": "ArrayExpression",
|
||||
"type": "ArrayExpression"
|
||||
},
|
||||
{
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"start": 0,
|
||||
"type": "PipeSubstitution",
|
||||
"type": "PipeSubstitution"
|
||||
}
|
||||
}
|
||||
],
|
||||
"callee": {
|
||||
@ -1872,7 +1903,7 @@ description: Result of parsing i_shape.kcl
|
||||
"name": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"name": "tangentialArcToRelative",
|
||||
"name": "tangentialArc",
|
||||
"start": 0,
|
||||
"type": "Identifier"
|
||||
},
|
||||
@ -1883,8 +1914,9 @@ description: Result of parsing i_shape.kcl
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"start": 0,
|
||||
"type": "CallExpression",
|
||||
"type": "CallExpression"
|
||||
"type": "CallExpressionKw",
|
||||
"type": "CallExpressionKw",
|
||||
"unlabeled": null
|
||||
},
|
||||
{
|
||||
"arguments": [
|
||||
@ -1980,6 +2012,15 @@ description: Result of parsing i_shape.kcl
|
||||
{
|
||||
"arguments": [
|
||||
{
|
||||
"type": "LabeledArg",
|
||||
"label": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"name": "end",
|
||||
"start": 0,
|
||||
"type": "Identifier"
|
||||
},
|
||||
"arg": {
|
||||
"commentStart": 0,
|
||||
"elements": [
|
||||
{
|
||||
@ -2027,13 +2068,7 @@ description: Result of parsing i_shape.kcl
|
||||
"start": 0,
|
||||
"type": "ArrayExpression",
|
||||
"type": "ArrayExpression"
|
||||
},
|
||||
{
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"start": 0,
|
||||
"type": "PipeSubstitution",
|
||||
"type": "PipeSubstitution"
|
||||
}
|
||||
}
|
||||
],
|
||||
"callee": {
|
||||
@ -2043,7 +2078,7 @@ description: Result of parsing i_shape.kcl
|
||||
"name": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"name": "tangentialArcToRelative",
|
||||
"name": "tangentialArc",
|
||||
"start": 0,
|
||||
"type": "Identifier"
|
||||
},
|
||||
@ -2054,8 +2089,9 @@ description: Result of parsing i_shape.kcl
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"start": 0,
|
||||
"type": "CallExpression",
|
||||
"type": "CallExpression"
|
||||
"type": "CallExpressionKw",
|
||||
"type": "CallExpressionKw",
|
||||
"unlabeled": null
|
||||
},
|
||||
{
|
||||
"arguments": [
|
||||
@ -2203,6 +2239,15 @@ description: Result of parsing i_shape.kcl
|
||||
{
|
||||
"arguments": [
|
||||
{
|
||||
"type": "LabeledArg",
|
||||
"label": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"name": "end",
|
||||
"start": 0,
|
||||
"type": "Identifier"
|
||||
},
|
||||
"arg": {
|
||||
"commentStart": 0,
|
||||
"elements": [
|
||||
{
|
||||
@ -2258,13 +2303,7 @@ description: Result of parsing i_shape.kcl
|
||||
"start": 0,
|
||||
"type": "ArrayExpression",
|
||||
"type": "ArrayExpression"
|
||||
},
|
||||
{
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"start": 0,
|
||||
"type": "PipeSubstitution",
|
||||
"type": "PipeSubstitution"
|
||||
}
|
||||
}
|
||||
],
|
||||
"callee": {
|
||||
@ -2274,7 +2313,7 @@ description: Result of parsing i_shape.kcl
|
||||
"name": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"name": "tangentialArcToRelative",
|
||||
"name": "tangentialArc",
|
||||
"start": 0,
|
||||
"type": "Identifier"
|
||||
},
|
||||
@ -2285,8 +2324,9 @@ description: Result of parsing i_shape.kcl
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"start": 0,
|
||||
"type": "CallExpression",
|
||||
"type": "CallExpression"
|
||||
"type": "CallExpressionKw",
|
||||
"type": "CallExpressionKw",
|
||||
"unlabeled": null
|
||||
},
|
||||
{
|
||||
"arguments": [
|
||||
@ -2482,6 +2522,15 @@ description: Result of parsing i_shape.kcl
|
||||
{
|
||||
"arguments": [
|
||||
{
|
||||
"type": "LabeledArg",
|
||||
"label": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"name": "end",
|
||||
"start": 0,
|
||||
"type": "Identifier"
|
||||
},
|
||||
"arg": {
|
||||
"commentStart": 0,
|
||||
"elements": [
|
||||
{
|
||||
@ -2537,13 +2586,7 @@ description: Result of parsing i_shape.kcl
|
||||
"start": 0,
|
||||
"type": "ArrayExpression",
|
||||
"type": "ArrayExpression"
|
||||
},
|
||||
{
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"start": 0,
|
||||
"type": "PipeSubstitution",
|
||||
"type": "PipeSubstitution"
|
||||
}
|
||||
}
|
||||
],
|
||||
"callee": {
|
||||
@ -2553,7 +2596,7 @@ description: Result of parsing i_shape.kcl
|
||||
"name": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"name": "tangentialArcToRelative",
|
||||
"name": "tangentialArc",
|
||||
"start": 0,
|
||||
"type": "Identifier"
|
||||
},
|
||||
@ -2564,8 +2607,9 @@ description: Result of parsing i_shape.kcl
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"start": 0,
|
||||
"type": "CallExpression",
|
||||
"type": "CallExpression"
|
||||
"type": "CallExpressionKw",
|
||||
"type": "CallExpressionKw",
|
||||
"unlabeled": null
|
||||
},
|
||||
{
|
||||
"arguments": [
|
||||
@ -2649,6 +2693,15 @@ description: Result of parsing i_shape.kcl
|
||||
{
|
||||
"arguments": [
|
||||
{
|
||||
"type": "LabeledArg",
|
||||
"label": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"name": "end",
|
||||
"start": 0,
|
||||
"type": "Identifier"
|
||||
},
|
||||
"arg": {
|
||||
"commentStart": 0,
|
||||
"elements": [
|
||||
{
|
||||
@ -2696,13 +2749,7 @@ description: Result of parsing i_shape.kcl
|
||||
"start": 0,
|
||||
"type": "ArrayExpression",
|
||||
"type": "ArrayExpression"
|
||||
},
|
||||
{
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"start": 0,
|
||||
"type": "PipeSubstitution",
|
||||
"type": "PipeSubstitution"
|
||||
}
|
||||
}
|
||||
],
|
||||
"callee": {
|
||||
@ -2712,7 +2759,7 @@ description: Result of parsing i_shape.kcl
|
||||
"name": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"name": "tangentialArcToRelative",
|
||||
"name": "tangentialArc",
|
||||
"start": 0,
|
||||
"type": "Identifier"
|
||||
},
|
||||
@ -2723,8 +2770,9 @@ description: Result of parsing i_shape.kcl
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"start": 0,
|
||||
"type": "CallExpression",
|
||||
"type": "CallExpression"
|
||||
"type": "CallExpressionKw",
|
||||
"type": "CallExpressionKw",
|
||||
"unlabeled": null
|
||||
},
|
||||
{
|
||||
"arguments": [
|
||||
@ -2948,6 +2996,15 @@ description: Result of parsing i_shape.kcl
|
||||
{
|
||||
"arguments": [
|
||||
{
|
||||
"type": "LabeledArg",
|
||||
"label": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"name": "end",
|
||||
"start": 0,
|
||||
"type": "Identifier"
|
||||
},
|
||||
"arg": {
|
||||
"commentStart": 0,
|
||||
"elements": [
|
||||
{
|
||||
@ -2987,13 +3044,7 @@ description: Result of parsing i_shape.kcl
|
||||
"start": 0,
|
||||
"type": "ArrayExpression",
|
||||
"type": "ArrayExpression"
|
||||
},
|
||||
{
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"start": 0,
|
||||
"type": "PipeSubstitution",
|
||||
"type": "PipeSubstitution"
|
||||
}
|
||||
}
|
||||
],
|
||||
"callee": {
|
||||
@ -3003,7 +3054,7 @@ description: Result of parsing i_shape.kcl
|
||||
"name": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"name": "tangentialArcToRelative",
|
||||
"name": "tangentialArc",
|
||||
"start": 0,
|
||||
"type": "Identifier"
|
||||
},
|
||||
@ -3014,8 +3065,9 @@ description: Result of parsing i_shape.kcl
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"start": 0,
|
||||
"type": "CallExpression",
|
||||
"type": "CallExpression"
|
||||
"type": "CallExpressionKw",
|
||||
"type": "CallExpressionKw",
|
||||
"unlabeled": null
|
||||
},
|
||||
{
|
||||
"arguments": [
|
||||
@ -3111,6 +3163,15 @@ description: Result of parsing i_shape.kcl
|
||||
{
|
||||
"arguments": [
|
||||
{
|
||||
"type": "LabeledArg",
|
||||
"label": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"name": "end",
|
||||
"start": 0,
|
||||
"type": "Identifier"
|
||||
},
|
||||
"arg": {
|
||||
"commentStart": 0,
|
||||
"elements": [
|
||||
{
|
||||
@ -3158,13 +3219,7 @@ description: Result of parsing i_shape.kcl
|
||||
"start": 0,
|
||||
"type": "ArrayExpression",
|
||||
"type": "ArrayExpression"
|
||||
},
|
||||
{
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"start": 0,
|
||||
"type": "PipeSubstitution",
|
||||
"type": "PipeSubstitution"
|
||||
}
|
||||
}
|
||||
],
|
||||
"callee": {
|
||||
@ -3174,7 +3229,7 @@ description: Result of parsing i_shape.kcl
|
||||
"name": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"name": "tangentialArcToRelative",
|
||||
"name": "tangentialArc",
|
||||
"start": 0,
|
||||
"type": "Identifier"
|
||||
},
|
||||
@ -3185,8 +3240,9 @@ description: Result of parsing i_shape.kcl
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"start": 0,
|
||||
"type": "CallExpression",
|
||||
"type": "CallExpression"
|
||||
"type": "CallExpressionKw",
|
||||
"type": "CallExpressionKw",
|
||||
"unlabeled": null
|
||||
},
|
||||
{
|
||||
"arguments": [
|
||||
@ -3246,6 +3302,15 @@ description: Result of parsing i_shape.kcl
|
||||
{
|
||||
"arguments": [
|
||||
{
|
||||
"type": "LabeledArg",
|
||||
"label": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"name": "end",
|
||||
"start": 0,
|
||||
"type": "Identifier"
|
||||
},
|
||||
"arg": {
|
||||
"commentStart": 0,
|
||||
"elements": [
|
||||
{
|
||||
@ -3301,13 +3366,7 @@ description: Result of parsing i_shape.kcl
|
||||
"start": 0,
|
||||
"type": "ArrayExpression",
|
||||
"type": "ArrayExpression"
|
||||
},
|
||||
{
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"start": 0,
|
||||
"type": "PipeSubstitution",
|
||||
"type": "PipeSubstitution"
|
||||
}
|
||||
}
|
||||
],
|
||||
"callee": {
|
||||
@ -3317,7 +3376,7 @@ description: Result of parsing i_shape.kcl
|
||||
"name": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"name": "tangentialArcToRelative",
|
||||
"name": "tangentialArc",
|
||||
"start": 0,
|
||||
"type": "Identifier"
|
||||
},
|
||||
@ -3328,8 +3387,9 @@ description: Result of parsing i_shape.kcl
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"start": 0,
|
||||
"type": "CallExpression",
|
||||
"type": "CallExpression"
|
||||
"type": "CallExpressionKw",
|
||||
"type": "CallExpressionKw",
|
||||
"unlabeled": null
|
||||
},
|
||||
{
|
||||
"arguments": [
|
||||
@ -3433,6 +3493,15 @@ description: Result of parsing i_shape.kcl
|
||||
{
|
||||
"arguments": [
|
||||
{
|
||||
"type": "LabeledArg",
|
||||
"label": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"name": "end",
|
||||
"start": 0,
|
||||
"type": "Identifier"
|
||||
},
|
||||
"arg": {
|
||||
"commentStart": 0,
|
||||
"elements": [
|
||||
{
|
||||
@ -3480,13 +3549,7 @@ description: Result of parsing i_shape.kcl
|
||||
"start": 0,
|
||||
"type": "ArrayExpression",
|
||||
"type": "ArrayExpression"
|
||||
},
|
||||
{
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"start": 0,
|
||||
"type": "PipeSubstitution",
|
||||
"type": "PipeSubstitution"
|
||||
}
|
||||
}
|
||||
],
|
||||
"callee": {
|
||||
@ -3496,7 +3559,7 @@ description: Result of parsing i_shape.kcl
|
||||
"name": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"name": "tangentialArcToRelative",
|
||||
"name": "tangentialArc",
|
||||
"start": 0,
|
||||
"type": "Identifier"
|
||||
},
|
||||
@ -3507,8 +3570,9 @@ description: Result of parsing i_shape.kcl
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"start": 0,
|
||||
"type": "CallExpression",
|
||||
"type": "CallExpression"
|
||||
"type": "CallExpressionKw",
|
||||
"type": "CallExpressionKw",
|
||||
"unlabeled": null
|
||||
},
|
||||
{
|
||||
"arguments": [
|
||||
|
@ -10,41 +10,41 @@ corner_radius = 5.0
|
||||
brace_base = startSketchOn(XY)
|
||||
|> startProfileAt([corner_radius, 0], %)
|
||||
|> line(end = [width - corner_radius, 0.0])
|
||||
|> tangentialArcToRelative([corner_radius, corner_radius], %)
|
||||
|> tangentialArc(end = [corner_radius, corner_radius])
|
||||
|> yLine(length = 25.0 - corner_radius)
|
||||
|> tangentialArcToRelative([-corner_radius, corner_radius], %)
|
||||
|> tangentialArc(end = [-corner_radius, corner_radius])
|
||||
|> xLine(length = -(d_wrist_circumference[0] - (corner_radius * 2)))
|
||||
|> tangentialArcToRelative([-corner_radius, corner_radius], %)
|
||||
|> tangentialArc(end = [-corner_radius, corner_radius])
|
||||
|> yLine(length = length - 25.0 - 23.0 - (corner_radius * 2))
|
||||
|> tangentialArcToRelative([corner_radius, corner_radius], %)
|
||||
|> tangentialArc(end = [corner_radius, corner_radius])
|
||||
|> xLine(length = 15.0 - (corner_radius * 2))
|
||||
|> tangentialArcToRelative([corner_radius, corner_radius], %)
|
||||
|> tangentialArc(end = [corner_radius, corner_radius])
|
||||
|> yLine(length = 23.0 - corner_radius)
|
||||
|> tangentialArcToRelative([-corner_radius, corner_radius], %)
|
||||
|> tangentialArc(end = [-corner_radius, corner_radius])
|
||||
|> xLine(length = -(hand_thickness + 15.0 + 15.0 - (corner_radius * 2)))
|
||||
|> tangentialArcToRelative([-corner_radius, -corner_radius], %)
|
||||
|> tangentialArc(end = [-corner_radius, -corner_radius])
|
||||
|> yLine(length = -(23.0 - corner_radius))
|
||||
|> tangentialArcToRelative([corner_radius, -corner_radius], %)
|
||||
|> tangentialArc(end = [corner_radius, -corner_radius])
|
||||
|> xLine(length = 15.0 - (corner_radius * 2))
|
||||
|> tangentialArcToRelative([corner_radius, -corner_radius], %)
|
||||
|> tangentialArc(end = [corner_radius, -corner_radius])
|
||||
|> yLine(length = -(length - 25.0 - 23.0 - (corner_radius * 2)))
|
||||
|> tangentialArcToRelative([-corner_radius, -corner_radius], %)
|
||||
|> tangentialArc(end = [-corner_radius, -corner_radius])
|
||||
|> xLine(length = -(d_wrist_circumference[1] + d_wrist_circumference[2] + d_wrist_circumference[3] - hand_thickness - corner_radius))
|
||||
|> tangentialArcToRelative([-corner_radius, -corner_radius], %)
|
||||
|> tangentialArc(end = [-corner_radius, -corner_radius])
|
||||
|> yLine(length = -(25.0 - corner_radius))
|
||||
|> tangentialArcToRelative([corner_radius, -corner_radius], %)
|
||||
|> tangentialArc(end = [corner_radius, -corner_radius])
|
||||
|> close(%)
|
||||
|
||||
inner = startSketchOn(XY)
|
||||
|> startProfileAt([0, 0], %)
|
||||
|> xLine(length = 1.0)
|
||||
|> tangentialArcToRelative([corner_radius, corner_radius], %)
|
||||
|> tangentialArc(end = [corner_radius, corner_radius])
|
||||
|> yLine(length = 25.0 - (corner_radius * 2))
|
||||
|> tangentialArcToRelative([-corner_radius, corner_radius], %)
|
||||
|> tangentialArc(end = [-corner_radius, corner_radius])
|
||||
|> xLine(length = -1.0)
|
||||
|> tangentialArcToRelative([-corner_radius, -corner_radius], %)
|
||||
|> tangentialArc(end = [-corner_radius, -corner_radius])
|
||||
|> yLine(length = -(25.0 - (corner_radius * 2)))
|
||||
|> tangentialArcToRelative([corner_radius, -corner_radius], %)
|
||||
|> tangentialArc(end = [corner_radius, -corner_radius])
|
||||
|> close(%)
|
||||
|
||||
final = brace_base
|
||||
|
@ -14,41 +14,41 @@ corner_radius = 5.0
|
||||
brace_base = startSketchOn(XY)
|
||||
|> startProfileAt([corner_radius, 0], %)
|
||||
|> line(end = [width - corner_radius, 0.0])
|
||||
|> tangentialArcToRelative([corner_radius, corner_radius], %)
|
||||
|> tangentialArc(end = [corner_radius, corner_radius])
|
||||
|> yLine(length = 25.0 - corner_radius)
|
||||
|> tangentialArcToRelative([-corner_radius, corner_radius], %)
|
||||
|> tangentialArc(end = [-corner_radius, corner_radius])
|
||||
|> xLine(length = -(d_wrist_circumference[0] - (corner_radius * 2)))
|
||||
|> tangentialArcToRelative([-corner_radius, corner_radius], %)
|
||||
|> tangentialArc(end = [-corner_radius, corner_radius])
|
||||
|> yLine(length = length - 25.0 - 23.0 - (corner_radius * 2))
|
||||
|> tangentialArcToRelative([corner_radius, corner_radius], %)
|
||||
|> tangentialArc(end = [corner_radius, corner_radius])
|
||||
|> xLine(length = 15.0 - (corner_radius * 2))
|
||||
|> tangentialArcToRelative([corner_radius, corner_radius], %)
|
||||
|> tangentialArc(end = [corner_radius, corner_radius])
|
||||
|> yLine(length = 23.0 - corner_radius)
|
||||
|> tangentialArcToRelative([-corner_radius, corner_radius], %)
|
||||
|> tangentialArc(end = [-corner_radius, corner_radius])
|
||||
|> xLine(length = -(hand_thickness + 15.0 + 15.0 - (corner_radius * 2)))
|
||||
|> tangentialArcToRelative([-corner_radius, -corner_radius], %)
|
||||
|> tangentialArc(end = [-corner_radius, -corner_radius])
|
||||
|> yLine(length = -(23.0 - corner_radius))
|
||||
|> tangentialArcToRelative([corner_radius, -corner_radius], %)
|
||||
|> tangentialArc(end = [corner_radius, -corner_radius])
|
||||
|> xLine(length = 15.0 - (corner_radius * 2))
|
||||
|> tangentialArcToRelative([corner_radius, -corner_radius], %)
|
||||
|> tangentialArc(end = [corner_radius, -corner_radius])
|
||||
|> yLine(length = -(length - 25.0 - 23.0 - (corner_radius * 2)))
|
||||
|> tangentialArcToRelative([-corner_radius, -corner_radius], %)
|
||||
|> tangentialArc(end = [-corner_radius, -corner_radius])
|
||||
|> xLine(length = -(d_wrist_circumference[1] + d_wrist_circumference[2] + d_wrist_circumference[3] - hand_thickness - corner_radius))
|
||||
|> tangentialArcToRelative([-corner_radius, -corner_radius], %)
|
||||
|> tangentialArc(end = [-corner_radius, -corner_radius])
|
||||
|> yLine(length = -(25.0 - corner_radius))
|
||||
|> tangentialArcToRelative([corner_radius, -corner_radius], %)
|
||||
|> tangentialArc(end = [corner_radius, -corner_radius])
|
||||
|> close(%)
|
||||
|
||||
inner = startSketchOn(XY)
|
||||
|> startProfileAt([0, 0], %)
|
||||
|> xLine(length = 1.0)
|
||||
|> tangentialArcToRelative([corner_radius, corner_radius], %)
|
||||
|> tangentialArc(end = [corner_radius, corner_radius])
|
||||
|> yLine(length = 25.0 - (corner_radius * 2))
|
||||
|> tangentialArcToRelative([-corner_radius, corner_radius], %)
|
||||
|> tangentialArc(end = [-corner_radius, corner_radius])
|
||||
|> xLine(length = -1.0)
|
||||
|> tangentialArcToRelative([-corner_radius, -corner_radius], %)
|
||||
|> tangentialArc(end = [-corner_radius, -corner_radius])
|
||||
|> yLine(length = -(25.0 - (corner_radius * 2)))
|
||||
|> tangentialArcToRelative([corner_radius, -corner_radius], %)
|
||||
|> tangentialArc(end = [corner_radius, -corner_radius])
|
||||
|> close(%)
|
||||
|
||||
final = brace_base
|
||||
|
@ -3,237 +3,237 @@ flowchart LR
|
||||
subgraph path2 [Path]
|
||||
2["Path<br>[361, 394, 5]"]
|
||||
3["Segment<br>[402, 428, 5]"]
|
||||
4["Segment<br>[436, 489, 5]"]
|
||||
5["Segment<br>[497, 550, 5]"]
|
||||
6["Segment<br>[558, 612, 5]"]
|
||||
7["Segment<br>[620, 645, 5]"]
|
||||
8["Segment<br>[653, 673, 5]"]
|
||||
9["Segment<br>[681, 705, 5]"]
|
||||
10["Segment<br>[713, 766, 5]"]
|
||||
11["Segment<br>[774, 799, 5]"]
|
||||
12["Segment<br>[807, 827, 5]"]
|
||||
13["Segment<br>[835, 859, 5]"]
|
||||
14["Segment<br>[867, 919, 5]"]
|
||||
15["Segment<br>[927, 979, 5]"]
|
||||
16["Segment<br>[987, 1012, 5]"]
|
||||
17["Segment<br>[1020, 1044, 5]"]
|
||||
18["Segment<br>[1052, 1105, 5]"]
|
||||
19["Segment<br>[1113, 1138, 5]"]
|
||||
20["Segment<br>[1146, 1173, 5]"]
|
||||
21["Segment<br>[1181, 1233, 5]"]
|
||||
22["Segment<br>[1241, 1276, 5]"]
|
||||
23["Segment<br>[1284, 1291, 5]"]
|
||||
4["Segment<br>[436, 498, 5]"]
|
||||
5["Segment<br>[506, 568, 5]"]
|
||||
6["Segment<br>[576, 639, 5]"]
|
||||
7["Segment<br>[647, 672, 5]"]
|
||||
8["Segment<br>[680, 700, 5]"]
|
||||
9["Segment<br>[708, 732, 5]"]
|
||||
10["Segment<br>[740, 802, 5]"]
|
||||
11["Segment<br>[810, 835, 5]"]
|
||||
12["Segment<br>[843, 863, 5]"]
|
||||
13["Segment<br>[871, 895, 5]"]
|
||||
14["Segment<br>[903, 964, 5]"]
|
||||
15["Segment<br>[972, 1033, 5]"]
|
||||
16["Segment<br>[1041, 1066, 5]"]
|
||||
17["Segment<br>[1074, 1098, 5]"]
|
||||
18["Segment<br>[1106, 1168, 5]"]
|
||||
19["Segment<br>[1176, 1201, 5]"]
|
||||
20["Segment<br>[1209, 1236, 5]"]
|
||||
21["Segment<br>[1244, 1305, 5]"]
|
||||
22["Segment<br>[1313, 1357, 5]"]
|
||||
23["Segment<br>[1365, 1372, 5]"]
|
||||
24[Solid2d]
|
||||
end
|
||||
subgraph path89 [Path]
|
||||
89["Path<br>[361, 394, 5]"]
|
||||
90["Segment<br>[402, 428, 5]"]
|
||||
91["Segment<br>[436, 489, 5]"]
|
||||
92["Segment<br>[497, 550, 5]"]
|
||||
93["Segment<br>[558, 612, 5]"]
|
||||
94["Segment<br>[620, 645, 5]"]
|
||||
95["Segment<br>[653, 673, 5]"]
|
||||
96["Segment<br>[681, 705, 5]"]
|
||||
97["Segment<br>[713, 766, 5]"]
|
||||
98["Segment<br>[774, 799, 5]"]
|
||||
99["Segment<br>[807, 827, 5]"]
|
||||
100["Segment<br>[835, 859, 5]"]
|
||||
101["Segment<br>[867, 919, 5]"]
|
||||
102["Segment<br>[927, 979, 5]"]
|
||||
103["Segment<br>[987, 1012, 5]"]
|
||||
104["Segment<br>[1020, 1044, 5]"]
|
||||
105["Segment<br>[1052, 1105, 5]"]
|
||||
106["Segment<br>[1113, 1138, 5]"]
|
||||
107["Segment<br>[1146, 1173, 5]"]
|
||||
108["Segment<br>[1181, 1233, 5]"]
|
||||
109["Segment<br>[1241, 1276, 5]"]
|
||||
110["Segment<br>[1284, 1291, 5]"]
|
||||
91["Segment<br>[436, 498, 5]"]
|
||||
92["Segment<br>[506, 568, 5]"]
|
||||
93["Segment<br>[576, 639, 5]"]
|
||||
94["Segment<br>[647, 672, 5]"]
|
||||
95["Segment<br>[680, 700, 5]"]
|
||||
96["Segment<br>[708, 732, 5]"]
|
||||
97["Segment<br>[740, 802, 5]"]
|
||||
98["Segment<br>[810, 835, 5]"]
|
||||
99["Segment<br>[843, 863, 5]"]
|
||||
100["Segment<br>[871, 895, 5]"]
|
||||
101["Segment<br>[903, 964, 5]"]
|
||||
102["Segment<br>[972, 1033, 5]"]
|
||||
103["Segment<br>[1041, 1066, 5]"]
|
||||
104["Segment<br>[1074, 1098, 5]"]
|
||||
105["Segment<br>[1106, 1168, 5]"]
|
||||
106["Segment<br>[1176, 1201, 5]"]
|
||||
107["Segment<br>[1209, 1236, 5]"]
|
||||
108["Segment<br>[1244, 1305, 5]"]
|
||||
109["Segment<br>[1313, 1357, 5]"]
|
||||
110["Segment<br>[1365, 1372, 5]"]
|
||||
111[Solid2d]
|
||||
end
|
||||
subgraph path176 [Path]
|
||||
176["Path<br>[361, 394, 5]"]
|
||||
177["Segment<br>[402, 428, 5]"]
|
||||
178["Segment<br>[436, 489, 5]"]
|
||||
179["Segment<br>[497, 550, 5]"]
|
||||
180["Segment<br>[558, 612, 5]"]
|
||||
181["Segment<br>[620, 645, 5]"]
|
||||
182["Segment<br>[653, 673, 5]"]
|
||||
183["Segment<br>[681, 705, 5]"]
|
||||
184["Segment<br>[713, 766, 5]"]
|
||||
185["Segment<br>[774, 799, 5]"]
|
||||
186["Segment<br>[807, 827, 5]"]
|
||||
187["Segment<br>[835, 859, 5]"]
|
||||
188["Segment<br>[867, 919, 5]"]
|
||||
189["Segment<br>[927, 979, 5]"]
|
||||
190["Segment<br>[987, 1012, 5]"]
|
||||
191["Segment<br>[1020, 1044, 5]"]
|
||||
192["Segment<br>[1052, 1105, 5]"]
|
||||
193["Segment<br>[1113, 1138, 5]"]
|
||||
194["Segment<br>[1146, 1173, 5]"]
|
||||
195["Segment<br>[1181, 1233, 5]"]
|
||||
196["Segment<br>[1241, 1276, 5]"]
|
||||
197["Segment<br>[1284, 1291, 5]"]
|
||||
178["Segment<br>[436, 498, 5]"]
|
||||
179["Segment<br>[506, 568, 5]"]
|
||||
180["Segment<br>[576, 639, 5]"]
|
||||
181["Segment<br>[647, 672, 5]"]
|
||||
182["Segment<br>[680, 700, 5]"]
|
||||
183["Segment<br>[708, 732, 5]"]
|
||||
184["Segment<br>[740, 802, 5]"]
|
||||
185["Segment<br>[810, 835, 5]"]
|
||||
186["Segment<br>[843, 863, 5]"]
|
||||
187["Segment<br>[871, 895, 5]"]
|
||||
188["Segment<br>[903, 964, 5]"]
|
||||
189["Segment<br>[972, 1033, 5]"]
|
||||
190["Segment<br>[1041, 1066, 5]"]
|
||||
191["Segment<br>[1074, 1098, 5]"]
|
||||
192["Segment<br>[1106, 1168, 5]"]
|
||||
193["Segment<br>[1176, 1201, 5]"]
|
||||
194["Segment<br>[1209, 1236, 5]"]
|
||||
195["Segment<br>[1244, 1305, 5]"]
|
||||
196["Segment<br>[1313, 1357, 5]"]
|
||||
197["Segment<br>[1365, 1372, 5]"]
|
||||
198[Solid2d]
|
||||
end
|
||||
subgraph path262 [Path]
|
||||
262["Path<br>[361, 394, 5]"]
|
||||
263["Segment<br>[402, 428, 5]"]
|
||||
264["Segment<br>[436, 489, 5]"]
|
||||
265["Segment<br>[497, 550, 5]"]
|
||||
266["Segment<br>[558, 612, 5]"]
|
||||
267["Segment<br>[620, 645, 5]"]
|
||||
268["Segment<br>[653, 673, 5]"]
|
||||
269["Segment<br>[681, 705, 5]"]
|
||||
270["Segment<br>[713, 766, 5]"]
|
||||
271["Segment<br>[774, 799, 5]"]
|
||||
272["Segment<br>[807, 827, 5]"]
|
||||
273["Segment<br>[835, 859, 5]"]
|
||||
274["Segment<br>[867, 919, 5]"]
|
||||
275["Segment<br>[927, 979, 5]"]
|
||||
276["Segment<br>[987, 1012, 5]"]
|
||||
277["Segment<br>[1020, 1044, 5]"]
|
||||
278["Segment<br>[1052, 1105, 5]"]
|
||||
279["Segment<br>[1113, 1138, 5]"]
|
||||
280["Segment<br>[1146, 1173, 5]"]
|
||||
281["Segment<br>[1181, 1233, 5]"]
|
||||
282["Segment<br>[1241, 1276, 5]"]
|
||||
283["Segment<br>[1284, 1291, 5]"]
|
||||
264["Segment<br>[436, 498, 5]"]
|
||||
265["Segment<br>[506, 568, 5]"]
|
||||
266["Segment<br>[576, 639, 5]"]
|
||||
267["Segment<br>[647, 672, 5]"]
|
||||
268["Segment<br>[680, 700, 5]"]
|
||||
269["Segment<br>[708, 732, 5]"]
|
||||
270["Segment<br>[740, 802, 5]"]
|
||||
271["Segment<br>[810, 835, 5]"]
|
||||
272["Segment<br>[843, 863, 5]"]
|
||||
273["Segment<br>[871, 895, 5]"]
|
||||
274["Segment<br>[903, 964, 5]"]
|
||||
275["Segment<br>[972, 1033, 5]"]
|
||||
276["Segment<br>[1041, 1066, 5]"]
|
||||
277["Segment<br>[1074, 1098, 5]"]
|
||||
278["Segment<br>[1106, 1168, 5]"]
|
||||
279["Segment<br>[1176, 1201, 5]"]
|
||||
280["Segment<br>[1209, 1236, 5]"]
|
||||
281["Segment<br>[1244, 1305, 5]"]
|
||||
282["Segment<br>[1313, 1357, 5]"]
|
||||
283["Segment<br>[1365, 1372, 5]"]
|
||||
284[Solid2d]
|
||||
end
|
||||
subgraph path349 [Path]
|
||||
349["Path<br>[361, 394, 5]"]
|
||||
350["Segment<br>[402, 428, 5]"]
|
||||
351["Segment<br>[436, 489, 5]"]
|
||||
352["Segment<br>[497, 550, 5]"]
|
||||
353["Segment<br>[558, 612, 5]"]
|
||||
354["Segment<br>[620, 645, 5]"]
|
||||
355["Segment<br>[653, 673, 5]"]
|
||||
356["Segment<br>[681, 705, 5]"]
|
||||
357["Segment<br>[713, 766, 5]"]
|
||||
358["Segment<br>[774, 799, 5]"]
|
||||
359["Segment<br>[807, 827, 5]"]
|
||||
360["Segment<br>[835, 859, 5]"]
|
||||
361["Segment<br>[867, 919, 5]"]
|
||||
362["Segment<br>[927, 979, 5]"]
|
||||
363["Segment<br>[987, 1012, 5]"]
|
||||
364["Segment<br>[1020, 1044, 5]"]
|
||||
365["Segment<br>[1052, 1105, 5]"]
|
||||
366["Segment<br>[1113, 1138, 5]"]
|
||||
367["Segment<br>[1146, 1173, 5]"]
|
||||
368["Segment<br>[1181, 1233, 5]"]
|
||||
369["Segment<br>[1241, 1276, 5]"]
|
||||
370["Segment<br>[1284, 1291, 5]"]
|
||||
351["Segment<br>[436, 498, 5]"]
|
||||
352["Segment<br>[506, 568, 5]"]
|
||||
353["Segment<br>[576, 639, 5]"]
|
||||
354["Segment<br>[647, 672, 5]"]
|
||||
355["Segment<br>[680, 700, 5]"]
|
||||
356["Segment<br>[708, 732, 5]"]
|
||||
357["Segment<br>[740, 802, 5]"]
|
||||
358["Segment<br>[810, 835, 5]"]
|
||||
359["Segment<br>[843, 863, 5]"]
|
||||
360["Segment<br>[871, 895, 5]"]
|
||||
361["Segment<br>[903, 964, 5]"]
|
||||
362["Segment<br>[972, 1033, 5]"]
|
||||
363["Segment<br>[1041, 1066, 5]"]
|
||||
364["Segment<br>[1074, 1098, 5]"]
|
||||
365["Segment<br>[1106, 1168, 5]"]
|
||||
366["Segment<br>[1176, 1201, 5]"]
|
||||
367["Segment<br>[1209, 1236, 5]"]
|
||||
368["Segment<br>[1244, 1305, 5]"]
|
||||
369["Segment<br>[1313, 1357, 5]"]
|
||||
370["Segment<br>[1365, 1372, 5]"]
|
||||
371[Solid2d]
|
||||
end
|
||||
subgraph path435 [Path]
|
||||
435["Path<br>[361, 394, 5]"]
|
||||
436["Segment<br>[402, 428, 5]"]
|
||||
437["Segment<br>[436, 489, 5]"]
|
||||
438["Segment<br>[497, 550, 5]"]
|
||||
439["Segment<br>[558, 612, 5]"]
|
||||
440["Segment<br>[620, 645, 5]"]
|
||||
441["Segment<br>[653, 673, 5]"]
|
||||
442["Segment<br>[681, 705, 5]"]
|
||||
443["Segment<br>[713, 766, 5]"]
|
||||
444["Segment<br>[774, 799, 5]"]
|
||||
445["Segment<br>[807, 827, 5]"]
|
||||
446["Segment<br>[835, 859, 5]"]
|
||||
447["Segment<br>[867, 919, 5]"]
|
||||
448["Segment<br>[927, 979, 5]"]
|
||||
449["Segment<br>[987, 1012, 5]"]
|
||||
450["Segment<br>[1020, 1044, 5]"]
|
||||
451["Segment<br>[1052, 1105, 5]"]
|
||||
452["Segment<br>[1113, 1138, 5]"]
|
||||
453["Segment<br>[1146, 1173, 5]"]
|
||||
454["Segment<br>[1181, 1233, 5]"]
|
||||
455["Segment<br>[1241, 1276, 5]"]
|
||||
456["Segment<br>[1284, 1291, 5]"]
|
||||
437["Segment<br>[436, 498, 5]"]
|
||||
438["Segment<br>[506, 568, 5]"]
|
||||
439["Segment<br>[576, 639, 5]"]
|
||||
440["Segment<br>[647, 672, 5]"]
|
||||
441["Segment<br>[680, 700, 5]"]
|
||||
442["Segment<br>[708, 732, 5]"]
|
||||
443["Segment<br>[740, 802, 5]"]
|
||||
444["Segment<br>[810, 835, 5]"]
|
||||
445["Segment<br>[843, 863, 5]"]
|
||||
446["Segment<br>[871, 895, 5]"]
|
||||
447["Segment<br>[903, 964, 5]"]
|
||||
448["Segment<br>[972, 1033, 5]"]
|
||||
449["Segment<br>[1041, 1066, 5]"]
|
||||
450["Segment<br>[1074, 1098, 5]"]
|
||||
451["Segment<br>[1106, 1168, 5]"]
|
||||
452["Segment<br>[1176, 1201, 5]"]
|
||||
453["Segment<br>[1209, 1236, 5]"]
|
||||
454["Segment<br>[1244, 1305, 5]"]
|
||||
455["Segment<br>[1313, 1357, 5]"]
|
||||
456["Segment<br>[1365, 1372, 5]"]
|
||||
457[Solid2d]
|
||||
end
|
||||
subgraph path522 [Path]
|
||||
522["Path<br>[1685, 1709, 5]"]
|
||||
522["Path<br>[1766, 1790, 5]"]
|
||||
end
|
||||
subgraph path523 [Path]
|
||||
523["Path<br>[1717, 1847, 5]"]
|
||||
524["Segment<br>[1717, 1847, 5]"]
|
||||
525["Segment<br>[1717, 1847, 5]"]
|
||||
526["Segment<br>[1717, 1847, 5]"]
|
||||
527["Segment<br>[1717, 1847, 5]"]
|
||||
528["Segment<br>[1717, 1847, 5]"]
|
||||
529["Segment<br>[1717, 1847, 5]"]
|
||||
530["Segment<br>[1717, 1847, 5]"]
|
||||
523["Path<br>[1798, 1928, 5]"]
|
||||
524["Segment<br>[1798, 1928, 5]"]
|
||||
525["Segment<br>[1798, 1928, 5]"]
|
||||
526["Segment<br>[1798, 1928, 5]"]
|
||||
527["Segment<br>[1798, 1928, 5]"]
|
||||
528["Segment<br>[1798, 1928, 5]"]
|
||||
529["Segment<br>[1798, 1928, 5]"]
|
||||
530["Segment<br>[1798, 1928, 5]"]
|
||||
531[Solid2d]
|
||||
end
|
||||
subgraph path553 [Path]
|
||||
553["Path<br>[1685, 1709, 5]"]
|
||||
553["Path<br>[1766, 1790, 5]"]
|
||||
end
|
||||
subgraph path554 [Path]
|
||||
554["Path<br>[1717, 1847, 5]"]
|
||||
555["Segment<br>[1717, 1847, 5]"]
|
||||
556["Segment<br>[1717, 1847, 5]"]
|
||||
557["Segment<br>[1717, 1847, 5]"]
|
||||
558["Segment<br>[1717, 1847, 5]"]
|
||||
559["Segment<br>[1717, 1847, 5]"]
|
||||
560["Segment<br>[1717, 1847, 5]"]
|
||||
561["Segment<br>[1717, 1847, 5]"]
|
||||
554["Path<br>[1798, 1928, 5]"]
|
||||
555["Segment<br>[1798, 1928, 5]"]
|
||||
556["Segment<br>[1798, 1928, 5]"]
|
||||
557["Segment<br>[1798, 1928, 5]"]
|
||||
558["Segment<br>[1798, 1928, 5]"]
|
||||
559["Segment<br>[1798, 1928, 5]"]
|
||||
560["Segment<br>[1798, 1928, 5]"]
|
||||
561["Segment<br>[1798, 1928, 5]"]
|
||||
562[Solid2d]
|
||||
end
|
||||
subgraph path585 [Path]
|
||||
585["Path<br>[2123, 2150, 5]"]
|
||||
586["Segment<br>[2158, 2180, 5]"]
|
||||
587["Segment<br>[2188, 2210, 5]"]
|
||||
588["Segment<br>[2218, 2240, 5]"]
|
||||
589["Segment<br>[2248, 2271, 5]"]
|
||||
590["Segment<br>[2279, 2302, 5]"]
|
||||
591["Segment<br>[2310, 2345, 5]"]
|
||||
592["Segment<br>[2353, 2360, 5]"]
|
||||
585["Path<br>[2204, 2231, 5]"]
|
||||
586["Segment<br>[2239, 2261, 5]"]
|
||||
587["Segment<br>[2269, 2291, 5]"]
|
||||
588["Segment<br>[2299, 2321, 5]"]
|
||||
589["Segment<br>[2329, 2352, 5]"]
|
||||
590["Segment<br>[2360, 2383, 5]"]
|
||||
591["Segment<br>[2391, 2426, 5]"]
|
||||
592["Segment<br>[2434, 2441, 5]"]
|
||||
593[Solid2d]
|
||||
end
|
||||
subgraph path618 [Path]
|
||||
618["Path<br>[2632, 2661, 5]"]
|
||||
619["Segment<br>[2669, 2704, 5]"]
|
||||
620["Segment<br>[2712, 2737, 5]"]
|
||||
621["Segment<br>[2745, 2781, 5]"]
|
||||
622["Segment<br>[2789, 2813, 5]"]
|
||||
623["Segment<br>[2821, 2855, 5]"]
|
||||
624["Segment<br>[2863, 2898, 5]"]
|
||||
625["Segment<br>[2906, 2913, 5]"]
|
||||
618["Path<br>[2713, 2742, 5]"]
|
||||
619["Segment<br>[2750, 2785, 5]"]
|
||||
620["Segment<br>[2793, 2818, 5]"]
|
||||
621["Segment<br>[2826, 2862, 5]"]
|
||||
622["Segment<br>[2870, 2894, 5]"]
|
||||
623["Segment<br>[2902, 2936, 5]"]
|
||||
624["Segment<br>[2944, 2979, 5]"]
|
||||
625["Segment<br>[2987, 2994, 5]"]
|
||||
626[Solid2d]
|
||||
end
|
||||
subgraph path650 [Path]
|
||||
650["Path<br>[3188, 3215, 5]"]
|
||||
651["Segment<br>[3223, 3242, 5]"]
|
||||
652["Segment<br>[3250, 3340, 5]"]
|
||||
650["Path<br>[3269, 3296, 5]"]
|
||||
651["Segment<br>[3304, 3323, 5]"]
|
||||
652["Segment<br>[3331, 3421, 5]"]
|
||||
end
|
||||
subgraph path654 [Path]
|
||||
654["Path<br>[3440, 3473, 5]"]
|
||||
655["Segment<br>[3481, 3500, 5]"]
|
||||
656["Segment<br>[3508, 3530, 5]"]
|
||||
657["Segment<br>[3538, 3561, 5]"]
|
||||
658["Segment<br>[3569, 3589, 5]"]
|
||||
659["Segment<br>[3597, 3621, 5]"]
|
||||
660["Segment<br>[3629, 3652, 5]"]
|
||||
661["Segment<br>[3660, 3667, 5]"]
|
||||
654["Path<br>[3521, 3554, 5]"]
|
||||
655["Segment<br>[3562, 3581, 5]"]
|
||||
656["Segment<br>[3589, 3611, 5]"]
|
||||
657["Segment<br>[3619, 3642, 5]"]
|
||||
658["Segment<br>[3650, 3670, 5]"]
|
||||
659["Segment<br>[3678, 3702, 5]"]
|
||||
660["Segment<br>[3710, 3733, 5]"]
|
||||
661["Segment<br>[3741, 3748, 5]"]
|
||||
662[Solid2d]
|
||||
end
|
||||
subgraph path688 [Path]
|
||||
688["Path<br>[3188, 3215, 5]"]
|
||||
689["Segment<br>[3223, 3242, 5]"]
|
||||
690["Segment<br>[3250, 3340, 5]"]
|
||||
688["Path<br>[3269, 3296, 5]"]
|
||||
689["Segment<br>[3304, 3323, 5]"]
|
||||
690["Segment<br>[3331, 3421, 5]"]
|
||||
end
|
||||
subgraph path692 [Path]
|
||||
692["Path<br>[3440, 3473, 5]"]
|
||||
693["Segment<br>[3481, 3500, 5]"]
|
||||
694["Segment<br>[3508, 3530, 5]"]
|
||||
695["Segment<br>[3538, 3561, 5]"]
|
||||
696["Segment<br>[3569, 3589, 5]"]
|
||||
697["Segment<br>[3597, 3621, 5]"]
|
||||
698["Segment<br>[3629, 3652, 5]"]
|
||||
699["Segment<br>[3660, 3667, 5]"]
|
||||
692["Path<br>[3521, 3554, 5]"]
|
||||
693["Segment<br>[3562, 3581, 5]"]
|
||||
694["Segment<br>[3589, 3611, 5]"]
|
||||
695["Segment<br>[3619, 3642, 5]"]
|
||||
696["Segment<br>[3650, 3670, 5]"]
|
||||
697["Segment<br>[3678, 3702, 5]"]
|
||||
698["Segment<br>[3710, 3733, 5]"]
|
||||
699["Segment<br>[3741, 3748, 5]"]
|
||||
700[Solid2d]
|
||||
end
|
||||
1["Plane<br>[333, 353, 5]"]
|
||||
25["Sweep Extrusion<br>[1379, 1417, 5]"]
|
||||
25["Sweep Extrusion<br>[1460, 1498, 5]"]
|
||||
26[Wall]
|
||||
27[Wall]
|
||||
28[Wall]
|
||||
@ -297,7 +297,7 @@ flowchart LR
|
||||
86["SweepEdge Opposite"]
|
||||
87["SweepEdge Adjacent"]
|
||||
88["Plane<br>[333, 353, 5]"]
|
||||
112["Sweep Extrusion<br>[1455, 1494, 5]"]
|
||||
112["Sweep Extrusion<br>[1536, 1575, 5]"]
|
||||
113[Wall]
|
||||
114[Wall]
|
||||
115[Wall]
|
||||
@ -361,7 +361,7 @@ flowchart LR
|
||||
173["SweepEdge Opposite"]
|
||||
174["SweepEdge Adjacent"]
|
||||
175["Plane<br>[823, 865, 0]"]
|
||||
199["Sweep Extrusion<br>[1379, 1417, 5]"]
|
||||
199["Sweep Extrusion<br>[1460, 1498, 5]"]
|
||||
200[Wall]
|
||||
201[Wall]
|
||||
202[Wall]
|
||||
@ -424,7 +424,7 @@ flowchart LR
|
||||
259["SweepEdge Adjacent"]
|
||||
260["SweepEdge Opposite"]
|
||||
261["SweepEdge Adjacent"]
|
||||
285["Sweep Extrusion<br>[1455, 1494, 5]"]
|
||||
285["Sweep Extrusion<br>[1536, 1575, 5]"]
|
||||
286[Wall]
|
||||
287[Wall]
|
||||
288[Wall]
|
||||
@ -488,7 +488,7 @@ flowchart LR
|
||||
346["SweepEdge Opposite"]
|
||||
347["SweepEdge Adjacent"]
|
||||
348["Plane<br>[875, 916, 0]"]
|
||||
372["Sweep Extrusion<br>[1379, 1417, 5]"]
|
||||
372["Sweep Extrusion<br>[1460, 1498, 5]"]
|
||||
373[Wall]
|
||||
374[Wall]
|
||||
375[Wall]
|
||||
@ -551,7 +551,7 @@ flowchart LR
|
||||
432["SweepEdge Adjacent"]
|
||||
433["SweepEdge Opposite"]
|
||||
434["SweepEdge Adjacent"]
|
||||
458["Sweep Extrusion<br>[1455, 1494, 5]"]
|
||||
458["Sweep Extrusion<br>[1536, 1575, 5]"]
|
||||
459[Wall]
|
||||
460[Wall]
|
||||
461[Wall]
|
||||
@ -615,7 +615,7 @@ flowchart LR
|
||||
519["SweepEdge Opposite"]
|
||||
520["SweepEdge Adjacent"]
|
||||
521["Plane<br>[975, 1017, 0]"]
|
||||
532["Sweep Extrusion<br>[1949, 1973, 5]"]
|
||||
532["Sweep Extrusion<br>[2030, 2054, 5]"]
|
||||
533[Wall]
|
||||
534[Wall]
|
||||
535[Wall]
|
||||
@ -636,7 +636,7 @@ flowchart LR
|
||||
550["SweepEdge Adjacent"]
|
||||
551["SweepEdge Opposite"]
|
||||
552["SweepEdge Adjacent"]
|
||||
563["Sweep Extrusion<br>[2015, 2039, 5]"]
|
||||
563["Sweep Extrusion<br>[2096, 2120, 5]"]
|
||||
564[Wall]
|
||||
565[Wall]
|
||||
566[Wall]
|
||||
@ -658,7 +658,7 @@ flowchart LR
|
||||
582["SweepEdge Opposite"]
|
||||
583["SweepEdge Adjacent"]
|
||||
584["Plane<br>[1068, 1135, 0]"]
|
||||
594["Sweep Extrusion<br>[2523, 2547, 5]"]
|
||||
594["Sweep Extrusion<br>[2604, 2628, 5]"]
|
||||
595[Wall]
|
||||
596[Wall]
|
||||
597[Wall]
|
||||
@ -679,10 +679,10 @@ flowchart LR
|
||||
612["SweepEdge Adjacent"]
|
||||
613["SweepEdge Opposite"]
|
||||
614["SweepEdge Adjacent"]
|
||||
615["Sweep Extrusion<br>[2523, 2547, 5]"]
|
||||
616["Sweep Extrusion<br>[2523, 2547, 5]"]
|
||||
615["Sweep Extrusion<br>[2604, 2628, 5]"]
|
||||
616["Sweep Extrusion<br>[2604, 2628, 5]"]
|
||||
617["Plane<br>[1205, 1272, 0]"]
|
||||
627["Sweep Extrusion<br>[3083, 3107, 5]"]
|
||||
627["Sweep Extrusion<br>[3164, 3188, 5]"]
|
||||
628[Wall]
|
||||
629[Wall]
|
||||
630[Wall]
|
||||
@ -703,10 +703,10 @@ flowchart LR
|
||||
645["SweepEdge Adjacent"]
|
||||
646["SweepEdge Opposite"]
|
||||
647["SweepEdge Adjacent"]
|
||||
648["Sweep Extrusion<br>[3083, 3107, 5]"]
|
||||
649["Plane<br>[3748, 3783, 5]"]
|
||||
653["Plane<br>[3814, 3843, 5]"]
|
||||
663["Sweep Sweep<br>[3855, 3882, 5]"]
|
||||
648["Sweep Extrusion<br>[3164, 3188, 5]"]
|
||||
649["Plane<br>[3829, 3864, 5]"]
|
||||
653["Plane<br>[3895, 3924, 5]"]
|
||||
663["Sweep Sweep<br>[3936, 3963, 5]"]
|
||||
664[Wall]
|
||||
665[Wall]
|
||||
666[Wall]
|
||||
@ -730,9 +730,9 @@ flowchart LR
|
||||
684["SweepEdge Adjacent"]
|
||||
685["SweepEdge Opposite"]
|
||||
686["SweepEdge Adjacent"]
|
||||
687["Plane<br>[3748, 3783, 5]"]
|
||||
691["Plane<br>[3814, 3843, 5]"]
|
||||
701["Sweep Sweep<br>[3855, 3882, 5]"]
|
||||
687["Plane<br>[3829, 3864, 5]"]
|
||||
691["Plane<br>[3895, 3924, 5]"]
|
||||
701["Sweep Sweep<br>[3936, 3963, 5]"]
|
||||
702[Wall]
|
||||
703[Wall]
|
||||
704[Wall]
|
||||
@ -760,14 +760,14 @@ flowchart LR
|
||||
726["StartSketchOnPlane<br>[333, 353, 5]"]
|
||||
727["StartSketchOnPlane<br>[333, 353, 5]"]
|
||||
728["StartSketchOnPlane<br>[333, 353, 5]"]
|
||||
729["StartSketchOnPlane<br>[1657, 1677, 5]"]
|
||||
730["StartSketchOnPlane<br>[1657, 1677, 5]"]
|
||||
731["StartSketchOnPlane<br>[2095, 2115, 5]"]
|
||||
732["StartSketchOnPlane<br>[2604, 2624, 5]"]
|
||||
733["StartSketchOnPlane<br>[3160, 3180, 5]"]
|
||||
734["StartSketchOnPlane<br>[3412, 3432, 5]"]
|
||||
735["StartSketchOnPlane<br>[3160, 3180, 5]"]
|
||||
736["StartSketchOnPlane<br>[3412, 3432, 5]"]
|
||||
729["StartSketchOnPlane<br>[1738, 1758, 5]"]
|
||||
730["StartSketchOnPlane<br>[1738, 1758, 5]"]
|
||||
731["StartSketchOnPlane<br>[2176, 2196, 5]"]
|
||||
732["StartSketchOnPlane<br>[2685, 2705, 5]"]
|
||||
733["StartSketchOnPlane<br>[3241, 3261, 5]"]
|
||||
734["StartSketchOnPlane<br>[3493, 3513, 5]"]
|
||||
735["StartSketchOnPlane<br>[3241, 3261, 5]"]
|
||||
736["StartSketchOnPlane<br>[3493, 3513, 5]"]
|
||||
1 --- 2
|
||||
2 --- 3
|
||||
2 --- 4
|
||||
|
@ -9,8 +9,8 @@ description: Operations executed bench.kcl
|
||||
"type": "FunctionCall",
|
||||
"name": "divider",
|
||||
"functionSourceRange": [
|
||||
1331,
|
||||
1606,
|
||||
1412,
|
||||
1687,
|
||||
5
|
||||
],
|
||||
"unlabeledArg": null,
|
||||
@ -25,7 +25,7 @@ description: Operations executed bench.kcl
|
||||
"name": "dividerSketch",
|
||||
"functionSourceRange": [
|
||||
309,
|
||||
1312,
|
||||
1393,
|
||||
5
|
||||
],
|
||||
"unlabeledArg": null,
|
||||
@ -85,7 +85,7 @@ description: Operations executed bench.kcl
|
||||
"name": "dividerSketch",
|
||||
"functionSourceRange": [
|
||||
309,
|
||||
1312,
|
||||
1393,
|
||||
5
|
||||
],
|
||||
"unlabeledArg": null,
|
||||
@ -260,8 +260,8 @@ description: Operations executed bench.kcl
|
||||
"type": "FunctionCall",
|
||||
"name": "divider",
|
||||
"functionSourceRange": [
|
||||
1331,
|
||||
1606,
|
||||
1412,
|
||||
1687,
|
||||
5
|
||||
],
|
||||
"unlabeledArg": null,
|
||||
@ -276,7 +276,7 @@ description: Operations executed bench.kcl
|
||||
"name": "dividerSketch",
|
||||
"functionSourceRange": [
|
||||
309,
|
||||
1312,
|
||||
1393,
|
||||
5
|
||||
],
|
||||
"unlabeledArg": null,
|
||||
@ -336,7 +336,7 @@ description: Operations executed bench.kcl
|
||||
"name": "dividerSketch",
|
||||
"functionSourceRange": [
|
||||
309,
|
||||
1312,
|
||||
1393,
|
||||
5
|
||||
],
|
||||
"unlabeledArg": null,
|
||||
@ -511,8 +511,8 @@ description: Operations executed bench.kcl
|
||||
"type": "FunctionCall",
|
||||
"name": "divider",
|
||||
"functionSourceRange": [
|
||||
1331,
|
||||
1606,
|
||||
1412,
|
||||
1687,
|
||||
5
|
||||
],
|
||||
"unlabeledArg": null,
|
||||
@ -527,7 +527,7 @@ description: Operations executed bench.kcl
|
||||
"name": "dividerSketch",
|
||||
"functionSourceRange": [
|
||||
309,
|
||||
1312,
|
||||
1393,
|
||||
5
|
||||
],
|
||||
"unlabeledArg": null,
|
||||
@ -587,7 +587,7 @@ description: Operations executed bench.kcl
|
||||
"name": "dividerSketch",
|
||||
"functionSourceRange": [
|
||||
309,
|
||||
1312,
|
||||
1393,
|
||||
5
|
||||
],
|
||||
"unlabeledArg": null,
|
||||
@ -762,8 +762,8 @@ description: Operations executed bench.kcl
|
||||
"type": "FunctionCall",
|
||||
"name": "connector",
|
||||
"functionSourceRange": [
|
||||
1889,
|
||||
2052,
|
||||
1970,
|
||||
2133,
|
||||
5
|
||||
],
|
||||
"unlabeledArg": null,
|
||||
@ -777,8 +777,8 @@ description: Operations executed bench.kcl
|
||||
"type": "FunctionCall",
|
||||
"name": "connectorSketch",
|
||||
"functionSourceRange": [
|
||||
1626,
|
||||
1868,
|
||||
1707,
|
||||
1949,
|
||||
5
|
||||
],
|
||||
"unlabeledArg": null,
|
||||
@ -842,8 +842,8 @@ description: Operations executed bench.kcl
|
||||
"type": "FunctionCall",
|
||||
"name": "connectorSketch",
|
||||
"functionSourceRange": [
|
||||
1626,
|
||||
1868,
|
||||
1707,
|
||||
1949,
|
||||
5
|
||||
],
|
||||
"unlabeledArg": null,
|
||||
@ -935,8 +935,8 @@ description: Operations executed bench.kcl
|
||||
"type": "FunctionCall",
|
||||
"name": "seatSlats",
|
||||
"functionSourceRange": [
|
||||
2474,
|
||||
2560,
|
||||
2555,
|
||||
2641,
|
||||
5
|
||||
],
|
||||
"unlabeledArg": null,
|
||||
@ -950,8 +950,8 @@ description: Operations executed bench.kcl
|
||||
"type": "FunctionCall",
|
||||
"name": "seatSlatSketch",
|
||||
"functionSourceRange": [
|
||||
2071,
|
||||
2453,
|
||||
2152,
|
||||
2534,
|
||||
5
|
||||
],
|
||||
"unlabeledArg": null,
|
||||
@ -1060,8 +1060,8 @@ description: Operations executed bench.kcl
|
||||
"type": "FunctionCall",
|
||||
"name": "backSlats",
|
||||
"functionSourceRange": [
|
||||
3029,
|
||||
3120,
|
||||
3110,
|
||||
3201,
|
||||
5
|
||||
],
|
||||
"unlabeledArg": null,
|
||||
@ -1075,8 +1075,8 @@ description: Operations executed bench.kcl
|
||||
"type": "FunctionCall",
|
||||
"name": "backSlatsSketch",
|
||||
"functionSourceRange": [
|
||||
2580,
|
||||
3008,
|
||||
2661,
|
||||
3089,
|
||||
5
|
||||
],
|
||||
"unlabeledArg": null,
|
||||
@ -1154,8 +1154,8 @@ description: Operations executed bench.kcl
|
||||
"type": "FunctionCall",
|
||||
"name": "armRest",
|
||||
"functionSourceRange": [
|
||||
3707,
|
||||
3895,
|
||||
3788,
|
||||
3976,
|
||||
5
|
||||
],
|
||||
"unlabeledArg": null,
|
||||
@ -1194,8 +1194,8 @@ description: Operations executed bench.kcl
|
||||
"type": "FunctionCall",
|
||||
"name": "armRestPath",
|
||||
"functionSourceRange": [
|
||||
3136,
|
||||
3361,
|
||||
3217,
|
||||
3442,
|
||||
5
|
||||
],
|
||||
"unlabeledArg": null,
|
||||
@ -1257,8 +1257,8 @@ description: Operations executed bench.kcl
|
||||
"type": "FunctionCall",
|
||||
"name": "armRestProfile",
|
||||
"functionSourceRange": [
|
||||
3380,
|
||||
3688,
|
||||
3461,
|
||||
3769,
|
||||
5
|
||||
],
|
||||
"unlabeledArg": null,
|
||||
@ -1318,8 +1318,8 @@ description: Operations executed bench.kcl
|
||||
"type": "FunctionCall",
|
||||
"name": "armRest",
|
||||
"functionSourceRange": [
|
||||
3707,
|
||||
3895,
|
||||
3788,
|
||||
3976,
|
||||
5
|
||||
],
|
||||
"unlabeledArg": null,
|
||||
@ -1358,8 +1358,8 @@ description: Operations executed bench.kcl
|
||||
"type": "FunctionCall",
|
||||
"name": "armRestPath",
|
||||
"functionSourceRange": [
|
||||
3136,
|
||||
3361,
|
||||
3217,
|
||||
3442,
|
||||
5
|
||||
],
|
||||
"unlabeledArg": null,
|
||||
@ -1421,8 +1421,8 @@ description: Operations executed bench.kcl
|
||||
"type": "FunctionCall",
|
||||
"name": "armRestProfile",
|
||||
"functionSourceRange": [
|
||||
3380,
|
||||
3688,
|
||||
3461,
|
||||
3769,
|
||||
5
|
||||
],
|
||||
"unlabeledArg": null,
|
||||
|
@ -152,51 +152,51 @@ flowchart LR
|
||||
335["Segment<br>[793, 840, 8]"]
|
||||
336["Segment<br>[848, 884, 8]"]
|
||||
337["Segment<br>[892, 922, 8]"]
|
||||
338["Segment<br>[930, 983, 8]"]
|
||||
339["Segment<br>[991, 1031, 8]"]
|
||||
340["Segment<br>[1039, 1074, 8]"]
|
||||
341["Segment<br>[1082, 1120, 8]"]
|
||||
342["Segment<br>[1128, 1150, 8]"]
|
||||
343["Segment<br>[1158, 1165, 8]"]
|
||||
338["Segment<br>[930, 975, 8]"]
|
||||
339["Segment<br>[983, 1023, 8]"]
|
||||
340["Segment<br>[1031, 1066, 8]"]
|
||||
341["Segment<br>[1074, 1112, 8]"]
|
||||
342["Segment<br>[1120, 1142, 8]"]
|
||||
343["Segment<br>[1150, 1157, 8]"]
|
||||
344[Solid2d]
|
||||
end
|
||||
subgraph path365 [Path]
|
||||
365["Path<br>[511, 592, 7]"]
|
||||
366["Segment<br>[598, 699, 7]"]
|
||||
367["Segment<br>[705, 790, 7]"]
|
||||
368["Segment<br>[796, 880, 7]"]
|
||||
369["Segment<br>[886, 972, 7]"]
|
||||
370["Segment<br>[978, 1063, 7]"]
|
||||
371["Segment<br>[1069, 1155, 7]"]
|
||||
372["Segment<br>[1161, 1284, 7]"]
|
||||
373["Segment<br>[1290, 1376, 7]"]
|
||||
374["Segment<br>[1382, 1517, 7]"]
|
||||
375["Segment<br>[1523, 1609, 7]"]
|
||||
376["Segment<br>[1615, 1739, 7]"]
|
||||
377["Segment<br>[1745, 1831, 7]"]
|
||||
378["Segment<br>[1837, 1922, 7]"]
|
||||
379["Segment<br>[1928, 2014, 7]"]
|
||||
380["Segment<br>[2020, 2105, 7]"]
|
||||
381["Segment<br>[2111, 2196, 7]"]
|
||||
382["Segment<br>[2202, 2209, 7]"]
|
||||
367["Segment<br>[705, 763, 7]"]
|
||||
368["Segment<br>[769, 853, 7]"]
|
||||
369["Segment<br>[859, 918, 7]"]
|
||||
370["Segment<br>[924, 1009, 7]"]
|
||||
371["Segment<br>[1015, 1074, 7]"]
|
||||
372["Segment<br>[1080, 1203, 7]"]
|
||||
373["Segment<br>[1209, 1268, 7]"]
|
||||
374["Segment<br>[1274, 1409, 7]"]
|
||||
375["Segment<br>[1415, 1474, 7]"]
|
||||
376["Segment<br>[1480, 1604, 7]"]
|
||||
377["Segment<br>[1610, 1669, 7]"]
|
||||
378["Segment<br>[1675, 1760, 7]"]
|
||||
379["Segment<br>[1766, 1825, 7]"]
|
||||
380["Segment<br>[1831, 1916, 7]"]
|
||||
381["Segment<br>[1922, 1980, 7]"]
|
||||
382["Segment<br>[1986, 1993, 7]"]
|
||||
383[Solid2d]
|
||||
end
|
||||
subgraph path439 [Path]
|
||||
439["Path<br>[487, 544, 9]"]
|
||||
440["Segment<br>[550, 684, 9]"]
|
||||
441["Segment<br>[690, 745, 9]"]
|
||||
442["Segment<br>[751, 848, 9]"]
|
||||
443["Segment<br>[854, 886, 9]"]
|
||||
444["Segment<br>[892, 924, 9]"]
|
||||
445["Segment<br>[930, 961, 9]"]
|
||||
446["Segment<br>[967, 1082, 9]"]
|
||||
447["Segment<br>[1088, 1120, 9]"]
|
||||
448["Segment<br>[1126, 1158, 9]"]
|
||||
449["Segment<br>[1164, 1195, 9]"]
|
||||
450["Segment<br>[1201, 1294, 9]"]
|
||||
451["Segment<br>[1300, 1355, 9]"]
|
||||
452["Segment<br>[1361, 1434, 9]"]
|
||||
453["Segment<br>[1440, 1447, 9]"]
|
||||
441["Segment<br>[690, 737, 9]"]
|
||||
442["Segment<br>[743, 840, 9]"]
|
||||
443["Segment<br>[846, 878, 9]"]
|
||||
444["Segment<br>[884, 916, 9]"]
|
||||
445["Segment<br>[922, 953, 9]"]
|
||||
446["Segment<br>[959, 1074, 9]"]
|
||||
447["Segment<br>[1080, 1112, 9]"]
|
||||
448["Segment<br>[1118, 1150, 9]"]
|
||||
449["Segment<br>[1156, 1187, 9]"]
|
||||
450["Segment<br>[1193, 1286, 9]"]
|
||||
451["Segment<br>[1292, 1339, 9]"]
|
||||
452["Segment<br>[1345, 1418, 9]"]
|
||||
453["Segment<br>[1424, 1431, 9]"]
|
||||
454[Solid2d]
|
||||
end
|
||||
1["Plane<br>[548, 565, 6]"]
|
||||
@ -425,7 +425,7 @@ flowchart LR
|
||||
331["SweepEdge Adjacent"]
|
||||
332["SweepEdge Adjacent"]
|
||||
333["Plane<br>[711, 737, 8]"]
|
||||
345["Sweep Revolve<br>[1173, 1190, 8]"]
|
||||
345["Sweep Revolve<br>[1165, 1182, 8]"]
|
||||
346[Wall]
|
||||
347[Wall]
|
||||
348[Wall]
|
||||
@ -445,7 +445,7 @@ flowchart LR
|
||||
362["SweepEdge Adjacent"]
|
||||
363["SweepEdge Adjacent"]
|
||||
364["Plane<br>[488, 505, 7]"]
|
||||
384["Sweep Revolve<br>[2247, 2297, 7]"]
|
||||
384["Sweep Revolve<br>[2031, 2081, 7]"]
|
||||
385[Wall]
|
||||
386[Wall]
|
||||
387[Wall]
|
||||
@ -500,7 +500,7 @@ flowchart LR
|
||||
436["SweepEdge Opposite"]
|
||||
437["SweepEdge Adjacent"]
|
||||
438["Plane<br>[464, 481, 9]"]
|
||||
455["Sweep Revolve<br>[1490, 1519, 9]"]
|
||||
455["Sweep Revolve<br>[1474, 1503, 9]"]
|
||||
456[Wall]
|
||||
457[Wall]
|
||||
458[Wall]
|
||||
|
@ -2129,7 +2129,7 @@ description: Operations executed car-wheel-assembly.kcl
|
||||
"name": "lug",
|
||||
"functionSourceRange": [
|
||||
669,
|
||||
1280,
|
||||
1272,
|
||||
8
|
||||
],
|
||||
"unlabeledArg": null,
|
||||
|
@ -3,43 +3,43 @@ flowchart LR
|
||||
subgraph path2 [Path]
|
||||
2["Path<br>[631, 865, 0]"]
|
||||
3["Segment<br>[875, 1008, 0]"]
|
||||
4["Segment<br>[1018, 1109, 0]"]
|
||||
5["Segment<br>[1119, 1174, 0]"]
|
||||
6["Segment<br>[1184, 1275, 0]"]
|
||||
7["Segment<br>[1285, 1340, 0]"]
|
||||
8["Segment<br>[1350, 1406, 0]"]
|
||||
9["Segment<br>[1416, 1424, 0]"]
|
||||
4["Segment<br>[1018, 1070, 0]"]
|
||||
5["Segment<br>[1080, 1127, 0]"]
|
||||
6["Segment<br>[1137, 1189, 0]"]
|
||||
7["Segment<br>[1199, 1246, 0]"]
|
||||
8["Segment<br>[1256, 1321, 0]"]
|
||||
9["Segment<br>[1331, 1339, 0]"]
|
||||
10[Solid2d]
|
||||
end
|
||||
subgraph path11 [Path]
|
||||
11["Path<br>[1439, 1489, 0]"]
|
||||
12["Segment<br>[1439, 1489, 0]"]
|
||||
11["Path<br>[1354, 1404, 0]"]
|
||||
12["Segment<br>[1354, 1404, 0]"]
|
||||
13[Solid2d]
|
||||
end
|
||||
subgraph path15 [Path]
|
||||
15["Path<br>[631, 865, 0]"]
|
||||
16["Segment<br>[875, 1008, 0]"]
|
||||
17["Segment<br>[1018, 1109, 0]"]
|
||||
18["Segment<br>[1119, 1174, 0]"]
|
||||
19["Segment<br>[1184, 1275, 0]"]
|
||||
20["Segment<br>[1285, 1340, 0]"]
|
||||
21["Segment<br>[1350, 1406, 0]"]
|
||||
22["Segment<br>[1416, 1424, 0]"]
|
||||
17["Segment<br>[1018, 1070, 0]"]
|
||||
18["Segment<br>[1080, 1127, 0]"]
|
||||
19["Segment<br>[1137, 1189, 0]"]
|
||||
20["Segment<br>[1199, 1246, 0]"]
|
||||
21["Segment<br>[1256, 1321, 0]"]
|
||||
22["Segment<br>[1331, 1339, 0]"]
|
||||
23[Solid2d]
|
||||
end
|
||||
subgraph path24 [Path]
|
||||
24["Path<br>[1439, 1489, 0]"]
|
||||
25["Segment<br>[1439, 1489, 0]"]
|
||||
24["Path<br>[1354, 1404, 0]"]
|
||||
25["Segment<br>[1354, 1404, 0]"]
|
||||
26[Solid2d]
|
||||
end
|
||||
subgraph path28 [Path]
|
||||
28["Path<br>[631, 865, 0]"]
|
||||
35["Segment<br>[1416, 1424, 0]"]
|
||||
35["Segment<br>[1331, 1339, 0]"]
|
||||
36[Solid2d]
|
||||
end
|
||||
subgraph path37 [Path]
|
||||
37["Path<br>[1439, 1489, 0]"]
|
||||
38["Segment<br>[1439, 1489, 0]"]
|
||||
37["Path<br>[1354, 1404, 0]"]
|
||||
38["Segment<br>[1354, 1404, 0]"]
|
||||
39[Solid2d]
|
||||
end
|
||||
1["Plane<br>[587, 620, 0]"]
|
||||
@ -51,7 +51,7 @@ flowchart LR
|
||||
32["SweepEdge Opposite"]
|
||||
33["SweepEdge Opposite"]
|
||||
34["SweepEdge Opposite"]
|
||||
40["Sweep Loft<br>[1619, 1708, 0]"]
|
||||
40["Sweep Loft<br>[1534, 1623, 0]"]
|
||||
41[Wall]
|
||||
42[Wall]
|
||||
43[Wall]
|
||||
|
@ -866,22 +866,15 @@ description: Result of parsing cycloidal-gear.kcl
|
||||
{
|
||||
"arguments": [
|
||||
{
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"properties": [
|
||||
{
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"key": {
|
||||
"type": "LabeledArg",
|
||||
"label": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"name": "radius",
|
||||
"start": 0,
|
||||
"type": "Identifier"
|
||||
},
|
||||
"start": 0,
|
||||
"type": "ObjectProperty",
|
||||
"value": {
|
||||
"arg": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"left": {
|
||||
@ -919,18 +912,15 @@ description: Result of parsing cycloidal-gear.kcl
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "LabeledArg",
|
||||
"label": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"key": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"name": "offset",
|
||||
"name": "angle",
|
||||
"start": 0,
|
||||
"type": "Identifier"
|
||||
},
|
||||
"start": 0,
|
||||
"type": "ObjectProperty",
|
||||
"value": {
|
||||
"arg": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"raw": "60",
|
||||
@ -944,18 +934,6 @@ description: Result of parsing cycloidal-gear.kcl
|
||||
}
|
||||
}
|
||||
],
|
||||
"start": 0,
|
||||
"type": "ObjectExpression",
|
||||
"type": "ObjectExpression"
|
||||
},
|
||||
{
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"start": 0,
|
||||
"type": "PipeSubstitution",
|
||||
"type": "PipeSubstitution"
|
||||
}
|
||||
],
|
||||
"callee": {
|
||||
"abs_path": false,
|
||||
"commentStart": 0,
|
||||
@ -974,28 +952,22 @@ description: Result of parsing cycloidal-gear.kcl
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"start": 0,
|
||||
"type": "CallExpression",
|
||||
"type": "CallExpression"
|
||||
"type": "CallExpressionKw",
|
||||
"type": "CallExpressionKw",
|
||||
"unlabeled": null
|
||||
},
|
||||
{
|
||||
"arguments": [
|
||||
{
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"properties": [
|
||||
{
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"key": {
|
||||
"type": "LabeledArg",
|
||||
"label": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"name": "radius",
|
||||
"start": 0,
|
||||
"type": "Identifier"
|
||||
},
|
||||
"start": 0,
|
||||
"type": "ObjectProperty",
|
||||
"value": {
|
||||
"arg": {
|
||||
"abs_path": false,
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
@ -1013,18 +985,15 @@ description: Result of parsing cycloidal-gear.kcl
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "LabeledArg",
|
||||
"label": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"key": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"name": "offset",
|
||||
"name": "angle",
|
||||
"start": 0,
|
||||
"type": "Identifier"
|
||||
},
|
||||
"start": 0,
|
||||
"type": "ObjectProperty",
|
||||
"value": {
|
||||
"arg": {
|
||||
"argument": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
@ -1046,18 +1015,6 @@ description: Result of parsing cycloidal-gear.kcl
|
||||
}
|
||||
}
|
||||
],
|
||||
"start": 0,
|
||||
"type": "ObjectExpression",
|
||||
"type": "ObjectExpression"
|
||||
},
|
||||
{
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"start": 0,
|
||||
"type": "PipeSubstitution",
|
||||
"type": "PipeSubstitution"
|
||||
}
|
||||
],
|
||||
"callee": {
|
||||
"abs_path": false,
|
||||
"commentStart": 0,
|
||||
@ -1076,28 +1033,22 @@ description: Result of parsing cycloidal-gear.kcl
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"start": 0,
|
||||
"type": "CallExpression",
|
||||
"type": "CallExpression"
|
||||
"type": "CallExpressionKw",
|
||||
"type": "CallExpressionKw",
|
||||
"unlabeled": null
|
||||
},
|
||||
{
|
||||
"arguments": [
|
||||
{
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"properties": [
|
||||
{
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"key": {
|
||||
"type": "LabeledArg",
|
||||
"label": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"name": "radius",
|
||||
"start": 0,
|
||||
"type": "Identifier"
|
||||
},
|
||||
"start": 0,
|
||||
"type": "ObjectProperty",
|
||||
"value": {
|
||||
"arg": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"left": {
|
||||
@ -1135,18 +1086,15 @@ description: Result of parsing cycloidal-gear.kcl
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "LabeledArg",
|
||||
"label": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"key": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"name": "offset",
|
||||
"name": "angle",
|
||||
"start": 0,
|
||||
"type": "Identifier"
|
||||
},
|
||||
"start": 0,
|
||||
"type": "ObjectProperty",
|
||||
"value": {
|
||||
"arg": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"raw": "60",
|
||||
@ -1160,18 +1108,6 @@ description: Result of parsing cycloidal-gear.kcl
|
||||
}
|
||||
}
|
||||
],
|
||||
"start": 0,
|
||||
"type": "ObjectExpression",
|
||||
"type": "ObjectExpression"
|
||||
},
|
||||
{
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"start": 0,
|
||||
"type": "PipeSubstitution",
|
||||
"type": "PipeSubstitution"
|
||||
}
|
||||
],
|
||||
"callee": {
|
||||
"abs_path": false,
|
||||
"commentStart": 0,
|
||||
@ -1190,28 +1126,22 @@ description: Result of parsing cycloidal-gear.kcl
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"start": 0,
|
||||
"type": "CallExpression",
|
||||
"type": "CallExpression"
|
||||
"type": "CallExpressionKw",
|
||||
"type": "CallExpressionKw",
|
||||
"unlabeled": null
|
||||
},
|
||||
{
|
||||
"arguments": [
|
||||
{
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"properties": [
|
||||
{
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"key": {
|
||||
"type": "LabeledArg",
|
||||
"label": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"name": "radius",
|
||||
"start": 0,
|
||||
"type": "Identifier"
|
||||
},
|
||||
"start": 0,
|
||||
"type": "ObjectProperty",
|
||||
"value": {
|
||||
"arg": {
|
||||
"abs_path": false,
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
@ -1229,18 +1159,15 @@ description: Result of parsing cycloidal-gear.kcl
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "LabeledArg",
|
||||
"label": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"key": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"name": "offset",
|
||||
"name": "angle",
|
||||
"start": 0,
|
||||
"type": "Identifier"
|
||||
},
|
||||
"start": 0,
|
||||
"type": "ObjectProperty",
|
||||
"value": {
|
||||
"arg": {
|
||||
"argument": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
@ -1262,18 +1189,6 @@ description: Result of parsing cycloidal-gear.kcl
|
||||
}
|
||||
}
|
||||
],
|
||||
"start": 0,
|
||||
"type": "ObjectExpression",
|
||||
"type": "ObjectExpression"
|
||||
},
|
||||
{
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"start": 0,
|
||||
"type": "PipeSubstitution",
|
||||
"type": "PipeSubstitution"
|
||||
}
|
||||
],
|
||||
"callee": {
|
||||
"abs_path": false,
|
||||
"commentStart": 0,
|
||||
@ -1292,12 +1207,22 @@ description: Result of parsing cycloidal-gear.kcl
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"start": 0,
|
||||
"type": "CallExpression",
|
||||
"type": "CallExpression"
|
||||
"type": "CallExpressionKw",
|
||||
"type": "CallExpressionKw",
|
||||
"unlabeled": null
|
||||
},
|
||||
{
|
||||
"arguments": [
|
||||
{
|
||||
"type": "LabeledArg",
|
||||
"label": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"name": "endAbsolute",
|
||||
"start": 0,
|
||||
"type": "Identifier"
|
||||
},
|
||||
"arg": {
|
||||
"commentStart": 0,
|
||||
"elements": [
|
||||
{
|
||||
@ -1367,13 +1292,7 @@ description: Result of parsing cycloidal-gear.kcl
|
||||
"start": 0,
|
||||
"type": "ArrayExpression",
|
||||
"type": "ArrayExpression"
|
||||
},
|
||||
{
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"start": 0,
|
||||
"type": "PipeSubstitution",
|
||||
"type": "PipeSubstitution"
|
||||
}
|
||||
}
|
||||
],
|
||||
"callee": {
|
||||
@ -1383,7 +1302,7 @@ description: Result of parsing cycloidal-gear.kcl
|
||||
"name": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"name": "tangentialArcTo",
|
||||
"name": "tangentialArc",
|
||||
"start": 0,
|
||||
"type": "Identifier"
|
||||
},
|
||||
@ -1394,8 +1313,9 @@ description: Result of parsing cycloidal-gear.kcl
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"start": 0,
|
||||
"type": "CallExpression",
|
||||
"type": "CallExpression"
|
||||
"type": "CallExpressionKw",
|
||||
"type": "CallExpressionKw",
|
||||
"unlabeled": null
|
||||
},
|
||||
{
|
||||
"arguments": [
|
||||
|
@ -10,7 +10,7 @@ description: Operations executed cycloidal-gear.kcl
|
||||
"name": "cycloidalGear",
|
||||
"functionSourceRange": [
|
||||
265,
|
||||
1729,
|
||||
1644,
|
||||
0
|
||||
],
|
||||
"unlabeledArg": null,
|
||||
@ -25,7 +25,7 @@ description: Operations executed cycloidal-gear.kcl
|
||||
"name": "gearSketch",
|
||||
"functionSourceRange": [
|
||||
491,
|
||||
1520,
|
||||
1435,
|
||||
0
|
||||
],
|
||||
"unlabeledArg": null,
|
||||
@ -186,7 +186,7 @@ description: Operations executed cycloidal-gear.kcl
|
||||
"name": "gearSketch",
|
||||
"functionSourceRange": [
|
||||
491,
|
||||
1520,
|
||||
1435,
|
||||
0
|
||||
],
|
||||
"unlabeledArg": null,
|
||||
@ -342,7 +342,7 @@ description: Operations executed cycloidal-gear.kcl
|
||||
"name": "gearSketch",
|
||||
"functionSourceRange": [
|
||||
491,
|
||||
1520,
|
||||
1435,
|
||||
0
|
||||
],
|
||||
"unlabeledArg": null,
|
||||
|
@ -102,14 +102,14 @@ flowchart LR
|
||||
subgraph path276 [Path]
|
||||
276["Path<br>[6877, 6927, 0]"]
|
||||
277["Segment<br>[6933, 6970, 0]"]
|
||||
278["Segment<br>[6976, 7060, 0]"]
|
||||
279["Segment<br>[7066, 7102, 0]"]
|
||||
280["Segment<br>[7108, 7200, 0]"]
|
||||
281["Segment<br>[7206, 7242, 0]"]
|
||||
278["Segment<br>[6976, 7069, 0]"]
|
||||
279["Segment<br>[7075, 7111, 0]"]
|
||||
280["Segment<br>[7117, 7218, 0]"]
|
||||
281["Segment<br>[7224, 7260, 0]"]
|
||||
end
|
||||
subgraph path283 [Path]
|
||||
283["Path<br>[7305, 7416, 0]"]
|
||||
284["Segment<br>[7305, 7416, 0]"]
|
||||
283["Path<br>[7323, 7434, 0]"]
|
||||
284["Segment<br>[7323, 7434, 0]"]
|
||||
285[Solid2d]
|
||||
end
|
||||
1["Plane<br>[565, 582, 0]"]
|
||||
@ -310,8 +310,8 @@ flowchart LR
|
||||
273["SweepEdge Adjacent"]
|
||||
274["Sweep Extrusion<br>[6482, 6510, 0]"]
|
||||
275["Plane<br>[6803, 6854, 0]"]
|
||||
282["Plane<br>[7264, 7281, 0]"]
|
||||
286["Sweep Sweep<br>[7430, 7483, 0]"]
|
||||
282["Plane<br>[7282, 7299, 0]"]
|
||||
286["Sweep Sweep<br>[7448, 7501, 0]"]
|
||||
287[Wall]
|
||||
288["Cap Start"]
|
||||
289["Cap Start"]
|
||||
|
@ -10274,6 +10274,15 @@ description: Result of parsing dual-basin-utility-sink.kcl
|
||||
{
|
||||
"arguments": [
|
||||
{
|
||||
"type": "LabeledArg",
|
||||
"label": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"name": "endAbsolute",
|
||||
"start": 0,
|
||||
"type": "Identifier"
|
||||
},
|
||||
"arg": {
|
||||
"commentStart": 0,
|
||||
"elements": [
|
||||
{
|
||||
@ -10345,13 +10354,7 @@ description: Result of parsing dual-basin-utility-sink.kcl
|
||||
"start": 0,
|
||||
"type": "ArrayExpression",
|
||||
"type": "ArrayExpression"
|
||||
},
|
||||
{
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"start": 0,
|
||||
"type": "PipeSubstitution",
|
||||
"type": "PipeSubstitution"
|
||||
}
|
||||
}
|
||||
],
|
||||
"callee": {
|
||||
@ -10361,7 +10364,7 @@ description: Result of parsing dual-basin-utility-sink.kcl
|
||||
"name": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"name": "tangentialArcTo",
|
||||
"name": "tangentialArc",
|
||||
"start": 0,
|
||||
"type": "Identifier"
|
||||
},
|
||||
@ -10372,8 +10375,9 @@ description: Result of parsing dual-basin-utility-sink.kcl
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"start": 0,
|
||||
"type": "CallExpression",
|
||||
"type": "CallExpression"
|
||||
"type": "CallExpressionKw",
|
||||
"type": "CallExpressionKw",
|
||||
"unlabeled": null
|
||||
},
|
||||
{
|
||||
"arguments": [
|
||||
@ -10429,6 +10433,15 @@ description: Result of parsing dual-basin-utility-sink.kcl
|
||||
{
|
||||
"arguments": [
|
||||
{
|
||||
"type": "LabeledArg",
|
||||
"label": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"name": "endAbsolute",
|
||||
"start": 0,
|
||||
"type": "Identifier"
|
||||
},
|
||||
"arg": {
|
||||
"commentStart": 0,
|
||||
"elements": [
|
||||
{
|
||||
@ -10500,13 +10513,7 @@ description: Result of parsing dual-basin-utility-sink.kcl
|
||||
"start": 0,
|
||||
"type": "ArrayExpression",
|
||||
"type": "ArrayExpression"
|
||||
},
|
||||
{
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"start": 0,
|
||||
"type": "PipeSubstitution",
|
||||
"type": "PipeSubstitution"
|
||||
}
|
||||
}
|
||||
],
|
||||
"callee": {
|
||||
@ -10516,7 +10523,7 @@ description: Result of parsing dual-basin-utility-sink.kcl
|
||||
"name": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"name": "tangentialArcTo",
|
||||
"name": "tangentialArc",
|
||||
"start": 0,
|
||||
"type": "Identifier"
|
||||
},
|
||||
@ -10527,8 +10534,9 @@ description: Result of parsing dual-basin-utility-sink.kcl
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"start": 0,
|
||||
"type": "CallExpression",
|
||||
"type": "CallExpression"
|
||||
"type": "CallExpressionKw",
|
||||
"type": "CallExpressionKw",
|
||||
"unlabeled": null
|
||||
},
|
||||
{
|
||||
"arguments": [
|
||||
|
@ -3,170 +3,170 @@ flowchart LR
|
||||
subgraph path2 [Path]
|
||||
2["Path<br>[817, 852, 0]"]
|
||||
3["Segment<br>[860, 886, 0]"]
|
||||
4["Segment<br>[894, 957, 0]"]
|
||||
5["Segment<br>[965, 1024, 0]"]
|
||||
6["Segment<br>[1032, 1094, 0]"]
|
||||
7["Segment<br>[1102, 1161, 0]"]
|
||||
4["Segment<br>[894, 955, 0]"]
|
||||
5["Segment<br>[963, 1022, 0]"]
|
||||
6["Segment<br>[1030, 1090, 0]"]
|
||||
7["Segment<br>[1098, 1157, 0]"]
|
||||
end
|
||||
subgraph path9 [Path]
|
||||
9["Path<br>[1263, 1325, 0]"]
|
||||
10["Segment<br>[1263, 1325, 0]"]
|
||||
9["Path<br>[1259, 1321, 0]"]
|
||||
10["Segment<br>[1259, 1321, 0]"]
|
||||
11[Solid2d]
|
||||
end
|
||||
subgraph path12 [Path]
|
||||
12["Path<br>[1338, 1416, 0]"]
|
||||
13["Segment<br>[1338, 1416, 0]"]
|
||||
12["Path<br>[1334, 1412, 0]"]
|
||||
13["Segment<br>[1334, 1412, 0]"]
|
||||
14[Solid2d]
|
||||
end
|
||||
subgraph path22 [Path]
|
||||
22["Path<br>[817, 852, 0]"]
|
||||
23["Segment<br>[860, 886, 0]"]
|
||||
24["Segment<br>[894, 957, 0]"]
|
||||
25["Segment<br>[965, 1024, 0]"]
|
||||
26["Segment<br>[1032, 1094, 0]"]
|
||||
27["Segment<br>[1102, 1161, 0]"]
|
||||
24["Segment<br>[894, 955, 0]"]
|
||||
25["Segment<br>[963, 1022, 0]"]
|
||||
26["Segment<br>[1030, 1090, 0]"]
|
||||
27["Segment<br>[1098, 1157, 0]"]
|
||||
end
|
||||
subgraph path29 [Path]
|
||||
29["Path<br>[1263, 1325, 0]"]
|
||||
30["Segment<br>[1263, 1325, 0]"]
|
||||
29["Path<br>[1259, 1321, 0]"]
|
||||
30["Segment<br>[1259, 1321, 0]"]
|
||||
31[Solid2d]
|
||||
end
|
||||
subgraph path32 [Path]
|
||||
32["Path<br>[1338, 1416, 0]"]
|
||||
33["Segment<br>[1338, 1416, 0]"]
|
||||
32["Path<br>[1334, 1412, 0]"]
|
||||
33["Segment<br>[1334, 1412, 0]"]
|
||||
34[Solid2d]
|
||||
end
|
||||
subgraph path42 [Path]
|
||||
42["Path<br>[817, 852, 0]"]
|
||||
43["Segment<br>[860, 886, 0]"]
|
||||
44["Segment<br>[894, 957, 0]"]
|
||||
45["Segment<br>[965, 1024, 0]"]
|
||||
46["Segment<br>[1032, 1094, 0]"]
|
||||
47["Segment<br>[1102, 1161, 0]"]
|
||||
44["Segment<br>[894, 955, 0]"]
|
||||
45["Segment<br>[963, 1022, 0]"]
|
||||
46["Segment<br>[1030, 1090, 0]"]
|
||||
47["Segment<br>[1098, 1157, 0]"]
|
||||
end
|
||||
subgraph path49 [Path]
|
||||
49["Path<br>[1263, 1325, 0]"]
|
||||
50["Segment<br>[1263, 1325, 0]"]
|
||||
49["Path<br>[1259, 1321, 0]"]
|
||||
50["Segment<br>[1259, 1321, 0]"]
|
||||
51[Solid2d]
|
||||
end
|
||||
subgraph path52 [Path]
|
||||
52["Path<br>[1338, 1416, 0]"]
|
||||
53["Segment<br>[1338, 1416, 0]"]
|
||||
52["Path<br>[1334, 1412, 0]"]
|
||||
53["Segment<br>[1334, 1412, 0]"]
|
||||
54[Solid2d]
|
||||
end
|
||||
subgraph path62 [Path]
|
||||
62["Path<br>[817, 852, 0]"]
|
||||
63["Segment<br>[860, 886, 0]"]
|
||||
64["Segment<br>[894, 957, 0]"]
|
||||
65["Segment<br>[965, 1024, 0]"]
|
||||
66["Segment<br>[1032, 1094, 0]"]
|
||||
67["Segment<br>[1102, 1161, 0]"]
|
||||
64["Segment<br>[894, 955, 0]"]
|
||||
65["Segment<br>[963, 1022, 0]"]
|
||||
66["Segment<br>[1030, 1090, 0]"]
|
||||
67["Segment<br>[1098, 1157, 0]"]
|
||||
end
|
||||
subgraph path69 [Path]
|
||||
69["Path<br>[1263, 1325, 0]"]
|
||||
70["Segment<br>[1263, 1325, 0]"]
|
||||
69["Path<br>[1259, 1321, 0]"]
|
||||
70["Segment<br>[1259, 1321, 0]"]
|
||||
71[Solid2d]
|
||||
end
|
||||
subgraph path72 [Path]
|
||||
72["Path<br>[1338, 1416, 0]"]
|
||||
73["Segment<br>[1338, 1416, 0]"]
|
||||
72["Path<br>[1334, 1412, 0]"]
|
||||
73["Segment<br>[1334, 1412, 0]"]
|
||||
74[Solid2d]
|
||||
end
|
||||
subgraph path82 [Path]
|
||||
82["Path<br>[1743, 1778, 0]"]
|
||||
83["Segment<br>[1784, 1818, 0]"]
|
||||
84["Segment<br>[1824, 1871, 0]"]
|
||||
85["Segment<br>[1877, 1923, 0]"]
|
||||
86["Segment<br>[1929, 1976, 0]"]
|
||||
87["Segment<br>[1982, 2016, 0]"]
|
||||
88["Segment<br>[2022, 2065, 0]"]
|
||||
89["Segment<br>[2071, 2104, 0]"]
|
||||
90["Segment<br>[2110, 2157, 0]"]
|
||||
91["Segment<br>[2163, 2210, 0]"]
|
||||
92["Segment<br>[2216, 2263, 0]"]
|
||||
93["Segment<br>[2269, 2312, 0]"]
|
||||
94["Segment<br>[2318, 2369, 0]"]
|
||||
95["Segment<br>[2375, 2419, 0]"]
|
||||
96["Segment<br>[2425, 2472, 0]"]
|
||||
97["Segment<br>[2478, 2524, 0]"]
|
||||
98["Segment<br>[2530, 2586, 0]"]
|
||||
99["Segment<br>[2592, 2599, 0]"]
|
||||
82["Path<br>[1739, 1774, 0]"]
|
||||
83["Segment<br>[1780, 1814, 0]"]
|
||||
84["Segment<br>[1820, 1859, 0]"]
|
||||
85["Segment<br>[1865, 1903, 0]"]
|
||||
86["Segment<br>[1909, 1948, 0]"]
|
||||
87["Segment<br>[1954, 1988, 0]"]
|
||||
88["Segment<br>[1994, 2037, 0]"]
|
||||
89["Segment<br>[2043, 2076, 0]"]
|
||||
90["Segment<br>[2082, 2121, 0]"]
|
||||
91["Segment<br>[2127, 2166, 0]"]
|
||||
92["Segment<br>[2172, 2211, 0]"]
|
||||
93["Segment<br>[2217, 2260, 0]"]
|
||||
94["Segment<br>[2266, 2317, 0]"]
|
||||
95["Segment<br>[2323, 2367, 0]"]
|
||||
96["Segment<br>[2373, 2412, 0]"]
|
||||
97["Segment<br>[2418, 2456, 0]"]
|
||||
98["Segment<br>[2462, 2527, 0]"]
|
||||
99["Segment<br>[2533, 2540, 0]"]
|
||||
100[Solid2d]
|
||||
end
|
||||
subgraph path101 [Path]
|
||||
101["Path<br>[2671, 2744, 0]"]
|
||||
102["Segment<br>[2671, 2744, 0]"]
|
||||
101["Path<br>[2612, 2685, 0]"]
|
||||
102["Segment<br>[2612, 2685, 0]"]
|
||||
103[Solid2d]
|
||||
end
|
||||
subgraph path104 [Path]
|
||||
104["Path<br>[2759, 2832, 0]"]
|
||||
105["Segment<br>[2759, 2832, 0]"]
|
||||
104["Path<br>[2700, 2773, 0]"]
|
||||
105["Segment<br>[2700, 2773, 0]"]
|
||||
106[Solid2d]
|
||||
end
|
||||
subgraph path107 [Path]
|
||||
107["Path<br>[2847, 2920, 0]"]
|
||||
108["Segment<br>[2847, 2920, 0]"]
|
||||
107["Path<br>[2788, 2861, 0]"]
|
||||
108["Segment<br>[2788, 2861, 0]"]
|
||||
109[Solid2d]
|
||||
end
|
||||
subgraph path110 [Path]
|
||||
110["Path<br>[2935, 3008, 0]"]
|
||||
111["Segment<br>[2935, 3008, 0]"]
|
||||
110["Path<br>[2876, 2949, 0]"]
|
||||
111["Segment<br>[2876, 2949, 0]"]
|
||||
112[Solid2d]
|
||||
end
|
||||
subgraph path113 [Path]
|
||||
113["Path<br>[3062, 3201, 0]"]
|
||||
114["Segment<br>[3062, 3201, 0]"]
|
||||
113["Path<br>[3003, 3142, 0]"]
|
||||
114["Segment<br>[3003, 3142, 0]"]
|
||||
115[Solid2d]
|
||||
end
|
||||
subgraph path116 [Path]
|
||||
116["Path<br>[3216, 3353, 0]"]
|
||||
117["Segment<br>[3216, 3353, 0]"]
|
||||
116["Path<br>[3157, 3294, 0]"]
|
||||
117["Segment<br>[3157, 3294, 0]"]
|
||||
118[Solid2d]
|
||||
end
|
||||
subgraph path119 [Path]
|
||||
119["Path<br>[3368, 3515, 0]"]
|
||||
120["Segment<br>[3368, 3515, 0]"]
|
||||
119["Path<br>[3309, 3456, 0]"]
|
||||
120["Segment<br>[3309, 3456, 0]"]
|
||||
121[Solid2d]
|
||||
end
|
||||
subgraph path122 [Path]
|
||||
122["Path<br>[3530, 3676, 0]"]
|
||||
123["Segment<br>[3530, 3676, 0]"]
|
||||
122["Path<br>[3471, 3617, 0]"]
|
||||
123["Segment<br>[3471, 3617, 0]"]
|
||||
124[Solid2d]
|
||||
end
|
||||
1["Plane<br>[784, 809, 0]"]
|
||||
8["Plane<br>[1238, 1255, 0]"]
|
||||
15["Sweep Sweep<br>[1428, 1451, 0]"]
|
||||
8["Plane<br>[1234, 1251, 0]"]
|
||||
15["Sweep Sweep<br>[1424, 1447, 0]"]
|
||||
16[Wall]
|
||||
17["Cap Start"]
|
||||
18["Cap End"]
|
||||
19["SweepEdge Opposite"]
|
||||
20["SweepEdge Adjacent"]
|
||||
21["Plane<br>[784, 809, 0]"]
|
||||
28["Plane<br>[1238, 1255, 0]"]
|
||||
35["Sweep Sweep<br>[1428, 1451, 0]"]
|
||||
28["Plane<br>[1234, 1251, 0]"]
|
||||
35["Sweep Sweep<br>[1424, 1447, 0]"]
|
||||
36[Wall]
|
||||
37["Cap Start"]
|
||||
38["Cap End"]
|
||||
39["SweepEdge Opposite"]
|
||||
40["SweepEdge Adjacent"]
|
||||
41["Plane<br>[784, 809, 0]"]
|
||||
48["Plane<br>[1238, 1255, 0]"]
|
||||
55["Sweep Sweep<br>[1428, 1451, 0]"]
|
||||
48["Plane<br>[1234, 1251, 0]"]
|
||||
55["Sweep Sweep<br>[1424, 1447, 0]"]
|
||||
56[Wall]
|
||||
57["Cap Start"]
|
||||
58["Cap End"]
|
||||
59["SweepEdge Opposite"]
|
||||
60["SweepEdge Adjacent"]
|
||||
61["Plane<br>[784, 809, 0]"]
|
||||
68["Plane<br>[1238, 1255, 0]"]
|
||||
75["Sweep Sweep<br>[1428, 1451, 0]"]
|
||||
68["Plane<br>[1234, 1251, 0]"]
|
||||
75["Sweep Sweep<br>[1424, 1447, 0]"]
|
||||
76[Wall]
|
||||
77["Cap Start"]
|
||||
78["Cap End"]
|
||||
79["SweepEdge Opposite"]
|
||||
80["SweepEdge Adjacent"]
|
||||
81["Plane<br>[1720, 1737, 0]"]
|
||||
125["Sweep Extrusion<br>[3732, 3761, 0]"]
|
||||
81["Plane<br>[1716, 1733, 0]"]
|
||||
125["Sweep Extrusion<br>[3673, 3702, 0]"]
|
||||
126[Wall]
|
||||
127[Wall]
|
||||
128[Wall]
|
||||
@ -217,10 +217,10 @@ flowchart LR
|
||||
173["SweepEdge Adjacent"]
|
||||
174["SweepEdge Opposite"]
|
||||
175["SweepEdge Adjacent"]
|
||||
176["EdgeCut Fillet<br>[3767, 3901, 0]"]
|
||||
177["EdgeCut Fillet<br>[3767, 3901, 0]"]
|
||||
178["EdgeCut Fillet<br>[3907, 4041, 0]"]
|
||||
179["EdgeCut Fillet<br>[3907, 4041, 0]"]
|
||||
176["EdgeCut Fillet<br>[3708, 3842, 0]"]
|
||||
177["EdgeCut Fillet<br>[3708, 3842, 0]"]
|
||||
178["EdgeCut Fillet<br>[3848, 3982, 0]"]
|
||||
179["EdgeCut Fillet<br>[3848, 3982, 0]"]
|
||||
1 --- 2
|
||||
2 --- 3
|
||||
2 --- 4
|
||||
|
@ -825,22 +825,15 @@ description: Result of parsing exhaust-manifold.kcl
|
||||
{
|
||||
"arguments": [
|
||||
{
|
||||
"type": "LabeledArg",
|
||||
"label": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"properties": [
|
||||
{
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"key": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"name": "offset",
|
||||
"name": "angle",
|
||||
"start": 0,
|
||||
"type": "Identifier"
|
||||
},
|
||||
"start": 0,
|
||||
"type": "ObjectProperty",
|
||||
"value": {
|
||||
"arg": {
|
||||
"argument": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
@ -862,18 +855,15 @@ description: Result of parsing exhaust-manifold.kcl
|
||||
}
|
||||
},
|
||||
{
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"key": {
|
||||
"type": "LabeledArg",
|
||||
"label": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"name": "radius",
|
||||
"start": 0,
|
||||
"type": "Identifier"
|
||||
},
|
||||
"start": 0,
|
||||
"type": "ObjectProperty",
|
||||
"value": {
|
||||
"arg": {
|
||||
"abs_path": false,
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
@ -889,20 +879,17 @@ description: Result of parsing exhaust-manifold.kcl
|
||||
"type": "Name",
|
||||
"type": "Name"
|
||||
}
|
||||
}
|
||||
],
|
||||
"start": 0,
|
||||
"type": "ObjectExpression",
|
||||
"type": "ObjectExpression"
|
||||
},
|
||||
{
|
||||
"type": "LabeledArg",
|
||||
"label": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"name": "tag",
|
||||
"start": 0,
|
||||
"type": "PipeSubstitution",
|
||||
"type": "PipeSubstitution"
|
||||
"type": "Identifier"
|
||||
},
|
||||
{
|
||||
"arg": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"start": 0,
|
||||
@ -910,6 +897,7 @@ description: Result of parsing exhaust-manifold.kcl
|
||||
"type": "TagDeclarator",
|
||||
"value": "arc01"
|
||||
}
|
||||
}
|
||||
],
|
||||
"callee": {
|
||||
"abs_path": false,
|
||||
@ -929,8 +917,9 @@ description: Result of parsing exhaust-manifold.kcl
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"start": 0,
|
||||
"type": "CallExpression",
|
||||
"type": "CallExpression"
|
||||
"type": "CallExpressionKw",
|
||||
"type": "CallExpressionKw",
|
||||
"unlabeled": null
|
||||
},
|
||||
{
|
||||
"arguments": [
|
||||
@ -1036,22 +1025,15 @@ description: Result of parsing exhaust-manifold.kcl
|
||||
{
|
||||
"arguments": [
|
||||
{
|
||||
"type": "LabeledArg",
|
||||
"label": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"properties": [
|
||||
{
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"key": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"name": "offset",
|
||||
"name": "angle",
|
||||
"start": 0,
|
||||
"type": "Identifier"
|
||||
},
|
||||
"start": 0,
|
||||
"type": "ObjectProperty",
|
||||
"value": {
|
||||
"arg": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"raw": "85",
|
||||
@ -1065,18 +1047,15 @@ description: Result of parsing exhaust-manifold.kcl
|
||||
}
|
||||
},
|
||||
{
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"key": {
|
||||
"type": "LabeledArg",
|
||||
"label": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"name": "radius",
|
||||
"start": 0,
|
||||
"type": "Identifier"
|
||||
},
|
||||
"start": 0,
|
||||
"type": "ObjectProperty",
|
||||
"value": {
|
||||
"arg": {
|
||||
"abs_path": false,
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
@ -1092,20 +1071,17 @@ description: Result of parsing exhaust-manifold.kcl
|
||||
"type": "Name",
|
||||
"type": "Name"
|
||||
}
|
||||
}
|
||||
],
|
||||
"start": 0,
|
||||
"type": "ObjectExpression",
|
||||
"type": "ObjectExpression"
|
||||
},
|
||||
{
|
||||
"type": "LabeledArg",
|
||||
"label": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"name": "tag",
|
||||
"start": 0,
|
||||
"type": "PipeSubstitution",
|
||||
"type": "PipeSubstitution"
|
||||
"type": "Identifier"
|
||||
},
|
||||
{
|
||||
"arg": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"start": 0,
|
||||
@ -1113,6 +1089,7 @@ description: Result of parsing exhaust-manifold.kcl
|
||||
"type": "TagDeclarator",
|
||||
"value": "arc02"
|
||||
}
|
||||
}
|
||||
],
|
||||
"callee": {
|
||||
"abs_path": false,
|
||||
@ -1132,8 +1109,9 @@ description: Result of parsing exhaust-manifold.kcl
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"start": 0,
|
||||
"type": "CallExpression",
|
||||
"type": "CallExpression"
|
||||
"type": "CallExpressionKw",
|
||||
"type": "CallExpressionKw",
|
||||
"unlabeled": null
|
||||
},
|
||||
{
|
||||
"arguments": [
|
||||
@ -2386,22 +2364,15 @@ description: Result of parsing exhaust-manifold.kcl
|
||||
{
|
||||
"arguments": [
|
||||
{
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"properties": [
|
||||
{
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"key": {
|
||||
"type": "LabeledArg",
|
||||
"label": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"name": "radius",
|
||||
"start": 0,
|
||||
"type": "Identifier"
|
||||
},
|
||||
"start": 0,
|
||||
"type": "ObjectProperty",
|
||||
"value": {
|
||||
"arg": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"raw": ".3",
|
||||
@ -2415,18 +2386,15 @@ description: Result of parsing exhaust-manifold.kcl
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "LabeledArg",
|
||||
"label": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"key": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"name": "offset",
|
||||
"name": "angle",
|
||||
"start": 0,
|
||||
"type": "Identifier"
|
||||
},
|
||||
"start": 0,
|
||||
"type": "ObjectProperty",
|
||||
"value": {
|
||||
"arg": {
|
||||
"argument": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
@ -2448,18 +2416,6 @@ description: Result of parsing exhaust-manifold.kcl
|
||||
}
|
||||
}
|
||||
],
|
||||
"start": 0,
|
||||
"type": "ObjectExpression",
|
||||
"type": "ObjectExpression"
|
||||
},
|
||||
{
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"start": 0,
|
||||
"type": "PipeSubstitution",
|
||||
"type": "PipeSubstitution"
|
||||
}
|
||||
],
|
||||
"callee": {
|
||||
"abs_path": false,
|
||||
"commentStart": 0,
|
||||
@ -2478,28 +2434,22 @@ description: Result of parsing exhaust-manifold.kcl
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"start": 0,
|
||||
"type": "CallExpression",
|
||||
"type": "CallExpression"
|
||||
"type": "CallExpressionKw",
|
||||
"type": "CallExpressionKw",
|
||||
"unlabeled": null
|
||||
},
|
||||
{
|
||||
"arguments": [
|
||||
{
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"properties": [
|
||||
{
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"key": {
|
||||
"type": "LabeledArg",
|
||||
"label": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"name": "radius",
|
||||
"start": 0,
|
||||
"type": "Identifier"
|
||||
},
|
||||
"start": 0,
|
||||
"type": "ObjectProperty",
|
||||
"value": {
|
||||
"arg": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"raw": ".9",
|
||||
@ -2513,18 +2463,15 @@ description: Result of parsing exhaust-manifold.kcl
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "LabeledArg",
|
||||
"label": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"key": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"name": "offset",
|
||||
"name": "angle",
|
||||
"start": 0,
|
||||
"type": "Identifier"
|
||||
},
|
||||
"start": 0,
|
||||
"type": "ObjectProperty",
|
||||
"value": {
|
||||
"arg": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"raw": "80",
|
||||
@ -2538,18 +2485,6 @@ description: Result of parsing exhaust-manifold.kcl
|
||||
}
|
||||
}
|
||||
],
|
||||
"start": 0,
|
||||
"type": "ObjectExpression",
|
||||
"type": "ObjectExpression"
|
||||
},
|
||||
{
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"start": 0,
|
||||
"type": "PipeSubstitution",
|
||||
"type": "PipeSubstitution"
|
||||
}
|
||||
],
|
||||
"callee": {
|
||||
"abs_path": false,
|
||||
"commentStart": 0,
|
||||
@ -2568,28 +2503,22 @@ description: Result of parsing exhaust-manifold.kcl
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"start": 0,
|
||||
"type": "CallExpression",
|
||||
"type": "CallExpression"
|
||||
"type": "CallExpressionKw",
|
||||
"type": "CallExpressionKw",
|
||||
"unlabeled": null
|
||||
},
|
||||
{
|
||||
"arguments": [
|
||||
{
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"properties": [
|
||||
{
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"key": {
|
||||
"type": "LabeledArg",
|
||||
"label": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"name": "radius",
|
||||
"start": 0,
|
||||
"type": "Identifier"
|
||||
},
|
||||
"start": 0,
|
||||
"type": "ObjectProperty",
|
||||
"value": {
|
||||
"arg": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"raw": ".3",
|
||||
@ -2603,18 +2532,15 @@ description: Result of parsing exhaust-manifold.kcl
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "LabeledArg",
|
||||
"label": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"key": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"name": "offset",
|
||||
"name": "angle",
|
||||
"start": 0,
|
||||
"type": "Identifier"
|
||||
},
|
||||
"start": 0,
|
||||
"type": "ObjectProperty",
|
||||
"value": {
|
||||
"arg": {
|
||||
"argument": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
@ -2636,18 +2562,6 @@ description: Result of parsing exhaust-manifold.kcl
|
||||
}
|
||||
}
|
||||
],
|
||||
"start": 0,
|
||||
"type": "ObjectExpression",
|
||||
"type": "ObjectExpression"
|
||||
},
|
||||
{
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"start": 0,
|
||||
"type": "PipeSubstitution",
|
||||
"type": "PipeSubstitution"
|
||||
}
|
||||
],
|
||||
"callee": {
|
||||
"abs_path": false,
|
||||
"commentStart": 0,
|
||||
@ -2666,8 +2580,9 @@ description: Result of parsing exhaust-manifold.kcl
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"start": 0,
|
||||
"type": "CallExpression",
|
||||
"type": "CallExpression"
|
||||
"type": "CallExpressionKw",
|
||||
"type": "CallExpressionKw",
|
||||
"unlabeled": null
|
||||
},
|
||||
{
|
||||
"arguments": [
|
||||
@ -2903,22 +2818,15 @@ description: Result of parsing exhaust-manifold.kcl
|
||||
{
|
||||
"arguments": [
|
||||
{
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"properties": [
|
||||
{
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"key": {
|
||||
"type": "LabeledArg",
|
||||
"label": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"name": "radius",
|
||||
"start": 0,
|
||||
"type": "Identifier"
|
||||
},
|
||||
"start": 0,
|
||||
"type": "ObjectProperty",
|
||||
"value": {
|
||||
"arg": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"raw": ".3",
|
||||
@ -2932,18 +2840,15 @@ description: Result of parsing exhaust-manifold.kcl
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "LabeledArg",
|
||||
"label": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"key": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"name": "offset",
|
||||
"name": "angle",
|
||||
"start": 0,
|
||||
"type": "Identifier"
|
||||
},
|
||||
"start": 0,
|
||||
"type": "ObjectProperty",
|
||||
"value": {
|
||||
"arg": {
|
||||
"argument": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
@ -2965,18 +2870,6 @@ description: Result of parsing exhaust-manifold.kcl
|
||||
}
|
||||
}
|
||||
],
|
||||
"start": 0,
|
||||
"type": "ObjectExpression",
|
||||
"type": "ObjectExpression"
|
||||
},
|
||||
{
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"start": 0,
|
||||
"type": "PipeSubstitution",
|
||||
"type": "PipeSubstitution"
|
||||
}
|
||||
],
|
||||
"callee": {
|
||||
"abs_path": false,
|
||||
"commentStart": 0,
|
||||
@ -2995,28 +2888,22 @@ description: Result of parsing exhaust-manifold.kcl
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"start": 0,
|
||||
"type": "CallExpression",
|
||||
"type": "CallExpression"
|
||||
"type": "CallExpressionKw",
|
||||
"type": "CallExpressionKw",
|
||||
"unlabeled": null
|
||||
},
|
||||
{
|
||||
"arguments": [
|
||||
{
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"properties": [
|
||||
{
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"key": {
|
||||
"type": "LabeledArg",
|
||||
"label": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"name": "radius",
|
||||
"start": 0,
|
||||
"type": "Identifier"
|
||||
},
|
||||
"start": 0,
|
||||
"type": "ObjectProperty",
|
||||
"value": {
|
||||
"arg": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"raw": "1.5",
|
||||
@ -3030,18 +2917,15 @@ description: Result of parsing exhaust-manifold.kcl
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "LabeledArg",
|
||||
"label": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"key": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"name": "offset",
|
||||
"name": "angle",
|
||||
"start": 0,
|
||||
"type": "Identifier"
|
||||
},
|
||||
"start": 0,
|
||||
"type": "ObjectProperty",
|
||||
"value": {
|
||||
"arg": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"raw": "80",
|
||||
@ -3055,18 +2939,6 @@ description: Result of parsing exhaust-manifold.kcl
|
||||
}
|
||||
}
|
||||
],
|
||||
"start": 0,
|
||||
"type": "ObjectExpression",
|
||||
"type": "ObjectExpression"
|
||||
},
|
||||
{
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"start": 0,
|
||||
"type": "PipeSubstitution",
|
||||
"type": "PipeSubstitution"
|
||||
}
|
||||
],
|
||||
"callee": {
|
||||
"abs_path": false,
|
||||
"commentStart": 0,
|
||||
@ -3085,28 +2957,22 @@ description: Result of parsing exhaust-manifold.kcl
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"start": 0,
|
||||
"type": "CallExpression",
|
||||
"type": "CallExpression"
|
||||
"type": "CallExpressionKw",
|
||||
"type": "CallExpressionKw",
|
||||
"unlabeled": null
|
||||
},
|
||||
{
|
||||
"arguments": [
|
||||
{
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"properties": [
|
||||
{
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"key": {
|
||||
"type": "LabeledArg",
|
||||
"label": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"name": "radius",
|
||||
"start": 0,
|
||||
"type": "Identifier"
|
||||
},
|
||||
"start": 0,
|
||||
"type": "ObjectProperty",
|
||||
"value": {
|
||||
"arg": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"raw": ".3",
|
||||
@ -3120,18 +2986,15 @@ description: Result of parsing exhaust-manifold.kcl
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "LabeledArg",
|
||||
"label": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"key": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"name": "offset",
|
||||
"name": "angle",
|
||||
"start": 0,
|
||||
"type": "Identifier"
|
||||
},
|
||||
"start": 0,
|
||||
"type": "ObjectProperty",
|
||||
"value": {
|
||||
"arg": {
|
||||
"argument": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
@ -3153,18 +3016,6 @@ description: Result of parsing exhaust-manifold.kcl
|
||||
}
|
||||
}
|
||||
],
|
||||
"start": 0,
|
||||
"type": "ObjectExpression",
|
||||
"type": "ObjectExpression"
|
||||
},
|
||||
{
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"start": 0,
|
||||
"type": "PipeSubstitution",
|
||||
"type": "PipeSubstitution"
|
||||
}
|
||||
],
|
||||
"callee": {
|
||||
"abs_path": false,
|
||||
"commentStart": 0,
|
||||
@ -3183,8 +3034,9 @@ description: Result of parsing exhaust-manifold.kcl
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"start": 0,
|
||||
"type": "CallExpression",
|
||||
"type": "CallExpression"
|
||||
"type": "CallExpressionKw",
|
||||
"type": "CallExpressionKw",
|
||||
"unlabeled": null
|
||||
},
|
||||
{
|
||||
"arguments": [
|
||||
@ -3467,22 +3319,15 @@ description: Result of parsing exhaust-manifold.kcl
|
||||
{
|
||||
"arguments": [
|
||||
{
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"properties": [
|
||||
{
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"key": {
|
||||
"type": "LabeledArg",
|
||||
"label": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"name": "radius",
|
||||
"start": 0,
|
||||
"type": "Identifier"
|
||||
},
|
||||
"start": 0,
|
||||
"type": "ObjectProperty",
|
||||
"value": {
|
||||
"arg": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"raw": ".3",
|
||||
@ -3496,18 +3341,15 @@ description: Result of parsing exhaust-manifold.kcl
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "LabeledArg",
|
||||
"label": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"key": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"name": "offset",
|
||||
"name": "angle",
|
||||
"start": 0,
|
||||
"type": "Identifier"
|
||||
},
|
||||
"start": 0,
|
||||
"type": "ObjectProperty",
|
||||
"value": {
|
||||
"arg": {
|
||||
"argument": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
@ -3529,18 +3371,6 @@ description: Result of parsing exhaust-manifold.kcl
|
||||
}
|
||||
}
|
||||
],
|
||||
"start": 0,
|
||||
"type": "ObjectExpression",
|
||||
"type": "ObjectExpression"
|
||||
},
|
||||
{
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"start": 0,
|
||||
"type": "PipeSubstitution",
|
||||
"type": "PipeSubstitution"
|
||||
}
|
||||
],
|
||||
"callee": {
|
||||
"abs_path": false,
|
||||
"commentStart": 0,
|
||||
@ -3559,28 +3389,22 @@ description: Result of parsing exhaust-manifold.kcl
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"start": 0,
|
||||
"type": "CallExpression",
|
||||
"type": "CallExpression"
|
||||
"type": "CallExpressionKw",
|
||||
"type": "CallExpressionKw",
|
||||
"unlabeled": null
|
||||
},
|
||||
{
|
||||
"arguments": [
|
||||
{
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"properties": [
|
||||
{
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"key": {
|
||||
"type": "LabeledArg",
|
||||
"label": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"name": "radius",
|
||||
"start": 0,
|
||||
"type": "Identifier"
|
||||
},
|
||||
"start": 0,
|
||||
"type": "ObjectProperty",
|
||||
"value": {
|
||||
"arg": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"raw": ".9",
|
||||
@ -3594,18 +3418,15 @@ description: Result of parsing exhaust-manifold.kcl
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "LabeledArg",
|
||||
"label": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"key": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"name": "offset",
|
||||
"name": "angle",
|
||||
"start": 0,
|
||||
"type": "Identifier"
|
||||
},
|
||||
"start": 0,
|
||||
"type": "ObjectProperty",
|
||||
"value": {
|
||||
"arg": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"raw": "80",
|
||||
@ -3619,18 +3440,6 @@ description: Result of parsing exhaust-manifold.kcl
|
||||
}
|
||||
}
|
||||
],
|
||||
"start": 0,
|
||||
"type": "ObjectExpression",
|
||||
"type": "ObjectExpression"
|
||||
},
|
||||
{
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"start": 0,
|
||||
"type": "PipeSubstitution",
|
||||
"type": "PipeSubstitution"
|
||||
}
|
||||
],
|
||||
"callee": {
|
||||
"abs_path": false,
|
||||
"commentStart": 0,
|
||||
@ -3649,12 +3458,22 @@ description: Result of parsing exhaust-manifold.kcl
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"start": 0,
|
||||
"type": "CallExpression",
|
||||
"type": "CallExpression"
|
||||
"type": "CallExpressionKw",
|
||||
"type": "CallExpressionKw",
|
||||
"unlabeled": null
|
||||
},
|
||||
{
|
||||
"arguments": [
|
||||
{
|
||||
"type": "LabeledArg",
|
||||
"label": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"name": "endAbsolute",
|
||||
"start": 0,
|
||||
"type": "Identifier"
|
||||
},
|
||||
"arg": {
|
||||
"commentStart": 0,
|
||||
"elements": [
|
||||
{
|
||||
@ -3724,13 +3543,7 @@ description: Result of parsing exhaust-manifold.kcl
|
||||
"start": 0,
|
||||
"type": "ArrayExpression",
|
||||
"type": "ArrayExpression"
|
||||
},
|
||||
{
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"start": 0,
|
||||
"type": "PipeSubstitution",
|
||||
"type": "PipeSubstitution"
|
||||
}
|
||||
}
|
||||
],
|
||||
"callee": {
|
||||
@ -3740,7 +3553,7 @@ description: Result of parsing exhaust-manifold.kcl
|
||||
"name": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"name": "tangentialArcTo",
|
||||
"name": "tangentialArc",
|
||||
"start": 0,
|
||||
"type": "Identifier"
|
||||
},
|
||||
@ -3751,8 +3564,9 @@ description: Result of parsing exhaust-manifold.kcl
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"start": 0,
|
||||
"type": "CallExpression",
|
||||
"type": "CallExpression"
|
||||
"type": "CallExpressionKw",
|
||||
"type": "CallExpressionKw",
|
||||
"unlabeled": null
|
||||
},
|
||||
{
|
||||
"arguments": [],
|
||||
|
@ -10,7 +10,7 @@ description: Operations executed exhaust-manifold.kcl
|
||||
"name": "primaryTube",
|
||||
"functionSourceRange": [
|
||||
330,
|
||||
1468,
|
||||
1464,
|
||||
0
|
||||
],
|
||||
"unlabeledArg": null,
|
||||
@ -317,7 +317,7 @@ description: Operations executed exhaust-manifold.kcl
|
||||
"name": "primaryTube",
|
||||
"functionSourceRange": [
|
||||
330,
|
||||
1468,
|
||||
1464,
|
||||
0
|
||||
],
|
||||
"unlabeledArg": null,
|
||||
@ -624,7 +624,7 @@ description: Operations executed exhaust-manifold.kcl
|
||||
"name": "primaryTube",
|
||||
"functionSourceRange": [
|
||||
330,
|
||||
1468,
|
||||
1464,
|
||||
0
|
||||
],
|
||||
"unlabeledArg": null,
|
||||
@ -931,7 +931,7 @@ description: Operations executed exhaust-manifold.kcl
|
||||
"name": "primaryTube",
|
||||
"functionSourceRange": [
|
||||
330,
|
||||
1468,
|
||||
1464,
|
||||
0
|
||||
],
|
||||
"unlabeledArg": null,
|
||||
|
@ -28,9 +28,9 @@ description: Variables in memory after executing exhaust-manifold.kcl
|
||||
"id": "[uuid]",
|
||||
"sourceRange": [],
|
||||
"tag": {
|
||||
"commentStart": 1811,
|
||||
"end": 1817,
|
||||
"start": 1811,
|
||||
"commentStart": 1807,
|
||||
"end": 1813,
|
||||
"start": 1807,
|
||||
"type": "TagDeclarator",
|
||||
"value": "seg01"
|
||||
},
|
||||
@ -62,9 +62,9 @@ description: Variables in memory after executing exhaust-manifold.kcl
|
||||
"id": "[uuid]",
|
||||
"sourceRange": [],
|
||||
"tag": {
|
||||
"commentStart": 2009,
|
||||
"end": 2015,
|
||||
"start": 2009,
|
||||
"commentStart": 1981,
|
||||
"end": 1987,
|
||||
"start": 1981,
|
||||
"type": "TagDeclarator",
|
||||
"value": "seg03"
|
||||
},
|
||||
@ -75,9 +75,9 @@ description: Variables in memory after executing exhaust-manifold.kcl
|
||||
"id": "[uuid]",
|
||||
"sourceRange": [],
|
||||
"tag": {
|
||||
"commentStart": 2058,
|
||||
"end": 2064,
|
||||
"start": 2058,
|
||||
"commentStart": 2030,
|
||||
"end": 2036,
|
||||
"start": 2030,
|
||||
"type": "TagDeclarator",
|
||||
"value": "seg04"
|
||||
},
|
||||
@ -88,9 +88,9 @@ description: Variables in memory after executing exhaust-manifold.kcl
|
||||
"id": "[uuid]",
|
||||
"sourceRange": [],
|
||||
"tag": {
|
||||
"commentStart": 2097,
|
||||
"end": 2103,
|
||||
"start": 2097,
|
||||
"commentStart": 2069,
|
||||
"end": 2075,
|
||||
"start": 2069,
|
||||
"type": "TagDeclarator",
|
||||
"value": "seg05"
|
||||
},
|
||||
@ -122,9 +122,9 @@ description: Variables in memory after executing exhaust-manifold.kcl
|
||||
"id": "[uuid]",
|
||||
"sourceRange": [],
|
||||
"tag": {
|
||||
"commentStart": 2305,
|
||||
"end": 2311,
|
||||
"start": 2305,
|
||||
"commentStart": 2253,
|
||||
"end": 2259,
|
||||
"start": 2253,
|
||||
"type": "TagDeclarator",
|
||||
"value": "seg07"
|
||||
},
|
||||
@ -135,9 +135,9 @@ description: Variables in memory after executing exhaust-manifold.kcl
|
||||
"id": "[uuid]",
|
||||
"sourceRange": [],
|
||||
"tag": {
|
||||
"commentStart": 2362,
|
||||
"end": 2368,
|
||||
"start": 2362,
|
||||
"commentStart": 2310,
|
||||
"end": 2316,
|
||||
"start": 2310,
|
||||
"type": "TagDeclarator",
|
||||
"value": "seg08"
|
||||
},
|
||||
@ -148,9 +148,9 @@ description: Variables in memory after executing exhaust-manifold.kcl
|
||||
"id": "[uuid]",
|
||||
"sourceRange": [],
|
||||
"tag": {
|
||||
"commentStart": 2412,
|
||||
"end": 2418,
|
||||
"start": 2412,
|
||||
"commentStart": 2360,
|
||||
"end": 2366,
|
||||
"start": 2360,
|
||||
"type": "TagDeclarator",
|
||||
"value": "seg09"
|
||||
},
|
||||
@ -192,9 +192,9 @@ description: Variables in memory after executing exhaust-manifold.kcl
|
||||
-1.25
|
||||
],
|
||||
"tag": {
|
||||
"commentStart": 1811,
|
||||
"end": 1817,
|
||||
"start": 1811,
|
||||
"commentStart": 1807,
|
||||
"end": 1813,
|
||||
"start": 1807,
|
||||
"type": "TagDeclarator",
|
||||
"value": "seg01"
|
||||
},
|
||||
@ -289,9 +289,9 @@ description: Variables in memory after executing exhaust-manifold.kcl
|
||||
-1.25
|
||||
],
|
||||
"tag": {
|
||||
"commentStart": 2009,
|
||||
"end": 2015,
|
||||
"start": 2009,
|
||||
"commentStart": 1981,
|
||||
"end": 1987,
|
||||
"start": 1981,
|
||||
"type": "TagDeclarator",
|
||||
"value": "seg03"
|
||||
},
|
||||
@ -314,9 +314,9 @@ description: Variables in memory after executing exhaust-manifold.kcl
|
||||
-1.25
|
||||
],
|
||||
"tag": {
|
||||
"commentStart": 2058,
|
||||
"end": 2064,
|
||||
"start": 2058,
|
||||
"commentStart": 2030,
|
||||
"end": 2036,
|
||||
"start": 2030,
|
||||
"type": "TagDeclarator",
|
||||
"value": "seg04"
|
||||
},
|
||||
@ -339,9 +339,9 @@ description: Variables in memory after executing exhaust-manifold.kcl
|
||||
1.35
|
||||
],
|
||||
"tag": {
|
||||
"commentStart": 2097,
|
||||
"end": 2103,
|
||||
"start": 2097,
|
||||
"commentStart": 2069,
|
||||
"end": 2075,
|
||||
"start": 2069,
|
||||
"type": "TagDeclarator",
|
||||
"value": "seg05"
|
||||
},
|
||||
@ -436,9 +436,9 @@ description: Variables in memory after executing exhaust-manifold.kcl
|
||||
1.35
|
||||
],
|
||||
"tag": {
|
||||
"commentStart": 2305,
|
||||
"end": 2311,
|
||||
"start": 2305,
|
||||
"commentStart": 2253,
|
||||
"end": 2259,
|
||||
"start": 2253,
|
||||
"type": "TagDeclarator",
|
||||
"value": "seg07"
|
||||
},
|
||||
@ -461,9 +461,9 @@ description: Variables in memory after executing exhaust-manifold.kcl
|
||||
1.35
|
||||
],
|
||||
"tag": {
|
||||
"commentStart": 2362,
|
||||
"end": 2368,
|
||||
"start": 2362,
|
||||
"commentStart": 2310,
|
||||
"end": 2316,
|
||||
"start": 2310,
|
||||
"type": "TagDeclarator",
|
||||
"value": "seg08"
|
||||
},
|
||||
@ -486,9 +486,9 @@ description: Variables in memory after executing exhaust-manifold.kcl
|
||||
-1.25
|
||||
],
|
||||
"tag": {
|
||||
"commentStart": 2412,
|
||||
"end": 2418,
|
||||
"start": 2412,
|
||||
"commentStart": 2360,
|
||||
"end": 2366,
|
||||
"start": 2360,
|
||||
"type": "TagDeclarator",
|
||||
"value": "seg09"
|
||||
},
|
||||
|
@ -1,76 +1,76 @@
|
||||
```mermaid
|
||||
flowchart LR
|
||||
subgraph path2 [Path]
|
||||
2["Path<br>[1444, 1498, 0]"]
|
||||
3["Segment<br>[1504, 1536, 0]"]
|
||||
4["Segment<br>[1542, 1579, 0]"]
|
||||
5["Segment<br>[1585, 1618, 0]"]
|
||||
6["Segment<br>[1624, 1724, 0]"]
|
||||
7["Segment<br>[1730, 1737, 0]"]
|
||||
2["Path<br>[1445, 1499, 0]"]
|
||||
3["Segment<br>[1505, 1537, 0]"]
|
||||
4["Segment<br>[1543, 1580, 0]"]
|
||||
5["Segment<br>[1586, 1619, 0]"]
|
||||
6["Segment<br>[1625, 1725, 0]"]
|
||||
7["Segment<br>[1731, 1738, 0]"]
|
||||
8[Solid2d]
|
||||
end
|
||||
subgraph path9 [Path]
|
||||
9["Path<br>[1001, 1042, 0]"]
|
||||
10["Segment<br>[1050, 1090, 0]"]
|
||||
11["Segment<br>[1098, 1152, 0]"]
|
||||
12["Segment<br>[1160, 1201, 0]"]
|
||||
13["Segment<br>[1209, 1265, 0]"]
|
||||
14["Segment<br>[1273, 1280, 0]"]
|
||||
11["Segment<br>[1098, 1144, 0]"]
|
||||
12["Segment<br>[1152, 1193, 0]"]
|
||||
13["Segment<br>[1201, 1266, 0]"]
|
||||
14["Segment<br>[1274, 1281, 0]"]
|
||||
15[Solid2d]
|
||||
end
|
||||
subgraph path16 [Path]
|
||||
16["Path<br>[1001, 1042, 0]"]
|
||||
17["Segment<br>[1050, 1090, 0]"]
|
||||
18["Segment<br>[1098, 1152, 0]"]
|
||||
19["Segment<br>[1160, 1201, 0]"]
|
||||
20["Segment<br>[1209, 1265, 0]"]
|
||||
21["Segment<br>[1273, 1280, 0]"]
|
||||
18["Segment<br>[1098, 1144, 0]"]
|
||||
19["Segment<br>[1152, 1193, 0]"]
|
||||
20["Segment<br>[1201, 1266, 0]"]
|
||||
21["Segment<br>[1274, 1281, 0]"]
|
||||
22[Solid2d]
|
||||
end
|
||||
subgraph path23 [Path]
|
||||
23["Path<br>[1001, 1042, 0]"]
|
||||
24["Segment<br>[1050, 1090, 0]"]
|
||||
25["Segment<br>[1098, 1152, 0]"]
|
||||
26["Segment<br>[1160, 1201, 0]"]
|
||||
27["Segment<br>[1209, 1265, 0]"]
|
||||
28["Segment<br>[1273, 1280, 0]"]
|
||||
25["Segment<br>[1098, 1144, 0]"]
|
||||
26["Segment<br>[1152, 1193, 0]"]
|
||||
27["Segment<br>[1201, 1266, 0]"]
|
||||
28["Segment<br>[1274, 1281, 0]"]
|
||||
29[Solid2d]
|
||||
end
|
||||
subgraph path49 [Path]
|
||||
49["Path<br>[2740, 2793, 0]"]
|
||||
50["Segment<br>[2799, 2858, 0]"]
|
||||
51["Segment<br>[2864, 2899, 0]"]
|
||||
52["Segment<br>[2905, 2938, 0]"]
|
||||
53["Segment<br>[2944, 3003, 0]"]
|
||||
54["Segment<br>[3009, 3045, 0]"]
|
||||
55["Segment<br>[3051, 3075, 0]"]
|
||||
56["Segment<br>[3081, 3088, 0]"]
|
||||
49["Path<br>[2741, 2794, 0]"]
|
||||
50["Segment<br>[2800, 2859, 0]"]
|
||||
51["Segment<br>[2865, 2900, 0]"]
|
||||
52["Segment<br>[2906, 2939, 0]"]
|
||||
53["Segment<br>[2945, 3004, 0]"]
|
||||
54["Segment<br>[3010, 3046, 0]"]
|
||||
55["Segment<br>[3052, 3076, 0]"]
|
||||
56["Segment<br>[3082, 3089, 0]"]
|
||||
57[Solid2d]
|
||||
end
|
||||
subgraph path83 [Path]
|
||||
83["Path<br>[3707, 3754, 0]"]
|
||||
84["Segment<br>[3760, 3810, 0]"]
|
||||
85["Segment<br>[3816, 3915, 0]"]
|
||||
86["Segment<br>[3921, 3972, 0]"]
|
||||
87["Segment<br>[3978, 4076, 0]"]
|
||||
88["Segment<br>[4082, 4135, 0]"]
|
||||
89["Segment<br>[4141, 4241, 0]"]
|
||||
90["Segment<br>[4247, 4321, 0]"]
|
||||
91["Segment<br>[4327, 4428, 0]"]
|
||||
92["Segment<br>[4434, 4441, 0]"]
|
||||
83["Path<br>[3708, 3755, 0]"]
|
||||
84["Segment<br>[3761, 3811, 0]"]
|
||||
85["Segment<br>[3817, 3916, 0]"]
|
||||
86["Segment<br>[3922, 3973, 0]"]
|
||||
87["Segment<br>[3979, 4077, 0]"]
|
||||
88["Segment<br>[4083, 4136, 0]"]
|
||||
89["Segment<br>[4142, 4242, 0]"]
|
||||
90["Segment<br>[4248, 4322, 0]"]
|
||||
91["Segment<br>[4328, 4429, 0]"]
|
||||
92["Segment<br>[4435, 4442, 0]"]
|
||||
93[Solid2d]
|
||||
end
|
||||
subgraph path121 [Path]
|
||||
121["Path<br>[1001, 1042, 0]"]
|
||||
122["Segment<br>[1050, 1090, 0]"]
|
||||
123["Segment<br>[1098, 1152, 0]"]
|
||||
124["Segment<br>[1160, 1201, 0]"]
|
||||
125["Segment<br>[1209, 1265, 0]"]
|
||||
126["Segment<br>[1273, 1280, 0]"]
|
||||
123["Segment<br>[1098, 1144, 0]"]
|
||||
124["Segment<br>[1152, 1193, 0]"]
|
||||
125["Segment<br>[1201, 1266, 0]"]
|
||||
126["Segment<br>[1274, 1281, 0]"]
|
||||
127[Solid2d]
|
||||
end
|
||||
1["Plane<br>[1373, 1390, 0]"]
|
||||
30["Sweep Extrusion<br>[2312, 2362, 0]"]
|
||||
1["Plane<br>[1374, 1391, 0]"]
|
||||
30["Sweep Extrusion<br>[2313, 2363, 0]"]
|
||||
31[Wall]
|
||||
32[Wall]
|
||||
33[Wall]
|
||||
@ -88,8 +88,8 @@ flowchart LR
|
||||
45["SweepEdge Adjacent"]
|
||||
46["SweepEdge Opposite"]
|
||||
47["SweepEdge Adjacent"]
|
||||
48["Plane<br>[2637, 2679, 0]"]
|
||||
58["Sweep Extrusion<br>[3122, 3166, 0]"]
|
||||
48["Plane<br>[2638, 2680, 0]"]
|
||||
58["Sweep Extrusion<br>[3123, 3167, 0]"]
|
||||
59[Wall]
|
||||
60[Wall]
|
||||
61[Wall]
|
||||
@ -113,8 +113,8 @@ flowchart LR
|
||||
79["SweepEdge Adjacent"]
|
||||
80["SweepEdge Opposite"]
|
||||
81["SweepEdge Adjacent"]
|
||||
82["Plane<br>[3633, 3659, 0]"]
|
||||
94["Sweep Extrusion<br>[4497, 4539, 0]"]
|
||||
82["Plane<br>[3634, 3660, 0]"]
|
||||
94["Sweep Extrusion<br>[4498, 4540, 0]"]
|
||||
95[Wall]
|
||||
96[Wall]
|
||||
97[Wall]
|
||||
@ -141,7 +141,7 @@ flowchart LR
|
||||
118["SweepEdge Adjacent"]
|
||||
119["SweepEdge Opposite"]
|
||||
120["SweepEdge Adjacent"]
|
||||
128["Sweep Extrusion<br>[4767, 4817, 0]"]
|
||||
128["Sweep Extrusion<br>[4768, 4818, 0]"]
|
||||
129[Wall]
|
||||
130[Wall]
|
||||
131[Wall]
|
||||
@ -154,12 +154,12 @@ flowchart LR
|
||||
138["SweepEdge Adjacent"]
|
||||
139["SweepEdge Opposite"]
|
||||
140["SweepEdge Adjacent"]
|
||||
141["EdgeCut Fillet<br>[2399, 2540, 0]"]
|
||||
142["EdgeCut Fillet<br>[2399, 2540, 0]"]
|
||||
143["EdgeCut Fillet<br>[3209, 3340, 0]"]
|
||||
144["EdgeCut Fillet<br>[3209, 3340, 0]"]
|
||||
145["StartSketchOnPlane<br>[2623, 2680, 0]"]
|
||||
146["StartSketchOnFace<br>[4598, 4630, 0]"]
|
||||
141["EdgeCut Fillet<br>[2400, 2541, 0]"]
|
||||
142["EdgeCut Fillet<br>[2400, 2541, 0]"]
|
||||
143["EdgeCut Fillet<br>[3210, 3341, 0]"]
|
||||
144["EdgeCut Fillet<br>[3210, 3341, 0]"]
|
||||
145["StartSketchOnPlane<br>[2624, 2681, 0]"]
|
||||
146["StartSketchOnFace<br>[4599, 4631, 0]"]
|
||||
1 --- 2
|
||||
1 --- 9
|
||||
1 --- 16
|
||||
|
@ -1887,22 +1887,15 @@ description: Result of parsing food-service-spatula.kcl
|
||||
{
|
||||
"arguments": [
|
||||
{
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"properties": [
|
||||
{
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"key": {
|
||||
"type": "LabeledArg",
|
||||
"label": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"name": "radius",
|
||||
"start": 0,
|
||||
"type": "Identifier"
|
||||
},
|
||||
"start": 0,
|
||||
"type": "ObjectProperty",
|
||||
"value": {
|
||||
"arg": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"left": {
|
||||
@ -1940,18 +1933,15 @@ description: Result of parsing food-service-spatula.kcl
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "LabeledArg",
|
||||
"label": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"key": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"name": "offset",
|
||||
"name": "angle",
|
||||
"start": 0,
|
||||
"type": "Identifier"
|
||||
},
|
||||
"start": 0,
|
||||
"type": "ObjectProperty",
|
||||
"value": {
|
||||
"arg": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"raw": "180",
|
||||
@ -1965,18 +1955,6 @@ description: Result of parsing food-service-spatula.kcl
|
||||
}
|
||||
}
|
||||
],
|
||||
"start": 0,
|
||||
"type": "ObjectExpression",
|
||||
"type": "ObjectExpression"
|
||||
},
|
||||
{
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"start": 0,
|
||||
"type": "PipeSubstitution",
|
||||
"type": "PipeSubstitution"
|
||||
}
|
||||
],
|
||||
"callee": {
|
||||
"abs_path": false,
|
||||
"commentStart": 0,
|
||||
@ -1995,8 +1973,9 @@ description: Result of parsing food-service-spatula.kcl
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"start": 0,
|
||||
"type": "CallExpression",
|
||||
"type": "CallExpression"
|
||||
"type": "CallExpressionKw",
|
||||
"type": "CallExpressionKw",
|
||||
"unlabeled": null
|
||||
},
|
||||
{
|
||||
"arguments": [
|
||||
@ -2086,6 +2065,15 @@ description: Result of parsing food-service-spatula.kcl
|
||||
{
|
||||
"arguments": [
|
||||
{
|
||||
"type": "LabeledArg",
|
||||
"label": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"name": "endAbsolute",
|
||||
"start": 0,
|
||||
"type": "Identifier"
|
||||
},
|
||||
"arg": {
|
||||
"commentStart": 0,
|
||||
"elements": [
|
||||
{
|
||||
@ -2155,13 +2143,7 @@ description: Result of parsing food-service-spatula.kcl
|
||||
"start": 0,
|
||||
"type": "ArrayExpression",
|
||||
"type": "ArrayExpression"
|
||||
},
|
||||
{
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"start": 0,
|
||||
"type": "PipeSubstitution",
|
||||
"type": "PipeSubstitution"
|
||||
}
|
||||
}
|
||||
],
|
||||
"callee": {
|
||||
@ -2171,7 +2153,7 @@ description: Result of parsing food-service-spatula.kcl
|
||||
"name": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"name": "tangentialArcTo",
|
||||
"name": "tangentialArc",
|
||||
"start": 0,
|
||||
"type": "Identifier"
|
||||
},
|
||||
@ -2182,8 +2164,9 @@ description: Result of parsing food-service-spatula.kcl
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"start": 0,
|
||||
"type": "CallExpression",
|
||||
"type": "CallExpression"
|
||||
"type": "CallExpressionKw",
|
||||
"type": "CallExpressionKw",
|
||||
"unlabeled": null
|
||||
},
|
||||
{
|
||||
"arguments": [],
|
||||
|
@ -25,7 +25,7 @@ description: Operations executed food-service-spatula.kcl
|
||||
"name": "slot",
|
||||
"functionSourceRange": [
|
||||
462,
|
||||
1302,
|
||||
1303,
|
||||
0
|
||||
],
|
||||
"unlabeledArg": null,
|
||||
@ -79,7 +79,7 @@ description: Operations executed food-service-spatula.kcl
|
||||
"name": "slot",
|
||||
"functionSourceRange": [
|
||||
462,
|
||||
1302,
|
||||
1303,
|
||||
0
|
||||
],
|
||||
"unlabeledArg": null,
|
||||
@ -133,7 +133,7 @@ description: Operations executed food-service-spatula.kcl
|
||||
"name": "slot",
|
||||
"functionSourceRange": [
|
||||
462,
|
||||
1302,
|
||||
1303,
|
||||
0
|
||||
],
|
||||
"unlabeledArg": null,
|
||||
@ -719,7 +719,7 @@ description: Operations executed food-service-spatula.kcl
|
||||
"name": "slot",
|
||||
"functionSourceRange": [
|
||||
462,
|
||||
1302,
|
||||
1303,
|
||||
0
|
||||
],
|
||||
"unlabeledArg": null,
|
||||
|
@ -27,9 +27,9 @@ description: Variables in memory after executing food-service-spatula.kcl
|
||||
"id": "[uuid]",
|
||||
"sourceRange": [],
|
||||
"tag": {
|
||||
"commentStart": 1569,
|
||||
"end": 1578,
|
||||
"start": 1569,
|
||||
"commentStart": 1570,
|
||||
"end": 1579,
|
||||
"start": 1570,
|
||||
"type": "TagDeclarator",
|
||||
"value": "backEdge"
|
||||
},
|
||||
@ -90,9 +90,9 @@ description: Variables in memory after executing food-service-spatula.kcl
|
||||
-30.0
|
||||
],
|
||||
"tag": {
|
||||
"commentStart": 1569,
|
||||
"end": 1578,
|
||||
"start": 1569,
|
||||
"commentStart": 1570,
|
||||
"end": 1579,
|
||||
"start": 1570,
|
||||
"type": "TagDeclarator",
|
||||
"value": "backEdge"
|
||||
},
|
||||
@ -297,9 +297,9 @@ description: Variables in memory after executing food-service-spatula.kcl
|
||||
-30.0
|
||||
],
|
||||
"tag": {
|
||||
"commentStart": 1569,
|
||||
"end": 1578,
|
||||
"start": 1569,
|
||||
"commentStart": 1570,
|
||||
"end": 1579,
|
||||
"start": 1570,
|
||||
"type": "TagDeclarator",
|
||||
"value": "backEdge"
|
||||
},
|
||||
@ -547,9 +547,9 @@ description: Variables in memory after executing food-service-spatula.kcl
|
||||
"id": "[uuid]",
|
||||
"sourceRange": [],
|
||||
"tag": {
|
||||
"commentStart": 4308,
|
||||
"end": 4320,
|
||||
"start": 4308,
|
||||
"commentStart": 4309,
|
||||
"end": 4321,
|
||||
"start": 4309,
|
||||
"type": "TagDeclarator",
|
||||
"value": "gripEdgeTop"
|
||||
},
|
||||
@ -709,9 +709,9 @@ description: Variables in memory after executing food-service-spatula.kcl
|
||||
7.0
|
||||
],
|
||||
"tag": {
|
||||
"commentStart": 4308,
|
||||
"end": 4320,
|
||||
"start": 4308,
|
||||
"commentStart": 4309,
|
||||
"end": 4321,
|
||||
"start": 4309,
|
||||
"type": "TagDeclarator",
|
||||
"value": "gripEdgeTop"
|
||||
},
|
||||
@ -1051,9 +1051,9 @@ description: Variables in memory after executing food-service-spatula.kcl
|
||||
"id": "[uuid]",
|
||||
"sourceRange": [],
|
||||
"tag": {
|
||||
"commentStart": 4308,
|
||||
"end": 4320,
|
||||
"start": 4308,
|
||||
"commentStart": 4309,
|
||||
"end": 4321,
|
||||
"start": 4309,
|
||||
"type": "TagDeclarator",
|
||||
"value": "gripEdgeTop"
|
||||
},
|
||||
@ -1213,9 +1213,9 @@ description: Variables in memory after executing food-service-spatula.kcl
|
||||
7.0
|
||||
],
|
||||
"tag": {
|
||||
"commentStart": 4308,
|
||||
"end": 4320,
|
||||
"start": 4308,
|
||||
"commentStart": 4309,
|
||||
"end": 4321,
|
||||
"start": 4309,
|
||||
"type": "TagDeclarator",
|
||||
"value": "gripEdgeTop"
|
||||
},
|
||||
@ -1529,9 +1529,9 @@ description: Variables in memory after executing food-service-spatula.kcl
|
||||
7.0
|
||||
],
|
||||
"tag": {
|
||||
"commentStart": 4308,
|
||||
"end": 4320,
|
||||
"start": 4308,
|
||||
"commentStart": 4309,
|
||||
"end": 4321,
|
||||
"start": 4309,
|
||||
"type": "TagDeclarator",
|
||||
"value": "gripEdgeTop"
|
||||
},
|
||||
@ -1718,9 +1718,9 @@ description: Variables in memory after executing food-service-spatula.kcl
|
||||
"id": "[uuid]",
|
||||
"sourceRange": [],
|
||||
"tag": {
|
||||
"commentStart": 2840,
|
||||
"end": 2857,
|
||||
"start": 2840,
|
||||
"commentStart": 2841,
|
||||
"end": 2858,
|
||||
"start": 2841,
|
||||
"type": "TagDeclarator",
|
||||
"value": "handleBottomEdge"
|
||||
},
|
||||
@ -1745,9 +1745,9 @@ description: Variables in memory after executing food-service-spatula.kcl
|
||||
"id": "[uuid]",
|
||||
"sourceRange": [],
|
||||
"tag": {
|
||||
"commentStart": 2988,
|
||||
"end": 3002,
|
||||
"start": 2988,
|
||||
"commentStart": 2989,
|
||||
"end": 3003,
|
||||
"start": 2989,
|
||||
"type": "TagDeclarator",
|
||||
"value": "handleTopEdge"
|
||||
},
|
||||
@ -1789,9 +1789,9 @@ description: Variables in memory after executing food-service-spatula.kcl
|
||||
3.5
|
||||
],
|
||||
"tag": {
|
||||
"commentStart": 2840,
|
||||
"end": 2857,
|
||||
"start": 2840,
|
||||
"commentStart": 2841,
|
||||
"end": 2858,
|
||||
"start": 2841,
|
||||
"type": "TagDeclarator",
|
||||
"value": "handleBottomEdge"
|
||||
},
|
||||
@ -1852,9 +1852,9 @@ description: Variables in memory after executing food-service-spatula.kcl
|
||||
91.3213
|
||||
],
|
||||
"tag": {
|
||||
"commentStart": 2988,
|
||||
"end": 3002,
|
||||
"start": 2988,
|
||||
"commentStart": 2989,
|
||||
"end": 3003,
|
||||
"start": 2989,
|
||||
"type": "TagDeclarator",
|
||||
"value": "handleTopEdge"
|
||||
},
|
||||
@ -2203,9 +2203,9 @@ description: Variables in memory after executing food-service-spatula.kcl
|
||||
3.5
|
||||
],
|
||||
"tag": {
|
||||
"commentStart": 2840,
|
||||
"end": 2857,
|
||||
"start": 2840,
|
||||
"commentStart": 2841,
|
||||
"end": 2858,
|
||||
"start": 2841,
|
||||
"type": "TagDeclarator",
|
||||
"value": "handleBottomEdge"
|
||||
},
|
||||
@ -2266,9 +2266,9 @@ description: Variables in memory after executing food-service-spatula.kcl
|
||||
91.3213
|
||||
],
|
||||
"tag": {
|
||||
"commentStart": 2988,
|
||||
"end": 3002,
|
||||
"start": 2988,
|
||||
"commentStart": 2989,
|
||||
"end": 3003,
|
||||
"start": 2989,
|
||||
"type": "TagDeclarator",
|
||||
"value": "handleTopEdge"
|
||||
},
|
||||
@ -2525,9 +2525,9 @@ description: Variables in memory after executing food-service-spatula.kcl
|
||||
"id": "[uuid]",
|
||||
"sourceRange": [],
|
||||
"tag": {
|
||||
"commentStart": 4308,
|
||||
"end": 4320,
|
||||
"start": 4308,
|
||||
"commentStart": 4309,
|
||||
"end": 4321,
|
||||
"start": 4309,
|
||||
"type": "TagDeclarator",
|
||||
"value": "gripEdgeTop"
|
||||
},
|
||||
@ -2687,9 +2687,9 @@ description: Variables in memory after executing food-service-spatula.kcl
|
||||
7.0
|
||||
],
|
||||
"tag": {
|
||||
"commentStart": 4308,
|
||||
"end": 4320,
|
||||
"start": 4308,
|
||||
"commentStart": 4309,
|
||||
"end": 4321,
|
||||
"start": 4309,
|
||||
"type": "TagDeclarator",
|
||||
"value": "gripEdgeTop"
|
||||
},
|
||||
@ -3354,9 +3354,9 @@ description: Variables in memory after executing food-service-spatula.kcl
|
||||
-30.0
|
||||
],
|
||||
"tag": {
|
||||
"commentStart": 1569,
|
||||
"end": 1578,
|
||||
"start": 1569,
|
||||
"commentStart": 1570,
|
||||
"end": 1579,
|
||||
"start": 1570,
|
||||
"type": "TagDeclarator",
|
||||
"value": "backEdge"
|
||||
},
|
||||
|
@ -61,63 +61,63 @@ flowchart LR
|
||||
143["Segment<br>[3558, 3576, 0]"]
|
||||
144["Segment<br>[3582, 3602, 0]"]
|
||||
145["Segment<br>[3608, 3628, 0]"]
|
||||
146["Segment<br>[3634, 3682, 0]"]
|
||||
147["Segment<br>[3688, 3744, 0]"]
|
||||
148["Segment<br>[3750, 3757, 0]"]
|
||||
146["Segment<br>[3634, 3674, 0]"]
|
||||
147["Segment<br>[3680, 3736, 0]"]
|
||||
148["Segment<br>[3742, 3749, 0]"]
|
||||
149[Solid2d]
|
||||
end
|
||||
subgraph path166 [Path]
|
||||
166["Path<br>[3861, 3920, 0]"]
|
||||
167["Segment<br>[3861, 3920, 0]"]
|
||||
166["Path<br>[3853, 3912, 0]"]
|
||||
167["Segment<br>[3853, 3912, 0]"]
|
||||
168[Solid2d]
|
||||
end
|
||||
subgraph path169 [Path]
|
||||
169["Path<br>[3931, 3968, 0]"]
|
||||
170["Segment<br>[3931, 3968, 0]"]
|
||||
169["Path<br>[3923, 3960, 0]"]
|
||||
170["Segment<br>[3923, 3960, 0]"]
|
||||
171[Solid2d]
|
||||
end
|
||||
subgraph path178 [Path]
|
||||
178["Path<br>[4110, 4148, 0]"]
|
||||
179["Segment<br>[4110, 4148, 0]"]
|
||||
178["Path<br>[4102, 4140, 0]"]
|
||||
179["Segment<br>[4102, 4140, 0]"]
|
||||
180[Solid2d]
|
||||
end
|
||||
subgraph path192 [Path]
|
||||
192["Path<br>[4421, 4459, 0]"]
|
||||
193["Segment<br>[4421, 4459, 0]"]
|
||||
192["Path<br>[4413, 4451, 0]"]
|
||||
193["Segment<br>[4413, 4451, 0]"]
|
||||
194[Solid2d]
|
||||
end
|
||||
subgraph path203 [Path]
|
||||
203["Path<br>[4711, 4763, 0]"]
|
||||
204["Segment<br>[4711, 4763, 0]"]
|
||||
203["Path<br>[4703, 4755, 0]"]
|
||||
204["Segment<br>[4703, 4755, 0]"]
|
||||
205[Solid2d]
|
||||
end
|
||||
subgraph path213 [Path]
|
||||
213["Path<br>[5010, 5054, 0]"]
|
||||
214["Segment<br>[5060, 5100, 0]"]
|
||||
215["Segment<br>[5106, 5125, 0]"]
|
||||
216["Segment<br>[5131, 5150, 0]"]
|
||||
217["Segment<br>[5156, 5175, 0]"]
|
||||
218["Segment<br>[5181, 5206, 0]"]
|
||||
219["Segment<br>[5212, 5352, 0]"]
|
||||
220["Segment<br>[5358, 5414, 0]"]
|
||||
221["Segment<br>[5420, 5427, 0]"]
|
||||
213["Path<br>[5002, 5046, 0]"]
|
||||
214["Segment<br>[5052, 5092, 0]"]
|
||||
215["Segment<br>[5098, 5117, 0]"]
|
||||
216["Segment<br>[5123, 5142, 0]"]
|
||||
217["Segment<br>[5148, 5167, 0]"]
|
||||
218["Segment<br>[5173, 5198, 0]"]
|
||||
219["Segment<br>[5204, 5344, 0]"]
|
||||
220["Segment<br>[5350, 5406, 0]"]
|
||||
221["Segment<br>[5412, 5419, 0]"]
|
||||
222[Solid2d]
|
||||
end
|
||||
subgraph path239 [Path]
|
||||
239["Path<br>[5557, 5586, 0]"]
|
||||
240["Segment<br>[5592, 5613, 0]"]
|
||||
241["Segment<br>[5619, 5650, 0]"]
|
||||
242["Segment<br>[5656, 5687, 0]"]
|
||||
243["Segment<br>[5693, 5725, 0]"]
|
||||
244["Segment<br>[5731, 5753, 0]"]
|
||||
245["Segment<br>[5759, 5780, 0]"]
|
||||
246["Segment<br>[5786, 5811, 0]"]
|
||||
247["Segment<br>[5817, 5848, 0]"]
|
||||
248["Segment<br>[5854, 5886, 0]"]
|
||||
249["Segment<br>[5892, 5924, 0]"]
|
||||
250["Segment<br>[5930, 5951, 0]"]
|
||||
251["Segment<br>[5957, 6013, 0]"]
|
||||
252["Segment<br>[6019, 6026, 0]"]
|
||||
239["Path<br>[5549, 5578, 0]"]
|
||||
240["Segment<br>[5584, 5605, 0]"]
|
||||
241["Segment<br>[5611, 5651, 0]"]
|
||||
242["Segment<br>[5657, 5697, 0]"]
|
||||
243["Segment<br>[5703, 5744, 0]"]
|
||||
244["Segment<br>[5750, 5772, 0]"]
|
||||
245["Segment<br>[5778, 5799, 0]"]
|
||||
246["Segment<br>[5805, 5830, 0]"]
|
||||
247["Segment<br>[5836, 5876, 0]"]
|
||||
248["Segment<br>[5882, 5923, 0]"]
|
||||
249["Segment<br>[5929, 5970, 0]"]
|
||||
250["Segment<br>[5976, 5997, 0]"]
|
||||
251["Segment<br>[6003, 6059, 0]"]
|
||||
252["Segment<br>[6065, 6072, 0]"]
|
||||
253[Solid2d]
|
||||
end
|
||||
1["Plane<br>[242, 259, 0]"]
|
||||
@ -215,7 +215,7 @@ flowchart LR
|
||||
137["SweepEdge Adjacent"]
|
||||
138["SweepEdge Adjacent"]
|
||||
139["Plane<br>[3427, 3444, 0]"]
|
||||
150["Sweep Revolve<br>[3763, 3780, 0]"]
|
||||
150["Sweep Revolve<br>[3755, 3772, 0]"]
|
||||
151[Wall]
|
||||
152[Wall]
|
||||
153[Wall]
|
||||
@ -230,40 +230,40 @@ flowchart LR
|
||||
162["SweepEdge Adjacent"]
|
||||
163["SweepEdge Adjacent"]
|
||||
164["SweepEdge Adjacent"]
|
||||
165["Plane<br>[3824, 3854, 0]"]
|
||||
172["Sweep Extrusion<br>[3987, 4021, 0]"]
|
||||
165["Plane<br>[3816, 3846, 0]"]
|
||||
172["Sweep Extrusion<br>[3979, 4013, 0]"]
|
||||
173[Wall]
|
||||
174["Cap Start"]
|
||||
175["Cap End"]
|
||||
176["SweepEdge Opposite"]
|
||||
177["SweepEdge Adjacent"]
|
||||
181["Sweep Extrusion<br>[4297, 4332, 0]"]
|
||||
181["Sweep Extrusion<br>[4289, 4324, 0]"]
|
||||
182[Wall]
|
||||
183["SweepEdge Opposite"]
|
||||
184["SweepEdge Adjacent"]
|
||||
185["Sweep Extrusion<br>[4297, 4332, 0]"]
|
||||
186["Sweep Extrusion<br>[4297, 4332, 0]"]
|
||||
187["Sweep Extrusion<br>[4297, 4332, 0]"]
|
||||
188["Sweep Extrusion<br>[4297, 4332, 0]"]
|
||||
189["Sweep Extrusion<br>[4297, 4332, 0]"]
|
||||
190["Sweep Extrusion<br>[4297, 4332, 0]"]
|
||||
191["Sweep Extrusion<br>[4297, 4332, 0]"]
|
||||
195["Sweep Extrusion<br>[4608, 4643, 0]"]
|
||||
185["Sweep Extrusion<br>[4289, 4324, 0]"]
|
||||
186["Sweep Extrusion<br>[4289, 4324, 0]"]
|
||||
187["Sweep Extrusion<br>[4289, 4324, 0]"]
|
||||
188["Sweep Extrusion<br>[4289, 4324, 0]"]
|
||||
189["Sweep Extrusion<br>[4289, 4324, 0]"]
|
||||
190["Sweep Extrusion<br>[4289, 4324, 0]"]
|
||||
191["Sweep Extrusion<br>[4289, 4324, 0]"]
|
||||
195["Sweep Extrusion<br>[4600, 4635, 0]"]
|
||||
196[Wall]
|
||||
197["SweepEdge Opposite"]
|
||||
198["SweepEdge Adjacent"]
|
||||
199["Sweep Extrusion<br>[4608, 4643, 0]"]
|
||||
200["Sweep Extrusion<br>[4608, 4643, 0]"]
|
||||
201["Sweep Extrusion<br>[4608, 4643, 0]"]
|
||||
202["Plane<br>[4688, 4705, 0]"]
|
||||
206["Sweep Extrusion<br>[4859, 4900, 0]"]
|
||||
199["Sweep Extrusion<br>[4600, 4635, 0]"]
|
||||
200["Sweep Extrusion<br>[4600, 4635, 0]"]
|
||||
201["Sweep Extrusion<br>[4600, 4635, 0]"]
|
||||
202["Plane<br>[4680, 4697, 0]"]
|
||||
206["Sweep Extrusion<br>[4851, 4892, 0]"]
|
||||
207[Wall]
|
||||
208["Cap Start"]
|
||||
209["Cap End"]
|
||||
210["SweepEdge Opposite"]
|
||||
211["SweepEdge Adjacent"]
|
||||
212["Plane<br>[4987, 5004, 0]"]
|
||||
223["Sweep Revolve<br>[5433, 5450, 0]"]
|
||||
212["Plane<br>[4979, 4996, 0]"]
|
||||
223["Sweep Revolve<br>[5425, 5442, 0]"]
|
||||
224[Wall]
|
||||
225[Wall]
|
||||
226[Wall]
|
||||
@ -278,8 +278,8 @@ flowchart LR
|
||||
235["SweepEdge Adjacent"]
|
||||
236["SweepEdge Adjacent"]
|
||||
237["SweepEdge Adjacent"]
|
||||
238["Plane<br>[5505, 5550, 0]"]
|
||||
254["Sweep Extrusion<br>[6040, 6085, 0]"]
|
||||
238["Plane<br>[5497, 5542, 0]"]
|
||||
254["Sweep Extrusion<br>[6086, 6131, 0]"]
|
||||
255[Wall]
|
||||
256[Wall]
|
||||
257[Wall]
|
||||
@ -320,10 +320,10 @@ flowchart LR
|
||||
292["SweepEdge Adjacent"]
|
||||
293["StartSketchOnPlane<br>[2337, 2379, 0]"]
|
||||
294["StartSketchOnFace<br>[2507, 2539, 0]"]
|
||||
295["StartSketchOnPlane<br>[3810, 3855, 0]"]
|
||||
296["StartSketchOnFace<br>[4072, 4104, 0]"]
|
||||
297["StartSketchOnFace<br>[4383, 4415, 0]"]
|
||||
298["StartSketchOnPlane<br>[5491, 5551, 0]"]
|
||||
295["StartSketchOnPlane<br>[3802, 3847, 0]"]
|
||||
296["StartSketchOnFace<br>[4064, 4096, 0]"]
|
||||
297["StartSketchOnFace<br>[4375, 4407, 0]"]
|
||||
298["StartSketchOnPlane<br>[5483, 5543, 0]"]
|
||||
1 --- 2
|
||||
2 --- 3
|
||||
2 --- 4
|
||||
|
@ -5466,22 +5466,15 @@ description: Result of parsing french-press.kcl
|
||||
{
|
||||
"arguments": [
|
||||
{
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"properties": [
|
||||
{
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"key": {
|
||||
"type": "LabeledArg",
|
||||
"label": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"name": "radius",
|
||||
"start": 0,
|
||||
"type": "Identifier"
|
||||
},
|
||||
"start": 0,
|
||||
"type": "ObjectProperty",
|
||||
"value": {
|
||||
"arg": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"raw": "0.6",
|
||||
@ -5495,18 +5488,15 @@ description: Result of parsing french-press.kcl
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "LabeledArg",
|
||||
"label": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"key": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"name": "offset",
|
||||
"name": "angle",
|
||||
"start": 0,
|
||||
"type": "Identifier"
|
||||
},
|
||||
"start": 0,
|
||||
"type": "ObjectProperty",
|
||||
"value": {
|
||||
"arg": {
|
||||
"argument": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
@ -5528,18 +5518,6 @@ description: Result of parsing french-press.kcl
|
||||
}
|
||||
}
|
||||
],
|
||||
"start": 0,
|
||||
"type": "ObjectExpression",
|
||||
"type": "ObjectExpression"
|
||||
},
|
||||
{
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"start": 0,
|
||||
"type": "PipeSubstitution",
|
||||
"type": "PipeSubstitution"
|
||||
}
|
||||
],
|
||||
"callee": {
|
||||
"abs_path": false,
|
||||
"commentStart": 0,
|
||||
@ -5558,8 +5536,9 @@ description: Result of parsing french-press.kcl
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"start": 0,
|
||||
"type": "CallExpression",
|
||||
"type": "CallExpression"
|
||||
"type": "CallExpressionKw",
|
||||
"type": "CallExpressionKw",
|
||||
"unlabeled": null
|
||||
},
|
||||
{
|
||||
"arguments": [
|
||||
@ -8602,6 +8581,15 @@ description: Result of parsing french-press.kcl
|
||||
{
|
||||
"arguments": [
|
||||
{
|
||||
"type": "LabeledArg",
|
||||
"label": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"name": "endAbsolute",
|
||||
"start": 0,
|
||||
"type": "Identifier"
|
||||
},
|
||||
"arg": {
|
||||
"commentStart": 0,
|
||||
"elements": [
|
||||
{
|
||||
@ -8633,13 +8621,7 @@ description: Result of parsing french-press.kcl
|
||||
"start": 0,
|
||||
"type": "ArrayExpression",
|
||||
"type": "ArrayExpression"
|
||||
},
|
||||
{
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"start": 0,
|
||||
"type": "PipeSubstitution",
|
||||
"type": "PipeSubstitution"
|
||||
}
|
||||
}
|
||||
],
|
||||
"callee": {
|
||||
@ -8649,7 +8631,7 @@ description: Result of parsing french-press.kcl
|
||||
"name": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"name": "tangentialArcTo",
|
||||
"name": "tangentialArc",
|
||||
"start": 0,
|
||||
"type": "Identifier"
|
||||
},
|
||||
@ -8660,12 +8642,22 @@ description: Result of parsing french-press.kcl
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"start": 0,
|
||||
"type": "CallExpression",
|
||||
"type": "CallExpression"
|
||||
"type": "CallExpressionKw",
|
||||
"type": "CallExpressionKw",
|
||||
"unlabeled": null
|
||||
},
|
||||
{
|
||||
"arguments": [
|
||||
{
|
||||
"type": "LabeledArg",
|
||||
"label": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"name": "endAbsolute",
|
||||
"start": 0,
|
||||
"type": "Identifier"
|
||||
},
|
||||
"arg": {
|
||||
"commentStart": 0,
|
||||
"elements": [
|
||||
{
|
||||
@ -8697,13 +8689,7 @@ description: Result of parsing french-press.kcl
|
||||
"start": 0,
|
||||
"type": "ArrayExpression",
|
||||
"type": "ArrayExpression"
|
||||
},
|
||||
{
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"start": 0,
|
||||
"type": "PipeSubstitution",
|
||||
"type": "PipeSubstitution"
|
||||
}
|
||||
}
|
||||
],
|
||||
"callee": {
|
||||
@ -8713,7 +8699,7 @@ description: Result of parsing french-press.kcl
|
||||
"name": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"name": "tangentialArcTo",
|
||||
"name": "tangentialArc",
|
||||
"start": 0,
|
||||
"type": "Identifier"
|
||||
},
|
||||
@ -8724,12 +8710,22 @@ description: Result of parsing french-press.kcl
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"start": 0,
|
||||
"type": "CallExpression",
|
||||
"type": "CallExpression"
|
||||
"type": "CallExpressionKw",
|
||||
"type": "CallExpressionKw",
|
||||
"unlabeled": null
|
||||
},
|
||||
{
|
||||
"arguments": [
|
||||
{
|
||||
"type": "LabeledArg",
|
||||
"label": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"name": "endAbsolute",
|
||||
"start": 0,
|
||||
"type": "Identifier"
|
||||
},
|
||||
"arg": {
|
||||
"commentStart": 0,
|
||||
"elements": [
|
||||
{
|
||||
@ -8761,13 +8757,7 @@ description: Result of parsing french-press.kcl
|
||||
"start": 0,
|
||||
"type": "ArrayExpression",
|
||||
"type": "ArrayExpression"
|
||||
},
|
||||
{
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"start": 0,
|
||||
"type": "PipeSubstitution",
|
||||
"type": "PipeSubstitution"
|
||||
}
|
||||
}
|
||||
],
|
||||
"callee": {
|
||||
@ -8777,7 +8767,7 @@ description: Result of parsing french-press.kcl
|
||||
"name": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"name": "tangentialArcTo",
|
||||
"name": "tangentialArc",
|
||||
"start": 0,
|
||||
"type": "Identifier"
|
||||
},
|
||||
@ -8788,8 +8778,9 @@ description: Result of parsing french-press.kcl
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"start": 0,
|
||||
"type": "CallExpression",
|
||||
"type": "CallExpression"
|
||||
"type": "CallExpressionKw",
|
||||
"type": "CallExpressionKw",
|
||||
"unlabeled": null
|
||||
},
|
||||
{
|
||||
"arguments": [
|
||||
@ -9014,6 +9005,15 @@ description: Result of parsing french-press.kcl
|
||||
{
|
||||
"arguments": [
|
||||
{
|
||||
"type": "LabeledArg",
|
||||
"label": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"name": "endAbsolute",
|
||||
"start": 0,
|
||||
"type": "Identifier"
|
||||
},
|
||||
"arg": {
|
||||
"commentStart": 0,
|
||||
"elements": [
|
||||
{
|
||||
@ -9045,13 +9045,7 @@ description: Result of parsing french-press.kcl
|
||||
"start": 0,
|
||||
"type": "ArrayExpression",
|
||||
"type": "ArrayExpression"
|
||||
},
|
||||
{
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"start": 0,
|
||||
"type": "PipeSubstitution",
|
||||
"type": "PipeSubstitution"
|
||||
}
|
||||
}
|
||||
],
|
||||
"callee": {
|
||||
@ -9061,7 +9055,7 @@ description: Result of parsing french-press.kcl
|
||||
"name": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"name": "tangentialArcTo",
|
||||
"name": "tangentialArc",
|
||||
"start": 0,
|
||||
"type": "Identifier"
|
||||
},
|
||||
@ -9072,12 +9066,22 @@ description: Result of parsing french-press.kcl
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"start": 0,
|
||||
"type": "CallExpression",
|
||||
"type": "CallExpression"
|
||||
"type": "CallExpressionKw",
|
||||
"type": "CallExpressionKw",
|
||||
"unlabeled": null
|
||||
},
|
||||
{
|
||||
"arguments": [
|
||||
{
|
||||
"type": "LabeledArg",
|
||||
"label": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"name": "endAbsolute",
|
||||
"start": 0,
|
||||
"type": "Identifier"
|
||||
},
|
||||
"arg": {
|
||||
"commentStart": 0,
|
||||
"elements": [
|
||||
{
|
||||
@ -9109,13 +9113,7 @@ description: Result of parsing french-press.kcl
|
||||
"start": 0,
|
||||
"type": "ArrayExpression",
|
||||
"type": "ArrayExpression"
|
||||
},
|
||||
{
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"start": 0,
|
||||
"type": "PipeSubstitution",
|
||||
"type": "PipeSubstitution"
|
||||
}
|
||||
}
|
||||
],
|
||||
"callee": {
|
||||
@ -9125,7 +9123,7 @@ description: Result of parsing french-press.kcl
|
||||
"name": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"name": "tangentialArcTo",
|
||||
"name": "tangentialArc",
|
||||
"start": 0,
|
||||
"type": "Identifier"
|
||||
},
|
||||
@ -9136,12 +9134,22 @@ description: Result of parsing french-press.kcl
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"start": 0,
|
||||
"type": "CallExpression",
|
||||
"type": "CallExpression"
|
||||
"type": "CallExpressionKw",
|
||||
"type": "CallExpressionKw",
|
||||
"unlabeled": null
|
||||
},
|
||||
{
|
||||
"arguments": [
|
||||
{
|
||||
"type": "LabeledArg",
|
||||
"label": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"name": "endAbsolute",
|
||||
"start": 0,
|
||||
"type": "Identifier"
|
||||
},
|
||||
"arg": {
|
||||
"commentStart": 0,
|
||||
"elements": [
|
||||
{
|
||||
@ -9173,13 +9181,7 @@ description: Result of parsing french-press.kcl
|
||||
"start": 0,
|
||||
"type": "ArrayExpression",
|
||||
"type": "ArrayExpression"
|
||||
},
|
||||
{
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"start": 0,
|
||||
"type": "PipeSubstitution",
|
||||
"type": "PipeSubstitution"
|
||||
}
|
||||
}
|
||||
],
|
||||
"callee": {
|
||||
@ -9189,7 +9191,7 @@ description: Result of parsing french-press.kcl
|
||||
"name": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"name": "tangentialArcTo",
|
||||
"name": "tangentialArc",
|
||||
"start": 0,
|
||||
"type": "Identifier"
|
||||
},
|
||||
@ -9200,8 +9202,9 @@ description: Result of parsing french-press.kcl
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"start": 0,
|
||||
"type": "CallExpression",
|
||||
"type": "CallExpression"
|
||||
"type": "CallExpressionKw",
|
||||
"type": "CallExpressionKw",
|
||||
"unlabeled": null
|
||||
},
|
||||
{
|
||||
"arguments": [
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user