Compare commits
31 Commits
remove-unu
...
franknoiro
Author | SHA1 | Date | |
---|---|---|---|
cac7aa2bee | |||
0753987b5a | |||
815ff7dc2b | |||
46684d420d | |||
eca09984a3 | |||
ce63c6423e | |||
09699afe82 | |||
36c8ad439d | |||
5dc77ceed5 | |||
c7baa26b2d | |||
4d0454abcd | |||
1dafbf105e | |||
773f013115 | |||
c5cd460595 | |||
845352046b | |||
597f1087f9 | |||
511334683a | |||
223a4ad45d | |||
edf31ec1d3 | |||
1539557005 | |||
1d3ba4e3ac | |||
4110aa00db | |||
7eb52cda36 | |||
7872fb9cbd | |||
651181e62c | |||
38a245f2fc | |||
1b4289f93f | |||
d0697c24fd | |||
8c24e29081 | |||
2b9d26e2ff | |||
ab148a7654 |
2
.github/ci-cd-scripts/upload-results.sh
vendored
@ -6,6 +6,7 @@ if [ -z "${TAB_API_URL:-}" ] || [ -z "${TAB_API_KEY:-}" ]; then
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
project="https://github.com/KittyCAD/modeling-app"
|
project="https://github.com/KittyCAD/modeling-app"
|
||||||
|
suite="${CI_SUITE:-unit}"
|
||||||
branch="${GITHUB_HEAD_REF:-${GITHUB_REF_NAME:-}}"
|
branch="${GITHUB_HEAD_REF:-${GITHUB_REF_NAME:-}}"
|
||||||
commit="${CI_COMMIT_SHA:-${GITHUB_SHA:-}}"
|
commit="${CI_COMMIT_SHA:-${GITHUB_SHA:-}}"
|
||||||
|
|
||||||
@ -13,6 +14,7 @@ echo "Uploading batch results"
|
|||||||
curl --silent --request POST \
|
curl --silent --request POST \
|
||||||
--header "X-API-Key: ${TAB_API_KEY}" \
|
--header "X-API-Key: ${TAB_API_KEY}" \
|
||||||
--form "project=${project}" \
|
--form "project=${project}" \
|
||||||
|
--form "suite=${suite}" \
|
||||||
--form "branch=${branch}" \
|
--form "branch=${branch}" \
|
||||||
--form "commit=${commit}" \
|
--form "commit=${commit}" \
|
||||||
--form "tests=@test-results/junit.xml" \
|
--form "tests=@test-results/junit.xml" \
|
||||||
|
1
.github/workflows/cargo-test.yml
vendored
@ -193,6 +193,7 @@ jobs:
|
|||||||
TAB_API_KEY: ${{ secrets.TAB_API_KEY }}
|
TAB_API_KEY: ${{ secrets.TAB_API_KEY }}
|
||||||
CI_COMMIT_SHA: ${{ github.event.pull_request.head.sha }}
|
CI_COMMIT_SHA: ${{ github.event.pull_request.head.sha }}
|
||||||
CI_PR_NUMBER: ${{ github.event.pull_request.number }}
|
CI_PR_NUMBER: ${{ github.event.pull_request.number }}
|
||||||
|
CI_SUITE: unit:kcl
|
||||||
run-internal-kcl-samples:
|
run-internal-kcl-samples:
|
||||||
name: cargo test (internal-kcl-samples)
|
name: cargo test (internal-kcl-samples)
|
||||||
runs-on:
|
runs-on:
|
||||||
|
17
.github/workflows/e2e-tests.yml
vendored
@ -143,7 +143,7 @@ jobs:
|
|||||||
- name: Install browsers
|
- name: Install browsers
|
||||||
run: npm run playwright install --with-deps
|
run: npm run playwright install --with-deps
|
||||||
|
|
||||||
- name: Capture snapshots
|
- name: Test snapshots
|
||||||
uses: nick-fields/retry@v3.0.2
|
uses: nick-fields/retry@v3.0.2
|
||||||
with:
|
with:
|
||||||
shell: bash
|
shell: bash
|
||||||
@ -156,6 +156,19 @@ jobs:
|
|||||||
TAB_API_KEY: ${{ secrets.TAB_API_KEY }}
|
TAB_API_KEY: ${{ secrets.TAB_API_KEY }}
|
||||||
CI_COMMIT_SHA: ${{ github.event.pull_request.head.sha }}
|
CI_COMMIT_SHA: ${{ github.event.pull_request.head.sha }}
|
||||||
CI_PR_NUMBER: ${{ github.event.pull_request.number }}
|
CI_PR_NUMBER: ${{ github.event.pull_request.number }}
|
||||||
|
CI_SUITE: snapshots
|
||||||
|
TARGET: web
|
||||||
|
|
||||||
|
- name: Update snapshots
|
||||||
|
if: always()
|
||||||
|
run: npm run test:snapshots -- --last-failed --update-snapshots
|
||||||
|
env:
|
||||||
|
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 }}
|
||||||
|
CI_SUITE: snapshots
|
||||||
TARGET: web
|
TARGET: web
|
||||||
|
|
||||||
- uses: actions/upload-artifact@v4
|
- uses: actions/upload-artifact@v4
|
||||||
@ -173,7 +186,7 @@ jobs:
|
|||||||
id: git-check
|
id: git-check
|
||||||
run: |
|
run: |
|
||||||
git add e2e/playwright/snapshot-tests.spec.ts-snapshots e2e/playwright/snapshots
|
git add e2e/playwright/snapshot-tests.spec.ts-snapshots e2e/playwright/snapshots
|
||||||
if git status | grep -q "Changes to be committed"
|
if git status | grep --quiet "Changes to be committed"
|
||||||
then echo "modified=true" >> $GITHUB_OUTPUT
|
then echo "modified=true" >> $GITHUB_OUTPUT
|
||||||
else echo "modified=false" >> $GITHUB_OUTPUT
|
else echo "modified=false" >> $GITHUB_OUTPUT
|
||||||
fi
|
fi
|
||||||
|
@ -27,9 +27,6 @@ import increment from "util.kcl"
|
|||||||
answer = increment(41)
|
answer = increment(41)
|
||||||
```
|
```
|
||||||
|
|
||||||
Imported files _must_ be in the same project so that units are uniform across
|
|
||||||
modules. This means that it must be in the same directory.
|
|
||||||
|
|
||||||
Import statements must be at the top-level of a file. It is not allowed to have
|
Import statements must be at the top-level of a file. It is not allowed to have
|
||||||
an `import` statement inside a function or in the body of an if‑else.
|
an `import` statement inside a function or in the body of an if‑else.
|
||||||
|
|
||||||
@ -58,6 +55,9 @@ Imported symbols can be renamed for convenience or to avoid name collisions.
|
|||||||
import increment as inc, decrement as dec from "util.kcl"
|
import increment as inc, decrement as dec from "util.kcl"
|
||||||
```
|
```
|
||||||
|
|
||||||
|
You can import files from the current directory or from subdirectories, but if importing from a
|
||||||
|
subdirectory you can only import `main.kcl`.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## Functions vs `clone`
|
## Functions vs `clone`
|
||||||
@ -229,6 +229,19 @@ The final statement is what's important because it's the return value of the
|
|||||||
entire module. The module is expected to return a single object that can be used
|
entire module. The module is expected to return a single object that can be used
|
||||||
as a variable by the file that imports it.
|
as a variable by the file that imports it.
|
||||||
|
|
||||||
|
The name of the file or subdirectory is used as the name of the variable within the importing program.
|
||||||
|
If you want to use a different name, you can do so by using the `as` keyword:
|
||||||
|
|
||||||
|
```kcl,norun
|
||||||
|
import "cube.kcl" // Introduces a new variable called `cube`.
|
||||||
|
import "cube.kcl" as block // Introduces a new variable called `block`.
|
||||||
|
import "cube/main.kcl" // Introduces a new variable called `cube`.
|
||||||
|
import "cube/main.kcl" as block // Introduces a new variable called `block`.
|
||||||
|
```
|
||||||
|
|
||||||
|
If the filename includes hyphens (`-`) or starts with an underscore (`_`), then you must specify a
|
||||||
|
variable name.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## Multiple instances of the same import
|
## Multiple instances of the same import
|
||||||
|
@ -11,7 +11,8 @@ layout: manual
|
|||||||
circle(
|
circle(
|
||||||
@sketch_or_surface: Sketch | Plane | Face,
|
@sketch_or_surface: Sketch | Plane | Face,
|
||||||
center: Point2d,
|
center: Point2d,
|
||||||
radius: number(Length),
|
radius?: number(Length),
|
||||||
|
diameter?: number(Length),
|
||||||
tag?: tag,
|
tag?: tag,
|
||||||
): Sketch
|
): Sketch
|
||||||
```
|
```
|
||||||
@ -25,7 +26,8 @@ the provided (x, y) origin point.
|
|||||||
|----------|------|-------------|----------|
|
|----------|------|-------------|----------|
|
||||||
| `sketch_or_surface` | [`Sketch`](/docs/kcl-std/types/std-types-Sketch) or [`Plane`](/docs/kcl-std/types/std-types-Plane) or [`Face`](/docs/kcl-std/types/std-types-Face) | Sketch to extend, or plane or surface to sketch on. | Yes |
|
| `sketch_or_surface` | [`Sketch`](/docs/kcl-std/types/std-types-Sketch) or [`Plane`](/docs/kcl-std/types/std-types-Plane) or [`Face`](/docs/kcl-std/types/std-types-Face) | Sketch to extend, or plane or surface to sketch on. | Yes |
|
||||||
| `center` | [`Point2d`](/docs/kcl-std/types/std-types-Point2d) | The center of the circle. | Yes |
|
| `center` | [`Point2d`](/docs/kcl-std/types/std-types-Point2d) | The center of the circle. | Yes |
|
||||||
| `radius` | [`number(Length)`](/docs/kcl-std/types/std-types-number) | The radius of the circle. | Yes |
|
| `radius` | [`number(Length)`](/docs/kcl-std/types/std-types-number) | The radius of the circle. Incompatible with `diameter`. | No |
|
||||||
|
| `diameter` | [`number(Length)`](/docs/kcl-std/types/std-types-number) | The diameter of the circle. Incompatible with `radius`. | No |
|
||||||
| [`tag`](/docs/kcl-std/types/std-types-tag) | [`tag`](/docs/kcl-std/types/std-types-tag) | Create a new tag which refers to this circle. | No |
|
| [`tag`](/docs/kcl-std/types/std-types-tag) | [`tag`](/docs/kcl-std/types/std-types-tag) | Create a new tag which refers to this circle. | No |
|
||||||
|
|
||||||
### Returns
|
### Returns
|
||||||
@ -51,7 +53,7 @@ exampleSketch = startSketchOn(XZ)
|
|||||||
|> line(end = [0, 30])
|
|> line(end = [0, 30])
|
||||||
|> line(end = [-30, 0])
|
|> line(end = [-30, 0])
|
||||||
|> close()
|
|> close()
|
||||||
|> subtract2d(tool = circle(center = [0, 15], radius = 5))
|
|> subtract2d(tool = circle(center = [0, 15], diameter = 10))
|
||||||
|
|
||||||
example = extrude(exampleSketch, length = 5)
|
example = extrude(exampleSketch, length = 5)
|
||||||
```
|
```
|
||||||
|
@ -45,15 +45,16 @@ test.describe('Command bar tests', () => {
|
|||||||
await cmdBar.expectState({
|
await cmdBar.expectState({
|
||||||
stage: 'arguments',
|
stage: 'arguments',
|
||||||
commandName: 'Extrude',
|
commandName: 'Extrude',
|
||||||
currentArgKey: 'length',
|
currentArgKey: 'sketches',
|
||||||
currentArgValue: '5',
|
currentArgValue: '',
|
||||||
headerArguments: {
|
headerArguments: {
|
||||||
Profiles: '1 profile',
|
Profiles: '',
|
||||||
Length: '',
|
Length: '',
|
||||||
},
|
},
|
||||||
highlightedHeaderArg: 'length',
|
highlightedHeaderArg: 'Profiles',
|
||||||
})
|
})
|
||||||
await cmdBar.progressCmdBar()
|
await cmdBar.progressCmdBar()
|
||||||
|
await cmdBar.progressCmdBar()
|
||||||
await cmdBar.expectState({
|
await cmdBar.expectState({
|
||||||
stage: 'review',
|
stage: 'review',
|
||||||
commandName: 'Extrude',
|
commandName: 'Extrude',
|
||||||
@ -684,4 +685,33 @@ c = 3 + a`
|
|||||||
highlightedHeaderArg: 'value',
|
highlightedHeaderArg: 'value',
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
|
test('Text-to-CAD command can be closed with escape while in prompt', async ({
|
||||||
|
page,
|
||||||
|
homePage,
|
||||||
|
cmdBar,
|
||||||
|
}) => {
|
||||||
|
await homePage.expectState({
|
||||||
|
projectCards: [],
|
||||||
|
sortBy: 'last-modified-desc',
|
||||||
|
})
|
||||||
|
await homePage.textToCadBtn.click()
|
||||||
|
await cmdBar.expectState({
|
||||||
|
stage: 'arguments',
|
||||||
|
commandName: 'Text-to-CAD Create',
|
||||||
|
currentArgKey: 'prompt',
|
||||||
|
currentArgValue: '',
|
||||||
|
headerArguments: {
|
||||||
|
Method: 'New project',
|
||||||
|
NewProjectName: 'untitled',
|
||||||
|
Prompt: '',
|
||||||
|
},
|
||||||
|
highlightedHeaderArg: 'prompt',
|
||||||
|
})
|
||||||
|
await page.keyboard.press('Escape')
|
||||||
|
await cmdBar.toBeClosed()
|
||||||
|
await cmdBar.expectState({
|
||||||
|
stage: 'commandBarClosed',
|
||||||
|
})
|
||||||
|
})
|
||||||
})
|
})
|
||||||
|
@ -1134,6 +1134,7 @@ sketch001 = startSketchOn(XZ)
|
|||||||
// Wait for the selection to register (TODO: we need a definitive way to wait for this)
|
// Wait for the selection to register (TODO: we need a definitive way to wait for this)
|
||||||
await page.waitForTimeout(200)
|
await page.waitForTimeout(200)
|
||||||
await toolbar.extrudeButton.click()
|
await toolbar.extrudeButton.click()
|
||||||
|
await cmdBar.progressCmdBar()
|
||||||
await cmdBar.expectState({
|
await cmdBar.expectState({
|
||||||
stage: 'arguments',
|
stage: 'arguments',
|
||||||
currentArgKey: 'length',
|
currentArgKey: 'length',
|
||||||
@ -1355,9 +1356,7 @@ sketch001 = startSketchOn(XZ)
|
|||||||
const u = await getUtils(page)
|
const u = await getUtils(page)
|
||||||
const projectLink = page.getByRole('link', { name: 'cube' })
|
const projectLink = page.getByRole('link', { name: 'cube' })
|
||||||
const gizmo = page.locator('[aria-label*=gizmo]')
|
const gizmo = page.locator('[aria-label*=gizmo]')
|
||||||
const resetCameraButton = page.getByRole('button', {
|
const resetCameraButton = page.getByRole('button', { name: 'Reset view' })
|
||||||
name: 'Reset view',
|
|
||||||
})
|
|
||||||
const locationToHaveColor = async (
|
const locationToHaveColor = async (
|
||||||
position: { x: number; y: number },
|
position: { x: number; y: number },
|
||||||
color: [number, number, number]
|
color: [number, number, number]
|
||||||
|
@ -238,6 +238,26 @@ test.describe('when using the file tree to', () => {
|
|||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
|
test(
|
||||||
|
`create new folders and that doesn't trigger a navigation`,
|
||||||
|
{ tag: ['@electron', '@macos', '@windows'] },
|
||||||
|
async ({ page, homePage, scene, toolbar, cmdBar }) => {
|
||||||
|
await homePage.goToModelingScene()
|
||||||
|
await scene.settled(cmdBar)
|
||||||
|
await toolbar.openPane('files')
|
||||||
|
const { createNewFolder } = await getUtils(page, test)
|
||||||
|
|
||||||
|
await createNewFolder('folder')
|
||||||
|
|
||||||
|
await createNewFolder('folder.kcl')
|
||||||
|
|
||||||
|
await test.step(`Postcondition: folders are created and we didn't navigate`, async () => {
|
||||||
|
await toolbar.expectFileTreeState(['folder', 'folder.kcl', 'main.kcl'])
|
||||||
|
await expect(toolbar.fileName).toHaveText('main.kcl')
|
||||||
|
})
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
test(
|
test(
|
||||||
'deleting all files recreates a default main.kcl with no code',
|
'deleting all files recreates a default main.kcl with no code',
|
||||||
{ tag: '@electron' },
|
{ tag: '@electron' },
|
||||||
|
@ -105,14 +105,19 @@ export class CmdBarFixture {
|
|||||||
expectState = async (expected: CmdBarSerialised) => {
|
expectState = async (expected: CmdBarSerialised) => {
|
||||||
return expect.poll(() => this._serialiseCmdBar()).toEqual(expected)
|
return expect.poll(() => this._serialiseCmdBar()).toEqual(expected)
|
||||||
}
|
}
|
||||||
/** The method will use buttons OR press enter randomly to progress the cmdbar,
|
/**
|
||||||
* this could have unexpected results depending on what's focused
|
* This method is used to progress the command bar to the next step, defaulting to clicking the next button.
|
||||||
*
|
* Optionally, with the `shouldUseKeyboard` parameter, it will hit `Enter` to progress.
|
||||||
* TODO: This method assumes the user has a valid input to the current stage,
|
* * TODO: This method assumes the user has a valid input to the current stage,
|
||||||
* and assumes we are past the `pickCommand` step.
|
* and assumes we are past the `pickCommand` step.
|
||||||
*/
|
*/
|
||||||
progressCmdBar = async (shouldFuzzProgressMethod = true) => {
|
progressCmdBar = async (shouldUseKeyboard = false) => {
|
||||||
await this.page.waitForTimeout(2000)
|
await this.page.waitForTimeout(2000)
|
||||||
|
if (shouldUseKeyboard) {
|
||||||
|
await this.page.keyboard.press('Enter')
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
const arrowButton = this.page.getByRole('button', {
|
const arrowButton = this.page.getByRole('button', {
|
||||||
name: 'arrow right Continue',
|
name: 'arrow right Continue',
|
||||||
})
|
})
|
||||||
@ -308,6 +313,11 @@ export class CmdBarFixture {
|
|||||||
await expect(this.cmdBarElement).toBeVisible({ timeout: 10_000 })
|
await expect(this.cmdBarElement).toBeVisible({ timeout: 10_000 })
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async toBeClosed() {
|
||||||
|
// Check that the command bar is closed
|
||||||
|
await expect(this.cmdBarElement).not.toBeVisible({ timeout: 10_000 })
|
||||||
|
}
|
||||||
|
|
||||||
async expectArgValue(value: string) {
|
async expectArgValue(value: string) {
|
||||||
// Check the placeholder project name exists
|
// Check the placeholder project name exists
|
||||||
const actualArgument = await this.cmdBarElement
|
const actualArgument = await this.cmdBarElement
|
||||||
|
@ -26,6 +26,7 @@ export class HomePageFixture {
|
|||||||
sortByNameBtn!: Locator
|
sortByNameBtn!: Locator
|
||||||
appHeader!: Locator
|
appHeader!: Locator
|
||||||
tutorialBtn!: Locator
|
tutorialBtn!: Locator
|
||||||
|
textToCadBtn!: Locator
|
||||||
|
|
||||||
constructor(page: Page) {
|
constructor(page: Page) {
|
||||||
this.page = page
|
this.page = page
|
||||||
@ -47,6 +48,7 @@ export class HomePageFixture {
|
|||||||
this.sortByNameBtn = this.page.getByTestId('home-sort-by-name')
|
this.sortByNameBtn = this.page.getByTestId('home-sort-by-name')
|
||||||
this.appHeader = this.page.getByTestId('app-header')
|
this.appHeader = this.page.getByTestId('app-header')
|
||||||
this.tutorialBtn = this.page.getByTestId('home-tutorial-button')
|
this.tutorialBtn = this.page.getByTestId('home-tutorial-button')
|
||||||
|
this.textToCadBtn = this.page.getByTestId('home-text-to-cad')
|
||||||
}
|
}
|
||||||
|
|
||||||
private _serialiseSortBy = async (): Promise<
|
private _serialiseSortBy = async (): Promise<
|
||||||
|
@ -61,6 +61,7 @@ class MyAPIReporter implements Reporter {
|
|||||||
const payload = {
|
const payload = {
|
||||||
// Required information
|
// Required information
|
||||||
project: 'https://github.com/KittyCAD/modeling-app',
|
project: 'https://github.com/KittyCAD/modeling-app',
|
||||||
|
suite: process.env.CI_SUITE || 'e2e',
|
||||||
branch: process.env.GITHUB_HEAD_REF || process.env.GITHUB_REF_NAME || '',
|
branch: process.env.GITHUB_HEAD_REF || process.env.GITHUB_REF_NAME || '',
|
||||||
commit: process.env.CI_COMMIT_SHA || process.env.GITHUB_SHA || '',
|
commit: process.env.CI_COMMIT_SHA || process.env.GITHUB_SHA || '',
|
||||||
test: test.titlePath().slice(2).join(' › '),
|
test: test.titlePath().slice(2).join(' › '),
|
||||||
|
@ -74,6 +74,15 @@ test.describe('Point-and-click tests', () => {
|
|||||||
|
|
||||||
await test.step('do extrude flow and check extrude code is added to editor', async () => {
|
await test.step('do extrude flow and check extrude code is added to editor', async () => {
|
||||||
await toolbar.extrudeButton.click()
|
await toolbar.extrudeButton.click()
|
||||||
|
await cmdBar.expectState({
|
||||||
|
stage: 'arguments',
|
||||||
|
currentArgKey: 'sketches',
|
||||||
|
currentArgValue: '',
|
||||||
|
headerArguments: { Profiles: '', Length: '' },
|
||||||
|
highlightedHeaderArg: 'Profiles',
|
||||||
|
commandName: 'Extrude',
|
||||||
|
})
|
||||||
|
await cmdBar.progressCmdBar()
|
||||||
await cmdBar.expectState({
|
await cmdBar.expectState({
|
||||||
stage: 'arguments',
|
stage: 'arguments',
|
||||||
currentArgKey: 'length',
|
currentArgKey: 'length',
|
||||||
@ -1645,6 +1654,15 @@ sketch002 = startSketchOn(plane001)
|
|||||||
|
|
||||||
await test.step(`Go through the command bar flow with preselected sketches`, async () => {
|
await test.step(`Go through the command bar flow with preselected sketches`, async () => {
|
||||||
await toolbar.loftButton.click()
|
await toolbar.loftButton.click()
|
||||||
|
await cmdBar.expectState({
|
||||||
|
stage: 'arguments',
|
||||||
|
currentArgKey: 'sketches',
|
||||||
|
currentArgValue: '',
|
||||||
|
headerArguments: { Profiles: '' },
|
||||||
|
highlightedHeaderArg: 'Profiles',
|
||||||
|
commandName: 'Loft',
|
||||||
|
})
|
||||||
|
await cmdBar.progressCmdBar()
|
||||||
await cmdBar.expectState({
|
await cmdBar.expectState({
|
||||||
stage: 'review',
|
stage: 'review',
|
||||||
headerArguments: { Profiles: '2 profiles' },
|
headerArguments: { Profiles: '2 profiles' },
|
||||||
@ -1855,7 +1873,11 @@ sketch002 = startSketchOn(XZ)
|
|||||||
},
|
},
|
||||||
stage: 'review',
|
stage: 'review',
|
||||||
})
|
})
|
||||||
await cmdBar.progressCmdBar()
|
// Confirm we can submit from the review step with just `Enter`
|
||||||
|
await cmdBar.progressCmdBar(true)
|
||||||
|
await cmdBar.expectState({
|
||||||
|
stage: 'commandBarClosed',
|
||||||
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
await test.step(`Confirm code is added to the editor, scene has changed`, async () => {
|
await test.step(`Confirm code is added to the editor, scene has changed`, async () => {
|
||||||
@ -1995,7 +2017,7 @@ profile001 = ${circleCode}`
|
|||||||
},
|
},
|
||||||
stage: 'review',
|
stage: 'review',
|
||||||
})
|
})
|
||||||
await cmdBar.progressCmdBar()
|
await cmdBar.progressCmdBar(true)
|
||||||
await editor.expectEditor.toContain(sweepDeclaration)
|
await editor.expectEditor.toContain(sweepDeclaration)
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -2088,6 +2110,18 @@ extrude001 = extrude(sketch001, length = -12)
|
|||||||
await test.step(`Apply fillet to the preselected edge`, async () => {
|
await test.step(`Apply fillet to the preselected edge`, async () => {
|
||||||
await page.waitForTimeout(100)
|
await page.waitForTimeout(100)
|
||||||
await toolbar.filletButton.click()
|
await toolbar.filletButton.click()
|
||||||
|
await cmdBar.expectState({
|
||||||
|
commandName: 'Fillet',
|
||||||
|
highlightedHeaderArg: 'selection',
|
||||||
|
currentArgKey: 'selection',
|
||||||
|
currentArgValue: '',
|
||||||
|
headerArguments: {
|
||||||
|
Selection: '',
|
||||||
|
Radius: '',
|
||||||
|
},
|
||||||
|
stage: 'arguments',
|
||||||
|
})
|
||||||
|
await cmdBar.progressCmdBar()
|
||||||
await cmdBar.expectState({
|
await cmdBar.expectState({
|
||||||
commandName: 'Fillet',
|
commandName: 'Fillet',
|
||||||
highlightedHeaderArg: 'radius',
|
highlightedHeaderArg: 'radius',
|
||||||
@ -2617,6 +2651,18 @@ extrude001 = extrude(profile001, length = 5)
|
|||||||
await test.step(`Apply fillet`, async () => {
|
await test.step(`Apply fillet`, async () => {
|
||||||
await page.waitForTimeout(100)
|
await page.waitForTimeout(100)
|
||||||
await toolbar.filletButton.click()
|
await toolbar.filletButton.click()
|
||||||
|
await cmdBar.expectState({
|
||||||
|
commandName: 'Fillet',
|
||||||
|
highlightedHeaderArg: 'selection',
|
||||||
|
currentArgKey: 'selection',
|
||||||
|
currentArgValue: '',
|
||||||
|
headerArguments: {
|
||||||
|
Selection: '',
|
||||||
|
Radius: '',
|
||||||
|
},
|
||||||
|
stage: 'arguments',
|
||||||
|
})
|
||||||
|
await cmdBar.progressCmdBar()
|
||||||
await cmdBar.expectState({
|
await cmdBar.expectState({
|
||||||
commandName: 'Fillet',
|
commandName: 'Fillet',
|
||||||
highlightedHeaderArg: 'radius',
|
highlightedHeaderArg: 'radius',
|
||||||
@ -2722,6 +2768,19 @@ extrude001 = extrude(sketch001, length = -12)
|
|||||||
await test.step(`Apply chamfer to the preselected edge`, async () => {
|
await test.step(`Apply chamfer to the preselected edge`, async () => {
|
||||||
await page.waitForTimeout(100)
|
await page.waitForTimeout(100)
|
||||||
await toolbar.chamferButton.click()
|
await toolbar.chamferButton.click()
|
||||||
|
await cmdBar.expectState({
|
||||||
|
commandName: 'Chamfer',
|
||||||
|
highlightedHeaderArg: 'selection',
|
||||||
|
currentArgKey: 'selection',
|
||||||
|
currentArgValue: '',
|
||||||
|
headerArguments: {
|
||||||
|
Selection: '',
|
||||||
|
Length: '',
|
||||||
|
},
|
||||||
|
stage: 'arguments',
|
||||||
|
})
|
||||||
|
await cmdBar.progressCmdBar()
|
||||||
|
await page.waitForTimeout(1000)
|
||||||
await cmdBar.expectState({
|
await cmdBar.expectState({
|
||||||
commandName: 'Chamfer',
|
commandName: 'Chamfer',
|
||||||
highlightedHeaderArg: 'length',
|
highlightedHeaderArg: 'length',
|
||||||
@ -3205,6 +3264,8 @@ extrude001 = extrude(sketch001, length = 30)
|
|||||||
await test.step(`Go through the command bar flow with a preselected face (cap)`, async () => {
|
await test.step(`Go through the command bar flow with a preselected face (cap)`, async () => {
|
||||||
await toolbar.shellButton.click()
|
await toolbar.shellButton.click()
|
||||||
await cmdBar.progressCmdBar()
|
await cmdBar.progressCmdBar()
|
||||||
|
await page.waitForTimeout(500)
|
||||||
|
await cmdBar.progressCmdBar()
|
||||||
await cmdBar.expectState({
|
await cmdBar.expectState({
|
||||||
stage: 'review',
|
stage: 'review',
|
||||||
headerArguments: {
|
headerArguments: {
|
||||||
@ -3638,13 +3699,12 @@ tag=$rectangleSegmentC002,
|
|||||||
// revolve
|
// revolve
|
||||||
await editor.scrollToText(codeToSelection)
|
await editor.scrollToText(codeToSelection)
|
||||||
await page.getByText(codeToSelection).click()
|
await page.getByText(codeToSelection).click()
|
||||||
// Wait for the selection to register (TODO: we need a definitive way to wait for this)
|
|
||||||
await page.waitForTimeout(200)
|
|
||||||
await toolbar.revolveButton.click()
|
await toolbar.revolveButton.click()
|
||||||
await cmdBar.progressCmdBar()
|
await cmdBar.progressCmdBar()
|
||||||
await cmdBar.progressCmdBar()
|
await cmdBar.progressCmdBar()
|
||||||
await cmdBar.progressCmdBar()
|
await cmdBar.progressCmdBar()
|
||||||
await cmdBar.progressCmdBar()
|
await cmdBar.progressCmdBar()
|
||||||
|
await cmdBar.progressCmdBar()
|
||||||
|
|
||||||
const newCodeToFind = `revolve001 = revolve(sketch002, angle = 360, axis = X)`
|
const newCodeToFind = `revolve001 = revolve(sketch002, angle = 360, axis = X)`
|
||||||
expect(editor.expectEditor.toContain(newCodeToFind)).toBeTruthy()
|
expect(editor.expectEditor.toContain(newCodeToFind)).toBeTruthy()
|
||||||
@ -4573,6 +4633,18 @@ path001 = startProfile(sketch001, at = [0, 0])
|
|||||||
|
|
||||||
await test.step('Go through command bar flow', async () => {
|
await test.step('Go through command bar flow', async () => {
|
||||||
await toolbar.extrudeButton.click()
|
await toolbar.extrudeButton.click()
|
||||||
|
await cmdBar.expectState({
|
||||||
|
stage: 'arguments',
|
||||||
|
currentArgKey: 'sketches',
|
||||||
|
currentArgValue: '',
|
||||||
|
headerArguments: {
|
||||||
|
Profiles: '',
|
||||||
|
Length: '',
|
||||||
|
},
|
||||||
|
highlightedHeaderArg: 'Profiles',
|
||||||
|
commandName: 'Extrude',
|
||||||
|
})
|
||||||
|
await cmdBar.progressCmdBar()
|
||||||
await cmdBar.expectState({
|
await cmdBar.expectState({
|
||||||
stage: 'arguments',
|
stage: 'arguments',
|
||||||
currentArgKey: 'length',
|
currentArgKey: 'length',
|
||||||
@ -4655,6 +4727,19 @@ path001 = startProfile(sketch001, at = [0, 0])
|
|||||||
|
|
||||||
await test.step('Go through command bar flow', async () => {
|
await test.step('Go through command bar flow', async () => {
|
||||||
await toolbar.sweepButton.click()
|
await toolbar.sweepButton.click()
|
||||||
|
await cmdBar.expectState({
|
||||||
|
stage: 'arguments',
|
||||||
|
currentArgKey: 'sketches',
|
||||||
|
currentArgValue: '',
|
||||||
|
headerArguments: {
|
||||||
|
Profiles: '',
|
||||||
|
Path: '',
|
||||||
|
Sectional: '',
|
||||||
|
},
|
||||||
|
highlightedHeaderArg: 'Profiles',
|
||||||
|
commandName: 'Sweep',
|
||||||
|
})
|
||||||
|
await cmdBar.progressCmdBar()
|
||||||
await cmdBar.expectState({
|
await cmdBar.expectState({
|
||||||
stage: 'arguments',
|
stage: 'arguments',
|
||||||
currentArgKey: 'path',
|
currentArgKey: 'path',
|
||||||
@ -4739,6 +4824,19 @@ path001 = startProfile(sketch001, at = [0, 0])
|
|||||||
await test.step('Go through command bar flow', async () => {
|
await test.step('Go through command bar flow', async () => {
|
||||||
await toolbar.closePane('code')
|
await toolbar.closePane('code')
|
||||||
await toolbar.revolveButton.click()
|
await toolbar.revolveButton.click()
|
||||||
|
await cmdBar.expectState({
|
||||||
|
stage: 'arguments',
|
||||||
|
currentArgKey: 'sketches',
|
||||||
|
currentArgValue: '',
|
||||||
|
headerArguments: {
|
||||||
|
Profiles: '',
|
||||||
|
AxisOrEdge: '',
|
||||||
|
Angle: '',
|
||||||
|
},
|
||||||
|
highlightedHeaderArg: 'Profiles',
|
||||||
|
commandName: 'Revolve',
|
||||||
|
})
|
||||||
|
await cmdBar.progressCmdBar()
|
||||||
await cmdBar.expectState({
|
await cmdBar.expectState({
|
||||||
stage: 'arguments',
|
stage: 'arguments',
|
||||||
currentArgKey: 'axisOrEdge',
|
currentArgKey: 'axisOrEdge',
|
||||||
|
@ -11,6 +11,7 @@ import {
|
|||||||
getPlaywrightDownloadDir,
|
getPlaywrightDownloadDir,
|
||||||
getUtils,
|
getUtils,
|
||||||
isOutOfViewInScrollContainer,
|
isOutOfViewInScrollContainer,
|
||||||
|
runningOnWindows,
|
||||||
} from '@e2e/playwright/test-utils'
|
} from '@e2e/playwright/test-utils'
|
||||||
import { expect, test } from '@e2e/playwright/zoo-test'
|
import { expect, test } from '@e2e/playwright/zoo-test'
|
||||||
|
|
||||||
@ -1979,7 +1980,6 @@ test(
|
|||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
// Flaky
|
|
||||||
test(
|
test(
|
||||||
'Original project name persist after onboarding',
|
'Original project name persist after onboarding',
|
||||||
{ tag: '@electron' },
|
{ tag: '@electron' },
|
||||||
@ -2064,3 +2064,55 @@ test(
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
|
test(
|
||||||
|
'import from nested directory',
|
||||||
|
{ tag: ['@electron', '@windows', '@macos'] },
|
||||||
|
async ({ scene, cmdBar, context, page }) => {
|
||||||
|
await context.folderSetupFn(async (dir) => {
|
||||||
|
const bracketDir = path.join(dir, 'bracket')
|
||||||
|
await fsp.mkdir(bracketDir, { recursive: true })
|
||||||
|
const nestedDir = path.join(bracketDir, 'nested')
|
||||||
|
await fsp.mkdir(nestedDir, { recursive: true })
|
||||||
|
|
||||||
|
await fsp.copyFile(
|
||||||
|
executorInputPath('cylinder-inches.kcl'),
|
||||||
|
path.join(nestedDir, 'main.kcl')
|
||||||
|
)
|
||||||
|
await fsp.writeFile(
|
||||||
|
path.join(bracketDir, 'main.kcl'),
|
||||||
|
runningOnWindows()
|
||||||
|
? `import 'nested\\main.kcl' as thing\n\nthing`
|
||||||
|
: `import 'nested/main.kcl' as thing\n\nthing`
|
||||||
|
)
|
||||||
|
})
|
||||||
|
|
||||||
|
await page.setBodyDimensions({ width: 1200, height: 500 })
|
||||||
|
const u = await getUtils(page)
|
||||||
|
|
||||||
|
const pointOnModel = { x: 630, y: 280 }
|
||||||
|
|
||||||
|
await test.step('Opening the bracket project should load the stream', async () => {
|
||||||
|
// expect to see the text bracket
|
||||||
|
await expect(page.getByText('bracket')).toBeVisible()
|
||||||
|
|
||||||
|
await page.getByText('bracket').click()
|
||||||
|
|
||||||
|
await scene.settled(cmdBar)
|
||||||
|
|
||||||
|
await expect(
|
||||||
|
page.getByRole('button', { name: 'Start Sketch' })
|
||||||
|
).toBeEnabled({
|
||||||
|
timeout: 20_000,
|
||||||
|
})
|
||||||
|
|
||||||
|
// gray at this pixel means the stream has loaded in the most
|
||||||
|
// user way we can verify it (pixel color)
|
||||||
|
await expect
|
||||||
|
.poll(() => u.getGreatestPixDiff(pointOnModel, [125, 125, 125]), {
|
||||||
|
timeout: 10_000,
|
||||||
|
})
|
||||||
|
.toBeLessThan(15)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
)
|
||||||
|
@ -1016,6 +1016,7 @@ profile001 = startProfile(sketch001, at = [${roundOff(scale * 69.6)}, ${roundOff
|
|||||||
|
|
||||||
// sketch selection should already have been made.
|
// sketch selection should already have been made.
|
||||||
// otherwise the cmdbar would be waiting for a selection.
|
// otherwise the cmdbar would be waiting for a selection.
|
||||||
|
await cmdBar.progressCmdBar()
|
||||||
await cmdBar.expectState({
|
await cmdBar.expectState({
|
||||||
stage: 'arguments',
|
stage: 'arguments',
|
||||||
currentArgKey: 'length',
|
currentArgKey: 'length',
|
||||||
|
Before Width: | Height: | Size: 133 KiB After Width: | Height: | Size: 133 KiB |
@ -557,6 +557,14 @@ export async function getUtils(page: Page, test_?: typeof test) {
|
|||||||
})
|
})
|
||||||
},
|
},
|
||||||
|
|
||||||
|
createNewFolder: async (name: string) => {
|
||||||
|
return test?.step(`Create a folder named ${name}`, async () => {
|
||||||
|
await page.getByTestId('create-folder-button').click()
|
||||||
|
await page.getByTestId('tree-input-field').fill(name)
|
||||||
|
await page.keyboard.press('Enter')
|
||||||
|
})
|
||||||
|
},
|
||||||
|
|
||||||
cloneFile: async (name: string) => {
|
cloneFile: async (name: string) => {
|
||||||
return test?.step(`Cloning file '${name}'`, async () => {
|
return test?.step(`Cloning file '${name}'`, async () => {
|
||||||
await page
|
await page
|
||||||
|
@ -103,6 +103,8 @@ test.describe('Testing loading external models', () => {
|
|||||||
file: 'ball-bearing' + FILE_EXT,
|
file: 'ball-bearing' + FILE_EXT,
|
||||||
title: 'Ball Bearing',
|
title: 'Ball Bearing',
|
||||||
file1: 'ball-bearing-1' + FILE_EXT,
|
file1: 'ball-bearing-1' + FILE_EXT,
|
||||||
|
folderName: 'ball-bearing',
|
||||||
|
folderName1: 'ball-bearing-1',
|
||||||
}
|
}
|
||||||
const projectCard = page.getByRole('link', { name: 'bracket' })
|
const projectCard = page.getByRole('link', { name: 'bracket' })
|
||||||
const overwriteWarning = page.getByText(
|
const overwriteWarning = page.getByText(
|
||||||
@ -154,8 +156,10 @@ test.describe('Testing loading external models', () => {
|
|||||||
|
|
||||||
await test.step(`Ensure we made and opened a new file`, async () => {
|
await test.step(`Ensure we made and opened a new file`, async () => {
|
||||||
await editor.expectEditor.toContain('// ' + sampleOne.title)
|
await editor.expectEditor.toContain('// ' + sampleOne.title)
|
||||||
await expect(newlyCreatedFile(sampleOne.file)).toBeVisible()
|
await expect(
|
||||||
await expect(projectMenuButton).toContainText(sampleOne.file)
|
page.getByTestId('file-tree-item').getByText(sampleOne.folderName)
|
||||||
|
).toBeVisible()
|
||||||
|
await expect(projectMenuButton).toContainText('main.kcl')
|
||||||
})
|
})
|
||||||
|
|
||||||
await test.step(`Load a KCL sample with the command palette`, async () => {
|
await test.step(`Load a KCL sample with the command palette`, async () => {
|
||||||
@ -169,8 +173,10 @@ test.describe('Testing loading external models', () => {
|
|||||||
|
|
||||||
await test.step(`Ensure we made and opened a new file with a unique name`, async () => {
|
await test.step(`Ensure we made and opened a new file with a unique name`, async () => {
|
||||||
await editor.expectEditor.toContain('// ' + sampleOne.title)
|
await editor.expectEditor.toContain('// ' + sampleOne.title)
|
||||||
await expect(newlyCreatedFile(sampleOne.file1)).toBeVisible()
|
await expect(
|
||||||
await expect(projectMenuButton).toContainText(sampleOne.file1)
|
page.getByTestId('file-tree-item').getByText(sampleOne.folderName1)
|
||||||
|
).toBeVisible()
|
||||||
|
await expect(projectMenuButton).toContainText('main.kcl')
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
@ -984,12 +984,12 @@ test.describe('Mocked Text-to-CAD API tests', { tag: ['@skipWin'] }, () => {
|
|||||||
)
|
)
|
||||||
await expect(page.getByTestId('app-header-file-name')).toBeVisible()
|
await expect(page.getByTestId('app-header-file-name')).toBeVisible()
|
||||||
await expect(page.getByTestId('app-header-file-name')).toContainText(
|
await expect(page.getByTestId('app-header-file-name')).toContainText(
|
||||||
'2x2x2-cube.kcl'
|
'main.kcl'
|
||||||
)
|
)
|
||||||
|
|
||||||
await u.openFilePanel()
|
await u.openFilePanel()
|
||||||
await expect(
|
await expect(
|
||||||
page.getByTestId('file-tree-item').getByText('2x2x2-cube.kcl')
|
page.getByTestId('file-tree-item').getByText('2x2x2-cube')
|
||||||
).toBeVisible()
|
).toBeVisible()
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
@ -1184,13 +1184,13 @@ test.describe('Mocked Text-to-CAD API tests', { tag: ['@skipWin'] }, () => {
|
|||||||
)
|
)
|
||||||
await expect(page.getByTestId('app-header-file-name')).toBeVisible()
|
await expect(page.getByTestId('app-header-file-name')).toBeVisible()
|
||||||
await expect(page.getByTestId('app-header-file-name')).toContainText(
|
await expect(page.getByTestId('app-header-file-name')).toContainText(
|
||||||
'2x2x2-cube.kcl'
|
'main.kcl'
|
||||||
)
|
)
|
||||||
|
|
||||||
// Check file is created
|
// Check file is created
|
||||||
await u.openFilePanel()
|
await u.openFilePanel()
|
||||||
await expect(
|
await expect(
|
||||||
page.getByTestId('file-tree-item').getByText('2x2x2-cube.kcl')
|
page.getByTestId('file-tree-item').getByText('2x2x2-cube')
|
||||||
).toBeVisible()
|
).toBeVisible()
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
@ -1476,13 +1476,13 @@ test.describe('Mocked Text-to-CAD API tests', { tag: ['@skipWin'] }, () => {
|
|||||||
)
|
)
|
||||||
await expect(page.getByTestId('app-header-file-name')).toBeVisible()
|
await expect(page.getByTestId('app-header-file-name')).toBeVisible()
|
||||||
await expect(page.getByTestId('app-header-file-name')).toContainText(
|
await expect(page.getByTestId('app-header-file-name')).toContainText(
|
||||||
'2x2x2-cube.kcl'
|
'main.kcl'
|
||||||
)
|
)
|
||||||
|
|
||||||
// Check file is created
|
// Check file is created
|
||||||
await u.openFilePanel()
|
await u.openFilePanel()
|
||||||
await expect(
|
await expect(
|
||||||
page.getByTestId('file-tree-item').getByText('2x2x2-cube.kcl')
|
page.getByTestId('file-tree-item').getByText('2x2x2-cube')
|
||||||
).toBeVisible()
|
).toBeVisible()
|
||||||
await expect(
|
await expect(
|
||||||
page.getByTestId('file-tree-item').getByText('main.kcl')
|
page.getByTestId('file-tree-item').getByText('main.kcl')
|
||||||
|
@ -573,6 +573,7 @@ profile001 = startProfile(sketch002, at = [-12.34, 12.34])
|
|||||||
await expect(page.getByTestId('command-bar')).toBeVisible()
|
await expect(page.getByTestId('command-bar')).toBeVisible()
|
||||||
await page.waitForTimeout(100)
|
await page.waitForTimeout(100)
|
||||||
|
|
||||||
|
await cmdBar.progressCmdBar()
|
||||||
await cmdBar.progressCmdBar()
|
await cmdBar.progressCmdBar()
|
||||||
await expect(page.getByText('Confirm Extrude')).toBeVisible()
|
await expect(page.getByText('Confirm Extrude')).toBeVisible()
|
||||||
await cmdBar.progressCmdBar()
|
await cmdBar.progressCmdBar()
|
||||||
|
@ -72,25 +72,25 @@ leftSpacerShape = boxModuleFn(width = leftSpacerWidth)
|
|||||||
|
|
||||||
// Module for power switch including front plate and red rocker button
|
// Module for power switch including front plate and red rocker button
|
||||||
switchPosition = leftSpacerPosition + leftSpacerWidth / 2 + moduleWidth / 2
|
switchPosition = leftSpacerPosition + leftSpacerWidth / 2 + moduleWidth / 2
|
||||||
swtichWidth = moduleWidth
|
switchWidth = moduleWidth
|
||||||
|
|
||||||
// Switch Body
|
// Switch Body
|
||||||
switchBody = boxModuleFn(width = moduleWidth)
|
switchBody = boxModuleFn(width = moduleWidth)
|
||||||
|
|
||||||
// Switch Plate
|
// Switch Plate
|
||||||
swtichPlateWidth = 20
|
switchPlateWidth = 20
|
||||||
switchPlateHeight = 30
|
switchPlateHeight = 30
|
||||||
switchPlateThickness = 3
|
switchPlateThickness = 3
|
||||||
switchPlateShape = startSketchOn(switchBody, face = END)
|
switchPlateShape = startSketchOn(switchBody, face = END)
|
||||||
|> startProfile(
|
|> startProfile(
|
||||||
%,
|
%,
|
||||||
at = [
|
at = [
|
||||||
-swtichPlateWidth / 2,
|
-switchPlateWidth / 2,
|
||||||
-switchPlateHeight / 2
|
-switchPlateHeight / 2
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
|> yLine(length = switchPlateHeight)
|
|> yLine(length = switchPlateHeight)
|
||||||
|> xLine(length = swtichPlateWidth)
|
|> xLine(length = switchPlateWidth)
|
||||||
|> yLine(length = -switchPlateHeight)
|
|> yLine(length = -switchPlateHeight)
|
||||||
|> line(endAbsolute = [profileStartX(%), profileStartY(%)])
|
|> line(endAbsolute = [profileStartX(%), profileStartY(%)])
|
||||||
|> close()
|
|> close()
|
||||||
@ -104,8 +104,8 @@ switchPlateBody = extrude(switchPlateShape, length = switchPlateThickness)
|
|||||||
|
|
||||||
// Switch Button
|
// Switch Button
|
||||||
switchButtonHeight = 26
|
switchButtonHeight = 26
|
||||||
swtichButtonWidth = 15
|
switchButtonWidth = 15
|
||||||
switchButtonShape = startSketchOn(offsetPlane(-YZ, offset = -swtichButtonWidth / 2))
|
switchButtonShape = startSketchOn(offsetPlane(-YZ, offset = -switchButtonWidth / 2))
|
||||||
|> startProfile(
|
|> startProfile(
|
||||||
%,
|
%,
|
||||||
at = [
|
at = [
|
||||||
@ -121,7 +121,7 @@ switchButtonShape = startSketchOn(offsetPlane(-YZ, offset = -swtichButtonWidth /
|
|||||||
])
|
])
|
||||||
|> line(endAbsolute = [profileStartX(%), profileStartY(%)])
|
|> line(endAbsolute = [profileStartX(%), profileStartY(%)])
|
||||||
|> close()
|
|> close()
|
||||||
switchButtonBody = extrude(switchButtonShape, length = swtichButtonWidth)
|
switchButtonBody = extrude(switchButtonShape, length = switchButtonWidth)
|
||||||
|> translate(
|
|> translate(
|
||||||
%,
|
%,
|
||||||
x = switchPosition,
|
x = switchPosition,
|
||||||
@ -132,7 +132,7 @@ switchButtonBody = extrude(switchButtonShape, length = swtichButtonWidth)
|
|||||||
|
|
||||||
// Spacer between switch and plug modules for layout alignment
|
// Spacer between switch and plug modules for layout alignment
|
||||||
secondSpacerWidth = moduleWidth / 2
|
secondSpacerWidth = moduleWidth / 2
|
||||||
secondSpacerPosition = switchPosition + swtichWidth / 2 + secondSpacerWidth / 2
|
secondSpacerPosition = switchPosition + switchWidth / 2 + secondSpacerWidth / 2
|
||||||
secondSpacerBody = boxModuleFn(width = secondSpacerWidth)
|
secondSpacerBody = boxModuleFn(width = secondSpacerWidth)
|
||||||
|> translate(
|
|> translate(
|
||||||
%,
|
%,
|
||||||
|
@ -33,14 +33,9 @@ stemLoftProfile2 = startSketchOn(offsetPlane(XY, offset = 75))
|
|||||||
// Draw the third profile for the lofted femur
|
// Draw the third profile for the lofted femur
|
||||||
p3Z = 110
|
p3Z = 110
|
||||||
p3A = 25
|
p3A = 25
|
||||||
plane003 = {
|
|
||||||
origin = [0, 0.0, p3Z],
|
|
||||||
xAxis = [cos(p3A), 0, sin(p3A)],
|
|
||||||
yAxis = [0.0, 1.0, 0.0]
|
|
||||||
}
|
|
||||||
l3 = 32
|
l3 = 32
|
||||||
r3 = 4
|
r3 = 4
|
||||||
stemLoftProfile3 = startSketchOn(plane003)
|
stemLoftProfile3 = startSketchOn(XY)
|
||||||
|> startProfile(at = [-15.5, -l3 / 2])
|
|> startProfile(at = [-15.5, -l3 / 2])
|
||||||
|> yLine(length = l3, tag = $seg03)
|
|> yLine(length = l3, tag = $seg03)
|
||||||
|> tangentialArc(angle = -120, radius = r3)
|
|> tangentialArc(angle = -120, radius = r3)
|
||||||
@ -49,18 +44,14 @@ stemLoftProfile3 = startSketchOn(plane003)
|
|||||||
|> angledLine(angle = 30, length = -segLen(seg03))
|
|> angledLine(angle = 30, length = -segLen(seg03))
|
||||||
|> tangentialArc(endAbsolute = [profileStartX(%), profileStartY(%)])
|
|> tangentialArc(endAbsolute = [profileStartX(%), profileStartY(%)])
|
||||||
|> close()
|
|> close()
|
||||||
|
|> translate(z = p3Z)
|
||||||
|
|> rotate(pitch = -p3A)
|
||||||
// Draw the fourth profile for the lofted femur
|
// Draw the fourth profile for the lofted femur
|
||||||
p4Z = 130
|
p4Z = 130
|
||||||
p4A = 36.5
|
p4A = 36.5
|
||||||
plane004 = {
|
|
||||||
origin = [0, 0.0, p4Z],
|
|
||||||
xAxis = [cos(p4A), 0, sin(p4A)],
|
|
||||||
yAxis = [0.0, 1.0, 0.0]
|
|
||||||
}
|
|
||||||
l4 = 16
|
l4 = 16
|
||||||
r4 = 5
|
r4 = 5
|
||||||
stemLoftProfile4 = startSketchOn(plane004)
|
stemLoftProfile4 = startSketchOn(XY)
|
||||||
|> startProfile(at = [-23, -l4 / 2])
|
|> startProfile(at = [-23, -l4 / 2])
|
||||||
|> yLine(length = l4, tag = $seg04)
|
|> yLine(length = l4, tag = $seg04)
|
||||||
|> tangentialArc(angle = -120, radius = r4)
|
|> tangentialArc(angle = -120, radius = r4)
|
||||||
@ -69,18 +60,14 @@ stemLoftProfile4 = startSketchOn(plane004)
|
|||||||
|> angledLine(angle = 30, length = -segLen(seg04))
|
|> angledLine(angle = 30, length = -segLen(seg04))
|
||||||
|> tangentialArc(endAbsolute = [profileStartX(%), profileStartY(%)])
|
|> tangentialArc(endAbsolute = [profileStartX(%), profileStartY(%)])
|
||||||
|> close()
|
|> close()
|
||||||
|
|> translate(z = p4Z)
|
||||||
|
|> rotate(pitch = -p4A)
|
||||||
// Draw the first profile for the femoral stem
|
// Draw the first profile for the femoral stem
|
||||||
p5Z = 140
|
p5Z = 140
|
||||||
p5A = 36.5
|
p5A = 36.5
|
||||||
plane005 = {
|
|
||||||
origin = [0, 0.0, p5Z],
|
|
||||||
xAxis = [cos(p5A), 0, sin(p5A)],
|
|
||||||
yAxis = [0.0, 1.0, 0.0]
|
|
||||||
}
|
|
||||||
l5 = 1.6
|
l5 = 1.6
|
||||||
r5 = 1.6
|
r5 = 1.6
|
||||||
stemLoftProfile5 = startSketchOn(plane005)
|
stemLoftProfile5 = startSketchOn(XY)
|
||||||
|> startProfile(at = [-19.5, -l5 / 2])
|
|> startProfile(at = [-19.5, -l5 / 2])
|
||||||
|> yLine(length = l5, tag = $seg05)
|
|> yLine(length = l5, tag = $seg05)
|
||||||
|> tangentialArc(angle = -120, radius = r5)
|
|> tangentialArc(angle = -120, radius = r5)
|
||||||
@ -89,18 +76,14 @@ stemLoftProfile5 = startSketchOn(plane005)
|
|||||||
|> angledLine(angle = 30, length = -segLen(seg05))
|
|> angledLine(angle = 30, length = -segLen(seg05))
|
||||||
|> tangentialArc(endAbsolute = [profileStartX(%), profileStartY(%)])
|
|> tangentialArc(endAbsolute = [profileStartX(%), profileStartY(%)])
|
||||||
|> close()
|
|> close()
|
||||||
|
|> translate(z = p5Z)
|
||||||
|
|> rotate(pitch = -p5A)
|
||||||
// Draw the second profile for the femoral stem
|
// Draw the second profile for the femoral stem
|
||||||
p6Z = 145
|
p6Z = 145
|
||||||
p6A = 36.5
|
p6A = 36.5
|
||||||
plane006 = {
|
|
||||||
origin = [0, 0.0, p6Z],
|
|
||||||
xAxis = [cos(p6A), 0, sin(p6A)],
|
|
||||||
yAxis = [0.0, 1.0, 0.0]
|
|
||||||
}
|
|
||||||
l6 = 1
|
l6 = 1
|
||||||
r6 = 3
|
r6 = 3
|
||||||
stemLoftProfile6 = startSketchOn(plane006)
|
stemLoftProfile6 = startSketchOn(XY)
|
||||||
|> startProfile(at = [-23.4, -l6 / 2])
|
|> startProfile(at = [-23.4, -l6 / 2])
|
||||||
|> yLine(length = l6, tag = $seg06)
|
|> yLine(length = l6, tag = $seg06)
|
||||||
|> tangentialArc(angle = -120, radius = r6)
|
|> tangentialArc(angle = -120, radius = r6)
|
||||||
@ -109,27 +92,24 @@ stemLoftProfile6 = startSketchOn(plane006)
|
|||||||
|> angledLine(angle = 30, length = -segLen(seg06))
|
|> angledLine(angle = 30, length = -segLen(seg06))
|
||||||
|> tangentialArc(endAbsolute = [profileStartX(%), profileStartY(%)])
|
|> tangentialArc(endAbsolute = [profileStartX(%), profileStartY(%)])
|
||||||
|> close()
|
|> close()
|
||||||
|
|> translate(z = p6Z)
|
||||||
// Draw the third profile for the femoral stem
|
|> rotate(pitch = -p6A)
|
||||||
stemTab = clone(stemLoftProfile6)
|
|
||||||
|> extrude(%, length = 6)
|
|
||||||
|
|
||||||
// Loft the femur using all profiles in sequence
|
// Loft the femur using all profiles in sequence
|
||||||
|
|
||||||
femur = loft([
|
femur = loft([
|
||||||
stemLoftProfile1,
|
stemLoftProfile1,
|
||||||
stemLoftProfile2,
|
stemLoftProfile2,
|
||||||
stemLoftProfile3,
|
stemLoftProfile3,
|
||||||
stemLoftProfile4
|
stemLoftProfile4
|
||||||
])
|
])
|
||||||
|
|
||||||
// Loft the femoral stem
|
// Loft the femoral stem
|
||||||
femoralStem = loft([
|
femoralStem = loft([
|
||||||
clone(stemLoftProfile4),
|
clone(stemLoftProfile4),
|
||||||
stemLoftProfile5,
|
stemLoftProfile5,
|
||||||
stemLoftProfile6
|
clone(stemLoftProfile6)
|
||||||
])
|
])
|
||||||
|
// Draw the third profile for the femoral stem
|
||||||
|
stemTab = stemLoftProfile6
|
||||||
|
|> extrude(length = 6)
|
||||||
// Revolve a hollow socket to represent the femoral head
|
// Revolve a hollow socket to represent the femoral head
|
||||||
femoralHead = startSketchOn(XZ)
|
femoralHead = startSketchOn(XZ)
|
||||||
|> startProfile(at = [4, 0])
|
|> startProfile(at = [4, 0])
|
||||||
|
@ -53,8 +53,8 @@ baseSlab = boxFn(plane = XY, width = slabWidth, height = -baseThickness)
|
|||||||
|> appearance(%, color = "#dbd7d2")
|
|> appearance(%, color = "#dbd7d2")
|
||||||
|
|
||||||
// Create ground platform beneath the base
|
// Create ground platform beneath the base
|
||||||
goundSize = 50
|
groundSize = 50
|
||||||
groundBody = boxFn(plane = offsetPlane(XY, offset = -baseThickness), width = goundSize, height = -5)
|
groundBody = boxFn(plane = offsetPlane(XY, offset = -baseThickness), width = groundSize, height = -5)
|
||||||
|> appearance(%, color = "#3a3631")
|
|> appearance(%, color = "#3a3631")
|
||||||
|
|
||||||
// Create a single slab with handrail height to be reused with pattern
|
// Create a single slab with handrail height to be reused with pattern
|
||||||
|
Before Width: | Height: | Size: 16 KiB |
Before Width: | Height: | Size: 11 KiB |
Before Width: | Height: | Size: 8.1 KiB |
Before Width: | Height: | Size: 16 KiB |
Before Width: | Height: | Size: 13 KiB |
Before Width: | Height: | Size: 13 KiB |
@ -631,6 +631,8 @@ impl FnData {
|
|||||||
return "clone(${0:part001})".to_owned();
|
return "clone(${0:part001})".to_owned();
|
||||||
} else if self.name == "hole" {
|
} else if self.name == "hole" {
|
||||||
return "hole(${0:holeSketch}, ${1:%})".to_owned();
|
return "hole(${0:holeSketch}, ${1:%})".to_owned();
|
||||||
|
} else if self.name == "circle" {
|
||||||
|
return "circle(center = [${0:3.14}, ${1:3.14}], diameter = ${2:3.14})".to_owned();
|
||||||
}
|
}
|
||||||
let mut args = Vec::new();
|
let mut args = Vec::new();
|
||||||
let mut index = 0;
|
let mut index = 0;
|
||||||
|
@ -1018,7 +1018,7 @@ mod tests {
|
|||||||
let snippet = circle_fn.to_autocomplete_snippet();
|
let snippet = circle_fn.to_autocomplete_snippet();
|
||||||
assert_eq!(
|
assert_eq!(
|
||||||
snippet,
|
snippet,
|
||||||
r#"circle(center = [${0:3.14}, ${1:3.14}], radius = ${2:3.14})"#
|
r#"circle(center = [${0:3.14}, ${1:3.14}], diameter = ${2:3.14})"#
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -281,7 +281,14 @@ impl ExecutorContext {
|
|||||||
|
|
||||||
// Track exports.
|
// Track exports.
|
||||||
if let ItemVisibility::Export = variable_declaration.visibility {
|
if let ItemVisibility::Export = variable_declaration.visibility {
|
||||||
exec_state.mod_local.module_exports.push(var_name);
|
if matches!(body_type, BodyType::Root) {
|
||||||
|
exec_state.mod_local.module_exports.push(var_name);
|
||||||
|
} else {
|
||||||
|
exec_state.err(CompilationError::err(
|
||||||
|
variable_declaration.as_source_range(),
|
||||||
|
"Exports are only supported at the top-level of a file. Remove `export` or move it to the top-level.",
|
||||||
|
));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
// Variable declaration can be the return value of a module.
|
// Variable declaration can be the return value of a module.
|
||||||
last_expr = matches!(body_type, BodyType::Root).then_some(value);
|
last_expr = matches!(body_type, BodyType::Root).then_some(value);
|
||||||
|
@ -35,31 +35,28 @@ impl Default for TypedPath {
|
|||||||
|
|
||||||
impl From<&String> for TypedPath {
|
impl From<&String> for TypedPath {
|
||||||
fn from(path: &String) -> Self {
|
fn from(path: &String) -> Self {
|
||||||
#[cfg(target_arch = "wasm32")]
|
TypedPath::new(path)
|
||||||
{
|
|
||||||
TypedPath(typed_path::TypedPath::derive(path).to_path_buf())
|
|
||||||
}
|
|
||||||
#[cfg(not(target_arch = "wasm32"))]
|
|
||||||
{
|
|
||||||
TypedPath(std::path::PathBuf::from(path))
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl From<&str> for TypedPath {
|
impl From<&str> for TypedPath {
|
||||||
fn from(path: &str) -> Self {
|
fn from(path: &str) -> Self {
|
||||||
|
TypedPath::new(path)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl TypedPath {
|
||||||
|
pub fn new(path: &str) -> Self {
|
||||||
#[cfg(target_arch = "wasm32")]
|
#[cfg(target_arch = "wasm32")]
|
||||||
{
|
{
|
||||||
TypedPath(typed_path::TypedPath::derive(path).to_path_buf())
|
TypedPath(typed_path::TypedPath::derive(path).to_path_buf())
|
||||||
}
|
}
|
||||||
#[cfg(not(target_arch = "wasm32"))]
|
#[cfg(not(target_arch = "wasm32"))]
|
||||||
{
|
{
|
||||||
TypedPath(std::path::PathBuf::from(path))
|
TypedPath(normalise_import(path))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
impl TypedPath {
|
|
||||||
pub fn extension(&self) -> Option<&str> {
|
pub fn extension(&self) -> Option<&str> {
|
||||||
#[cfg(target_arch = "wasm32")]
|
#[cfg(target_arch = "wasm32")]
|
||||||
{
|
{
|
||||||
@ -85,6 +82,17 @@ impl TypedPath {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn join_typed(&self, path: &TypedPath) -> Self {
|
||||||
|
#[cfg(target_arch = "wasm32")]
|
||||||
|
{
|
||||||
|
TypedPath(self.0.join(path.0.to_path()))
|
||||||
|
}
|
||||||
|
#[cfg(not(target_arch = "wasm32"))]
|
||||||
|
{
|
||||||
|
TypedPath(self.0.join(&path.0))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
pub fn parent(&self) -> Option<Self> {
|
pub fn parent(&self) -> Option<Self> {
|
||||||
#[cfg(target_arch = "wasm32")]
|
#[cfg(target_arch = "wasm32")]
|
||||||
{
|
{
|
||||||
@ -206,3 +214,19 @@ impl schemars::JsonSchema for TypedPath {
|
|||||||
gen.subschema_for::<std::path::PathBuf>()
|
gen.subschema_for::<std::path::PathBuf>()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Turn `nested\foo\bar\main.kcl` or `nested/foo/bar/main.kcl`
|
||||||
|
/// into a PathBuf that works on the host OS.
|
||||||
|
///
|
||||||
|
/// * Does **not** touch `..` or symlinks – call `canonicalize()` if you need that.
|
||||||
|
/// * Returns an owned `PathBuf` only when normalisation was required.
|
||||||
|
fn normalise_import<S: AsRef<str>>(raw: S) -> std::path::PathBuf {
|
||||||
|
let s = raw.as_ref();
|
||||||
|
// On Unix we need to swap `\` → `/`. On Windows we leave it alone.
|
||||||
|
// (Windows happily consumes `/`)
|
||||||
|
if cfg!(unix) && s.contains('\\') {
|
||||||
|
std::path::PathBuf::from(s.replace('\\', "/"))
|
||||||
|
} else {
|
||||||
|
std::path::Path::new(s).to_path_buf()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@ -185,9 +185,9 @@ impl ModulePath {
|
|||||||
match path {
|
match path {
|
||||||
ImportPath::Kcl { filename: path } | ImportPath::Foreign { path } => {
|
ImportPath::Kcl { filename: path } | ImportPath::Foreign { path } => {
|
||||||
let resolved_path = if let Some(project_dir) = project_directory {
|
let resolved_path = if let Some(project_dir) = project_directory {
|
||||||
project_dir.join(path)
|
project_dir.join_typed(path)
|
||||||
} else {
|
} else {
|
||||||
TypedPath::from(path)
|
path.clone()
|
||||||
};
|
};
|
||||||
ModulePath::Local { value: resolved_path }
|
ModulePath::Local { value: resolved_path }
|
||||||
}
|
}
|
||||||
|
@ -34,7 +34,7 @@ use crate::{
|
|||||||
},
|
},
|
||||||
parsing::{ast::digest::Digest, token::NumericSuffix, PIPE_OPERATOR},
|
parsing::{ast::digest::Digest, token::NumericSuffix, PIPE_OPERATOR},
|
||||||
source_range::SourceRange,
|
source_range::SourceRange,
|
||||||
ModuleId,
|
ModuleId, TypedPath,
|
||||||
};
|
};
|
||||||
|
|
||||||
mod condition;
|
mod condition;
|
||||||
@ -1741,8 +1741,8 @@ impl ImportSelector {
|
|||||||
#[ts(export)]
|
#[ts(export)]
|
||||||
#[serde(tag = "type")]
|
#[serde(tag = "type")]
|
||||||
pub enum ImportPath {
|
pub enum ImportPath {
|
||||||
Kcl { filename: String },
|
Kcl { filename: TypedPath },
|
||||||
Foreign { path: String },
|
Foreign { path: TypedPath },
|
||||||
Std { path: Vec<String> },
|
Std { path: Vec<String> },
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1811,16 +1811,25 @@ impl ImportStatement {
|
|||||||
|
|
||||||
match &self.path {
|
match &self.path {
|
||||||
ImportPath::Kcl { filename: s } | ImportPath::Foreign { path: s } => {
|
ImportPath::Kcl { filename: s } | ImportPath::Foreign { path: s } => {
|
||||||
let mut parts = s.split('.');
|
let name = s.to_string_lossy();
|
||||||
let path = parts.next()?;
|
if name.ends_with("/main.kcl") || name.ends_with("\\main.kcl") {
|
||||||
let _ext = parts.next()?;
|
let name = &name[..name.len() - 9];
|
||||||
let rest = parts.next();
|
let start = name.rfind(['/', '\\']).map(|s| s + 1).unwrap_or(0);
|
||||||
|
return Some(name[start..].to_owned());
|
||||||
|
}
|
||||||
|
|
||||||
if rest.is_some() {
|
let name = s.file_name().map(|f| f.to_string())?;
|
||||||
|
if name.contains('\\') || name.contains('/') {
|
||||||
return None;
|
return None;
|
||||||
}
|
}
|
||||||
|
|
||||||
path.rsplit(&['/', '\\']).next().map(str::to_owned)
|
// Remove the extension if it exists.
|
||||||
|
let extension = s.extension();
|
||||||
|
Some(if let Some(extension) = extension {
|
||||||
|
name.trim_end_matches(extension).trim_end_matches('.').to_string()
|
||||||
|
} else {
|
||||||
|
name
|
||||||
|
})
|
||||||
}
|
}
|
||||||
ImportPath::Std { path } => path.last().cloned(),
|
ImportPath::Std { path } => path.last().cloned(),
|
||||||
}
|
}
|
||||||
@ -4332,4 +4341,20 @@ startSketchOn(XY)
|
|||||||
"#
|
"#
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn module_name() {
|
||||||
|
#[track_caller]
|
||||||
|
fn assert_mod_name(stmt: &str, name: &str) {
|
||||||
|
let tokens = crate::parsing::token::lex(stmt, ModuleId::default()).unwrap();
|
||||||
|
let stmt = crate::parsing::parser::import_stmt(&mut tokens.as_slice()).unwrap();
|
||||||
|
assert_eq!(stmt.module_name().unwrap(), name);
|
||||||
|
}
|
||||||
|
|
||||||
|
assert_mod_name("import 'foo.kcl'", "foo");
|
||||||
|
assert_mod_name("import 'foo.kcl' as bar", "bar");
|
||||||
|
assert_mod_name("import 'main.kcl'", "main");
|
||||||
|
assert_mod_name("import 'foo/main.kcl'", "foo");
|
||||||
|
assert_mod_name("import 'foo\\bar\\main.kcl'", "bar");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -35,7 +35,7 @@ use crate::{
|
|||||||
token::{Token, TokenSlice, TokenType},
|
token::{Token, TokenSlice, TokenType},
|
||||||
PIPE_OPERATOR, PIPE_SUBSTITUTION_OPERATOR,
|
PIPE_OPERATOR, PIPE_SUBSTITUTION_OPERATOR,
|
||||||
},
|
},
|
||||||
SourceRange, IMPORT_FILE_EXTENSIONS,
|
SourceRange, TypedPath, IMPORT_FILE_EXTENSIONS,
|
||||||
};
|
};
|
||||||
|
|
||||||
thread_local! {
|
thread_local! {
|
||||||
@ -1729,7 +1729,7 @@ fn glob(i: &mut TokenSlice) -> PResult<Token> {
|
|||||||
.parse_next(i)
|
.parse_next(i)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn import_stmt(i: &mut TokenSlice) -> PResult<BoxNode<ImportStatement>> {
|
pub(super) fn import_stmt(i: &mut TokenSlice) -> PResult<BoxNode<ImportStatement>> {
|
||||||
let (visibility, visibility_token) = opt(terminated(item_visibility, whitespace))
|
let (visibility, visibility_token) = opt(terminated(item_visibility, whitespace))
|
||||||
.parse_next(i)?
|
.parse_next(i)?
|
||||||
.map_or((ItemVisibility::Default, None), |pair| (pair.0, Some(pair.1)));
|
.map_or((ItemVisibility::Default, None), |pair| (pair.0, Some(pair.1)));
|
||||||
@ -1862,18 +1862,50 @@ fn validate_path_string(path_string: String, var_name: bool, path_range: SourceR
|
|||||||
let path = if path_string.ends_with(".kcl") {
|
let path = if path_string.ends_with(".kcl") {
|
||||||
if path_string
|
if path_string
|
||||||
.chars()
|
.chars()
|
||||||
.any(|c| !c.is_ascii_alphanumeric() && c != '_' && c != '-' && c != '.')
|
.any(|c| !c.is_ascii_alphanumeric() && c != '_' && c != '-' && c != '.' && c != '/' && c != '\\')
|
||||||
{
|
{
|
||||||
return Err(ErrMode::Cut(
|
return Err(ErrMode::Cut(
|
||||||
CompilationError::fatal(
|
CompilationError::fatal(
|
||||||
path_range,
|
path_range,
|
||||||
"import path may only contain alphanumeric characters, underscore, hyphen, and period. KCL files in other directories are not yet supported.",
|
"import path may only contain alphanumeric characters, `_`, `-`, `.`, `/`, and `\\`.",
|
||||||
)
|
)
|
||||||
.into(),
|
.into(),
|
||||||
));
|
));
|
||||||
}
|
}
|
||||||
|
|
||||||
ImportPath::Kcl { filename: path_string }
|
if path_string.starts_with("..") {
|
||||||
|
return Err(ErrMode::Cut(
|
||||||
|
CompilationError::fatal(
|
||||||
|
path_range,
|
||||||
|
"import path may not start with '..'. Cannot traverse to something outside the bounds of your project. If this path is inside your project please find a better way to reference it.",
|
||||||
|
)
|
||||||
|
.into(),
|
||||||
|
));
|
||||||
|
}
|
||||||
|
|
||||||
|
// Make sure they are not using an absolute path.
|
||||||
|
if path_string.starts_with('/') || path_string.starts_with('\\') {
|
||||||
|
return Err(ErrMode::Cut(
|
||||||
|
CompilationError::fatal(
|
||||||
|
path_range,
|
||||||
|
"import path may not start with '/' or '\\'. Cannot traverse to something outside the bounds of your project. If this path is inside your project please find a better way to reference it.",
|
||||||
|
)
|
||||||
|
.into(),
|
||||||
|
));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (path_string.contains('/') || path_string.contains('\\'))
|
||||||
|
&& !(path_string.ends_with("/main.kcl") || path_string.ends_with("\\main.kcl"))
|
||||||
|
{
|
||||||
|
return Err(ErrMode::Cut(
|
||||||
|
CompilationError::fatal(path_range, "import path to a subdirectory must only refer to main.kcl.")
|
||||||
|
.into(),
|
||||||
|
));
|
||||||
|
}
|
||||||
|
|
||||||
|
ImportPath::Kcl {
|
||||||
|
filename: TypedPath::new(&path_string),
|
||||||
|
}
|
||||||
} else if path_string.starts_with("std::") {
|
} else if path_string.starts_with("std::") {
|
||||||
ParseContext::warn(CompilationError::err(
|
ParseContext::warn(CompilationError::err(
|
||||||
path_range,
|
path_range,
|
||||||
@ -1910,7 +1942,9 @@ fn validate_path_string(path_string: String, var_name: bool, path_range: SourceR
|
|||||||
format!("unsupported import path format. KCL files can be imported from the current project, CAD files with the following formats are supported: {}", IMPORT_FILE_EXTENSIONS.join(", ")),
|
format!("unsupported import path format. KCL files can be imported from the current project, CAD files with the following formats are supported: {}", IMPORT_FILE_EXTENSIONS.join(", ")),
|
||||||
))
|
))
|
||||||
}
|
}
|
||||||
ImportPath::Foreign { path: path_string }
|
ImportPath::Foreign {
|
||||||
|
path: TypedPath::new(&path_string),
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
return Err(ErrMode::Cut(
|
return Err(ErrMode::Cut(
|
||||||
CompilationError::fatal(
|
CompilationError::fatal(
|
||||||
@ -4534,9 +4568,24 @@ e
|
|||||||
fn bad_imports() {
|
fn bad_imports() {
|
||||||
assert_err(
|
assert_err(
|
||||||
r#"import cube from "../cube.kcl""#,
|
r#"import cube from "../cube.kcl""#,
|
||||||
"import path may only contain alphanumeric characters, underscore, hyphen, and period. KCL files in other directories are not yet supported.",
|
"import path may not start with '..'. Cannot traverse to something outside the bounds of your project. If this path is inside your project please find a better way to reference it.",
|
||||||
[17, 30],
|
[17, 30],
|
||||||
);
|
);
|
||||||
|
assert_err(
|
||||||
|
r#"import cube from "/cube.kcl""#,
|
||||||
|
"import path may not start with '/' or '\\'. Cannot traverse to something outside the bounds of your project. If this path is inside your project please find a better way to reference it.",
|
||||||
|
[17, 28],
|
||||||
|
);
|
||||||
|
assert_err(
|
||||||
|
r#"import cube from "C:\cube.kcl""#,
|
||||||
|
"import path may only contain alphanumeric characters, `_`, `-`, `.`, `/`, and `\\`.",
|
||||||
|
[17, 30],
|
||||||
|
);
|
||||||
|
assert_err(
|
||||||
|
r#"import cube from "cube/cube.kcl""#,
|
||||||
|
"import path to a subdirectory must only refer to main.kcl.",
|
||||||
|
[17, 32],
|
||||||
|
);
|
||||||
assert_err(
|
assert_err(
|
||||||
r#"import * as foo from "dsfs""#,
|
r#"import * as foo from "dsfs""#,
|
||||||
"as is not the 'from' keyword",
|
"as is not the 'from' keyword",
|
||||||
|
@ -996,6 +996,27 @@ mod import_cycle1 {
|
|||||||
super::execute(TEST_NAME, false).await
|
super::execute(TEST_NAME, false).await
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
mod import_only_at_top_level {
|
||||||
|
const TEST_NAME: &str = "import_only_at_top_level";
|
||||||
|
|
||||||
|
/// Test parsing KCL.
|
||||||
|
#[test]
|
||||||
|
fn parse() {
|
||||||
|
super::parse(TEST_NAME)
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Test that parsing and unparsing KCL produces the original KCL input.
|
||||||
|
#[tokio::test(flavor = "multi_thread")]
|
||||||
|
async fn unparse() {
|
||||||
|
super::unparse(TEST_NAME).await
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Test that KCL is executed correctly.
|
||||||
|
#[tokio::test(flavor = "multi_thread")]
|
||||||
|
async fn kcl_test_execute() {
|
||||||
|
super::execute(TEST_NAME, false).await
|
||||||
|
}
|
||||||
|
}
|
||||||
mod import_function_not_sketch {
|
mod import_function_not_sketch {
|
||||||
const TEST_NAME: &str = "import_function_not_sketch";
|
const TEST_NAME: &str = "import_function_not_sketch";
|
||||||
|
|
||||||
@ -1164,6 +1185,27 @@ mod import_foreign {
|
|||||||
super::execute(TEST_NAME, false).await
|
super::execute(TEST_NAME, false).await
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
mod export_var_only_at_top_level {
|
||||||
|
const TEST_NAME: &str = "export_var_only_at_top_level";
|
||||||
|
|
||||||
|
/// Test parsing KCL.
|
||||||
|
#[test]
|
||||||
|
fn parse() {
|
||||||
|
super::parse(TEST_NAME)
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Test that parsing and unparsing KCL produces the original KCL input.
|
||||||
|
#[tokio::test(flavor = "multi_thread")]
|
||||||
|
async fn unparse() {
|
||||||
|
super::unparse(TEST_NAME).await
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Test that KCL is executed correctly.
|
||||||
|
#[tokio::test(flavor = "multi_thread")]
|
||||||
|
async fn kcl_test_execute() {
|
||||||
|
super::execute(TEST_NAME, false).await
|
||||||
|
}
|
||||||
|
}
|
||||||
mod assembly_non_default_units {
|
mod assembly_non_default_units {
|
||||||
const TEST_NAME: &str = "assembly_non_default_units";
|
const TEST_NAME: &str = "assembly_non_default_units";
|
||||||
|
|
||||||
@ -3276,3 +3318,87 @@ mod subtract_regression10 {
|
|||||||
super::execute(TEST_NAME, true).await
|
super::execute(TEST_NAME, true).await
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
mod nested_main_kcl {
|
||||||
|
const TEST_NAME: &str = "nested_main_kcl";
|
||||||
|
|
||||||
|
/// Test parsing KCL.
|
||||||
|
#[test]
|
||||||
|
fn parse() {
|
||||||
|
super::parse(TEST_NAME)
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Test that parsing and unparsing KCL produces the original KCL input.
|
||||||
|
#[tokio::test(flavor = "multi_thread")]
|
||||||
|
async fn unparse() {
|
||||||
|
super::unparse(TEST_NAME).await
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Test that KCL is executed correctly.
|
||||||
|
#[tokio::test(flavor = "multi_thread")]
|
||||||
|
async fn kcl_test_execute() {
|
||||||
|
super::execute(TEST_NAME, true).await
|
||||||
|
}
|
||||||
|
}
|
||||||
|
mod nested_windows_main_kcl {
|
||||||
|
const TEST_NAME: &str = "nested_windows_main_kcl";
|
||||||
|
|
||||||
|
/// Test parsing KCL.
|
||||||
|
#[test]
|
||||||
|
fn parse() {
|
||||||
|
super::parse(TEST_NAME)
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Test that parsing and unparsing KCL produces the original KCL input.
|
||||||
|
#[tokio::test(flavor = "multi_thread")]
|
||||||
|
async fn unparse() {
|
||||||
|
super::unparse(TEST_NAME).await
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Test that KCL is executed correctly.
|
||||||
|
#[tokio::test(flavor = "multi_thread")]
|
||||||
|
async fn kcl_test_execute() {
|
||||||
|
super::execute(TEST_NAME, true).await
|
||||||
|
}
|
||||||
|
}
|
||||||
|
mod subtract_regression11 {
|
||||||
|
const TEST_NAME: &str = "subtract_regression11";
|
||||||
|
|
||||||
|
/// Test parsing KCL.
|
||||||
|
#[test]
|
||||||
|
fn parse() {
|
||||||
|
super::parse(TEST_NAME)
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Test that parsing and unparsing KCL produces the original KCL input.
|
||||||
|
#[tokio::test(flavor = "multi_thread")]
|
||||||
|
async fn unparse() {
|
||||||
|
super::unparse(TEST_NAME).await
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Test that KCL is executed correctly.
|
||||||
|
#[tokio::test(flavor = "multi_thread")]
|
||||||
|
async fn kcl_test_execute() {
|
||||||
|
super::execute(TEST_NAME, true).await
|
||||||
|
}
|
||||||
|
}
|
||||||
|
mod subtract_regression12 {
|
||||||
|
const TEST_NAME: &str = "subtract_regression12";
|
||||||
|
|
||||||
|
/// Test parsing KCL.
|
||||||
|
#[test]
|
||||||
|
fn parse() {
|
||||||
|
super::parse(TEST_NAME)
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Test that parsing and unparsing KCL produces the original KCL input.
|
||||||
|
#[tokio::test(flavor = "multi_thread")]
|
||||||
|
async fn unparse() {
|
||||||
|
super::unparse(TEST_NAME).await
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Test that KCL is executed correctly.
|
||||||
|
#[tokio::test(flavor = "multi_thread")]
|
||||||
|
async fn kcl_test_execute() {
|
||||||
|
super::execute(TEST_NAME, true).await
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@ -44,10 +44,11 @@ pub enum SketchOrSurface {
|
|||||||
pub async fn circle(exec_state: &mut ExecState, args: Args) -> Result<KclValue, KclError> {
|
pub async fn circle(exec_state: &mut ExecState, args: Args) -> Result<KclValue, KclError> {
|
||||||
let sketch_or_surface = args.get_unlabeled_kw_arg("sketchOrSurface")?;
|
let sketch_or_surface = args.get_unlabeled_kw_arg("sketchOrSurface")?;
|
||||||
let center = args.get_kw_arg_typed("center", &RuntimeType::point2d(), exec_state)?;
|
let center = args.get_kw_arg_typed("center", &RuntimeType::point2d(), exec_state)?;
|
||||||
let radius: TyF64 = args.get_kw_arg_typed("radius", &RuntimeType::length(), exec_state)?;
|
let radius: Option<TyF64> = args.get_kw_arg_opt_typed("radius", &RuntimeType::length(), exec_state)?;
|
||||||
|
let diameter: Option<TyF64> = args.get_kw_arg_opt_typed("diameter", &RuntimeType::length(), exec_state)?;
|
||||||
let tag = args.get_kw_arg_opt(NEW_TAG_KW)?;
|
let tag = args.get_kw_arg_opt(NEW_TAG_KW)?;
|
||||||
|
|
||||||
let sketch = inner_circle(sketch_or_surface, center, radius, tag, exec_state, args).await?;
|
let sketch = inner_circle(sketch_or_surface, center, radius, diameter, tag, exec_state, args).await?;
|
||||||
Ok(KclValue::Sketch {
|
Ok(KclValue::Sketch {
|
||||||
value: Box::new(sketch),
|
value: Box::new(sketch),
|
||||||
})
|
})
|
||||||
@ -56,7 +57,8 @@ pub async fn circle(exec_state: &mut ExecState, args: Args) -> Result<KclValue,
|
|||||||
async fn inner_circle(
|
async fn inner_circle(
|
||||||
sketch_or_surface: SketchOrSurface,
|
sketch_or_surface: SketchOrSurface,
|
||||||
center: [TyF64; 2],
|
center: [TyF64; 2],
|
||||||
radius: TyF64,
|
radius: Option<TyF64>,
|
||||||
|
diameter: Option<TyF64>,
|
||||||
tag: Option<TagNode>,
|
tag: Option<TagNode>,
|
||||||
exec_state: &mut ExecState,
|
exec_state: &mut ExecState,
|
||||||
args: Args,
|
args: Args,
|
||||||
@ -68,6 +70,25 @@ async fn inner_circle(
|
|||||||
let (center_u, ty) = untype_point(center.clone());
|
let (center_u, ty) = untype_point(center.clone());
|
||||||
let units = ty.expect_length();
|
let units = ty.expect_length();
|
||||||
|
|
||||||
|
let radius = match (radius, diameter) {
|
||||||
|
(Some(radius), None) => radius,
|
||||||
|
(None, Some(mut diameter)) => {
|
||||||
|
diameter.n /= 2.0;
|
||||||
|
diameter
|
||||||
|
}
|
||||||
|
(None, None) => {
|
||||||
|
return Err(KclError::Type(KclErrorDetails::new(
|
||||||
|
"This function needs either `diameter` or `radius`".to_string(),
|
||||||
|
vec![args.source_range],
|
||||||
|
)))
|
||||||
|
}
|
||||||
|
(Some(_), Some(_)) => {
|
||||||
|
return Err(KclError::Type(KclErrorDetails::new(
|
||||||
|
"You cannot specify both `diameter` and `radius`, please remove one".to_string(),
|
||||||
|
vec![args.source_range],
|
||||||
|
)))
|
||||||
|
}
|
||||||
|
};
|
||||||
let from = [center_u[0] + radius.to_length_units(units), center_u[1]];
|
let from = [center_u[0] + radius.to_length_units(units), center_u[1]];
|
||||||
let from_t = [TyF64::new(from[0], ty.clone()), TyF64::new(from[1], ty)];
|
let from_t = [TyF64::new(from[0], ty.clone()), TyF64::new(from[1], ty)];
|
||||||
|
|
||||||
|
@ -26,7 +26,7 @@ use crate::{
|
|||||||
args::{Args, TyF64},
|
args::{Args, TyF64},
|
||||||
utils::{
|
utils::{
|
||||||
arc_center_and_end, get_tangential_arc_to_info, get_x_component, get_y_component,
|
arc_center_and_end, get_tangential_arc_to_info, get_x_component, get_y_component,
|
||||||
intersection_with_parallel_line, point_to_len_unit, point_to_mm, untype_point, untyped_point_to_mm,
|
intersection_with_parallel_line, point_to_len_unit, point_to_mm, untyped_point_to_mm,
|
||||||
TangentialArcInfoInput,
|
TangentialArcInfoInput,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@ -1396,12 +1396,14 @@ pub(crate) async fn inner_start_profile(
|
|||||||
])
|
])
|
||||||
.await?;
|
.await?;
|
||||||
|
|
||||||
let (to, ty) = untype_point(at);
|
// Convert to the units of the module. This is what the frontend expects.
|
||||||
|
let units = exec_state.length_unit();
|
||||||
|
let to = point_to_len_unit(at, units);
|
||||||
let current_path = BasePath {
|
let current_path = BasePath {
|
||||||
from: to,
|
from: to,
|
||||||
to,
|
to,
|
||||||
tag: tag.clone(),
|
tag: tag.clone(),
|
||||||
units: ty.expect_length(),
|
units,
|
||||||
geo_meta: GeoMeta {
|
geo_meta: GeoMeta {
|
||||||
id: move_pen_id,
|
id: move_pen_id,
|
||||||
metadata: args.source_range.into(),
|
metadata: args.source_range.into(),
|
||||||
@ -1414,7 +1416,7 @@ pub(crate) async fn inner_start_profile(
|
|||||||
artifact_id: path_id.into(),
|
artifact_id: path_id.into(),
|
||||||
on: sketch_surface.clone(),
|
on: sketch_surface.clone(),
|
||||||
paths: vec![],
|
paths: vec![],
|
||||||
units: ty.expect_length(),
|
units,
|
||||||
mirror: Default::default(),
|
mirror: Default::default(),
|
||||||
meta: vec![args.source_range.into()],
|
meta: vec![args.source_range.into()],
|
||||||
tags: if let Some(tag) = &tag {
|
tags: if let Some(tag) = &tag {
|
||||||
|
@ -24,7 +24,7 @@
|
|||||||
/// |> line(end = [0, 30])
|
/// |> line(end = [0, 30])
|
||||||
/// |> line(end = [-30, 0])
|
/// |> line(end = [-30, 0])
|
||||||
/// |> close()
|
/// |> close()
|
||||||
/// |> subtract2d(tool = circle(center = [0, 15], radius = 5))
|
/// |> subtract2d(tool = circle(center = [0, 15], diameter = 10))
|
||||||
///
|
///
|
||||||
/// example = extrude(exampleSketch, length = 5)
|
/// example = extrude(exampleSketch, length = 5)
|
||||||
/// ```
|
/// ```
|
||||||
@ -34,8 +34,10 @@ export fn circle(
|
|||||||
@sketch_or_surface: Sketch | Plane | Face,
|
@sketch_or_surface: Sketch | Plane | Face,
|
||||||
/// The center of the circle.
|
/// The center of the circle.
|
||||||
center: Point2d,
|
center: Point2d,
|
||||||
/// The radius of the circle.
|
/// The radius of the circle. Incompatible with `diameter`.
|
||||||
radius: number(Length),
|
radius?: number(Length),
|
||||||
|
/// The diameter of the circle. Incompatible with `radius`.
|
||||||
|
diameter?: number(Length),
|
||||||
/// Create a new tag which refers to this circle.
|
/// Create a new tag which refers to this circle.
|
||||||
tag?: tag,
|
tag?: tag,
|
||||||
): Sketch {}
|
): Sketch {}
|
||||||
|
@ -0,0 +1,5 @@
|
|||||||
|
---
|
||||||
|
source: kcl-lib/src/simulation_tests.rs
|
||||||
|
description: Artifact commands export_only_at_top_level.kcl
|
||||||
|
---
|
||||||
|
[]
|
@ -0,0 +1,6 @@
|
|||||||
|
---
|
||||||
|
source: kcl-lib/src/simulation_tests.rs
|
||||||
|
description: Artifact graph flowchart export_only_at_top_level.kcl
|
||||||
|
extension: md
|
||||||
|
snapshot_kind: binary
|
||||||
|
---
|
@ -0,0 +1,3 @@
|
|||||||
|
```mermaid
|
||||||
|
flowchart LR
|
||||||
|
```
|
148
rust/kcl-lib/tests/export_var_only_at_top_level/ast.snap
Normal file
@ -0,0 +1,148 @@
|
|||||||
|
---
|
||||||
|
source: kcl-lib/src/simulation_tests.rs
|
||||||
|
description: Result of parsing export_only_at_top_level.kcl
|
||||||
|
---
|
||||||
|
{
|
||||||
|
"Ok": {
|
||||||
|
"body": [
|
||||||
|
{
|
||||||
|
"commentStart": 0,
|
||||||
|
"declaration": {
|
||||||
|
"commentStart": 0,
|
||||||
|
"end": 0,
|
||||||
|
"id": {
|
||||||
|
"commentStart": 0,
|
||||||
|
"end": 0,
|
||||||
|
"name": "main",
|
||||||
|
"start": 0,
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"init": {
|
||||||
|
"body": {
|
||||||
|
"body": [
|
||||||
|
{
|
||||||
|
"commentStart": 0,
|
||||||
|
"declaration": {
|
||||||
|
"commentStart": 0,
|
||||||
|
"end": 0,
|
||||||
|
"id": {
|
||||||
|
"commentStart": 0,
|
||||||
|
"end": 0,
|
||||||
|
"name": "x",
|
||||||
|
"start": 0,
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"init": {
|
||||||
|
"commentStart": 0,
|
||||||
|
"end": 0,
|
||||||
|
"raw": "2",
|
||||||
|
"start": 0,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": {
|
||||||
|
"value": 2.0,
|
||||||
|
"suffix": "None"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"start": 0,
|
||||||
|
"type": "VariableDeclarator"
|
||||||
|
},
|
||||||
|
"end": 0,
|
||||||
|
"kind": "const",
|
||||||
|
"start": 0,
|
||||||
|
"type": "VariableDeclaration",
|
||||||
|
"type": "VariableDeclaration",
|
||||||
|
"visibility": "export"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"argument": {
|
||||||
|
"commentStart": 0,
|
||||||
|
"end": 0,
|
||||||
|
"raw": "0",
|
||||||
|
"start": 0,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": {
|
||||||
|
"value": 0.0,
|
||||||
|
"suffix": "None"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"commentStart": 0,
|
||||||
|
"end": 0,
|
||||||
|
"start": 0,
|
||||||
|
"type": "ReturnStatement",
|
||||||
|
"type": "ReturnStatement"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"commentStart": 0,
|
||||||
|
"end": 0,
|
||||||
|
"start": 0
|
||||||
|
},
|
||||||
|
"commentStart": 0,
|
||||||
|
"end": 0,
|
||||||
|
"params": [],
|
||||||
|
"start": 0,
|
||||||
|
"type": "FunctionExpression",
|
||||||
|
"type": "FunctionExpression"
|
||||||
|
},
|
||||||
|
"start": 0,
|
||||||
|
"type": "VariableDeclarator"
|
||||||
|
},
|
||||||
|
"end": 0,
|
||||||
|
"kind": "fn",
|
||||||
|
"start": 0,
|
||||||
|
"type": "VariableDeclaration",
|
||||||
|
"type": "VariableDeclaration"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"commentStart": 0,
|
||||||
|
"end": 0,
|
||||||
|
"expression": {
|
||||||
|
"callee": {
|
||||||
|
"abs_path": false,
|
||||||
|
"commentStart": 0,
|
||||||
|
"end": 0,
|
||||||
|
"name": {
|
||||||
|
"commentStart": 0,
|
||||||
|
"end": 0,
|
||||||
|
"name": "main",
|
||||||
|
"start": 0,
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"path": [],
|
||||||
|
"start": 0,
|
||||||
|
"type": "Name"
|
||||||
|
},
|
||||||
|
"commentStart": 0,
|
||||||
|
"end": 0,
|
||||||
|
"start": 0,
|
||||||
|
"type": "CallExpressionKw",
|
||||||
|
"type": "CallExpressionKw",
|
||||||
|
"unlabeled": null
|
||||||
|
},
|
||||||
|
"start": 0,
|
||||||
|
"type": "ExpressionStatement",
|
||||||
|
"type": "ExpressionStatement"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"commentStart": 0,
|
||||||
|
"end": 0,
|
||||||
|
"nonCodeMeta": {
|
||||||
|
"nonCodeNodes": {
|
||||||
|
"0": [
|
||||||
|
{
|
||||||
|
"commentStart": 0,
|
||||||
|
"end": 0,
|
||||||
|
"start": 0,
|
||||||
|
"type": "NonCodeNode",
|
||||||
|
"value": {
|
||||||
|
"type": "newLine"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"startNodes": []
|
||||||
|
},
|
||||||
|
"start": 0
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,15 @@
|
|||||||
|
---
|
||||||
|
source: kcl-lib/src/simulation_tests.rs
|
||||||
|
description: Error from executing export_only_at_top_level.kcl
|
||||||
|
---
|
||||||
|
KCL Semantic error
|
||||||
|
|
||||||
|
× semantic: Exports are only supported at the top-level of a file. Remove
|
||||||
|
│ `export` or move it to the top-level.
|
||||||
|
╭─[2:3]
|
||||||
|
1 │ fn main() {
|
||||||
|
2 │ export x = 2
|
||||||
|
· ──────┬─────
|
||||||
|
· ╰── main
|
||||||
|
3 │ return 0
|
||||||
|
╰────
|
@ -0,0 +1,6 @@
|
|||||||
|
fn main() {
|
||||||
|
export x = 2
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
main()
|
5
rust/kcl-lib/tests/export_var_only_at_top_level/ops.snap
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
---
|
||||||
|
source: kcl-lib/src/simulation_tests.rs
|
||||||
|
description: Operations executed export_only_at_top_level.kcl
|
||||||
|
---
|
||||||
|
[]
|
@ -0,0 +1,10 @@
|
|||||||
|
---
|
||||||
|
source: kcl-lib/src/simulation_tests.rs
|
||||||
|
description: Result of unparsing export_only_at_top_level.kcl
|
||||||
|
---
|
||||||
|
fn main() {
|
||||||
|
export x = 2
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
main()
|
@ -0,0 +1,32 @@
|
|||||||
|
---
|
||||||
|
source: kcl-lib/src/simulation_tests.rs
|
||||||
|
description: Artifact commands import_only_at_top_level.kcl
|
||||||
|
---
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"cmdId": "[uuid]",
|
||||||
|
"range": [],
|
||||||
|
"command": {
|
||||||
|
"type": "edge_lines_visible",
|
||||||
|
"hidden": false
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmdId": "[uuid]",
|
||||||
|
"range": [],
|
||||||
|
"command": {
|
||||||
|
"type": "object_visible",
|
||||||
|
"object_id": "[uuid]",
|
||||||
|
"hidden": true
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmdId": "[uuid]",
|
||||||
|
"range": [],
|
||||||
|
"command": {
|
||||||
|
"type": "object_visible",
|
||||||
|
"object_id": "[uuid]",
|
||||||
|
"hidden": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
@ -0,0 +1,6 @@
|
|||||||
|
---
|
||||||
|
source: kcl-lib/src/simulation_tests.rs
|
||||||
|
description: Artifact graph flowchart import_only_at_top_level.kcl
|
||||||
|
extension: md
|
||||||
|
snapshot_kind: binary
|
||||||
|
---
|
@ -0,0 +1,3 @@
|
|||||||
|
```mermaid
|
||||||
|
flowchart LR
|
||||||
|
```
|
129
rust/kcl-lib/tests/import_only_at_top_level/ast.snap
Normal file
@ -0,0 +1,129 @@
|
|||||||
|
---
|
||||||
|
source: kcl-lib/src/simulation_tests.rs
|
||||||
|
description: Result of parsing import_only_at_top_level.kcl
|
||||||
|
---
|
||||||
|
{
|
||||||
|
"Ok": {
|
||||||
|
"body": [
|
||||||
|
{
|
||||||
|
"commentStart": 0,
|
||||||
|
"declaration": {
|
||||||
|
"commentStart": 0,
|
||||||
|
"end": 0,
|
||||||
|
"id": {
|
||||||
|
"commentStart": 0,
|
||||||
|
"end": 0,
|
||||||
|
"name": "main",
|
||||||
|
"start": 0,
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"init": {
|
||||||
|
"body": {
|
||||||
|
"body": [
|
||||||
|
{
|
||||||
|
"commentStart": 0,
|
||||||
|
"end": 0,
|
||||||
|
"path": {
|
||||||
|
"type": "Kcl",
|
||||||
|
"filename": "empty.kcl"
|
||||||
|
},
|
||||||
|
"selector": {
|
||||||
|
"type": "None",
|
||||||
|
"alias": null
|
||||||
|
},
|
||||||
|
"start": 0,
|
||||||
|
"type": "ImportStatement",
|
||||||
|
"type": "ImportStatement"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"argument": {
|
||||||
|
"commentStart": 0,
|
||||||
|
"end": 0,
|
||||||
|
"raw": "0",
|
||||||
|
"start": 0,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": {
|
||||||
|
"value": 0.0,
|
||||||
|
"suffix": "None"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"commentStart": 0,
|
||||||
|
"end": 0,
|
||||||
|
"start": 0,
|
||||||
|
"type": "ReturnStatement",
|
||||||
|
"type": "ReturnStatement"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"commentStart": 0,
|
||||||
|
"end": 0,
|
||||||
|
"start": 0
|
||||||
|
},
|
||||||
|
"commentStart": 0,
|
||||||
|
"end": 0,
|
||||||
|
"params": [],
|
||||||
|
"start": 0,
|
||||||
|
"type": "FunctionExpression",
|
||||||
|
"type": "FunctionExpression"
|
||||||
|
},
|
||||||
|
"start": 0,
|
||||||
|
"type": "VariableDeclarator"
|
||||||
|
},
|
||||||
|
"end": 0,
|
||||||
|
"kind": "fn",
|
||||||
|
"start": 0,
|
||||||
|
"type": "VariableDeclaration",
|
||||||
|
"type": "VariableDeclaration"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"commentStart": 0,
|
||||||
|
"end": 0,
|
||||||
|
"expression": {
|
||||||
|
"callee": {
|
||||||
|
"abs_path": false,
|
||||||
|
"commentStart": 0,
|
||||||
|
"end": 0,
|
||||||
|
"name": {
|
||||||
|
"commentStart": 0,
|
||||||
|
"end": 0,
|
||||||
|
"name": "main",
|
||||||
|
"start": 0,
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"path": [],
|
||||||
|
"start": 0,
|
||||||
|
"type": "Name"
|
||||||
|
},
|
||||||
|
"commentStart": 0,
|
||||||
|
"end": 0,
|
||||||
|
"start": 0,
|
||||||
|
"type": "CallExpressionKw",
|
||||||
|
"type": "CallExpressionKw",
|
||||||
|
"unlabeled": null
|
||||||
|
},
|
||||||
|
"start": 0,
|
||||||
|
"type": "ExpressionStatement",
|
||||||
|
"type": "ExpressionStatement"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"commentStart": 0,
|
||||||
|
"end": 0,
|
||||||
|
"nonCodeMeta": {
|
||||||
|
"nonCodeNodes": {
|
||||||
|
"0": [
|
||||||
|
{
|
||||||
|
"commentStart": 0,
|
||||||
|
"end": 0,
|
||||||
|
"start": 0,
|
||||||
|
"type": "NonCodeNode",
|
||||||
|
"value": {
|
||||||
|
"type": "newLine"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"startNodes": []
|
||||||
|
},
|
||||||
|
"start": 0
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,30 @@
|
|||||||
|
---
|
||||||
|
source: kcl-lib/src/simulation_tests.rs
|
||||||
|
description: Error from executing import_only_at_top_level.kcl
|
||||||
|
---
|
||||||
|
KCL Semantic error
|
||||||
|
|
||||||
|
× semantic: Imports are only supported at the top-level of a file.
|
||||||
|
╭─[2:3]
|
||||||
|
1 │ fn main() {
|
||||||
|
2 │ import "empty.kcl"
|
||||||
|
· ─────────┬────────
|
||||||
|
· ╰── tests/import_only_at_top_level/input.kcl
|
||||||
|
3 │ return 0
|
||||||
|
╰────
|
||||||
|
╭─[6:1]
|
||||||
|
5 │
|
||||||
|
6 │ main()
|
||||||
|
· ───┬──
|
||||||
|
· ╰── tests/import_only_at_top_level/input.kcl
|
||||||
|
╰────
|
||||||
|
╰─▶ KCL Semantic error
|
||||||
|
|
||||||
|
× semantic: Imports are only supported at the top-level of a file.
|
||||||
|
╭─[2:3]
|
||||||
|
1 │ fn main() {
|
||||||
|
2 │ import "empty.kcl"
|
||||||
|
· ─────────┬────────
|
||||||
|
· ╰── tests/import_only_at_top_level/input.kcl
|
||||||
|
3 │ return 0
|
||||||
|
╰────
|
6
rust/kcl-lib/tests/import_only_at_top_level/input.kcl
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
fn main() {
|
||||||
|
import "empty.kcl"
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
main()
|
32
rust/kcl-lib/tests/import_only_at_top_level/ops.snap
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
---
|
||||||
|
source: kcl-lib/src/simulation_tests.rs
|
||||||
|
description: Operations executed import_only_at_top_level.kcl
|
||||||
|
---
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"type": "GroupBegin",
|
||||||
|
"group": {
|
||||||
|
"type": "ModuleInstance",
|
||||||
|
"name": "empty.kcl",
|
||||||
|
"moduleId": 0
|
||||||
|
},
|
||||||
|
"sourceRange": []
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "GroupBegin",
|
||||||
|
"group": {
|
||||||
|
"type": "FunctionCall",
|
||||||
|
"name": "main",
|
||||||
|
"functionSourceRange": [],
|
||||||
|
"unlabeledArg": null,
|
||||||
|
"labeledArgs": {}
|
||||||
|
},
|
||||||
|
"sourceRange": []
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "GroupEnd"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "GroupEnd"
|
||||||
|
}
|
||||||
|
]
|
10
rust/kcl-lib/tests/import_only_at_top_level/unparsed.snap
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
---
|
||||||
|
source: kcl-lib/src/simulation_tests.rs
|
||||||
|
description: Result of unparsing import_only_at_top_level.kcl
|
||||||
|
---
|
||||||
|
fn main() {
|
||||||
|
import "empty.kcl"
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
main()
|
@ -0,0 +1,5 @@
|
|||||||
|
---
|
||||||
|
source: kcl-lib/src/simulation_tests.rs
|
||||||
|
description: Result of unparsing tests/import_only_at_top_level/empty.kcl
|
||||||
|
---
|
||||||
|
|
@ -185,21 +185,20 @@ flowchart LR
|
|||||||
%% face_code_ref=Missing NodePath
|
%% face_code_ref=Missing NodePath
|
||||||
86["Cap Start"]
|
86["Cap Start"]
|
||||||
%% face_code_ref=Missing NodePath
|
%% face_code_ref=Missing NodePath
|
||||||
87["Cap Start"]
|
87["Cap End"]
|
||||||
%% face_code_ref=Missing NodePath
|
%% face_code_ref=Missing NodePath
|
||||||
88["Cap End"]
|
88["Cap End"]
|
||||||
%% face_code_ref=Missing NodePath
|
%% face_code_ref=Missing NodePath
|
||||||
89["Cap End"]
|
89["Cap End"]
|
||||||
%% face_code_ref=Missing NodePath
|
%% face_code_ref=Missing NodePath
|
||||||
90["Cap End"]
|
90["SweepEdge Opposite"]
|
||||||
%% face_code_ref=Missing NodePath
|
|
||||||
91["SweepEdge Opposite"]
|
91["SweepEdge Opposite"]
|
||||||
92["SweepEdge Opposite"]
|
92["SweepEdge Opposite"]
|
||||||
93["SweepEdge Opposite"]
|
93["SweepEdge Opposite"]
|
||||||
94["SweepEdge Opposite"]
|
94["SweepEdge Opposite"]
|
||||||
95["SweepEdge Opposite"]
|
95["SweepEdge Opposite"]
|
||||||
96["SweepEdge Opposite"]
|
96["SweepEdge Opposite"]
|
||||||
97["SweepEdge Opposite"]
|
97["SweepEdge Adjacent"]
|
||||||
98["SweepEdge Adjacent"]
|
98["SweepEdge Adjacent"]
|
||||||
99["SweepEdge Adjacent"]
|
99["SweepEdge Adjacent"]
|
||||||
100["SweepEdge Adjacent"]
|
100["SweepEdge Adjacent"]
|
||||||
@ -214,15 +213,14 @@ flowchart LR
|
|||||||
109["SweepEdge Adjacent"]
|
109["SweepEdge Adjacent"]
|
||||||
110["SweepEdge Adjacent"]
|
110["SweepEdge Adjacent"]
|
||||||
111["SweepEdge Adjacent"]
|
111["SweepEdge Adjacent"]
|
||||||
112["SweepEdge Adjacent"]
|
112["EdgeCut Fillet<br>[2999, 3289, 0]"]
|
||||||
|
%% [ProgramBodyItem { index: 26 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 1 }]
|
||||||
113["EdgeCut Fillet<br>[2999, 3289, 0]"]
|
113["EdgeCut Fillet<br>[2999, 3289, 0]"]
|
||||||
%% [ProgramBodyItem { index: 26 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 1 }]
|
%% [ProgramBodyItem { index: 26 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 1 }]
|
||||||
114["EdgeCut Fillet<br>[2999, 3289, 0]"]
|
114["EdgeCut Fillet<br>[2999, 3289, 0]"]
|
||||||
%% [ProgramBodyItem { index: 26 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 1 }]
|
%% [ProgramBodyItem { index: 26 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 1 }]
|
||||||
115["EdgeCut Fillet<br>[2999, 3289, 0]"]
|
115["EdgeCut Fillet<br>[2999, 3289, 0]"]
|
||||||
%% [ProgramBodyItem { index: 26 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 1 }]
|
%% [ProgramBodyItem { index: 26 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 1 }]
|
||||||
116["EdgeCut Fillet<br>[2999, 3289, 0]"]
|
|
||||||
%% [ProgramBodyItem { index: 26 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 1 }]
|
|
||||||
1 --- 8
|
1 --- 8
|
||||||
1 --- 9
|
1 --- 9
|
||||||
1 --- 13
|
1 --- 13
|
||||||
@ -283,84 +281,84 @@ flowchart LR
|
|||||||
20 ---- 64
|
20 ---- 64
|
||||||
82 --- 20
|
82 --- 20
|
||||||
27 --- 83
|
27 --- 83
|
||||||
27 x--> 87
|
27 x--> 86
|
||||||
27 --- 97
|
27 --- 96
|
||||||
27 --- 112
|
27 --- 111
|
||||||
28 --- 68
|
28 --- 68
|
||||||
28 x--> 85
|
28 x--> 85
|
||||||
28 --- 91
|
28 --- 90
|
||||||
28 --- 98
|
28 --- 97
|
||||||
31 --- 70
|
31 --- 70
|
||||||
31 x--> 84
|
31 x--> 84
|
||||||
31 --- 95
|
31 --- 94
|
||||||
31 --- 102
|
31 --- 101
|
||||||
32 --- 71
|
32 --- 71
|
||||||
32 x--> 84
|
32 x--> 84
|
||||||
32 --- 94
|
32 --- 93
|
||||||
32 --- 101
|
32 --- 100
|
||||||
33 --- 69
|
33 --- 69
|
||||||
33 x--> 84
|
33 x--> 84
|
||||||
33 --- 93
|
33 --- 92
|
||||||
33 --- 100
|
33 --- 99
|
||||||
34 --- 72
|
34 --- 72
|
||||||
34 x--> 84
|
34 x--> 84
|
||||||
34 --- 92
|
34 --- 91
|
||||||
34 --- 99
|
34 --- 98
|
||||||
62 <--x 36
|
62 <--x 36
|
||||||
36 --- 78
|
36 --- 78
|
||||||
36 x--> 104
|
36 x--> 103
|
||||||
62 <--x 37
|
62 <--x 37
|
||||||
37 --- 77
|
37 --- 77
|
||||||
37 --- 104
|
37 --- 103
|
||||||
62 <--x 38
|
62 <--x 38
|
||||||
38 --- 82
|
38 --- 82
|
||||||
38 --- 105
|
38 --- 104
|
||||||
62 <--x 39
|
62 <--x 39
|
||||||
39 --- 79
|
39 --- 79
|
||||||
39 --- 106
|
39 --- 105
|
||||||
62 <--x 40
|
62 <--x 40
|
||||||
40 --- 74
|
40 --- 74
|
||||||
40 --- 107
|
40 --- 106
|
||||||
62 <--x 41
|
62 <--x 41
|
||||||
41 --- 81
|
41 --- 81
|
||||||
41 --- 108
|
41 --- 107
|
||||||
62 <--x 42
|
62 <--x 42
|
||||||
42 --- 76
|
42 --- 76
|
||||||
42 --- 109
|
42 --- 108
|
||||||
62 <--x 43
|
62 <--x 43
|
||||||
43 --- 75
|
43 --- 75
|
||||||
43 --- 110
|
43 --- 109
|
||||||
62 <--x 44
|
62 <--x 44
|
||||||
44 --- 80
|
44 --- 80
|
||||||
44 --- 111
|
44 --- 110
|
||||||
45 --- 73
|
45 --- 73
|
||||||
45 x--> 82
|
45 x--> 82
|
||||||
45 --- 96
|
45 --- 95
|
||||||
45 --- 103
|
45 --- 102
|
||||||
59 --- 68
|
59 --- 68
|
||||||
59 --- 85
|
59 --- 85
|
||||||
59 --- 89
|
59 --- 88
|
||||||
59 --- 91
|
59 --- 90
|
||||||
59 --- 98
|
59 --- 97
|
||||||
60 --- 83
|
60 --- 83
|
||||||
60 --- 87
|
60 --- 86
|
||||||
60 --- 90
|
60 --- 89
|
||||||
60 --- 97
|
60 --- 96
|
||||||
60 --- 112
|
60 --- 111
|
||||||
61 --- 69
|
61 --- 69
|
||||||
61 --- 70
|
61 --- 70
|
||||||
61 --- 71
|
61 --- 71
|
||||||
61 --- 72
|
61 --- 72
|
||||||
61 --- 84
|
61 --- 84
|
||||||
61 --- 88
|
61 --- 87
|
||||||
|
61 --- 91
|
||||||
61 --- 92
|
61 --- 92
|
||||||
61 --- 93
|
61 --- 93
|
||||||
61 --- 94
|
61 --- 94
|
||||||
61 --- 95
|
61 --- 98
|
||||||
61 --- 99
|
61 --- 99
|
||||||
61 --- 100
|
61 --- 100
|
||||||
61 --- 101
|
61 --- 101
|
||||||
61 --- 102
|
|
||||||
62 --- 74
|
62 --- 74
|
||||||
62 --- 75
|
62 --- 75
|
||||||
62 --- 76
|
62 --- 76
|
||||||
@ -370,6 +368,7 @@ flowchart LR
|
|||||||
62 --- 80
|
62 --- 80
|
||||||
62 --- 81
|
62 --- 81
|
||||||
62 --- 82
|
62 --- 82
|
||||||
|
62 --- 103
|
||||||
62 --- 104
|
62 --- 104
|
||||||
62 --- 105
|
62 --- 105
|
||||||
62 --- 106
|
62 --- 106
|
||||||
@ -377,54 +376,52 @@ flowchart LR
|
|||||||
62 --- 108
|
62 --- 108
|
||||||
62 --- 109
|
62 --- 109
|
||||||
62 --- 110
|
62 --- 110
|
||||||
62 --- 111
|
|
||||||
64 --- 73
|
64 --- 73
|
||||||
64 --- 86
|
64 --- 95
|
||||||
64 --- 96
|
64 --- 102
|
||||||
64 --- 103
|
68 --- 90
|
||||||
68 --- 91
|
68 --- 97
|
||||||
68 --- 98
|
69 --- 92
|
||||||
69 --- 93
|
69 --- 99
|
||||||
69 --- 100
|
100 <--x 69
|
||||||
101 <--x 69
|
70 --- 94
|
||||||
70 --- 95
|
98 <--x 70
|
||||||
99 <--x 70
|
70 --- 101
|
||||||
70 --- 102
|
71 --- 93
|
||||||
71 --- 94
|
71 --- 100
|
||||||
71 --- 101
|
101 <--x 71
|
||||||
102 <--x 71
|
72 --- 91
|
||||||
72 --- 92
|
72 --- 98
|
||||||
72 --- 99
|
99 <--x 72
|
||||||
100 <--x 72
|
73 --- 95
|
||||||
73 --- 96
|
73 --- 102
|
||||||
73 --- 103
|
95 <--x 74
|
||||||
106 <--x 74
|
105 <--x 74
|
||||||
74 --- 107
|
74 --- 106
|
||||||
109 <--x 75
|
108 <--x 75
|
||||||
75 --- 110
|
75 --- 109
|
||||||
108 <--x 76
|
107 <--x 76
|
||||||
76 --- 109
|
76 --- 108
|
||||||
77 --- 104
|
77 --- 103
|
||||||
78 --- 104
|
78 --- 103
|
||||||
111 <--x 78
|
110 <--x 78
|
||||||
105 <--x 79
|
104 <--x 79
|
||||||
79 --- 106
|
79 --- 105
|
||||||
110 <--x 80
|
109 <--x 80
|
||||||
80 --- 111
|
80 --- 110
|
||||||
107 <--x 81
|
106 <--x 81
|
||||||
81 --- 108
|
81 --- 107
|
||||||
82 --- 105
|
82 --- 104
|
||||||
83 --- 97
|
83 --- 96
|
||||||
83 --- 112
|
83 --- 111
|
||||||
96 <--x 86
|
91 <--x 87
|
||||||
92 <--x 88
|
92 <--x 87
|
||||||
93 <--x 88
|
93 <--x 87
|
||||||
94 <--x 88
|
94 <--x 87
|
||||||
95 <--x 88
|
90 <--x 88
|
||||||
91 <--x 89
|
96 <--x 89
|
||||||
97 <--x 90
|
98 <--x 113
|
||||||
99 <--x 114
|
99 <--x 112
|
||||||
100 <--x 113
|
100 <--x 115
|
||||||
101 <--x 116
|
101 <--x 114
|
||||||
102 <--x 115
|
|
||||||
```
|
```
|
||||||
|
@ -1172,7 +1172,7 @@ description: Variables in memory after executing brake-rotor.kcl
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"height": -7.0,
|
"height": -7.0,
|
||||||
"startCapId": "[uuid]",
|
"startCapId": null,
|
||||||
"endCapId": null,
|
"endCapId": null,
|
||||||
"units": {
|
"units": {
|
||||||
"type": "Mm"
|
"type": "Mm"
|
||||||
@ -1606,7 +1606,7 @@ description: Variables in memory after executing brake-rotor.kcl
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"height": -7.0,
|
"height": -7.0,
|
||||||
"startCapId": "[uuid]",
|
"startCapId": null,
|
||||||
"endCapId": null,
|
"endCapId": null,
|
||||||
"units": {
|
"units": {
|
||||||
"type": "Mm"
|
"type": "Mm"
|
||||||
@ -2040,7 +2040,7 @@ description: Variables in memory after executing brake-rotor.kcl
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"height": -7.0,
|
"height": -7.0,
|
||||||
"startCapId": "[uuid]",
|
"startCapId": null,
|
||||||
"endCapId": null,
|
"endCapId": null,
|
||||||
"units": {
|
"units": {
|
||||||
"type": "Mm"
|
"type": "Mm"
|
||||||
@ -2474,7 +2474,7 @@ description: Variables in memory after executing brake-rotor.kcl
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"height": -7.0,
|
"height": -7.0,
|
||||||
"startCapId": "[uuid]",
|
"startCapId": null,
|
||||||
"endCapId": null,
|
"endCapId": null,
|
||||||
"units": {
|
"units": {
|
||||||
"type": "Mm"
|
"type": "Mm"
|
||||||
@ -2908,7 +2908,7 @@ description: Variables in memory after executing brake-rotor.kcl
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"height": -7.0,
|
"height": -7.0,
|
||||||
"startCapId": "[uuid]",
|
"startCapId": null,
|
||||||
"endCapId": null,
|
"endCapId": null,
|
||||||
"units": {
|
"units": {
|
||||||
"type": "Mm"
|
"type": "Mm"
|
||||||
|
Before Width: | Height: | Size: 82 KiB After Width: | Height: | Size: 81 KiB |
@ -203,7 +203,7 @@ description: Artifact commands helium-tank.kcl
|
|||||||
"path": "[uuid]",
|
"path": "[uuid]",
|
||||||
"segment": {
|
"segment": {
|
||||||
"type": "tangential_arc",
|
"type": "tangential_arc",
|
||||||
"radius": 95.88500000000016,
|
"radius": 95.8850000000001,
|
||||||
"offset": {
|
"offset": {
|
||||||
"unit": "degrees",
|
"unit": "degrees",
|
||||||
"value": -90.0
|
"value": -90.0
|
||||||
|
@ -3271,7 +3271,7 @@ description: Result of parsing pdu-faceplate.kcl
|
|||||||
"id": {
|
"id": {
|
||||||
"commentStart": 0,
|
"commentStart": 0,
|
||||||
"end": 0,
|
"end": 0,
|
||||||
"name": "swtichWidth",
|
"name": "switchWidth",
|
||||||
"start": 0,
|
"start": 0,
|
||||||
"type": "Identifier"
|
"type": "Identifier"
|
||||||
},
|
},
|
||||||
@ -3385,7 +3385,7 @@ description: Result of parsing pdu-faceplate.kcl
|
|||||||
"id": {
|
"id": {
|
||||||
"commentStart": 0,
|
"commentStart": 0,
|
||||||
"end": 0,
|
"end": 0,
|
||||||
"name": "swtichPlateWidth",
|
"name": "switchPlateWidth",
|
||||||
"start": 0,
|
"start": 0,
|
||||||
"type": "Identifier"
|
"type": "Identifier"
|
||||||
},
|
},
|
||||||
@ -3586,7 +3586,7 @@ description: Result of parsing pdu-faceplate.kcl
|
|||||||
"name": {
|
"name": {
|
||||||
"commentStart": 0,
|
"commentStart": 0,
|
||||||
"end": 0,
|
"end": 0,
|
||||||
"name": "swtichPlateWidth",
|
"name": "switchPlateWidth",
|
||||||
"start": 0,
|
"start": 0,
|
||||||
"type": "Identifier"
|
"type": "Identifier"
|
||||||
},
|
},
|
||||||
@ -3768,7 +3768,7 @@ description: Result of parsing pdu-faceplate.kcl
|
|||||||
"name": {
|
"name": {
|
||||||
"commentStart": 0,
|
"commentStart": 0,
|
||||||
"end": 0,
|
"end": 0,
|
||||||
"name": "swtichPlateWidth",
|
"name": "switchPlateWidth",
|
||||||
"start": 0,
|
"start": 0,
|
||||||
"type": "Identifier"
|
"type": "Identifier"
|
||||||
},
|
},
|
||||||
@ -4257,7 +4257,7 @@ description: Result of parsing pdu-faceplate.kcl
|
|||||||
"id": {
|
"id": {
|
||||||
"commentStart": 0,
|
"commentStart": 0,
|
||||||
"end": 0,
|
"end": 0,
|
||||||
"name": "swtichButtonWidth",
|
"name": "switchButtonWidth",
|
||||||
"start": 0,
|
"start": 0,
|
||||||
"type": "Identifier"
|
"type": "Identifier"
|
||||||
},
|
},
|
||||||
@ -4339,7 +4339,7 @@ description: Result of parsing pdu-faceplate.kcl
|
|||||||
"name": {
|
"name": {
|
||||||
"commentStart": 0,
|
"commentStart": 0,
|
||||||
"end": 0,
|
"end": 0,
|
||||||
"name": "swtichButtonWidth",
|
"name": "switchButtonWidth",
|
||||||
"start": 0,
|
"start": 0,
|
||||||
"type": "Identifier"
|
"type": "Identifier"
|
||||||
},
|
},
|
||||||
@ -4994,7 +4994,7 @@ description: Result of parsing pdu-faceplate.kcl
|
|||||||
"name": {
|
"name": {
|
||||||
"commentStart": 0,
|
"commentStart": 0,
|
||||||
"end": 0,
|
"end": 0,
|
||||||
"name": "swtichButtonWidth",
|
"name": "switchButtonWidth",
|
||||||
"start": 0,
|
"start": 0,
|
||||||
"type": "Identifier"
|
"type": "Identifier"
|
||||||
},
|
},
|
||||||
@ -5329,7 +5329,7 @@ description: Result of parsing pdu-faceplate.kcl
|
|||||||
"name": {
|
"name": {
|
||||||
"commentStart": 0,
|
"commentStart": 0,
|
||||||
"end": 0,
|
"end": 0,
|
||||||
"name": "swtichWidth",
|
"name": "switchWidth",
|
||||||
"start": 0,
|
"start": 0,
|
||||||
"type": "Identifier"
|
"type": "Identifier"
|
||||||
},
|
},
|
||||||
|
@ -17406,6 +17406,19 @@ description: Variables in memory after executing pdu-faceplate.kcl
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"switchButtonWidth": {
|
||||||
|
"type": "Number",
|
||||||
|
"value": 15.0,
|
||||||
|
"ty": {
|
||||||
|
"type": "Default",
|
||||||
|
"len": {
|
||||||
|
"type": "Mm"
|
||||||
|
},
|
||||||
|
"angle": {
|
||||||
|
"type": "Degrees"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
"switchPlateBody": {
|
"switchPlateBody": {
|
||||||
"type": "Solid",
|
"type": "Solid",
|
||||||
"value": {
|
"value": {
|
||||||
@ -18170,6 +18183,19 @@ description: Variables in memory after executing pdu-faceplate.kcl
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"switchPlateWidth": {
|
||||||
|
"type": "Number",
|
||||||
|
"value": 20.0,
|
||||||
|
"ty": {
|
||||||
|
"type": "Default",
|
||||||
|
"len": {
|
||||||
|
"type": "Mm"
|
||||||
|
},
|
||||||
|
"angle": {
|
||||||
|
"type": "Degrees"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
"switchPosition": {
|
"switchPosition": {
|
||||||
"type": "Number",
|
"type": "Number",
|
||||||
"value": -158.4,
|
"value": -158.4,
|
||||||
@ -18183,33 +18209,7 @@ description: Variables in memory after executing pdu-faceplate.kcl
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"swtichButtonWidth": {
|
"switchWidth": {
|
||||||
"type": "Number",
|
|
||||||
"value": 15.0,
|
|
||||||
"ty": {
|
|
||||||
"type": "Default",
|
|
||||||
"len": {
|
|
||||||
"type": "Mm"
|
|
||||||
},
|
|
||||||
"angle": {
|
|
||||||
"type": "Degrees"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"swtichPlateWidth": {
|
|
||||||
"type": "Number",
|
|
||||||
"value": 20.0,
|
|
||||||
"ty": {
|
|
||||||
"type": "Default",
|
|
||||||
"len": {
|
|
||||||
"type": "Mm"
|
|
||||||
},
|
|
||||||
"angle": {
|
|
||||||
"type": "Degrees"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"swtichWidth": {
|
|
||||||
"type": "Number",
|
"type": "Number",
|
||||||
"value": 40.45,
|
"value": 40.45,
|
||||||
"ty": {
|
"ty": {
|
||||||
|
@ -412,12 +412,12 @@ description: Artifact commands prosthetic-hip.kcl
|
|||||||
"origin": {
|
"origin": {
|
||||||
"x": 0.0,
|
"x": 0.0,
|
||||||
"y": 0.0,
|
"y": 0.0,
|
||||||
"z": 110.0
|
"z": 0.0
|
||||||
},
|
},
|
||||||
"x_axis": {
|
"x_axis": {
|
||||||
"x": 0.9063,
|
"x": 1.0,
|
||||||
"y": 0.0,
|
"y": 0.0,
|
||||||
"z": 0.4226
|
"z": 0.0
|
||||||
},
|
},
|
||||||
"y_axis": {
|
"y_axis": {
|
||||||
"x": 0.0,
|
"x": 0.0,
|
||||||
@ -439,9 +439,9 @@ description: Artifact commands prosthetic-hip.kcl
|
|||||||
"animated": false,
|
"animated": false,
|
||||||
"adjust_camera": false,
|
"adjust_camera": false,
|
||||||
"planar_normal": {
|
"planar_normal": {
|
||||||
"x": -0.4226,
|
"x": 0.0,
|
||||||
"y": 0.0,
|
"y": 0.0,
|
||||||
"z": 0.9063
|
"z": 1.0
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@ -458,15 +458,6 @@ description: Artifact commands prosthetic-hip.kcl
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"cmdId": "[uuid]",
|
|
||||||
"range": [],
|
|
||||||
"command": {
|
|
||||||
"type": "object_visible",
|
|
||||||
"object_id": "[uuid]",
|
|
||||||
"hidden": true
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"cmdId": "[uuid]",
|
"cmdId": "[uuid]",
|
||||||
"range": [],
|
"range": [],
|
||||||
@ -589,6 +580,54 @@ description: Artifact commands prosthetic-hip.kcl
|
|||||||
"path_id": "[uuid]"
|
"path_id": "[uuid]"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"cmdId": "[uuid]",
|
||||||
|
"range": [],
|
||||||
|
"command": {
|
||||||
|
"type": "set_object_transform",
|
||||||
|
"object_id": "[uuid]",
|
||||||
|
"transforms": [
|
||||||
|
{
|
||||||
|
"translate": {
|
||||||
|
"property": {
|
||||||
|
"x": 0.0,
|
||||||
|
"y": 0.0,
|
||||||
|
"z": 110.0
|
||||||
|
},
|
||||||
|
"set": false,
|
||||||
|
"is_local": true
|
||||||
|
},
|
||||||
|
"rotate_rpy": null,
|
||||||
|
"rotate_angle_axis": null,
|
||||||
|
"scale": null
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmdId": "[uuid]",
|
||||||
|
"range": [],
|
||||||
|
"command": {
|
||||||
|
"type": "set_object_transform",
|
||||||
|
"object_id": "[uuid]",
|
||||||
|
"transforms": [
|
||||||
|
{
|
||||||
|
"translate": null,
|
||||||
|
"rotate_rpy": {
|
||||||
|
"property": {
|
||||||
|
"x": 0.0,
|
||||||
|
"y": -25.0,
|
||||||
|
"z": 0.0
|
||||||
|
},
|
||||||
|
"set": false,
|
||||||
|
"is_local": true
|
||||||
|
},
|
||||||
|
"rotate_angle_axis": null,
|
||||||
|
"scale": null
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"cmdId": "[uuid]",
|
"cmdId": "[uuid]",
|
||||||
"range": [],
|
"range": [],
|
||||||
@ -597,12 +636,12 @@ description: Artifact commands prosthetic-hip.kcl
|
|||||||
"origin": {
|
"origin": {
|
||||||
"x": 0.0,
|
"x": 0.0,
|
||||||
"y": 0.0,
|
"y": 0.0,
|
||||||
"z": 130.0
|
"z": 0.0
|
||||||
},
|
},
|
||||||
"x_axis": {
|
"x_axis": {
|
||||||
"x": 0.8039,
|
"x": 1.0,
|
||||||
"y": 0.0,
|
"y": 0.0,
|
||||||
"z": 0.5948
|
"z": 0.0
|
||||||
},
|
},
|
||||||
"y_axis": {
|
"y_axis": {
|
||||||
"x": 0.0,
|
"x": 0.0,
|
||||||
@ -624,9 +663,9 @@ description: Artifact commands prosthetic-hip.kcl
|
|||||||
"animated": false,
|
"animated": false,
|
||||||
"adjust_camera": false,
|
"adjust_camera": false,
|
||||||
"planar_normal": {
|
"planar_normal": {
|
||||||
"x": -0.5948,
|
"x": 0.0,
|
||||||
"y": 0.0,
|
"y": 0.0,
|
||||||
"z": 0.8039
|
"z": 1.0
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@ -643,15 +682,6 @@ description: Artifact commands prosthetic-hip.kcl
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"cmdId": "[uuid]",
|
|
||||||
"range": [],
|
|
||||||
"command": {
|
|
||||||
"type": "object_visible",
|
|
||||||
"object_id": "[uuid]",
|
|
||||||
"hidden": true
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"cmdId": "[uuid]",
|
"cmdId": "[uuid]",
|
||||||
"range": [],
|
"range": [],
|
||||||
@ -774,6 +804,54 @@ description: Artifact commands prosthetic-hip.kcl
|
|||||||
"path_id": "[uuid]"
|
"path_id": "[uuid]"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"cmdId": "[uuid]",
|
||||||
|
"range": [],
|
||||||
|
"command": {
|
||||||
|
"type": "set_object_transform",
|
||||||
|
"object_id": "[uuid]",
|
||||||
|
"transforms": [
|
||||||
|
{
|
||||||
|
"translate": {
|
||||||
|
"property": {
|
||||||
|
"x": 0.0,
|
||||||
|
"y": 0.0,
|
||||||
|
"z": 130.0
|
||||||
|
},
|
||||||
|
"set": false,
|
||||||
|
"is_local": true
|
||||||
|
},
|
||||||
|
"rotate_rpy": null,
|
||||||
|
"rotate_angle_axis": null,
|
||||||
|
"scale": null
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmdId": "[uuid]",
|
||||||
|
"range": [],
|
||||||
|
"command": {
|
||||||
|
"type": "set_object_transform",
|
||||||
|
"object_id": "[uuid]",
|
||||||
|
"transforms": [
|
||||||
|
{
|
||||||
|
"translate": null,
|
||||||
|
"rotate_rpy": {
|
||||||
|
"property": {
|
||||||
|
"x": 0.0,
|
||||||
|
"y": -36.5,
|
||||||
|
"z": 0.0
|
||||||
|
},
|
||||||
|
"set": false,
|
||||||
|
"is_local": true
|
||||||
|
},
|
||||||
|
"rotate_angle_axis": null,
|
||||||
|
"scale": null
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"cmdId": "[uuid]",
|
"cmdId": "[uuid]",
|
||||||
"range": [],
|
"range": [],
|
||||||
@ -782,12 +860,12 @@ description: Artifact commands prosthetic-hip.kcl
|
|||||||
"origin": {
|
"origin": {
|
||||||
"x": 0.0,
|
"x": 0.0,
|
||||||
"y": 0.0,
|
"y": 0.0,
|
||||||
"z": 140.0
|
"z": 0.0
|
||||||
},
|
},
|
||||||
"x_axis": {
|
"x_axis": {
|
||||||
"x": 0.8039,
|
"x": 1.0,
|
||||||
"y": 0.0,
|
"y": 0.0,
|
||||||
"z": 0.5948
|
"z": 0.0
|
||||||
},
|
},
|
||||||
"y_axis": {
|
"y_axis": {
|
||||||
"x": 0.0,
|
"x": 0.0,
|
||||||
@ -809,9 +887,9 @@ description: Artifact commands prosthetic-hip.kcl
|
|||||||
"animated": false,
|
"animated": false,
|
||||||
"adjust_camera": false,
|
"adjust_camera": false,
|
||||||
"planar_normal": {
|
"planar_normal": {
|
||||||
"x": -0.5948,
|
"x": 0.0,
|
||||||
"y": 0.0,
|
"y": 0.0,
|
||||||
"z": 0.8039
|
"z": 1.0
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@ -828,15 +906,6 @@ description: Artifact commands prosthetic-hip.kcl
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"cmdId": "[uuid]",
|
|
||||||
"range": [],
|
|
||||||
"command": {
|
|
||||||
"type": "object_visible",
|
|
||||||
"object_id": "[uuid]",
|
|
||||||
"hidden": true
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"cmdId": "[uuid]",
|
"cmdId": "[uuid]",
|
||||||
"range": [],
|
"range": [],
|
||||||
@ -959,6 +1028,54 @@ description: Artifact commands prosthetic-hip.kcl
|
|||||||
"path_id": "[uuid]"
|
"path_id": "[uuid]"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"cmdId": "[uuid]",
|
||||||
|
"range": [],
|
||||||
|
"command": {
|
||||||
|
"type": "set_object_transform",
|
||||||
|
"object_id": "[uuid]",
|
||||||
|
"transforms": [
|
||||||
|
{
|
||||||
|
"translate": {
|
||||||
|
"property": {
|
||||||
|
"x": 0.0,
|
||||||
|
"y": 0.0,
|
||||||
|
"z": 140.0
|
||||||
|
},
|
||||||
|
"set": false,
|
||||||
|
"is_local": true
|
||||||
|
},
|
||||||
|
"rotate_rpy": null,
|
||||||
|
"rotate_angle_axis": null,
|
||||||
|
"scale": null
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmdId": "[uuid]",
|
||||||
|
"range": [],
|
||||||
|
"command": {
|
||||||
|
"type": "set_object_transform",
|
||||||
|
"object_id": "[uuid]",
|
||||||
|
"transforms": [
|
||||||
|
{
|
||||||
|
"translate": null,
|
||||||
|
"rotate_rpy": {
|
||||||
|
"property": {
|
||||||
|
"x": 0.0,
|
||||||
|
"y": -36.5,
|
||||||
|
"z": 0.0
|
||||||
|
},
|
||||||
|
"set": false,
|
||||||
|
"is_local": true
|
||||||
|
},
|
||||||
|
"rotate_angle_axis": null,
|
||||||
|
"scale": null
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"cmdId": "[uuid]",
|
"cmdId": "[uuid]",
|
||||||
"range": [],
|
"range": [],
|
||||||
@ -967,12 +1084,12 @@ description: Artifact commands prosthetic-hip.kcl
|
|||||||
"origin": {
|
"origin": {
|
||||||
"x": 0.0,
|
"x": 0.0,
|
||||||
"y": 0.0,
|
"y": 0.0,
|
||||||
"z": 145.0
|
"z": 0.0
|
||||||
},
|
},
|
||||||
"x_axis": {
|
"x_axis": {
|
||||||
"x": 0.8039,
|
"x": 1.0,
|
||||||
"y": 0.0,
|
"y": 0.0,
|
||||||
"z": 0.5948
|
"z": 0.0
|
||||||
},
|
},
|
||||||
"y_axis": {
|
"y_axis": {
|
||||||
"x": 0.0,
|
"x": 0.0,
|
||||||
@ -994,9 +1111,9 @@ description: Artifact commands prosthetic-hip.kcl
|
|||||||
"animated": false,
|
"animated": false,
|
||||||
"adjust_camera": false,
|
"adjust_camera": false,
|
||||||
"planar_normal": {
|
"planar_normal": {
|
||||||
"x": -0.5948,
|
"x": 0.0,
|
||||||
"y": 0.0,
|
"y": 0.0,
|
||||||
"z": 0.8039
|
"z": 1.0
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@ -1013,15 +1130,6 @@ description: Artifact commands prosthetic-hip.kcl
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"cmdId": "[uuid]",
|
|
||||||
"range": [],
|
|
||||||
"command": {
|
|
||||||
"type": "object_visible",
|
|
||||||
"object_id": "[uuid]",
|
|
||||||
"hidden": true
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"cmdId": "[uuid]",
|
"cmdId": "[uuid]",
|
||||||
"range": [],
|
"range": [],
|
||||||
@ -1144,6 +1252,163 @@ description: Artifact commands prosthetic-hip.kcl
|
|||||||
"path_id": "[uuid]"
|
"path_id": "[uuid]"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"cmdId": "[uuid]",
|
||||||
|
"range": [],
|
||||||
|
"command": {
|
||||||
|
"type": "set_object_transform",
|
||||||
|
"object_id": "[uuid]",
|
||||||
|
"transforms": [
|
||||||
|
{
|
||||||
|
"translate": {
|
||||||
|
"property": {
|
||||||
|
"x": 0.0,
|
||||||
|
"y": 0.0,
|
||||||
|
"z": 145.0
|
||||||
|
},
|
||||||
|
"set": false,
|
||||||
|
"is_local": true
|
||||||
|
},
|
||||||
|
"rotate_rpy": null,
|
||||||
|
"rotate_angle_axis": null,
|
||||||
|
"scale": null
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmdId": "[uuid]",
|
||||||
|
"range": [],
|
||||||
|
"command": {
|
||||||
|
"type": "set_object_transform",
|
||||||
|
"object_id": "[uuid]",
|
||||||
|
"transforms": [
|
||||||
|
{
|
||||||
|
"translate": null,
|
||||||
|
"rotate_rpy": {
|
||||||
|
"property": {
|
||||||
|
"x": 0.0,
|
||||||
|
"y": -36.5,
|
||||||
|
"z": 0.0
|
||||||
|
},
|
||||||
|
"set": false,
|
||||||
|
"is_local": true
|
||||||
|
},
|
||||||
|
"rotate_angle_axis": null,
|
||||||
|
"scale": null
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmdId": "[uuid]",
|
||||||
|
"range": [],
|
||||||
|
"command": {
|
||||||
|
"type": "loft",
|
||||||
|
"section_ids": [
|
||||||
|
"[uuid]",
|
||||||
|
"[uuid]",
|
||||||
|
"[uuid]",
|
||||||
|
"[uuid]"
|
||||||
|
],
|
||||||
|
"v_degree": 2,
|
||||||
|
"bez_approximate_rational": false,
|
||||||
|
"base_curve_index": null,
|
||||||
|
"tolerance": 0.0000001
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmdId": "[uuid]",
|
||||||
|
"range": [],
|
||||||
|
"command": {
|
||||||
|
"type": "object_bring_to_front",
|
||||||
|
"object_id": "[uuid]"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmdId": "[uuid]",
|
||||||
|
"range": [],
|
||||||
|
"command": {
|
||||||
|
"type": "solid3d_get_adjacency_info",
|
||||||
|
"object_id": "[uuid]",
|
||||||
|
"edge_id": "[uuid]"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmdId": "[uuid]",
|
||||||
|
"range": [],
|
||||||
|
"command": {
|
||||||
|
"type": "solid3d_get_extrusion_face_info",
|
||||||
|
"object_id": "[uuid]",
|
||||||
|
"edge_id": "[uuid]"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmdId": "[uuid]",
|
||||||
|
"range": [],
|
||||||
|
"command": {
|
||||||
|
"type": "loft",
|
||||||
|
"section_ids": [
|
||||||
|
"[uuid]",
|
||||||
|
"[uuid]",
|
||||||
|
"[uuid]"
|
||||||
|
],
|
||||||
|
"v_degree": 2,
|
||||||
|
"bez_approximate_rational": false,
|
||||||
|
"base_curve_index": null,
|
||||||
|
"tolerance": 0.0000001
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmdId": "[uuid]",
|
||||||
|
"range": [],
|
||||||
|
"command": {
|
||||||
|
"type": "object_bring_to_front",
|
||||||
|
"object_id": "[uuid]"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmdId": "[uuid]",
|
||||||
|
"range": [],
|
||||||
|
"command": {
|
||||||
|
"type": "solid3d_get_adjacency_info",
|
||||||
|
"object_id": "[uuid]",
|
||||||
|
"edge_id": "[uuid]"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmdId": "[uuid]",
|
||||||
|
"range": [],
|
||||||
|
"command": {
|
||||||
|
"type": "solid3d_get_extrusion_face_info",
|
||||||
|
"object_id": "[uuid]",
|
||||||
|
"edge_id": "[uuid]"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmdId": "[uuid]",
|
||||||
|
"range": [],
|
||||||
|
"command": {
|
||||||
|
"type": "entity_clone",
|
||||||
|
"entity_id": "[uuid]"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmdId": "[uuid]",
|
||||||
|
"range": [],
|
||||||
|
"command": {
|
||||||
|
"type": "entity_get_all_child_uuids",
|
||||||
|
"entity_id": "[uuid]"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmdId": "[uuid]",
|
||||||
|
"range": [],
|
||||||
|
"command": {
|
||||||
|
"type": "entity_get_all_child_uuids",
|
||||||
|
"entity_id": "[uuid]"
|
||||||
|
}
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"cmdId": "[uuid]",
|
"cmdId": "[uuid]",
|
||||||
"range": [],
|
"range": [],
|
||||||
@ -1178,9 +1443,9 @@ description: Artifact commands prosthetic-hip.kcl
|
|||||||
"animated": false,
|
"animated": false,
|
||||||
"adjust_camera": false,
|
"adjust_camera": false,
|
||||||
"planar_normal": {
|
"planar_normal": {
|
||||||
"x": -0.5948,
|
"x": 0.0,
|
||||||
"y": 0.0,
|
"y": 0.0,
|
||||||
"z": 0.8039
|
"z": 1.0
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@ -1228,115 +1493,6 @@ description: Artifact commands prosthetic-hip.kcl
|
|||||||
"edge_id": "[uuid]"
|
"edge_id": "[uuid]"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"cmdId": "[uuid]",
|
|
||||||
"range": [],
|
|
||||||
"command": {
|
|
||||||
"type": "loft",
|
|
||||||
"section_ids": [
|
|
||||||
"[uuid]",
|
|
||||||
"[uuid]",
|
|
||||||
"[uuid]",
|
|
||||||
"[uuid]"
|
|
||||||
],
|
|
||||||
"v_degree": 2,
|
|
||||||
"bez_approximate_rational": false,
|
|
||||||
"base_curve_index": null,
|
|
||||||
"tolerance": 0.0000001
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"cmdId": "[uuid]",
|
|
||||||
"range": [],
|
|
||||||
"command": {
|
|
||||||
"type": "object_bring_to_front",
|
|
||||||
"object_id": "[uuid]"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"cmdId": "[uuid]",
|
|
||||||
"range": [],
|
|
||||||
"command": {
|
|
||||||
"type": "solid3d_get_adjacency_info",
|
|
||||||
"object_id": "[uuid]",
|
|
||||||
"edge_id": "[uuid]"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"cmdId": "[uuid]",
|
|
||||||
"range": [],
|
|
||||||
"command": {
|
|
||||||
"type": "solid3d_get_extrusion_face_info",
|
|
||||||
"object_id": "[uuid]",
|
|
||||||
"edge_id": "[uuid]"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"cmdId": "[uuid]",
|
|
||||||
"range": [],
|
|
||||||
"command": {
|
|
||||||
"type": "loft",
|
|
||||||
"section_ids": [
|
|
||||||
"[uuid]",
|
|
||||||
"[uuid]",
|
|
||||||
"[uuid]"
|
|
||||||
],
|
|
||||||
"v_degree": 2,
|
|
||||||
"bez_approximate_rational": false,
|
|
||||||
"base_curve_index": null,
|
|
||||||
"tolerance": 0.0000001
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"cmdId": "[uuid]",
|
|
||||||
"range": [],
|
|
||||||
"command": {
|
|
||||||
"type": "object_bring_to_front",
|
|
||||||
"object_id": "[uuid]"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"cmdId": "[uuid]",
|
|
||||||
"range": [],
|
|
||||||
"command": {
|
|
||||||
"type": "solid3d_get_adjacency_info",
|
|
||||||
"object_id": "[uuid]",
|
|
||||||
"edge_id": "[uuid]"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"cmdId": "[uuid]",
|
|
||||||
"range": [],
|
|
||||||
"command": {
|
|
||||||
"type": "solid3d_get_extrusion_face_info",
|
|
||||||
"object_id": "[uuid]",
|
|
||||||
"edge_id": "[uuid]"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"cmdId": "[uuid]",
|
|
||||||
"range": [],
|
|
||||||
"command": {
|
|
||||||
"type": "entity_clone",
|
|
||||||
"entity_id": "[uuid]"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"cmdId": "[uuid]",
|
|
||||||
"range": [],
|
|
||||||
"command": {
|
|
||||||
"type": "entity_get_all_child_uuids",
|
|
||||||
"entity_id": "[uuid]"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"cmdId": "[uuid]",
|
|
||||||
"range": [],
|
|
||||||
"command": {
|
|
||||||
"type": "entity_get_all_child_uuids",
|
|
||||||
"entity_id": "[uuid]"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"cmdId": "[uuid]",
|
"cmdId": "[uuid]",
|
||||||
"range": [],
|
"range": [],
|
||||||
|
@ -17,7 +17,7 @@ flowchart LR
|
|||||||
%% [ProgramBodyItem { index: 2 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 7 }]
|
%% [ProgramBodyItem { index: 2 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 7 }]
|
||||||
26["Segment<br>[676, 683, 0]"]
|
26["Segment<br>[676, 683, 0]"]
|
||||||
%% [ProgramBodyItem { index: 2 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 8 }]
|
%% [ProgramBodyItem { index: 2 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 8 }]
|
||||||
80[Solid2d]
|
79[Solid2d]
|
||||||
end
|
end
|
||||||
subgraph path12 [Path]
|
subgraph path12 [Path]
|
||||||
12["Path<br>[816, 848, 0]"]
|
12["Path<br>[816, 848, 0]"]
|
||||||
@ -36,161 +36,161 @@ flowchart LR
|
|||||||
%% [ProgramBodyItem { index: 5 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 7 }]
|
%% [ProgramBodyItem { index: 5 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 7 }]
|
||||||
33["Segment<br>[1161, 1168, 0]"]
|
33["Segment<br>[1161, 1168, 0]"]
|
||||||
%% [ProgramBodyItem { index: 5 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 8 }]
|
%% [ProgramBodyItem { index: 5 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 8 }]
|
||||||
84[Solid2d]
|
|
||||||
end
|
|
||||||
subgraph path13 [Path]
|
|
||||||
13["Path<br>[1401, 1436, 0]"]
|
|
||||||
%% [ProgramBodyItem { index: 11 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 1 }]
|
|
||||||
34["Segment<br>[1442, 1474, 0]"]
|
|
||||||
%% [ProgramBodyItem { index: 11 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 2 }]
|
|
||||||
35["Segment<br>[1480, 1520, 0]"]
|
|
||||||
%% [ProgramBodyItem { index: 11 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 3 }]
|
|
||||||
36["Segment<br>[1526, 1573, 0]"]
|
|
||||||
%% [ProgramBodyItem { index: 11 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 4 }]
|
|
||||||
37["Segment<br>[1579, 1619, 0]"]
|
|
||||||
%% [ProgramBodyItem { index: 11 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 5 }]
|
|
||||||
38["Segment<br>[1625, 1672, 0]"]
|
|
||||||
%% [ProgramBodyItem { index: 11 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 6 }]
|
|
||||||
39["Segment<br>[1678, 1743, 0]"]
|
|
||||||
%% [ProgramBodyItem { index: 11 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 7 }]
|
|
||||||
40["Segment<br>[1749, 1756, 0]"]
|
|
||||||
%% [ProgramBodyItem { index: 11 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 8 }]
|
|
||||||
77[Solid2d]
|
|
||||||
end
|
|
||||||
subgraph path14 [Path]
|
|
||||||
14["Path<br>[1992, 2025, 0]"]
|
|
||||||
%% [ProgramBodyItem { index: 17 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 1 }]
|
|
||||||
41["Segment<br>[2338, 2345, 0]"]
|
|
||||||
%% [ProgramBodyItem { index: 17 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 8 }]
|
|
||||||
85[Solid2d]
|
85[Solid2d]
|
||||||
end
|
end
|
||||||
subgraph path15 [Path]
|
subgraph path13 [Path]
|
||||||
15["Path<br>[2583, 2618, 0]"]
|
13["Path<br>[1293, 1328, 0]"]
|
||||||
%% [ProgramBodyItem { index: 23 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 1 }]
|
%% [ProgramBodyItem { index: 10 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 1 }]
|
||||||
42["Segment<br>[2624, 2656, 0]"]
|
34["Segment<br>[1334, 1366, 0]"]
|
||||||
%% [ProgramBodyItem { index: 23 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 2 }]
|
%% [ProgramBodyItem { index: 10 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 2 }]
|
||||||
43["Segment<br>[2662, 2702, 0]"]
|
35["Segment<br>[1372, 1412, 0]"]
|
||||||
%% [ProgramBodyItem { index: 23 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 3 }]
|
%% [ProgramBodyItem { index: 10 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 3 }]
|
||||||
44["Segment<br>[2708, 2755, 0]"]
|
36["Segment<br>[1418, 1465, 0]"]
|
||||||
%% [ProgramBodyItem { index: 23 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 4 }]
|
%% [ProgramBodyItem { index: 10 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 4 }]
|
||||||
45["Segment<br>[2761, 2801, 0]"]
|
37["Segment<br>[1471, 1511, 0]"]
|
||||||
%% [ProgramBodyItem { index: 23 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 5 }]
|
%% [ProgramBodyItem { index: 10 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 5 }]
|
||||||
46["Segment<br>[2807, 2854, 0]"]
|
38["Segment<br>[1517, 1564, 0]"]
|
||||||
%% [ProgramBodyItem { index: 23 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 6 }]
|
%% [ProgramBodyItem { index: 10 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 6 }]
|
||||||
47["Segment<br>[2860, 2925, 0]"]
|
39["Segment<br>[1570, 1635, 0]"]
|
||||||
%% [ProgramBodyItem { index: 23 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 7 }]
|
%% [ProgramBodyItem { index: 10 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 7 }]
|
||||||
48["Segment<br>[2931, 2938, 0]"]
|
40["Segment<br>[1641, 1648, 0]"]
|
||||||
%% [ProgramBodyItem { index: 23 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 8 }]
|
%% [ProgramBodyItem { index: 10 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 8 }]
|
||||||
79[Solid2d]
|
|
||||||
end
|
|
||||||
subgraph path16 [Path]
|
|
||||||
16["Path<br>[3173, 3208, 0]"]
|
|
||||||
%% [ProgramBodyItem { index: 29 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 1 }]
|
|
||||||
49["Segment<br>[3214, 3246, 0]"]
|
|
||||||
%% [ProgramBodyItem { index: 29 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 2 }]
|
|
||||||
50["Segment<br>[3252, 3292, 0]"]
|
|
||||||
%% [ProgramBodyItem { index: 29 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 3 }]
|
|
||||||
51["Segment<br>[3298, 3345, 0]"]
|
|
||||||
%% [ProgramBodyItem { index: 29 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 4 }]
|
|
||||||
52["Segment<br>[3351, 3391, 0]"]
|
|
||||||
%% [ProgramBodyItem { index: 29 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 5 }]
|
|
||||||
53["Segment<br>[3397, 3444, 0]"]
|
|
||||||
%% [ProgramBodyItem { index: 29 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 6 }]
|
|
||||||
54["Segment<br>[3450, 3515, 0]"]
|
|
||||||
%% [ProgramBodyItem { index: 29 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 7 }]
|
|
||||||
55["Segment<br>[3521, 3528, 0]"]
|
|
||||||
%% [ProgramBodyItem { index: 29 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 8 }]
|
|
||||||
78[Solid2d]
|
78[Solid2d]
|
||||||
end
|
end
|
||||||
|
subgraph path14 [Path]
|
||||||
|
14["Path<br>[1825, 1858, 0]"]
|
||||||
|
%% [ProgramBodyItem { index: 15 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 1 }]
|
||||||
|
41["Segment<br>[2171, 2178, 0]"]
|
||||||
|
%% [ProgramBodyItem { index: 15 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 8 }]
|
||||||
|
80[Solid2d]
|
||||||
|
end
|
||||||
|
subgraph path15 [Path]
|
||||||
|
15["Path<br>[2357, 2392, 0]"]
|
||||||
|
%% [ProgramBodyItem { index: 20 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 1 }]
|
||||||
|
42["Segment<br>[2398, 2430, 0]"]
|
||||||
|
%% [ProgramBodyItem { index: 20 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 2 }]
|
||||||
|
43["Segment<br>[2436, 2476, 0]"]
|
||||||
|
%% [ProgramBodyItem { index: 20 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 3 }]
|
||||||
|
44["Segment<br>[2482, 2529, 0]"]
|
||||||
|
%% [ProgramBodyItem { index: 20 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 4 }]
|
||||||
|
45["Segment<br>[2535, 2575, 0]"]
|
||||||
|
%% [ProgramBodyItem { index: 20 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 5 }]
|
||||||
|
46["Segment<br>[2581, 2628, 0]"]
|
||||||
|
%% [ProgramBodyItem { index: 20 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 6 }]
|
||||||
|
47["Segment<br>[2634, 2699, 0]"]
|
||||||
|
%% [ProgramBodyItem { index: 20 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 7 }]
|
||||||
|
48["Segment<br>[2705, 2712, 0]"]
|
||||||
|
%% [ProgramBodyItem { index: 20 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 8 }]
|
||||||
|
84[Solid2d]
|
||||||
|
end
|
||||||
|
subgraph path16 [Path]
|
||||||
|
16["Path<br>[2888, 2923, 0]"]
|
||||||
|
%% [ProgramBodyItem { index: 25 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 1 }]
|
||||||
|
49["Segment<br>[2929, 2961, 0]"]
|
||||||
|
%% [ProgramBodyItem { index: 25 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 2 }]
|
||||||
|
50["Segment<br>[2967, 3007, 0]"]
|
||||||
|
%% [ProgramBodyItem { index: 25 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 3 }]
|
||||||
|
51["Segment<br>[3013, 3060, 0]"]
|
||||||
|
%% [ProgramBodyItem { index: 25 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 4 }]
|
||||||
|
52["Segment<br>[3066, 3106, 0]"]
|
||||||
|
%% [ProgramBodyItem { index: 25 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 5 }]
|
||||||
|
53["Segment<br>[3112, 3159, 0]"]
|
||||||
|
%% [ProgramBodyItem { index: 25 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 6 }]
|
||||||
|
54["Segment<br>[3165, 3230, 0]"]
|
||||||
|
%% [ProgramBodyItem { index: 25 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 7 }]
|
||||||
|
55["Segment<br>[3236, 3243, 0]"]
|
||||||
|
%% [ProgramBodyItem { index: 25 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 8 }]
|
||||||
|
77[Solid2d]
|
||||||
|
end
|
||||||
subgraph path17 [Path]
|
subgraph path17 [Path]
|
||||||
17["Path<br>[3998, 4023, 0]"]
|
17["Path<br>[3755, 3780, 0]"]
|
||||||
%% [ProgramBodyItem { index: 33 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 1 }]
|
%% [ProgramBodyItem { index: 29 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 1 }]
|
||||||
56["Segment<br>[4029, 4048, 0]"]
|
56["Segment<br>[3786, 3805, 0]"]
|
||||||
%% [ProgramBodyItem { index: 33 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 2 }]
|
%% [ProgramBodyItem { index: 29 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 2 }]
|
||||||
57["Segment<br>[4054, 4091, 0]"]
|
57["Segment<br>[3811, 3848, 0]"]
|
||||||
%% [ProgramBodyItem { index: 33 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 3 }]
|
%% [ProgramBodyItem { index: 29 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 3 }]
|
||||||
58["Segment<br>[4097, 4134, 0]"]
|
58["Segment<br>[3854, 3891, 0]"]
|
||||||
%% [ProgramBodyItem { index: 33 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 4 }]
|
%% [ProgramBodyItem { index: 29 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 4 }]
|
||||||
59["Segment<br>[4140, 4158, 0]"]
|
59["Segment<br>[3897, 3915, 0]"]
|
||||||
%% [ProgramBodyItem { index: 33 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 5 }]
|
%% [ProgramBodyItem { index: 29 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 5 }]
|
||||||
60["Segment<br>[4164, 4202, 0]"]
|
60["Segment<br>[3921, 3959, 0]"]
|
||||||
%% [ProgramBodyItem { index: 33 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 6 }]
|
%% [ProgramBodyItem { index: 29 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 6 }]
|
||||||
61["Segment<br>[4208, 4273, 0]"]
|
61["Segment<br>[3965, 4030, 0]"]
|
||||||
%% [ProgramBodyItem { index: 33 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 7 }]
|
%% [ProgramBodyItem { index: 29 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 7 }]
|
||||||
62["Segment<br>[4279, 4286, 0]"]
|
62["Segment<br>[4036, 4043, 0]"]
|
||||||
%% [ProgramBodyItem { index: 33 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 8 }]
|
%% [ProgramBodyItem { index: 29 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 8 }]
|
||||||
81[Solid2d]
|
81[Solid2d]
|
||||||
end
|
end
|
||||||
subgraph path18 [Path]
|
subgraph path18 [Path]
|
||||||
18["Path<br>[4515, 4543, 0]"]
|
18["Path<br>[4272, 4300, 0]"]
|
||||||
%% [ProgramBodyItem { index: 34 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 1 }]
|
%% [ProgramBodyItem { index: 30 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 1 }]
|
||||||
63["Segment<br>[4549, 4568, 0]"]
|
63["Segment<br>[4306, 4325, 0]"]
|
||||||
%% [ProgramBodyItem { index: 34 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 2 }]
|
%% [ProgramBodyItem { index: 30 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 2 }]
|
||||||
64["Segment<br>[4574, 4592, 0]"]
|
64["Segment<br>[4331, 4349, 0]"]
|
||||||
%% [ProgramBodyItem { index: 34 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 3 }]
|
%% [ProgramBodyItem { index: 30 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 3 }]
|
||||||
65["Segment<br>[4598, 4639, 0]"]
|
65["Segment<br>[4355, 4396, 0]"]
|
||||||
%% [ProgramBodyItem { index: 34 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 4 }]
|
%% [ProgramBodyItem { index: 30 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 4 }]
|
||||||
66["Segment<br>[4645, 4666, 0]"]
|
66["Segment<br>[4402, 4423, 0]"]
|
||||||
%% [ProgramBodyItem { index: 34 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 5 }]
|
%% [ProgramBodyItem { index: 30 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 5 }]
|
||||||
67["Segment<br>[4672, 4692, 0]"]
|
67["Segment<br>[4429, 4449, 0]"]
|
||||||
%% [ProgramBodyItem { index: 34 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 6 }]
|
%% [ProgramBodyItem { index: 30 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 6 }]
|
||||||
68["Segment<br>[4698, 4763, 0]"]
|
68["Segment<br>[4455, 4520, 0]"]
|
||||||
%% [ProgramBodyItem { index: 34 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 7 }]
|
%% [ProgramBodyItem { index: 30 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 7 }]
|
||||||
69["Segment<br>[4769, 4776, 0]"]
|
69["Segment<br>[4526, 4533, 0]"]
|
||||||
%% [ProgramBodyItem { index: 34 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 8 }]
|
%% [ProgramBodyItem { index: 30 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 8 }]
|
||||||
82[Solid2d]
|
82[Solid2d]
|
||||||
end
|
end
|
||||||
subgraph path19 [Path]
|
subgraph path19 [Path]
|
||||||
19["Path<br>[4999, 5029, 0]"]
|
19["Path<br>[4756, 4786, 0]"]
|
||||||
%% [ProgramBodyItem { index: 35 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 1 }]
|
%% [ProgramBodyItem { index: 31 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 1 }]
|
||||||
70["Segment<br>[5035, 5052, 0]"]
|
70["Segment<br>[4792, 4809, 0]"]
|
||||||
%% [ProgramBodyItem { index: 35 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 2 }]
|
%% [ProgramBodyItem { index: 31 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 2 }]
|
||||||
71["Segment<br>[5058, 5076, 0]"]
|
71["Segment<br>[4815, 4833, 0]"]
|
||||||
%% [ProgramBodyItem { index: 35 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 3 }]
|
%% [ProgramBodyItem { index: 31 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 3 }]
|
||||||
72["Segment<br>[5082, 5120, 0]"]
|
72["Segment<br>[4839, 4877, 0]"]
|
||||||
%% [ProgramBodyItem { index: 35 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 4 }]
|
%% [ProgramBodyItem { index: 31 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 4 }]
|
||||||
73["Segment<br>[5126, 5152, 0]"]
|
73["Segment<br>[4883, 4909, 0]"]
|
||||||
%% [ProgramBodyItem { index: 35 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 5 }]
|
%% [ProgramBodyItem { index: 31 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 5 }]
|
||||||
74["Segment<br>[5158, 5177, 0]"]
|
74["Segment<br>[4915, 4934, 0]"]
|
||||||
%% [ProgramBodyItem { index: 35 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 6 }]
|
%% [ProgramBodyItem { index: 31 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 6 }]
|
||||||
75["Segment<br>[5183, 5248, 0]"]
|
75["Segment<br>[4940, 5005, 0]"]
|
||||||
%% [ProgramBodyItem { index: 35 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 7 }]
|
%% [ProgramBodyItem { index: 31 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 7 }]
|
||||||
76["Segment<br>[5254, 5261, 0]"]
|
76["Segment<br>[5011, 5018, 0]"]
|
||||||
%% [ProgramBodyItem { index: 35 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 8 }]
|
%% [ProgramBodyItem { index: 31 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 8 }]
|
||||||
83[Solid2d]
|
83[Solid2d]
|
||||||
end
|
end
|
||||||
1["Plane<br>[308, 325, 0]"]
|
1["Plane<br>[308, 325, 0]"]
|
||||||
%% [ProgramBodyItem { index: 2 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 0 }]
|
%% [ProgramBodyItem { index: 2 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 0 }]
|
||||||
2["Plane<br>[781, 809, 0]"]
|
2["Plane<br>[781, 809, 0]"]
|
||||||
%% [ProgramBodyItem { index: 5 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 0 }, CallKwUnlabeledArg]
|
%% [ProgramBodyItem { index: 5 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 0 }, CallKwUnlabeledArg]
|
||||||
3["Plane<br>[1372, 1395, 0]"]
|
3["Plane<br>[1270, 1287, 0]"]
|
||||||
%% [ProgramBodyItem { index: 11 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 0 }]
|
%% [ProgramBodyItem { index: 10 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 0 }]
|
||||||
4["Plane<br>[1963, 1986, 0]"]
|
4["Plane<br>[1802, 1819, 0]"]
|
||||||
%% [ProgramBodyItem { index: 17 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 0 }]
|
%% [ProgramBodyItem { index: 15 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 0 }]
|
||||||
5["Plane<br>[2554, 2577, 0]"]
|
5["Plane<br>[2334, 2351, 0]"]
|
||||||
%% [ProgramBodyItem { index: 23 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 0 }]
|
%% [ProgramBodyItem { index: 20 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 0 }]
|
||||||
6["Plane<br>[3144, 3167, 0]"]
|
6["Plane<br>[2865, 2882, 0]"]
|
||||||
|
%% [ProgramBodyItem { index: 25 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 0 }]
|
||||||
|
7["Plane<br>[3732, 3749, 0]"]
|
||||||
%% [ProgramBodyItem { index: 29 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 0 }]
|
%% [ProgramBodyItem { index: 29 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 0 }]
|
||||||
7["Plane<br>[3975, 3992, 0]"]
|
8["Plane<br>[4249, 4266, 0]"]
|
||||||
%% [ProgramBodyItem { index: 33 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 0 }]
|
%% [ProgramBodyItem { index: 30 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 0 }]
|
||||||
8["Plane<br>[4492, 4509, 0]"]
|
9["Plane<br>[4733, 4750, 0]"]
|
||||||
%% [ProgramBodyItem { index: 34 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 0 }]
|
%% [ProgramBodyItem { index: 31 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 0 }]
|
||||||
9["Plane<br>[4976, 4993, 0]"]
|
|
||||||
%% [ProgramBodyItem { index: 35 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 0 }]
|
|
||||||
10["StartSketchOnPlane<br>[767, 810, 0]"]
|
10["StartSketchOnPlane<br>[767, 810, 0]"]
|
||||||
%% [ProgramBodyItem { index: 5 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 0 }]
|
%% [ProgramBodyItem { index: 5 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 0 }]
|
||||||
86["Sweep Extrusion<br>[3616, 3638, 0]"]
|
86["Sweep Loft<br>[3351, 3439, 0]"]
|
||||||
%% [ProgramBodyItem { index: 30 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 1 }]
|
%% [ProgramBodyItem { index: 26 }, VariableDeclarationDeclaration, VariableDeclarationInit]
|
||||||
87["Sweep Loft<br>[3698, 3786, 0]"]
|
87["Sweep Loft<br>[3479, 3561, 0]"]
|
||||||
%% [ProgramBodyItem { index: 31 }, VariableDeclarationDeclaration, VariableDeclarationInit]
|
%% [ProgramBodyItem { index: 27 }, VariableDeclarationDeclaration, VariableDeclarationInit]
|
||||||
88["Sweep Loft<br>[3827, 3902, 0]"]
|
88["Sweep Extrusion<br>[3641, 3660, 0]"]
|
||||||
%% [ProgramBodyItem { index: 32 }, VariableDeclarationDeclaration, VariableDeclarationInit]
|
%% [ProgramBodyItem { index: 28 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 1 }]
|
||||||
89["Sweep Revolve<br>[4292, 4322, 0]"]
|
89["Sweep Revolve<br>[4049, 4079, 0]"]
|
||||||
%% [ProgramBodyItem { index: 33 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 9 }]
|
%% [ProgramBodyItem { index: 29 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 9 }]
|
||||||
90["Sweep Revolve<br>[4782, 4812, 0]"]
|
90["Sweep Revolve<br>[4539, 4569, 0]"]
|
||||||
%% [ProgramBodyItem { index: 34 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 9 }]
|
%% [ProgramBodyItem { index: 30 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 9 }]
|
||||||
91["Sweep Revolve<br>[5267, 5297, 0]"]
|
91["Sweep Revolve<br>[5024, 5054, 0]"]
|
||||||
%% [ProgramBodyItem { index: 35 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 9 }]
|
%% [ProgramBodyItem { index: 31 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 9 }]
|
||||||
92[Wall]
|
92[Wall]
|
||||||
%% face_code_ref=Missing NodePath
|
%% face_code_ref=Missing NodePath
|
||||||
93[Wall]
|
93[Wall]
|
||||||
@ -239,30 +239,38 @@ flowchart LR
|
|||||||
%% face_code_ref=Missing NodePath
|
%% face_code_ref=Missing NodePath
|
||||||
115[Wall]
|
115[Wall]
|
||||||
%% face_code_ref=Missing NodePath
|
%% face_code_ref=Missing NodePath
|
||||||
116["Cap Start"]
|
116[Wall]
|
||||||
%% face_code_ref=Missing NodePath
|
%% face_code_ref=Missing NodePath
|
||||||
117["Cap End"]
|
117[Wall]
|
||||||
%% face_code_ref=Missing NodePath
|
%% face_code_ref=Missing NodePath
|
||||||
118["SweepEdge Opposite"]
|
118[Wall]
|
||||||
119["SweepEdge Opposite"]
|
%% face_code_ref=Missing NodePath
|
||||||
120["SweepEdge Opposite"]
|
119[Wall]
|
||||||
121["SweepEdge Opposite"]
|
%% face_code_ref=Missing NodePath
|
||||||
122["SweepEdge Opposite"]
|
120[Wall]
|
||||||
123["SweepEdge Opposite"]
|
%% face_code_ref=Missing NodePath
|
||||||
124["SweepEdge Adjacent"]
|
121[Wall]
|
||||||
125["SweepEdge Adjacent"]
|
%% face_code_ref=Missing NodePath
|
||||||
126["SweepEdge Adjacent"]
|
122["Cap Start"]
|
||||||
127["SweepEdge Adjacent"]
|
%% face_code_ref=Missing NodePath
|
||||||
128["SweepEdge Adjacent"]
|
123["Cap Start"]
|
||||||
129["SweepEdge Adjacent"]
|
%% face_code_ref=Missing NodePath
|
||||||
130["SweepEdge Adjacent"]
|
124["Cap End"]
|
||||||
131["SweepEdge Adjacent"]
|
%% face_code_ref=Missing NodePath
|
||||||
132["SweepEdge Adjacent"]
|
125["Cap End"]
|
||||||
133["SweepEdge Adjacent"]
|
%% face_code_ref=Missing NodePath
|
||||||
134["SweepEdge Adjacent"]
|
126["SweepEdge Opposite"]
|
||||||
135["SweepEdge Adjacent"]
|
127["SweepEdge Opposite"]
|
||||||
136["SweepEdge Adjacent"]
|
128["SweepEdge Opposite"]
|
||||||
137["SweepEdge Adjacent"]
|
129["SweepEdge Opposite"]
|
||||||
|
130["SweepEdge Opposite"]
|
||||||
|
131["SweepEdge Opposite"]
|
||||||
|
132["SweepEdge Opposite"]
|
||||||
|
133["SweepEdge Opposite"]
|
||||||
|
134["SweepEdge Opposite"]
|
||||||
|
135["SweepEdge Opposite"]
|
||||||
|
136["SweepEdge Opposite"]
|
||||||
|
137["SweepEdge Opposite"]
|
||||||
138["SweepEdge Adjacent"]
|
138["SweepEdge Adjacent"]
|
||||||
139["SweepEdge Adjacent"]
|
139["SweepEdge Adjacent"]
|
||||||
140["SweepEdge Adjacent"]
|
140["SweepEdge Adjacent"]
|
||||||
@ -272,6 +280,26 @@ flowchart LR
|
|||||||
144["SweepEdge Adjacent"]
|
144["SweepEdge Adjacent"]
|
||||||
145["SweepEdge Adjacent"]
|
145["SweepEdge Adjacent"]
|
||||||
146["SweepEdge Adjacent"]
|
146["SweepEdge Adjacent"]
|
||||||
|
147["SweepEdge Adjacent"]
|
||||||
|
148["SweepEdge Adjacent"]
|
||||||
|
149["SweepEdge Adjacent"]
|
||||||
|
150["SweepEdge Adjacent"]
|
||||||
|
151["SweepEdge Adjacent"]
|
||||||
|
152["SweepEdge Adjacent"]
|
||||||
|
153["SweepEdge Adjacent"]
|
||||||
|
154["SweepEdge Adjacent"]
|
||||||
|
155["SweepEdge Adjacent"]
|
||||||
|
156["SweepEdge Adjacent"]
|
||||||
|
157["SweepEdge Adjacent"]
|
||||||
|
158["SweepEdge Adjacent"]
|
||||||
|
159["SweepEdge Adjacent"]
|
||||||
|
160["SweepEdge Adjacent"]
|
||||||
|
161["SweepEdge Adjacent"]
|
||||||
|
162["SweepEdge Adjacent"]
|
||||||
|
163["SweepEdge Adjacent"]
|
||||||
|
164["SweepEdge Adjacent"]
|
||||||
|
165["SweepEdge Adjacent"]
|
||||||
|
166["SweepEdge Adjacent"]
|
||||||
1 --- 11
|
1 --- 11
|
||||||
2 <--x 10
|
2 <--x 10
|
||||||
2 --- 12
|
2 --- 12
|
||||||
@ -289,8 +317,8 @@ flowchart LR
|
|||||||
11 --- 24
|
11 --- 24
|
||||||
11 --- 25
|
11 --- 25
|
||||||
11 --- 26
|
11 --- 26
|
||||||
11 --- 80
|
11 --- 79
|
||||||
11 ---- 87
|
11 ---- 86
|
||||||
12 --- 27
|
12 --- 27
|
||||||
12 --- 28
|
12 --- 28
|
||||||
12 --- 29
|
12 --- 29
|
||||||
@ -298,8 +326,8 @@ flowchart LR
|
|||||||
12 --- 31
|
12 --- 31
|
||||||
12 --- 32
|
12 --- 32
|
||||||
12 --- 33
|
12 --- 33
|
||||||
12 --- 84
|
12 --- 85
|
||||||
12 x---> 87
|
12 x---> 86
|
||||||
13 --- 34
|
13 --- 34
|
||||||
13 --- 35
|
13 --- 35
|
||||||
13 --- 36
|
13 --- 36
|
||||||
@ -307,17 +335,17 @@ flowchart LR
|
|||||||
13 --- 38
|
13 --- 38
|
||||||
13 --- 39
|
13 --- 39
|
||||||
13 --- 40
|
13 --- 40
|
||||||
13 --- 77
|
13 --- 78
|
||||||
13 x---> 87
|
13 x---> 86
|
||||||
14 --- 41
|
14 --- 41
|
||||||
14 --- 85
|
14 --- 80
|
||||||
14 x---> 87
|
14 x---> 86
|
||||||
14 x--> 118
|
14 x--> 132
|
||||||
14 x--> 119
|
14 x--> 133
|
||||||
14 x--> 120
|
14 x--> 134
|
||||||
14 x--> 121
|
14 x--> 135
|
||||||
14 x--> 122
|
14 x--> 136
|
||||||
14 x--> 123
|
14 x--> 137
|
||||||
15 --- 42
|
15 --- 42
|
||||||
15 --- 43
|
15 --- 43
|
||||||
15 --- 44
|
15 --- 44
|
||||||
@ -325,8 +353,8 @@ flowchart LR
|
|||||||
15 --- 46
|
15 --- 46
|
||||||
15 --- 47
|
15 --- 47
|
||||||
15 --- 48
|
15 --- 48
|
||||||
15 --- 79
|
15 --- 84
|
||||||
15 x---> 88
|
15 x---> 87
|
||||||
16 --- 49
|
16 --- 49
|
||||||
16 --- 50
|
16 --- 50
|
||||||
16 --- 51
|
16 --- 51
|
||||||
@ -334,8 +362,8 @@ flowchart LR
|
|||||||
16 --- 53
|
16 --- 53
|
||||||
16 --- 54
|
16 --- 54
|
||||||
16 --- 55
|
16 --- 55
|
||||||
16 --- 78
|
16 --- 77
|
||||||
16 x---> 88
|
16 ---- 88
|
||||||
17 --- 56
|
17 --- 56
|
||||||
17 --- 57
|
17 --- 57
|
||||||
17 --- 58
|
17 --- 58
|
||||||
@ -363,195 +391,263 @@ flowchart LR
|
|||||||
19 --- 76
|
19 --- 76
|
||||||
19 --- 83
|
19 --- 83
|
||||||
19 ---- 91
|
19 ---- 91
|
||||||
20 --- 103
|
20 --- 109
|
||||||
20 x--> 116
|
20 x--> 122
|
||||||
20 --- 118
|
20 --- 132
|
||||||
20 --- 130
|
20 --- 150
|
||||||
21 --- 101
|
21 --- 107
|
||||||
21 x--> 116
|
21 x--> 122
|
||||||
21 --- 119
|
21 --- 133
|
||||||
21 --- 131
|
21 --- 151
|
||||||
22 --- 100
|
22 --- 106
|
||||||
22 x--> 116
|
22 x--> 122
|
||||||
22 --- 120
|
22 --- 134
|
||||||
22 --- 132
|
22 --- 152
|
||||||
23 --- 102
|
23 --- 108
|
||||||
23 x--> 116
|
23 x--> 122
|
||||||
23 --- 121
|
23 --- 135
|
||||||
23 --- 133
|
23 --- 153
|
||||||
24 --- 99
|
24 --- 105
|
||||||
24 x--> 116
|
24 x--> 122
|
||||||
24 --- 122
|
24 --- 136
|
||||||
24 --- 134
|
24 --- 154
|
||||||
25 --- 98
|
25 --- 104
|
||||||
25 x--> 116
|
25 x--> 122
|
||||||
25 --- 123
|
25 --- 137
|
||||||
25 --- 135
|
25 --- 155
|
||||||
|
49 --- 94
|
||||||
|
49 x--> 123
|
||||||
|
49 --- 131
|
||||||
|
49 --- 143
|
||||||
|
50 --- 95
|
||||||
|
50 x--> 123
|
||||||
|
50 --- 130
|
||||||
|
50 --- 142
|
||||||
|
51 --- 96
|
||||||
|
51 x--> 123
|
||||||
|
51 --- 129
|
||||||
|
51 --- 141
|
||||||
|
52 --- 97
|
||||||
|
52 x--> 123
|
||||||
|
52 --- 128
|
||||||
|
52 --- 140
|
||||||
|
53 --- 92
|
||||||
|
53 x--> 123
|
||||||
|
53 --- 127
|
||||||
|
53 --- 139
|
||||||
|
54 --- 93
|
||||||
|
54 x--> 123
|
||||||
|
54 --- 126
|
||||||
|
54 --- 138
|
||||||
89 <--x 56
|
89 <--x 56
|
||||||
56 --- 109
|
56 --- 115
|
||||||
56 x--> 136
|
56 x--> 156
|
||||||
89 <--x 57
|
89 <--x 57
|
||||||
57 --- 108
|
57 --- 114
|
||||||
57 --- 136
|
57 --- 156
|
||||||
89 <--x 58
|
89 <--x 58
|
||||||
58 --- 104
|
58 --- 110
|
||||||
58 --- 137
|
58 --- 157
|
||||||
89 <--x 59
|
89 <--x 59
|
||||||
59 --- 107
|
59 --- 113
|
||||||
59 --- 138
|
59 --- 158
|
||||||
89 <--x 60
|
89 <--x 60
|
||||||
60 --- 106
|
60 --- 112
|
||||||
60 --- 139
|
60 --- 159
|
||||||
89 <--x 61
|
89 <--x 61
|
||||||
61 --- 105
|
61 --- 111
|
||||||
61 --- 140
|
61 --- 160
|
||||||
90 <--x 63
|
90 <--x 63
|
||||||
63 --- 96
|
63 --- 102
|
||||||
63 --- 124
|
63 --- 144
|
||||||
90 <--x 64
|
90 <--x 64
|
||||||
64 --- 92
|
64 --- 98
|
||||||
64 --- 125
|
64 --- 145
|
||||||
90 <--x 65
|
90 <--x 65
|
||||||
65 --- 93
|
65 --- 99
|
||||||
65 --- 126
|
65 --- 146
|
||||||
90 <--x 66
|
90 <--x 66
|
||||||
66 --- 97
|
66 --- 103
|
||||||
66 --- 127
|
66 --- 147
|
||||||
90 <--x 67
|
90 <--x 67
|
||||||
67 --- 95
|
67 --- 101
|
||||||
67 --- 128
|
67 --- 148
|
||||||
90 <--x 68
|
90 <--x 68
|
||||||
68 --- 94
|
68 --- 100
|
||||||
68 --- 129
|
68 --- 149
|
||||||
91 <--x 70
|
91 <--x 70
|
||||||
70 --- 112
|
70 --- 118
|
||||||
70 --- 141
|
70 --- 161
|
||||||
91 <--x 71
|
91 <--x 71
|
||||||
71 --- 115
|
71 --- 121
|
||||||
71 --- 142
|
71 --- 162
|
||||||
91 <--x 72
|
91 <--x 72
|
||||||
72 --- 114
|
72 --- 120
|
||||||
72 --- 143
|
72 --- 163
|
||||||
91 <--x 73
|
91 <--x 73
|
||||||
73 --- 110
|
73 --- 116
|
||||||
73 --- 144
|
73 --- 164
|
||||||
91 <--x 74
|
91 <--x 74
|
||||||
74 --- 113
|
74 --- 119
|
||||||
74 --- 145
|
74 --- 165
|
||||||
91 <--x 75
|
91 <--x 75
|
||||||
75 --- 111
|
75 --- 117
|
||||||
75 --- 146
|
75 --- 166
|
||||||
87 --- 98
|
86 --- 104
|
||||||
87 --- 99
|
86 --- 105
|
||||||
87 --- 100
|
86 --- 106
|
||||||
87 --- 101
|
86 --- 107
|
||||||
87 --- 102
|
86 --- 108
|
||||||
87 --- 103
|
86 --- 109
|
||||||
87 --- 116
|
86 --- 122
|
||||||
87 --- 117
|
86 --- 124
|
||||||
87 --- 118
|
86 --- 132
|
||||||
87 --- 119
|
86 --- 133
|
||||||
87 --- 120
|
86 --- 134
|
||||||
87 --- 121
|
86 --- 135
|
||||||
87 --- 122
|
86 --- 136
|
||||||
87 --- 123
|
86 --- 137
|
||||||
87 --- 130
|
86 --- 150
|
||||||
87 --- 131
|
86 --- 151
|
||||||
87 --- 132
|
86 --- 152
|
||||||
87 --- 133
|
86 --- 153
|
||||||
87 --- 134
|
86 --- 154
|
||||||
87 --- 135
|
86 --- 155
|
||||||
89 --- 104
|
88 --- 92
|
||||||
89 --- 105
|
88 --- 93
|
||||||
89 --- 106
|
88 --- 94
|
||||||
89 --- 107
|
88 --- 95
|
||||||
89 --- 108
|
88 --- 96
|
||||||
89 --- 109
|
88 --- 97
|
||||||
89 --- 136
|
88 --- 123
|
||||||
89 --- 137
|
88 --- 125
|
||||||
89 --- 138
|
88 --- 126
|
||||||
89 --- 139
|
88 --- 127
|
||||||
89 --- 140
|
88 --- 128
|
||||||
90 --- 92
|
88 --- 129
|
||||||
90 --- 93
|
88 --- 130
|
||||||
90 --- 94
|
88 --- 131
|
||||||
90 --- 95
|
88 --- 138
|
||||||
90 --- 96
|
88 --- 139
|
||||||
90 --- 97
|
88 --- 140
|
||||||
90 --- 124
|
88 --- 141
|
||||||
90 --- 125
|
88 --- 142
|
||||||
90 --- 126
|
88 --- 143
|
||||||
90 --- 127
|
89 --- 110
|
||||||
90 --- 128
|
89 --- 111
|
||||||
90 --- 129
|
89 --- 112
|
||||||
91 --- 110
|
89 --- 113
|
||||||
91 --- 111
|
89 --- 114
|
||||||
91 --- 112
|
89 --- 115
|
||||||
91 --- 113
|
89 --- 156
|
||||||
91 --- 114
|
89 --- 157
|
||||||
91 --- 115
|
89 --- 158
|
||||||
91 --- 141
|
89 --- 159
|
||||||
91 --- 142
|
89 --- 160
|
||||||
91 --- 143
|
90 --- 98
|
||||||
91 --- 144
|
90 --- 99
|
||||||
91 --- 145
|
90 --- 100
|
||||||
91 --- 146
|
90 --- 101
|
||||||
124 <--x 92
|
90 --- 102
|
||||||
92 --- 125
|
90 --- 103
|
||||||
125 <--x 93
|
90 --- 144
|
||||||
|
90 --- 145
|
||||||
|
90 --- 146
|
||||||
|
90 --- 147
|
||||||
|
90 --- 148
|
||||||
|
90 --- 149
|
||||||
|
91 --- 116
|
||||||
|
91 --- 117
|
||||||
|
91 --- 118
|
||||||
|
91 --- 119
|
||||||
|
91 --- 120
|
||||||
|
91 --- 121
|
||||||
|
91 --- 161
|
||||||
|
91 --- 162
|
||||||
|
91 --- 163
|
||||||
|
91 --- 164
|
||||||
|
91 --- 165
|
||||||
|
91 --- 166
|
||||||
|
92 --- 127
|
||||||
|
92 --- 139
|
||||||
|
140 <--x 92
|
||||||
93 --- 126
|
93 --- 126
|
||||||
128 <--x 94
|
93 --- 138
|
||||||
94 --- 129
|
139 <--x 93
|
||||||
127 <--x 95
|
94 --- 131
|
||||||
95 --- 128
|
138 <--x 94
|
||||||
96 --- 124
|
94 --- 143
|
||||||
129 <--x 96
|
95 --- 130
|
||||||
126 <--x 97
|
95 --- 142
|
||||||
97 --- 127
|
143 <--x 95
|
||||||
98 --- 123
|
96 --- 129
|
||||||
130 <--x 98
|
96 --- 141
|
||||||
98 --- 135
|
142 <--x 96
|
||||||
99 --- 122
|
97 --- 128
|
||||||
99 --- 134
|
97 --- 140
|
||||||
135 <--x 99
|
141 <--x 97
|
||||||
100 --- 120
|
144 <--x 98
|
||||||
100 --- 132
|
98 --- 145
|
||||||
133 <--x 100
|
145 <--x 99
|
||||||
101 --- 119
|
99 --- 146
|
||||||
101 --- 131
|
148 <--x 100
|
||||||
132 <--x 101
|
100 --- 149
|
||||||
102 --- 121
|
147 <--x 101
|
||||||
102 --- 133
|
101 --- 148
|
||||||
134 <--x 102
|
102 --- 144
|
||||||
103 --- 118
|
149 <--x 102
|
||||||
103 --- 130
|
146 <--x 103
|
||||||
131 <--x 103
|
103 --- 147
|
||||||
104 --- 137
|
104 --- 137
|
||||||
139 <--x 105
|
150 <--x 104
|
||||||
105 --- 140
|
104 --- 155
|
||||||
138 <--x 106
|
105 --- 136
|
||||||
106 --- 139
|
105 --- 154
|
||||||
137 <--x 107
|
155 <--x 105
|
||||||
107 --- 138
|
106 --- 134
|
||||||
108 --- 136
|
106 --- 152
|
||||||
109 --- 136
|
153 <--x 106
|
||||||
140 <--x 109
|
107 --- 133
|
||||||
143 <--x 110
|
107 --- 151
|
||||||
110 --- 144
|
152 <--x 107
|
||||||
145 <--x 111
|
108 --- 135
|
||||||
111 --- 146
|
108 --- 153
|
||||||
112 --- 141
|
154 <--x 108
|
||||||
146 <--x 112
|
109 --- 132
|
||||||
144 <--x 113
|
109 --- 150
|
||||||
113 --- 145
|
151 <--x 109
|
||||||
142 <--x 114
|
110 --- 157
|
||||||
114 --- 143
|
159 <--x 111
|
||||||
141 <--x 115
|
111 --- 160
|
||||||
115 --- 142
|
158 <--x 112
|
||||||
118 <--x 117
|
112 --- 159
|
||||||
119 <--x 117
|
157 <--x 113
|
||||||
120 <--x 117
|
113 --- 158
|
||||||
121 <--x 117
|
114 --- 156
|
||||||
122 <--x 117
|
115 --- 156
|
||||||
123 <--x 117
|
160 <--x 115
|
||||||
|
163 <--x 116
|
||||||
|
116 --- 164
|
||||||
|
165 <--x 117
|
||||||
|
117 --- 166
|
||||||
|
118 --- 161
|
||||||
|
166 <--x 118
|
||||||
|
164 <--x 119
|
||||||
|
119 --- 165
|
||||||
|
162 <--x 120
|
||||||
|
120 --- 163
|
||||||
|
161 <--x 121
|
||||||
|
121 --- 162
|
||||||
|
132 <--x 124
|
||||||
|
133 <--x 124
|
||||||
|
134 <--x 124
|
||||||
|
135 <--x 124
|
||||||
|
136 <--x 124
|
||||||
|
137 <--x 124
|
||||||
|
126 <--x 125
|
||||||
|
127 <--x 125
|
||||||
|
128 <--x 125
|
||||||
|
129 <--x 125
|
||||||
|
130 <--x 125
|
||||||
|
131 <--x 125
|
||||||
```
|
```
|
||||||
|
@ -64,131 +64,8 @@ description: Operations executed prosthetic-hip.kcl
|
|||||||
"name": "startSketchOn",
|
"name": "startSketchOn",
|
||||||
"unlabeledArg": {
|
"unlabeledArg": {
|
||||||
"value": {
|
"value": {
|
||||||
"type": "Object",
|
"type": "Plane",
|
||||||
"value": {
|
"artifact_id": "[uuid]"
|
||||||
"origin": {
|
|
||||||
"type": "Array",
|
|
||||||
"value": [
|
|
||||||
{
|
|
||||||
"type": "Number",
|
|
||||||
"value": 0.0,
|
|
||||||
"ty": {
|
|
||||||
"type": "Default",
|
|
||||||
"len": {
|
|
||||||
"type": "Mm"
|
|
||||||
},
|
|
||||||
"angle": {
|
|
||||||
"type": "Degrees"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "Number",
|
|
||||||
"value": 0.0,
|
|
||||||
"ty": {
|
|
||||||
"type": "Default",
|
|
||||||
"len": {
|
|
||||||
"type": "Mm"
|
|
||||||
},
|
|
||||||
"angle": {
|
|
||||||
"type": "Degrees"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "Number",
|
|
||||||
"value": 110.0,
|
|
||||||
"ty": {
|
|
||||||
"type": "Default",
|
|
||||||
"len": {
|
|
||||||
"type": "Mm"
|
|
||||||
},
|
|
||||||
"angle": {
|
|
||||||
"type": "Degrees"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"xAxis": {
|
|
||||||
"type": "Array",
|
|
||||||
"value": [
|
|
||||||
{
|
|
||||||
"type": "Number",
|
|
||||||
"value": 0.9063077870366499,
|
|
||||||
"ty": {
|
|
||||||
"type": "Known",
|
|
||||||
"type": "Count"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "Number",
|
|
||||||
"value": 0.0,
|
|
||||||
"ty": {
|
|
||||||
"type": "Default",
|
|
||||||
"len": {
|
|
||||||
"type": "Mm"
|
|
||||||
},
|
|
||||||
"angle": {
|
|
||||||
"type": "Degrees"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "Number",
|
|
||||||
"value": 0.42261826174069944,
|
|
||||||
"ty": {
|
|
||||||
"type": "Known",
|
|
||||||
"type": "Count"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"yAxis": {
|
|
||||||
"type": "Array",
|
|
||||||
"value": [
|
|
||||||
{
|
|
||||||
"type": "Number",
|
|
||||||
"value": 0.0,
|
|
||||||
"ty": {
|
|
||||||
"type": "Default",
|
|
||||||
"len": {
|
|
||||||
"type": "Mm"
|
|
||||||
},
|
|
||||||
"angle": {
|
|
||||||
"type": "Degrees"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "Number",
|
|
||||||
"value": 1.0,
|
|
||||||
"ty": {
|
|
||||||
"type": "Default",
|
|
||||||
"len": {
|
|
||||||
"type": "Mm"
|
|
||||||
},
|
|
||||||
"angle": {
|
|
||||||
"type": "Degrees"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "Number",
|
|
||||||
"value": 0.0,
|
|
||||||
"ty": {
|
|
||||||
"type": "Default",
|
|
||||||
"len": {
|
|
||||||
"type": "Mm"
|
|
||||||
},
|
|
||||||
"angle": {
|
|
||||||
"type": "Degrees"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
"sourceRange": []
|
"sourceRange": []
|
||||||
},
|
},
|
||||||
@ -200,131 +77,8 @@ description: Operations executed prosthetic-hip.kcl
|
|||||||
"name": "startSketchOn",
|
"name": "startSketchOn",
|
||||||
"unlabeledArg": {
|
"unlabeledArg": {
|
||||||
"value": {
|
"value": {
|
||||||
"type": "Object",
|
"type": "Plane",
|
||||||
"value": {
|
"artifact_id": "[uuid]"
|
||||||
"origin": {
|
|
||||||
"type": "Array",
|
|
||||||
"value": [
|
|
||||||
{
|
|
||||||
"type": "Number",
|
|
||||||
"value": 0.0,
|
|
||||||
"ty": {
|
|
||||||
"type": "Default",
|
|
||||||
"len": {
|
|
||||||
"type": "Mm"
|
|
||||||
},
|
|
||||||
"angle": {
|
|
||||||
"type": "Degrees"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "Number",
|
|
||||||
"value": 0.0,
|
|
||||||
"ty": {
|
|
||||||
"type": "Default",
|
|
||||||
"len": {
|
|
||||||
"type": "Mm"
|
|
||||||
},
|
|
||||||
"angle": {
|
|
||||||
"type": "Degrees"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "Number",
|
|
||||||
"value": 130.0,
|
|
||||||
"ty": {
|
|
||||||
"type": "Default",
|
|
||||||
"len": {
|
|
||||||
"type": "Mm"
|
|
||||||
},
|
|
||||||
"angle": {
|
|
||||||
"type": "Degrees"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"xAxis": {
|
|
||||||
"type": "Array",
|
|
||||||
"value": [
|
|
||||||
{
|
|
||||||
"type": "Number",
|
|
||||||
"value": 0.8038568606172173,
|
|
||||||
"ty": {
|
|
||||||
"type": "Known",
|
|
||||||
"type": "Count"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "Number",
|
|
||||||
"value": 0.0,
|
|
||||||
"ty": {
|
|
||||||
"type": "Default",
|
|
||||||
"len": {
|
|
||||||
"type": "Mm"
|
|
||||||
},
|
|
||||||
"angle": {
|
|
||||||
"type": "Degrees"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "Number",
|
|
||||||
"value": 0.5948227867513413,
|
|
||||||
"ty": {
|
|
||||||
"type": "Known",
|
|
||||||
"type": "Count"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"yAxis": {
|
|
||||||
"type": "Array",
|
|
||||||
"value": [
|
|
||||||
{
|
|
||||||
"type": "Number",
|
|
||||||
"value": 0.0,
|
|
||||||
"ty": {
|
|
||||||
"type": "Default",
|
|
||||||
"len": {
|
|
||||||
"type": "Mm"
|
|
||||||
},
|
|
||||||
"angle": {
|
|
||||||
"type": "Degrees"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "Number",
|
|
||||||
"value": 1.0,
|
|
||||||
"ty": {
|
|
||||||
"type": "Default",
|
|
||||||
"len": {
|
|
||||||
"type": "Mm"
|
|
||||||
},
|
|
||||||
"angle": {
|
|
||||||
"type": "Degrees"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "Number",
|
|
||||||
"value": 0.0,
|
|
||||||
"ty": {
|
|
||||||
"type": "Default",
|
|
||||||
"len": {
|
|
||||||
"type": "Mm"
|
|
||||||
},
|
|
||||||
"angle": {
|
|
||||||
"type": "Degrees"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
"sourceRange": []
|
"sourceRange": []
|
||||||
},
|
},
|
||||||
@ -336,131 +90,8 @@ description: Operations executed prosthetic-hip.kcl
|
|||||||
"name": "startSketchOn",
|
"name": "startSketchOn",
|
||||||
"unlabeledArg": {
|
"unlabeledArg": {
|
||||||
"value": {
|
"value": {
|
||||||
"type": "Object",
|
"type": "Plane",
|
||||||
"value": {
|
"artifact_id": "[uuid]"
|
||||||
"origin": {
|
|
||||||
"type": "Array",
|
|
||||||
"value": [
|
|
||||||
{
|
|
||||||
"type": "Number",
|
|
||||||
"value": 0.0,
|
|
||||||
"ty": {
|
|
||||||
"type": "Default",
|
|
||||||
"len": {
|
|
||||||
"type": "Mm"
|
|
||||||
},
|
|
||||||
"angle": {
|
|
||||||
"type": "Degrees"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "Number",
|
|
||||||
"value": 0.0,
|
|
||||||
"ty": {
|
|
||||||
"type": "Default",
|
|
||||||
"len": {
|
|
||||||
"type": "Mm"
|
|
||||||
},
|
|
||||||
"angle": {
|
|
||||||
"type": "Degrees"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "Number",
|
|
||||||
"value": 140.0,
|
|
||||||
"ty": {
|
|
||||||
"type": "Default",
|
|
||||||
"len": {
|
|
||||||
"type": "Mm"
|
|
||||||
},
|
|
||||||
"angle": {
|
|
||||||
"type": "Degrees"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"xAxis": {
|
|
||||||
"type": "Array",
|
|
||||||
"value": [
|
|
||||||
{
|
|
||||||
"type": "Number",
|
|
||||||
"value": 0.8038568606172173,
|
|
||||||
"ty": {
|
|
||||||
"type": "Known",
|
|
||||||
"type": "Count"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "Number",
|
|
||||||
"value": 0.0,
|
|
||||||
"ty": {
|
|
||||||
"type": "Default",
|
|
||||||
"len": {
|
|
||||||
"type": "Mm"
|
|
||||||
},
|
|
||||||
"angle": {
|
|
||||||
"type": "Degrees"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "Number",
|
|
||||||
"value": 0.5948227867513413,
|
|
||||||
"ty": {
|
|
||||||
"type": "Known",
|
|
||||||
"type": "Count"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"yAxis": {
|
|
||||||
"type": "Array",
|
|
||||||
"value": [
|
|
||||||
{
|
|
||||||
"type": "Number",
|
|
||||||
"value": 0.0,
|
|
||||||
"ty": {
|
|
||||||
"type": "Default",
|
|
||||||
"len": {
|
|
||||||
"type": "Mm"
|
|
||||||
},
|
|
||||||
"angle": {
|
|
||||||
"type": "Degrees"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "Number",
|
|
||||||
"value": 1.0,
|
|
||||||
"ty": {
|
|
||||||
"type": "Default",
|
|
||||||
"len": {
|
|
||||||
"type": "Mm"
|
|
||||||
},
|
|
||||||
"angle": {
|
|
||||||
"type": "Degrees"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "Number",
|
|
||||||
"value": 0.0,
|
|
||||||
"ty": {
|
|
||||||
"type": "Default",
|
|
||||||
"len": {
|
|
||||||
"type": "Mm"
|
|
||||||
},
|
|
||||||
"angle": {
|
|
||||||
"type": "Degrees"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
"sourceRange": []
|
"sourceRange": []
|
||||||
},
|
},
|
||||||
@ -472,130 +103,92 @@ description: Operations executed prosthetic-hip.kcl
|
|||||||
"name": "startSketchOn",
|
"name": "startSketchOn",
|
||||||
"unlabeledArg": {
|
"unlabeledArg": {
|
||||||
"value": {
|
"value": {
|
||||||
"type": "Object",
|
"type": "Plane",
|
||||||
"value": {
|
"artifact_id": "[uuid]"
|
||||||
"origin": {
|
},
|
||||||
"type": "Array",
|
"sourceRange": []
|
||||||
"value": [
|
},
|
||||||
{
|
"labeledArgs": {},
|
||||||
"type": "Number",
|
"sourceRange": []
|
||||||
"value": 0.0,
|
},
|
||||||
"ty": {
|
{
|
||||||
"type": "Default",
|
"type": "StdLibCall",
|
||||||
"len": {
|
"name": "loft",
|
||||||
"type": "Mm"
|
"unlabeledArg": {
|
||||||
},
|
"value": {
|
||||||
"angle": {
|
"type": "Array",
|
||||||
"type": "Degrees"
|
"value": [
|
||||||
}
|
{
|
||||||
}
|
"type": "Sketch",
|
||||||
},
|
"value": {
|
||||||
{
|
"artifactId": "[uuid]"
|
||||||
"type": "Number",
|
}
|
||||||
"value": 0.0,
|
|
||||||
"ty": {
|
|
||||||
"type": "Default",
|
|
||||||
"len": {
|
|
||||||
"type": "Mm"
|
|
||||||
},
|
|
||||||
"angle": {
|
|
||||||
"type": "Degrees"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "Number",
|
|
||||||
"value": 145.0,
|
|
||||||
"ty": {
|
|
||||||
"type": "Default",
|
|
||||||
"len": {
|
|
||||||
"type": "Mm"
|
|
||||||
},
|
|
||||||
"angle": {
|
|
||||||
"type": "Degrees"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
},
|
||||||
"xAxis": {
|
{
|
||||||
"type": "Array",
|
"type": "Sketch",
|
||||||
"value": [
|
"value": {
|
||||||
{
|
"artifactId": "[uuid]"
|
||||||
"type": "Number",
|
}
|
||||||
"value": 0.8038568606172173,
|
|
||||||
"ty": {
|
|
||||||
"type": "Known",
|
|
||||||
"type": "Count"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "Number",
|
|
||||||
"value": 0.0,
|
|
||||||
"ty": {
|
|
||||||
"type": "Default",
|
|
||||||
"len": {
|
|
||||||
"type": "Mm"
|
|
||||||
},
|
|
||||||
"angle": {
|
|
||||||
"type": "Degrees"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "Number",
|
|
||||||
"value": 0.5948227867513413,
|
|
||||||
"ty": {
|
|
||||||
"type": "Known",
|
|
||||||
"type": "Count"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
},
|
||||||
"yAxis": {
|
{
|
||||||
"type": "Array",
|
"type": "Sketch",
|
||||||
"value": [
|
"value": {
|
||||||
{
|
"artifactId": "[uuid]"
|
||||||
"type": "Number",
|
}
|
||||||
"value": 0.0,
|
},
|
||||||
"ty": {
|
{
|
||||||
"type": "Default",
|
"type": "Sketch",
|
||||||
"len": {
|
"value": {
|
||||||
"type": "Mm"
|
"artifactId": "[uuid]"
|
||||||
},
|
}
|
||||||
"angle": {
|
|
||||||
"type": "Degrees"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "Number",
|
|
||||||
"value": 1.0,
|
|
||||||
"ty": {
|
|
||||||
"type": "Default",
|
|
||||||
"len": {
|
|
||||||
"type": "Mm"
|
|
||||||
},
|
|
||||||
"angle": {
|
|
||||||
"type": "Degrees"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "Number",
|
|
||||||
"value": 0.0,
|
|
||||||
"ty": {
|
|
||||||
"type": "Default",
|
|
||||||
"len": {
|
|
||||||
"type": "Mm"
|
|
||||||
},
|
|
||||||
"angle": {
|
|
||||||
"type": "Degrees"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"sourceRange": []
|
||||||
|
},
|
||||||
|
"labeledArgs": {},
|
||||||
|
"sourceRange": []
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "StdLibCall",
|
||||||
|
"name": "loft",
|
||||||
|
"unlabeledArg": {
|
||||||
|
"value": {
|
||||||
|
"type": "Array",
|
||||||
|
"value": [
|
||||||
|
{
|
||||||
|
"type": "Sketch",
|
||||||
|
"value": {
|
||||||
|
"artifactId": "[uuid]"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "Sketch",
|
||||||
|
"value": {
|
||||||
|
"artifactId": "[uuid]"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "Sketch",
|
||||||
|
"value": {
|
||||||
|
"artifactId": "[uuid]"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"sourceRange": []
|
||||||
|
},
|
||||||
|
"labeledArgs": {},
|
||||||
|
"sourceRange": []
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "StdLibCall",
|
||||||
|
"name": "clone",
|
||||||
|
"unlabeledArg": {
|
||||||
|
"value": {
|
||||||
|
"type": "Sketch",
|
||||||
|
"value": {
|
||||||
|
"artifactId": "[uuid]"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"sourceRange": []
|
"sourceRange": []
|
||||||
@ -650,91 +243,6 @@ description: Operations executed prosthetic-hip.kcl
|
|||||||
},
|
},
|
||||||
"sourceRange": []
|
"sourceRange": []
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"type": "StdLibCall",
|
|
||||||
"name": "loft",
|
|
||||||
"unlabeledArg": {
|
|
||||||
"value": {
|
|
||||||
"type": "Array",
|
|
||||||
"value": [
|
|
||||||
{
|
|
||||||
"type": "Sketch",
|
|
||||||
"value": {
|
|
||||||
"artifactId": "[uuid]"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "Sketch",
|
|
||||||
"value": {
|
|
||||||
"artifactId": "[uuid]"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "Sketch",
|
|
||||||
"value": {
|
|
||||||
"artifactId": "[uuid]"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "Sketch",
|
|
||||||
"value": {
|
|
||||||
"artifactId": "[uuid]"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"sourceRange": []
|
|
||||||
},
|
|
||||||
"labeledArgs": {},
|
|
||||||
"sourceRange": []
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "StdLibCall",
|
|
||||||
"name": "loft",
|
|
||||||
"unlabeledArg": {
|
|
||||||
"value": {
|
|
||||||
"type": "Array",
|
|
||||||
"value": [
|
|
||||||
{
|
|
||||||
"type": "Sketch",
|
|
||||||
"value": {
|
|
||||||
"artifactId": "[uuid]"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "Sketch",
|
|
||||||
"value": {
|
|
||||||
"artifactId": "[uuid]"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "Sketch",
|
|
||||||
"value": {
|
|
||||||
"artifactId": "[uuid]"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"sourceRange": []
|
|
||||||
},
|
|
||||||
"labeledArgs": {},
|
|
||||||
"sourceRange": []
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "StdLibCall",
|
|
||||||
"name": "clone",
|
|
||||||
"unlabeledArg": {
|
|
||||||
"value": {
|
|
||||||
"type": "Sketch",
|
|
||||||
"value": {
|
|
||||||
"artifactId": "[uuid]"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"sourceRange": []
|
|
||||||
},
|
|
||||||
"labeledArgs": {},
|
|
||||||
"sourceRange": []
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"type": "StdLibCall",
|
"type": "StdLibCall",
|
||||||
"name": "startSketchOn",
|
"name": "startSketchOn",
|
||||||
|
@ -556,9 +556,9 @@ description: Variables in memory after executing prosthetic-hip.kcl
|
|||||||
-8.0
|
-8.0
|
||||||
],
|
],
|
||||||
"tag": {
|
"tag": {
|
||||||
"commentStart": 2056,
|
"commentStart": 1889,
|
||||||
"end": 2062,
|
"end": 1895,
|
||||||
"start": 2056,
|
"start": 1889,
|
||||||
"type": "TagDeclarator",
|
"type": "TagDeclarator",
|
||||||
"value": "seg04"
|
"value": "seg04"
|
||||||
},
|
},
|
||||||
@ -707,17 +707,17 @@ description: Variables in memory after executing prosthetic-hip.kcl
|
|||||||
"origin": {
|
"origin": {
|
||||||
"x": 0.0,
|
"x": 0.0,
|
||||||
"y": 0.0,
|
"y": 0.0,
|
||||||
"z": 130.0,
|
"z": 0.0,
|
||||||
"units": {
|
"units": {
|
||||||
"type": "Mm"
|
"type": "Mm"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"type": "plane",
|
"type": "plane",
|
||||||
"value": "Custom",
|
"value": "XY",
|
||||||
"xAxis": {
|
"xAxis": {
|
||||||
"x": 0.8038568606172174,
|
"x": 1.0,
|
||||||
"y": 0.0,
|
"y": 0.0,
|
||||||
"z": 0.5948227867513414,
|
"z": 0.0,
|
||||||
"units": {
|
"units": {
|
||||||
"type": "Unknown"
|
"type": "Unknown"
|
||||||
}
|
}
|
||||||
@ -1236,514 +1236,6 @@ description: Variables in memory after executing prosthetic-hip.kcl
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"plane003": {
|
|
||||||
"type": "Object",
|
|
||||||
"value": {
|
|
||||||
"origin": {
|
|
||||||
"type": "HomArray",
|
|
||||||
"value": [
|
|
||||||
{
|
|
||||||
"type": "Number",
|
|
||||||
"value": 0.0,
|
|
||||||
"ty": {
|
|
||||||
"type": "Default",
|
|
||||||
"len": {
|
|
||||||
"type": "Mm"
|
|
||||||
},
|
|
||||||
"angle": {
|
|
||||||
"type": "Degrees"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "Number",
|
|
||||||
"value": 0.0,
|
|
||||||
"ty": {
|
|
||||||
"type": "Default",
|
|
||||||
"len": {
|
|
||||||
"type": "Mm"
|
|
||||||
},
|
|
||||||
"angle": {
|
|
||||||
"type": "Degrees"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "Number",
|
|
||||||
"value": 110.0,
|
|
||||||
"ty": {
|
|
||||||
"type": "Default",
|
|
||||||
"len": {
|
|
||||||
"type": "Mm"
|
|
||||||
},
|
|
||||||
"angle": {
|
|
||||||
"type": "Degrees"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"xAxis": {
|
|
||||||
"type": "HomArray",
|
|
||||||
"value": [
|
|
||||||
{
|
|
||||||
"type": "Number",
|
|
||||||
"value": 0.9063,
|
|
||||||
"ty": {
|
|
||||||
"type": "Known",
|
|
||||||
"type": "Count"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "Number",
|
|
||||||
"value": 0.0,
|
|
||||||
"ty": {
|
|
||||||
"type": "Default",
|
|
||||||
"len": {
|
|
||||||
"type": "Mm"
|
|
||||||
},
|
|
||||||
"angle": {
|
|
||||||
"type": "Degrees"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "Number",
|
|
||||||
"value": 0.4226,
|
|
||||||
"ty": {
|
|
||||||
"type": "Known",
|
|
||||||
"type": "Count"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"yAxis": {
|
|
||||||
"type": "HomArray",
|
|
||||||
"value": [
|
|
||||||
{
|
|
||||||
"type": "Number",
|
|
||||||
"value": 0.0,
|
|
||||||
"ty": {
|
|
||||||
"type": "Default",
|
|
||||||
"len": {
|
|
||||||
"type": "Mm"
|
|
||||||
},
|
|
||||||
"angle": {
|
|
||||||
"type": "Degrees"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "Number",
|
|
||||||
"value": 1.0,
|
|
||||||
"ty": {
|
|
||||||
"type": "Default",
|
|
||||||
"len": {
|
|
||||||
"type": "Mm"
|
|
||||||
},
|
|
||||||
"angle": {
|
|
||||||
"type": "Degrees"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "Number",
|
|
||||||
"value": 0.0,
|
|
||||||
"ty": {
|
|
||||||
"type": "Default",
|
|
||||||
"len": {
|
|
||||||
"type": "Mm"
|
|
||||||
},
|
|
||||||
"angle": {
|
|
||||||
"type": "Degrees"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"plane004": {
|
|
||||||
"type": "Object",
|
|
||||||
"value": {
|
|
||||||
"origin": {
|
|
||||||
"type": "HomArray",
|
|
||||||
"value": [
|
|
||||||
{
|
|
||||||
"type": "Number",
|
|
||||||
"value": 0.0,
|
|
||||||
"ty": {
|
|
||||||
"type": "Default",
|
|
||||||
"len": {
|
|
||||||
"type": "Mm"
|
|
||||||
},
|
|
||||||
"angle": {
|
|
||||||
"type": "Degrees"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "Number",
|
|
||||||
"value": 0.0,
|
|
||||||
"ty": {
|
|
||||||
"type": "Default",
|
|
||||||
"len": {
|
|
||||||
"type": "Mm"
|
|
||||||
},
|
|
||||||
"angle": {
|
|
||||||
"type": "Degrees"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "Number",
|
|
||||||
"value": 130.0,
|
|
||||||
"ty": {
|
|
||||||
"type": "Default",
|
|
||||||
"len": {
|
|
||||||
"type": "Mm"
|
|
||||||
},
|
|
||||||
"angle": {
|
|
||||||
"type": "Degrees"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"xAxis": {
|
|
||||||
"type": "HomArray",
|
|
||||||
"value": [
|
|
||||||
{
|
|
||||||
"type": "Number",
|
|
||||||
"value": 0.8039,
|
|
||||||
"ty": {
|
|
||||||
"type": "Known",
|
|
||||||
"type": "Count"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "Number",
|
|
||||||
"value": 0.0,
|
|
||||||
"ty": {
|
|
||||||
"type": "Default",
|
|
||||||
"len": {
|
|
||||||
"type": "Mm"
|
|
||||||
},
|
|
||||||
"angle": {
|
|
||||||
"type": "Degrees"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "Number",
|
|
||||||
"value": 0.5948,
|
|
||||||
"ty": {
|
|
||||||
"type": "Known",
|
|
||||||
"type": "Count"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"yAxis": {
|
|
||||||
"type": "HomArray",
|
|
||||||
"value": [
|
|
||||||
{
|
|
||||||
"type": "Number",
|
|
||||||
"value": 0.0,
|
|
||||||
"ty": {
|
|
||||||
"type": "Default",
|
|
||||||
"len": {
|
|
||||||
"type": "Mm"
|
|
||||||
},
|
|
||||||
"angle": {
|
|
||||||
"type": "Degrees"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "Number",
|
|
||||||
"value": 1.0,
|
|
||||||
"ty": {
|
|
||||||
"type": "Default",
|
|
||||||
"len": {
|
|
||||||
"type": "Mm"
|
|
||||||
},
|
|
||||||
"angle": {
|
|
||||||
"type": "Degrees"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "Number",
|
|
||||||
"value": 0.0,
|
|
||||||
"ty": {
|
|
||||||
"type": "Default",
|
|
||||||
"len": {
|
|
||||||
"type": "Mm"
|
|
||||||
},
|
|
||||||
"angle": {
|
|
||||||
"type": "Degrees"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"plane005": {
|
|
||||||
"type": "Object",
|
|
||||||
"value": {
|
|
||||||
"origin": {
|
|
||||||
"type": "HomArray",
|
|
||||||
"value": [
|
|
||||||
{
|
|
||||||
"type": "Number",
|
|
||||||
"value": 0.0,
|
|
||||||
"ty": {
|
|
||||||
"type": "Default",
|
|
||||||
"len": {
|
|
||||||
"type": "Mm"
|
|
||||||
},
|
|
||||||
"angle": {
|
|
||||||
"type": "Degrees"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "Number",
|
|
||||||
"value": 0.0,
|
|
||||||
"ty": {
|
|
||||||
"type": "Default",
|
|
||||||
"len": {
|
|
||||||
"type": "Mm"
|
|
||||||
},
|
|
||||||
"angle": {
|
|
||||||
"type": "Degrees"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "Number",
|
|
||||||
"value": 140.0,
|
|
||||||
"ty": {
|
|
||||||
"type": "Default",
|
|
||||||
"len": {
|
|
||||||
"type": "Mm"
|
|
||||||
},
|
|
||||||
"angle": {
|
|
||||||
"type": "Degrees"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"xAxis": {
|
|
||||||
"type": "HomArray",
|
|
||||||
"value": [
|
|
||||||
{
|
|
||||||
"type": "Number",
|
|
||||||
"value": 0.8039,
|
|
||||||
"ty": {
|
|
||||||
"type": "Known",
|
|
||||||
"type": "Count"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "Number",
|
|
||||||
"value": 0.0,
|
|
||||||
"ty": {
|
|
||||||
"type": "Default",
|
|
||||||
"len": {
|
|
||||||
"type": "Mm"
|
|
||||||
},
|
|
||||||
"angle": {
|
|
||||||
"type": "Degrees"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "Number",
|
|
||||||
"value": 0.5948,
|
|
||||||
"ty": {
|
|
||||||
"type": "Known",
|
|
||||||
"type": "Count"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"yAxis": {
|
|
||||||
"type": "HomArray",
|
|
||||||
"value": [
|
|
||||||
{
|
|
||||||
"type": "Number",
|
|
||||||
"value": 0.0,
|
|
||||||
"ty": {
|
|
||||||
"type": "Default",
|
|
||||||
"len": {
|
|
||||||
"type": "Mm"
|
|
||||||
},
|
|
||||||
"angle": {
|
|
||||||
"type": "Degrees"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "Number",
|
|
||||||
"value": 1.0,
|
|
||||||
"ty": {
|
|
||||||
"type": "Default",
|
|
||||||
"len": {
|
|
||||||
"type": "Mm"
|
|
||||||
},
|
|
||||||
"angle": {
|
|
||||||
"type": "Degrees"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "Number",
|
|
||||||
"value": 0.0,
|
|
||||||
"ty": {
|
|
||||||
"type": "Default",
|
|
||||||
"len": {
|
|
||||||
"type": "Mm"
|
|
||||||
},
|
|
||||||
"angle": {
|
|
||||||
"type": "Degrees"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"plane006": {
|
|
||||||
"type": "Object",
|
|
||||||
"value": {
|
|
||||||
"origin": {
|
|
||||||
"type": "HomArray",
|
|
||||||
"value": [
|
|
||||||
{
|
|
||||||
"type": "Number",
|
|
||||||
"value": 0.0,
|
|
||||||
"ty": {
|
|
||||||
"type": "Default",
|
|
||||||
"len": {
|
|
||||||
"type": "Mm"
|
|
||||||
},
|
|
||||||
"angle": {
|
|
||||||
"type": "Degrees"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "Number",
|
|
||||||
"value": 0.0,
|
|
||||||
"ty": {
|
|
||||||
"type": "Default",
|
|
||||||
"len": {
|
|
||||||
"type": "Mm"
|
|
||||||
},
|
|
||||||
"angle": {
|
|
||||||
"type": "Degrees"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "Number",
|
|
||||||
"value": 145.0,
|
|
||||||
"ty": {
|
|
||||||
"type": "Default",
|
|
||||||
"len": {
|
|
||||||
"type": "Mm"
|
|
||||||
},
|
|
||||||
"angle": {
|
|
||||||
"type": "Degrees"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"xAxis": {
|
|
||||||
"type": "HomArray",
|
|
||||||
"value": [
|
|
||||||
{
|
|
||||||
"type": "Number",
|
|
||||||
"value": 0.8039,
|
|
||||||
"ty": {
|
|
||||||
"type": "Known",
|
|
||||||
"type": "Count"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "Number",
|
|
||||||
"value": 0.0,
|
|
||||||
"ty": {
|
|
||||||
"type": "Default",
|
|
||||||
"len": {
|
|
||||||
"type": "Mm"
|
|
||||||
},
|
|
||||||
"angle": {
|
|
||||||
"type": "Degrees"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "Number",
|
|
||||||
"value": 0.5948,
|
|
||||||
"ty": {
|
|
||||||
"type": "Known",
|
|
||||||
"type": "Count"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"yAxis": {
|
|
||||||
"type": "HomArray",
|
|
||||||
"value": [
|
|
||||||
{
|
|
||||||
"type": "Number",
|
|
||||||
"value": 0.0,
|
|
||||||
"ty": {
|
|
||||||
"type": "Default",
|
|
||||||
"len": {
|
|
||||||
"type": "Mm"
|
|
||||||
},
|
|
||||||
"angle": {
|
|
||||||
"type": "Degrees"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "Number",
|
|
||||||
"value": 1.0,
|
|
||||||
"ty": {
|
|
||||||
"type": "Default",
|
|
||||||
"len": {
|
|
||||||
"type": "Mm"
|
|
||||||
},
|
|
||||||
"angle": {
|
|
||||||
"type": "Degrees"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "Number",
|
|
||||||
"value": 0.0,
|
|
||||||
"ty": {
|
|
||||||
"type": "Default",
|
|
||||||
"len": {
|
|
||||||
"type": "Mm"
|
|
||||||
},
|
|
||||||
"angle": {
|
|
||||||
"type": "Degrees"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"polyethyleneInsert": {
|
"polyethyleneInsert": {
|
||||||
"type": "Solid",
|
"type": "Solid",
|
||||||
"value": {
|
"value": {
|
||||||
@ -2573,9 +2065,9 @@ description: Variables in memory after executing prosthetic-hip.kcl
|
|||||||
-16.0
|
-16.0
|
||||||
],
|
],
|
||||||
"tag": {
|
"tag": {
|
||||||
"commentStart": 1467,
|
"commentStart": 1359,
|
||||||
"end": 1473,
|
"end": 1365,
|
||||||
"start": 1467,
|
"start": 1359,
|
||||||
"type": "TagDeclarator",
|
"type": "TagDeclarator",
|
||||||
"value": "seg03"
|
"value": "seg03"
|
||||||
},
|
},
|
||||||
@ -2724,17 +2216,17 @@ description: Variables in memory after executing prosthetic-hip.kcl
|
|||||||
"origin": {
|
"origin": {
|
||||||
"x": 0.0,
|
"x": 0.0,
|
||||||
"y": 0.0,
|
"y": 0.0,
|
||||||
"z": 110.0,
|
"z": 0.0,
|
||||||
"units": {
|
"units": {
|
||||||
"type": "Mm"
|
"type": "Mm"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"type": "plane",
|
"type": "plane",
|
||||||
"value": "Custom",
|
"value": "XY",
|
||||||
"xAxis": {
|
"xAxis": {
|
||||||
"x": 0.9063077870366499,
|
"x": 1.0,
|
||||||
"y": 0.0,
|
"y": 0.0,
|
||||||
"z": 0.42261826174069944,
|
"z": 0.0,
|
||||||
"units": {
|
"units": {
|
||||||
"type": "Unknown"
|
"type": "Unknown"
|
||||||
}
|
}
|
||||||
@ -2795,9 +2287,9 @@ description: Variables in memory after executing prosthetic-hip.kcl
|
|||||||
-8.0
|
-8.0
|
||||||
],
|
],
|
||||||
"tag": {
|
"tag": {
|
||||||
"commentStart": 2056,
|
"commentStart": 1889,
|
||||||
"end": 2062,
|
"end": 1895,
|
||||||
"start": 2056,
|
"start": 1889,
|
||||||
"type": "TagDeclarator",
|
"type": "TagDeclarator",
|
||||||
"value": "seg04"
|
"value": "seg04"
|
||||||
},
|
},
|
||||||
@ -2946,17 +2438,17 @@ description: Variables in memory after executing prosthetic-hip.kcl
|
|||||||
"origin": {
|
"origin": {
|
||||||
"x": 0.0,
|
"x": 0.0,
|
||||||
"y": 0.0,
|
"y": 0.0,
|
||||||
"z": 130.0,
|
"z": 0.0,
|
||||||
"units": {
|
"units": {
|
||||||
"type": "Mm"
|
"type": "Mm"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"type": "plane",
|
"type": "plane",
|
||||||
"value": "Custom",
|
"value": "XY",
|
||||||
"xAxis": {
|
"xAxis": {
|
||||||
"x": 0.8038568606172174,
|
"x": 1.0,
|
||||||
"y": 0.0,
|
"y": 0.0,
|
||||||
"z": 0.5948227867513414,
|
"z": 0.0,
|
||||||
"units": {
|
"units": {
|
||||||
"type": "Unknown"
|
"type": "Unknown"
|
||||||
}
|
}
|
||||||
@ -3017,9 +2509,9 @@ description: Variables in memory after executing prosthetic-hip.kcl
|
|||||||
-0.8
|
-0.8
|
||||||
],
|
],
|
||||||
"tag": {
|
"tag": {
|
||||||
"commentStart": 2649,
|
"commentStart": 2423,
|
||||||
"end": 2655,
|
"end": 2429,
|
||||||
"start": 2649,
|
"start": 2423,
|
||||||
"type": "TagDeclarator",
|
"type": "TagDeclarator",
|
||||||
"value": "seg05"
|
"value": "seg05"
|
||||||
},
|
},
|
||||||
@ -3168,17 +2660,17 @@ description: Variables in memory after executing prosthetic-hip.kcl
|
|||||||
"origin": {
|
"origin": {
|
||||||
"x": 0.0,
|
"x": 0.0,
|
||||||
"y": 0.0,
|
"y": 0.0,
|
||||||
"z": 140.0,
|
"z": 0.0,
|
||||||
"units": {
|
"units": {
|
||||||
"type": "Mm"
|
"type": "Mm"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"type": "plane",
|
"type": "plane",
|
||||||
"value": "Custom",
|
"value": "XY",
|
||||||
"xAxis": {
|
"xAxis": {
|
||||||
"x": 0.8038568606172174,
|
"x": 1.0,
|
||||||
"y": 0.0,
|
"y": 0.0,
|
||||||
"z": 0.5948227867513414,
|
"z": 0.0,
|
||||||
"units": {
|
"units": {
|
||||||
"type": "Unknown"
|
"type": "Unknown"
|
||||||
}
|
}
|
||||||
@ -3239,9 +2731,9 @@ description: Variables in memory after executing prosthetic-hip.kcl
|
|||||||
-0.5
|
-0.5
|
||||||
],
|
],
|
||||||
"tag": {
|
"tag": {
|
||||||
"commentStart": 3239,
|
"commentStart": 2954,
|
||||||
"end": 3245,
|
"end": 2960,
|
||||||
"start": 3239,
|
"start": 2954,
|
||||||
"type": "TagDeclarator",
|
"type": "TagDeclarator",
|
||||||
"value": "seg06"
|
"value": "seg06"
|
||||||
},
|
},
|
||||||
@ -3390,17 +2882,17 @@ description: Variables in memory after executing prosthetic-hip.kcl
|
|||||||
"origin": {
|
"origin": {
|
||||||
"x": 0.0,
|
"x": 0.0,
|
||||||
"y": 0.0,
|
"y": 0.0,
|
||||||
"z": 145.0,
|
"z": 0.0,
|
||||||
"units": {
|
"units": {
|
||||||
"type": "Mm"
|
"type": "Mm"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"type": "plane",
|
"type": "plane",
|
||||||
"value": "Custom",
|
"value": "XY",
|
||||||
"xAxis": {
|
"xAxis": {
|
||||||
"x": 0.8038568606172174,
|
"x": 1.0,
|
||||||
"y": 0.0,
|
"y": 0.0,
|
||||||
"z": 0.5948227867513414,
|
"z": 0.0,
|
||||||
"units": {
|
"units": {
|
||||||
"type": "Unknown"
|
"type": "Unknown"
|
||||||
}
|
}
|
||||||
@ -3457,9 +2949,9 @@ description: Variables in memory after executing prosthetic-hip.kcl
|
|||||||
"id": "[uuid]",
|
"id": "[uuid]",
|
||||||
"sourceRange": [],
|
"sourceRange": [],
|
||||||
"tag": {
|
"tag": {
|
||||||
"commentStart": 3239,
|
"commentStart": 2954,
|
||||||
"end": 3245,
|
"end": 2960,
|
||||||
"start": 3239,
|
"start": 2954,
|
||||||
"type": "TagDeclarator",
|
"type": "TagDeclarator",
|
||||||
"value": "seg06"
|
"value": "seg06"
|
||||||
},
|
},
|
||||||
@ -3515,9 +3007,9 @@ description: Variables in memory after executing prosthetic-hip.kcl
|
|||||||
-0.5
|
-0.5
|
||||||
],
|
],
|
||||||
"tag": {
|
"tag": {
|
||||||
"commentStart": 3239,
|
"commentStart": 2954,
|
||||||
"end": 3245,
|
"end": 2960,
|
||||||
"start": 3239,
|
"start": 2954,
|
||||||
"type": "TagDeclarator",
|
"type": "TagDeclarator",
|
||||||
"value": "seg06"
|
"value": "seg06"
|
||||||
},
|
},
|
||||||
@ -3666,17 +3158,17 @@ description: Variables in memory after executing prosthetic-hip.kcl
|
|||||||
"origin": {
|
"origin": {
|
||||||
"x": 0.0,
|
"x": 0.0,
|
||||||
"y": 0.0,
|
"y": 0.0,
|
||||||
"z": 145.0,
|
"z": 0.0,
|
||||||
"units": {
|
"units": {
|
||||||
"type": "Mm"
|
"type": "Mm"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"type": "plane",
|
"type": "plane",
|
||||||
"value": "Custom",
|
"value": "XY",
|
||||||
"xAxis": {
|
"xAxis": {
|
||||||
"x": 0.8038568606172174,
|
"x": 1.0,
|
||||||
"y": 0.0,
|
"y": 0.0,
|
||||||
"z": 0.5948227867513414,
|
"z": 0.0,
|
||||||
"units": {
|
"units": {
|
||||||
"type": "Unknown"
|
"type": "Unknown"
|
||||||
}
|
}
|
||||||
|
@ -148,7 +148,7 @@ description: Artifact commands router-template-cross-bar.kcl
|
|||||||
"segment": {
|
"segment": {
|
||||||
"type": "line",
|
"type": "line",
|
||||||
"end": {
|
"end": {
|
||||||
"x": 22.6312,
|
"x": 22.6313,
|
||||||
"y": -10.0,
|
"y": -10.0,
|
||||||
"z": 0.0
|
"z": 0.0
|
||||||
},
|
},
|
||||||
@ -182,7 +182,7 @@ description: Artifact commands router-template-cross-bar.kcl
|
|||||||
"segment": {
|
"segment": {
|
||||||
"type": "line",
|
"type": "line",
|
||||||
"end": {
|
"end": {
|
||||||
"x": 32.6312,
|
"x": 32.6313,
|
||||||
"y": 10.9406,
|
"y": 10.9406,
|
||||||
"z": 0.0
|
"z": 0.0
|
||||||
},
|
},
|
||||||
@ -199,7 +199,7 @@ description: Artifact commands router-template-cross-bar.kcl
|
|||||||
"segment": {
|
"segment": {
|
||||||
"type": "line",
|
"type": "line",
|
||||||
"end": {
|
"end": {
|
||||||
"x": 102.6312,
|
"x": 102.6313,
|
||||||
"y": 10.9406,
|
"y": 10.9406,
|
||||||
"z": 0.0
|
"z": 0.0
|
||||||
},
|
},
|
||||||
@ -233,7 +233,7 @@ description: Artifact commands router-template-cross-bar.kcl
|
|||||||
"segment": {
|
"segment": {
|
||||||
"type": "line",
|
"type": "line",
|
||||||
"end": {
|
"end": {
|
||||||
"x": 32.6312,
|
"x": 32.6313,
|
||||||
"y": 30.9406,
|
"y": 30.9406,
|
||||||
"z": 0.0
|
"z": 0.0
|
||||||
},
|
},
|
||||||
@ -250,7 +250,7 @@ description: Artifact commands router-template-cross-bar.kcl
|
|||||||
"segment": {
|
"segment": {
|
||||||
"type": "line",
|
"type": "line",
|
||||||
"end": {
|
"end": {
|
||||||
"x": 32.6312,
|
"x": 32.6313,
|
||||||
"y": 41.8813,
|
"y": 41.8813,
|
||||||
"z": 0.0
|
"z": 0.0
|
||||||
},
|
},
|
||||||
@ -284,7 +284,7 @@ description: Artifact commands router-template-cross-bar.kcl
|
|||||||
"segment": {
|
"segment": {
|
||||||
"type": "line",
|
"type": "line",
|
||||||
"end": {
|
"end": {
|
||||||
"x": -32.6312,
|
"x": -32.6313,
|
||||||
"y": 0.0,
|
"y": 0.0,
|
||||||
"z": 0.0
|
"z": 0.0
|
||||||
},
|
},
|
||||||
|
@ -61,32 +61,32 @@ flowchart LR
|
|||||||
50[Solid2d]
|
50[Solid2d]
|
||||||
end
|
end
|
||||||
subgraph path13 [Path]
|
subgraph path13 [Path]
|
||||||
13["Path<br>[2227, 2279, 0]"]
|
13["Path<br>[2229, 2281, 0]"]
|
||||||
%% [ProgramBodyItem { index: 25 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 1 }]
|
%% [ProgramBodyItem { index: 25 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 1 }]
|
||||||
35["Segment<br>[2285, 2318, 0]"]
|
35["Segment<br>[2287, 2320, 0]"]
|
||||||
%% [ProgramBodyItem { index: 25 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 2 }]
|
%% [ProgramBodyItem { index: 25 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 2 }]
|
||||||
36["Segment<br>[2324, 2357, 0]"]
|
36["Segment<br>[2326, 2359, 0]"]
|
||||||
%% [ProgramBodyItem { index: 25 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 3 }]
|
%% [ProgramBodyItem { index: 25 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 3 }]
|
||||||
37["Segment<br>[2363, 2397, 0]"]
|
37["Segment<br>[2365, 2399, 0]"]
|
||||||
%% [ProgramBodyItem { index: 25 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 4 }]
|
%% [ProgramBodyItem { index: 25 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 4 }]
|
||||||
38["Segment<br>[2403, 2459, 0]"]
|
38["Segment<br>[2405, 2461, 0]"]
|
||||||
%% [ProgramBodyItem { index: 25 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 5 }]
|
%% [ProgramBodyItem { index: 25 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 5 }]
|
||||||
39["Segment<br>[2465, 2473, 0]"]
|
39["Segment<br>[2467, 2475, 0]"]
|
||||||
%% [ProgramBodyItem { index: 25 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 6 }]
|
%% [ProgramBodyItem { index: 25 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 6 }]
|
||||||
49[Solid2d]
|
49[Solid2d]
|
||||||
end
|
end
|
||||||
subgraph path14 [Path]
|
subgraph path14 [Path]
|
||||||
14["Path<br>[2803, 2858, 0]"]
|
14["Path<br>[2805, 2860, 0]"]
|
||||||
%% [ProgramBodyItem { index: 29 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 1 }]
|
%% [ProgramBodyItem { index: 29 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 1 }]
|
||||||
40["Segment<br>[2864, 2893, 0]"]
|
40["Segment<br>[2866, 2895, 0]"]
|
||||||
%% [ProgramBodyItem { index: 29 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 2 }]
|
%% [ProgramBodyItem { index: 29 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 2 }]
|
||||||
41["Segment<br>[2899, 2929, 0]"]
|
41["Segment<br>[2901, 2931, 0]"]
|
||||||
%% [ProgramBodyItem { index: 29 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 3 }]
|
%% [ProgramBodyItem { index: 29 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 3 }]
|
||||||
42["Segment<br>[2935, 2969, 0]"]
|
42["Segment<br>[2937, 2971, 0]"]
|
||||||
%% [ProgramBodyItem { index: 29 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 4 }]
|
%% [ProgramBodyItem { index: 29 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 4 }]
|
||||||
43["Segment<br>[2975, 3031, 0]"]
|
43["Segment<br>[2977, 3033, 0]"]
|
||||||
%% [ProgramBodyItem { index: 29 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 5 }]
|
%% [ProgramBodyItem { index: 29 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 5 }]
|
||||||
44["Segment<br>[3037, 3045, 0]"]
|
44["Segment<br>[3039, 3047, 0]"]
|
||||||
%% [ProgramBodyItem { index: 29 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 6 }]
|
%% [ProgramBodyItem { index: 29 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 6 }]
|
||||||
45[Solid2d]
|
45[Solid2d]
|
||||||
end
|
end
|
||||||
@ -94,17 +94,17 @@ flowchart LR
|
|||||||
%% [ProgramBodyItem { index: 16 }, VariableDeclarationDeclaration, VariableDeclarationInit, FunctionExpressionBody, FunctionExpressionBodyItem { index: 0 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 0 }]
|
%% [ProgramBodyItem { index: 16 }, VariableDeclarationDeclaration, VariableDeclarationInit, FunctionExpressionBody, FunctionExpressionBodyItem { index: 0 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 0 }]
|
||||||
2["Plane<br>[945, 965, 0]"]
|
2["Plane<br>[945, 965, 0]"]
|
||||||
%% [ProgramBodyItem { index: 16 }, VariableDeclarationDeclaration, VariableDeclarationInit, FunctionExpressionBody, FunctionExpressionBodyItem { index: 0 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 0 }]
|
%% [ProgramBodyItem { index: 16 }, VariableDeclarationDeclaration, VariableDeclarationInit, FunctionExpressionBody, FunctionExpressionBodyItem { index: 0 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 0 }]
|
||||||
3["Plane<br>[1713, 1753, 0]"]
|
3["Plane<br>[1714, 1754, 0]"]
|
||||||
%% [ProgramBodyItem { index: 21 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 0 }, CallKwArg { index: 0 }]
|
%% [ProgramBodyItem { index: 21 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 0 }, CallKwArg { index: 0 }]
|
||||||
4["Plane<br>[1937, 1990, 0]"]
|
4["Plane<br>[1939, 1992, 0]"]
|
||||||
%% [ProgramBodyItem { index: 22 }, VariableDeclarationDeclaration, VariableDeclarationInit, CallKwArg { index: 0 }]
|
%% [ProgramBodyItem { index: 22 }, VariableDeclarationDeclaration, VariableDeclarationInit, CallKwArg { index: 0 }]
|
||||||
5["Plane<br>[2780, 2797, 0]"]
|
5["Plane<br>[2782, 2799, 0]"]
|
||||||
%% [ProgramBodyItem { index: 29 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 0 }]
|
%% [ProgramBodyItem { index: 29 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 0 }]
|
||||||
6["StartSketchOnPlane<br>[945, 965, 0]"]
|
6["StartSketchOnPlane<br>[945, 965, 0]"]
|
||||||
%% [ProgramBodyItem { index: 16 }, VariableDeclarationDeclaration, VariableDeclarationInit, FunctionExpressionBody, FunctionExpressionBodyItem { index: 0 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 0 }]
|
%% [ProgramBodyItem { index: 16 }, VariableDeclarationDeclaration, VariableDeclarationInit, FunctionExpressionBody, FunctionExpressionBodyItem { index: 0 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 0 }]
|
||||||
7["StartSketchOnPlane<br>[945, 965, 0]"]
|
7["StartSketchOnPlane<br>[945, 965, 0]"]
|
||||||
%% [ProgramBodyItem { index: 16 }, VariableDeclarationDeclaration, VariableDeclarationInit, FunctionExpressionBody, FunctionExpressionBodyItem { index: 0 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 0 }]
|
%% [ProgramBodyItem { index: 16 }, VariableDeclarationDeclaration, VariableDeclarationInit, FunctionExpressionBody, FunctionExpressionBodyItem { index: 0 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 0 }]
|
||||||
8["StartSketchOnFace<br>[2171, 2221, 0]"]
|
8["StartSketchOnFace<br>[2173, 2223, 0]"]
|
||||||
%% [ProgramBodyItem { index: 25 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 0 }]
|
%% [ProgramBodyItem { index: 25 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 0 }]
|
||||||
51["Sweep Extrusion<br>[1209, 1240, 0]"]
|
51["Sweep Extrusion<br>[1209, 1240, 0]"]
|
||||||
%% [ProgramBodyItem { index: 16 }, VariableDeclarationDeclaration, VariableDeclarationInit, FunctionExpressionBody, FunctionExpressionBodyItem { index: 1 }, VariableDeclarationDeclaration, VariableDeclarationInit]
|
%% [ProgramBodyItem { index: 16 }, VariableDeclarationDeclaration, VariableDeclarationInit, FunctionExpressionBody, FunctionExpressionBodyItem { index: 1 }, VariableDeclarationDeclaration, VariableDeclarationInit]
|
||||||
@ -114,9 +114,9 @@ flowchart LR
|
|||||||
%% [ProgramBodyItem { index: 16 }, VariableDeclarationDeclaration, VariableDeclarationInit, FunctionExpressionBody, FunctionExpressionBodyItem { index: 1 }, VariableDeclarationDeclaration, VariableDeclarationInit]
|
%% [ProgramBodyItem { index: 16 }, VariableDeclarationDeclaration, VariableDeclarationInit, FunctionExpressionBody, FunctionExpressionBodyItem { index: 1 }, VariableDeclarationDeclaration, VariableDeclarationInit]
|
||||||
54["Sweep Extrusion<br>[1209, 1240, 0]"]
|
54["Sweep Extrusion<br>[1209, 1240, 0]"]
|
||||||
%% [ProgramBodyItem { index: 16 }, VariableDeclarationDeclaration, VariableDeclarationInit, FunctionExpressionBody, FunctionExpressionBodyItem { index: 1 }, VariableDeclarationDeclaration, VariableDeclarationInit]
|
%% [ProgramBodyItem { index: 16 }, VariableDeclarationDeclaration, VariableDeclarationInit, FunctionExpressionBody, FunctionExpressionBodyItem { index: 1 }, VariableDeclarationDeclaration, VariableDeclarationInit]
|
||||||
55["Sweep Extrusion<br>[2545, 2593, 0]"]
|
55["Sweep Extrusion<br>[2547, 2595, 0]"]
|
||||||
%% [ProgramBodyItem { index: 26 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 0 }]
|
%% [ProgramBodyItem { index: 26 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 0 }]
|
||||||
56["Sweep Extrusion<br>[3051, 3082, 0]"]
|
56["Sweep Extrusion<br>[3053, 3084, 0]"]
|
||||||
%% [ProgramBodyItem { index: 29 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 7 }]
|
%% [ProgramBodyItem { index: 29 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 7 }]
|
||||||
57[Wall]
|
57[Wall]
|
||||||
%% face_code_ref=Missing NodePath
|
%% face_code_ref=Missing NodePath
|
||||||
|
@ -1997,7 +1997,7 @@ description: Result of parsing spinning-highrise-tower.kcl
|
|||||||
"id": {
|
"id": {
|
||||||
"commentStart": 0,
|
"commentStart": 0,
|
||||||
"end": 0,
|
"end": 0,
|
||||||
"name": "goundSize",
|
"name": "groundSize",
|
||||||
"start": 0,
|
"start": 0,
|
||||||
"type": "Identifier"
|
"type": "Identifier"
|
||||||
},
|
},
|
||||||
@ -2138,7 +2138,7 @@ description: Result of parsing spinning-highrise-tower.kcl
|
|||||||
"name": {
|
"name": {
|
||||||
"commentStart": 0,
|
"commentStart": 0,
|
||||||
"end": 0,
|
"end": 0,
|
||||||
"name": "goundSize",
|
"name": "groundSize",
|
||||||
"start": 0,
|
"start": 0,
|
||||||
"type": "Identifier"
|
"type": "Identifier"
|
||||||
},
|
},
|
||||||
|
@ -3936,19 +3936,6 @@ description: Variables in memory after executing spinning-highrise-tower.kcl
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"goundSize": {
|
|
||||||
"type": "Number",
|
|
||||||
"value": 50.0,
|
|
||||||
"ty": {
|
|
||||||
"type": "Default",
|
|
||||||
"len": {
|
|
||||||
"type": "M"
|
|
||||||
},
|
|
||||||
"angle": {
|
|
||||||
"type": "Degrees"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"groundBody": {
|
"groundBody": {
|
||||||
"type": "Solid",
|
"type": "Solid",
|
||||||
"value": {
|
"value": {
|
||||||
@ -4148,6 +4135,19 @@ description: Variables in memory after executing spinning-highrise-tower.kcl
|
|||||||
"sectional": false
|
"sectional": false
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"groundSize": {
|
||||||
|
"type": "Number",
|
||||||
|
"value": 50.0,
|
||||||
|
"ty": {
|
||||||
|
"type": "Default",
|
||||||
|
"len": {
|
||||||
|
"type": "M"
|
||||||
|
},
|
||||||
|
"angle": {
|
||||||
|
"type": "Degrees"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
"handrailHeight": {
|
"handrailHeight": {
|
||||||
"type": "Number",
|
"type": "Number",
|
||||||
"value": 1.2,
|
"value": 1.2,
|
||||||
|
184
rust/kcl-lib/tests/nested_main_kcl/artifact_commands.snap
Normal file
@ -0,0 +1,184 @@
|
|||||||
|
---
|
||||||
|
source: kcl-lib/src/simulation_tests.rs
|
||||||
|
description: Artifact commands nested_main_kcl.kcl
|
||||||
|
---
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"cmdId": "[uuid]",
|
||||||
|
"range": [],
|
||||||
|
"command": {
|
||||||
|
"type": "edge_lines_visible",
|
||||||
|
"hidden": false
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmdId": "[uuid]",
|
||||||
|
"range": [],
|
||||||
|
"command": {
|
||||||
|
"type": "object_visible",
|
||||||
|
"object_id": "[uuid]",
|
||||||
|
"hidden": true
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmdId": "[uuid]",
|
||||||
|
"range": [],
|
||||||
|
"command": {
|
||||||
|
"type": "object_visible",
|
||||||
|
"object_id": "[uuid]",
|
||||||
|
"hidden": true
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmdId": "[uuid]",
|
||||||
|
"range": [],
|
||||||
|
"command": {
|
||||||
|
"type": "make_plane",
|
||||||
|
"origin": {
|
||||||
|
"x": 0.0,
|
||||||
|
"y": 0.0,
|
||||||
|
"z": 0.0
|
||||||
|
},
|
||||||
|
"x_axis": {
|
||||||
|
"x": 1.0,
|
||||||
|
"y": 0.0,
|
||||||
|
"z": 0.0
|
||||||
|
},
|
||||||
|
"y_axis": {
|
||||||
|
"x": 0.0,
|
||||||
|
"y": 1.0,
|
||||||
|
"z": 0.0
|
||||||
|
},
|
||||||
|
"size": 60.0,
|
||||||
|
"clobber": false,
|
||||||
|
"hide": true
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmdId": "[uuid]",
|
||||||
|
"range": [],
|
||||||
|
"command": {
|
||||||
|
"type": "close_path",
|
||||||
|
"path_id": "[uuid]"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmdId": "[uuid]",
|
||||||
|
"range": [],
|
||||||
|
"command": {
|
||||||
|
"type": "enable_sketch_mode",
|
||||||
|
"entity_id": "[uuid]",
|
||||||
|
"ortho": false,
|
||||||
|
"animated": false,
|
||||||
|
"adjust_camera": false,
|
||||||
|
"planar_normal": {
|
||||||
|
"x": 0.0,
|
||||||
|
"y": 0.0,
|
||||||
|
"z": 1.0
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmdId": "[uuid]",
|
||||||
|
"range": [],
|
||||||
|
"command": {
|
||||||
|
"type": "extend_path",
|
||||||
|
"path": "[uuid]",
|
||||||
|
"segment": {
|
||||||
|
"type": "arc",
|
||||||
|
"center": {
|
||||||
|
"x": 15.0,
|
||||||
|
"y": 0.0
|
||||||
|
},
|
||||||
|
"radius": 5.0,
|
||||||
|
"start": {
|
||||||
|
"unit": "degrees",
|
||||||
|
"value": 0.0
|
||||||
|
},
|
||||||
|
"end": {
|
||||||
|
"unit": "degrees",
|
||||||
|
"value": 360.0
|
||||||
|
},
|
||||||
|
"relative": false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmdId": "[uuid]",
|
||||||
|
"range": [],
|
||||||
|
"command": {
|
||||||
|
"type": "move_path_pen",
|
||||||
|
"path": "[uuid]",
|
||||||
|
"to": {
|
||||||
|
"x": 20.0,
|
||||||
|
"y": 0.0,
|
||||||
|
"z": 0.0
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmdId": "[uuid]",
|
||||||
|
"range": [],
|
||||||
|
"command": {
|
||||||
|
"type": "sketch_mode_disable"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmdId": "[uuid]",
|
||||||
|
"range": [],
|
||||||
|
"command": {
|
||||||
|
"type": "start_path"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmdId": "[uuid]",
|
||||||
|
"range": [],
|
||||||
|
"command": {
|
||||||
|
"type": "object_bring_to_front",
|
||||||
|
"object_id": "[uuid]"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmdId": "[uuid]",
|
||||||
|
"range": [],
|
||||||
|
"command": {
|
||||||
|
"type": "revolve",
|
||||||
|
"target": "[uuid]",
|
||||||
|
"origin": {
|
||||||
|
"x": 0.0,
|
||||||
|
"y": 0.0,
|
||||||
|
"z": 0.0
|
||||||
|
},
|
||||||
|
"axis": {
|
||||||
|
"x": 0.0,
|
||||||
|
"y": 1.0,
|
||||||
|
"z": 0.0
|
||||||
|
},
|
||||||
|
"axis_is_2d": true,
|
||||||
|
"angle": {
|
||||||
|
"unit": "degrees",
|
||||||
|
"value": 360.0
|
||||||
|
},
|
||||||
|
"tolerance": 0.0000001,
|
||||||
|
"opposite": "None"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmdId": "[uuid]",
|
||||||
|
"range": [],
|
||||||
|
"command": {
|
||||||
|
"type": "solid3d_get_adjacency_info",
|
||||||
|
"object_id": "[uuid]",
|
||||||
|
"edge_id": "[uuid]"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmdId": "[uuid]",
|
||||||
|
"range": [],
|
||||||
|
"command": {
|
||||||
|
"type": "solid3d_get_extrusion_face_info",
|
||||||
|
"object_id": "[uuid]",
|
||||||
|
"edge_id": "[uuid]"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
@ -0,0 +1,6 @@
|
|||||||
|
---
|
||||||
|
source: kcl-lib/src/simulation_tests.rs
|
||||||
|
description: Artifact graph flowchart nested_main_kcl.kcl
|
||||||
|
extension: md
|
||||||
|
snapshot_kind: binary
|
||||||
|
---
|
@ -0,0 +1,23 @@
|
|||||||
|
```mermaid
|
||||||
|
flowchart LR
|
||||||
|
subgraph path2 [Path]
|
||||||
|
2["Path<br>[43, 81, 1]"]
|
||||||
|
3["Segment<br>[43, 81, 1]"]
|
||||||
|
4[Solid2d]
|
||||||
|
end
|
||||||
|
1["Plane<br>[18, 35, 1]"]
|
||||||
|
5["Sweep Revolve<br>[89, 142, 1]"]
|
||||||
|
6[Wall]
|
||||||
|
%% face_code_ref=Missing NodePath
|
||||||
|
7["SweepEdge Adjacent"]
|
||||||
|
1 --- 2
|
||||||
|
2 --- 3
|
||||||
|
2 --- 4
|
||||||
|
2 ---- 5
|
||||||
|
5 <--x 3
|
||||||
|
3 --- 6
|
||||||
|
3 --- 7
|
||||||
|
5 --- 6
|
||||||
|
5 --- 7
|
||||||
|
6 --- 7
|
||||||
|
```
|
73
rust/kcl-lib/tests/nested_main_kcl/ast.snap
Normal file
@ -0,0 +1,73 @@
|
|||||||
|
---
|
||||||
|
source: kcl-lib/src/simulation_tests.rs
|
||||||
|
description: Result of parsing nested_main_kcl.kcl
|
||||||
|
---
|
||||||
|
{
|
||||||
|
"Ok": {
|
||||||
|
"body": [
|
||||||
|
{
|
||||||
|
"commentStart": 0,
|
||||||
|
"end": 0,
|
||||||
|
"path": {
|
||||||
|
"type": "Kcl",
|
||||||
|
"filename": "nested/foo/bar/main.kcl"
|
||||||
|
},
|
||||||
|
"selector": {
|
||||||
|
"type": "None",
|
||||||
|
"alias": {
|
||||||
|
"commentStart": 0,
|
||||||
|
"end": 0,
|
||||||
|
"name": "bar",
|
||||||
|
"start": 0,
|
||||||
|
"type": "Identifier"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"start": 0,
|
||||||
|
"type": "ImportStatement",
|
||||||
|
"type": "ImportStatement"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"commentStart": 0,
|
||||||
|
"end": 0,
|
||||||
|
"expression": {
|
||||||
|
"abs_path": false,
|
||||||
|
"commentStart": 0,
|
||||||
|
"end": 0,
|
||||||
|
"name": {
|
||||||
|
"commentStart": 0,
|
||||||
|
"end": 0,
|
||||||
|
"name": "bar",
|
||||||
|
"start": 0,
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"path": [],
|
||||||
|
"start": 0,
|
||||||
|
"type": "Name",
|
||||||
|
"type": "Name"
|
||||||
|
},
|
||||||
|
"start": 0,
|
||||||
|
"type": "ExpressionStatement",
|
||||||
|
"type": "ExpressionStatement"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"commentStart": 0,
|
||||||
|
"end": 0,
|
||||||
|
"nonCodeMeta": {
|
||||||
|
"nonCodeNodes": {
|
||||||
|
"0": [
|
||||||
|
{
|
||||||
|
"commentStart": 0,
|
||||||
|
"end": 0,
|
||||||
|
"start": 0,
|
||||||
|
"type": "NonCodeNode",
|
||||||
|
"value": {
|
||||||
|
"type": "newLine"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"startNodes": []
|
||||||
|
},
|
||||||
|
"start": 0
|
||||||
|
}
|
||||||
|
}
|
3
rust/kcl-lib/tests/nested_main_kcl/input.kcl
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
import "nested/foo/bar/main.kcl" as bar
|
||||||
|
|
||||||
|
bar
|
@ -0,0 +1,7 @@
|
|||||||
|
// A donut shape.
|
||||||
|
startSketchOn(XY)
|
||||||
|
|> circle( center = [15, 0], radius = 5 )
|
||||||
|
|> revolve(
|
||||||
|
angle = 360,
|
||||||
|
axis = Y,
|
||||||
|
)
|
18
rust/kcl-lib/tests/nested_main_kcl/ops.snap
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
---
|
||||||
|
source: kcl-lib/src/simulation_tests.rs
|
||||||
|
description: Operations executed nested_main_kcl.kcl
|
||||||
|
---
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"type": "GroupBegin",
|
||||||
|
"group": {
|
||||||
|
"type": "ModuleInstance",
|
||||||
|
"name": "main.kcl",
|
||||||
|
"moduleId": 0
|
||||||
|
},
|
||||||
|
"sourceRange": []
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "GroupEnd"
|
||||||
|
}
|
||||||
|
]
|
10
rust/kcl-lib/tests/nested_main_kcl/program_memory.snap
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
---
|
||||||
|
source: kcl-lib/src/simulation_tests.rs
|
||||||
|
description: Variables in memory after executing nested_main_kcl.kcl
|
||||||
|
---
|
||||||
|
{
|
||||||
|
"bar": {
|
||||||
|
"type": "Module",
|
||||||
|
"value": 1
|
||||||
|
}
|
||||||
|
}
|
BIN
rust/kcl-lib/tests/nested_main_kcl/rendered_model.png
Normal file
After Width: | Height: | Size: 150 KiB |
7
rust/kcl-lib/tests/nested_main_kcl/unparsed.snap
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
---
|
||||||
|
source: kcl-lib/src/simulation_tests.rs
|
||||||
|
description: Result of unparsing nested_main_kcl.kcl
|
||||||
|
---
|
||||||
|
import "nested/foo/bar/main.kcl" as bar
|
||||||
|
|
||||||
|
bar
|
@ -0,0 +1,8 @@
|
|||||||
|
---
|
||||||
|
source: kcl-lib/src/simulation_tests.rs
|
||||||
|
description: Result of unparsing tests/nested_main_kcl/nested/foo/bar/main.kcl
|
||||||
|
---
|
||||||
|
// A donut shape.
|
||||||
|
startSketchOn(XY)
|
||||||
|
|> circle(center = [15, 0], radius = 5)
|
||||||
|
|> revolve(angle = 360, axis = Y)
|
@ -0,0 +1,184 @@
|
|||||||
|
---
|
||||||
|
source: kcl-lib/src/simulation_tests.rs
|
||||||
|
description: Artifact commands nested_main_kcl.kcl
|
||||||
|
---
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"cmdId": "[uuid]",
|
||||||
|
"range": [],
|
||||||
|
"command": {
|
||||||
|
"type": "edge_lines_visible",
|
||||||
|
"hidden": false
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmdId": "[uuid]",
|
||||||
|
"range": [],
|
||||||
|
"command": {
|
||||||
|
"type": "object_visible",
|
||||||
|
"object_id": "[uuid]",
|
||||||
|
"hidden": true
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmdId": "[uuid]",
|
||||||
|
"range": [],
|
||||||
|
"command": {
|
||||||
|
"type": "object_visible",
|
||||||
|
"object_id": "[uuid]",
|
||||||
|
"hidden": true
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmdId": "[uuid]",
|
||||||
|
"range": [],
|
||||||
|
"command": {
|
||||||
|
"type": "make_plane",
|
||||||
|
"origin": {
|
||||||
|
"x": 0.0,
|
||||||
|
"y": 0.0,
|
||||||
|
"z": 0.0
|
||||||
|
},
|
||||||
|
"x_axis": {
|
||||||
|
"x": 1.0,
|
||||||
|
"y": 0.0,
|
||||||
|
"z": 0.0
|
||||||
|
},
|
||||||
|
"y_axis": {
|
||||||
|
"x": 0.0,
|
||||||
|
"y": 1.0,
|
||||||
|
"z": 0.0
|
||||||
|
},
|
||||||
|
"size": 60.0,
|
||||||
|
"clobber": false,
|
||||||
|
"hide": true
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmdId": "[uuid]",
|
||||||
|
"range": [],
|
||||||
|
"command": {
|
||||||
|
"type": "close_path",
|
||||||
|
"path_id": "[uuid]"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmdId": "[uuid]",
|
||||||
|
"range": [],
|
||||||
|
"command": {
|
||||||
|
"type": "enable_sketch_mode",
|
||||||
|
"entity_id": "[uuid]",
|
||||||
|
"ortho": false,
|
||||||
|
"animated": false,
|
||||||
|
"adjust_camera": false,
|
||||||
|
"planar_normal": {
|
||||||
|
"x": 0.0,
|
||||||
|
"y": 0.0,
|
||||||
|
"z": 1.0
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmdId": "[uuid]",
|
||||||
|
"range": [],
|
||||||
|
"command": {
|
||||||
|
"type": "extend_path",
|
||||||
|
"path": "[uuid]",
|
||||||
|
"segment": {
|
||||||
|
"type": "arc",
|
||||||
|
"center": {
|
||||||
|
"x": 15.0,
|
||||||
|
"y": 0.0
|
||||||
|
},
|
||||||
|
"radius": 5.0,
|
||||||
|
"start": {
|
||||||
|
"unit": "degrees",
|
||||||
|
"value": 0.0
|
||||||
|
},
|
||||||
|
"end": {
|
||||||
|
"unit": "degrees",
|
||||||
|
"value": 360.0
|
||||||
|
},
|
||||||
|
"relative": false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmdId": "[uuid]",
|
||||||
|
"range": [],
|
||||||
|
"command": {
|
||||||
|
"type": "move_path_pen",
|
||||||
|
"path": "[uuid]",
|
||||||
|
"to": {
|
||||||
|
"x": 20.0,
|
||||||
|
"y": 0.0,
|
||||||
|
"z": 0.0
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmdId": "[uuid]",
|
||||||
|
"range": [],
|
||||||
|
"command": {
|
||||||
|
"type": "sketch_mode_disable"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmdId": "[uuid]",
|
||||||
|
"range": [],
|
||||||
|
"command": {
|
||||||
|
"type": "start_path"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmdId": "[uuid]",
|
||||||
|
"range": [],
|
||||||
|
"command": {
|
||||||
|
"type": "object_bring_to_front",
|
||||||
|
"object_id": "[uuid]"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmdId": "[uuid]",
|
||||||
|
"range": [],
|
||||||
|
"command": {
|
||||||
|
"type": "revolve",
|
||||||
|
"target": "[uuid]",
|
||||||
|
"origin": {
|
||||||
|
"x": 0.0,
|
||||||
|
"y": 0.0,
|
||||||
|
"z": 0.0
|
||||||
|
},
|
||||||
|
"axis": {
|
||||||
|
"x": 0.0,
|
||||||
|
"y": 1.0,
|
||||||
|
"z": 0.0
|
||||||
|
},
|
||||||
|
"axis_is_2d": true,
|
||||||
|
"angle": {
|
||||||
|
"unit": "degrees",
|
||||||
|
"value": 360.0
|
||||||
|
},
|
||||||
|
"tolerance": 0.0000001,
|
||||||
|
"opposite": "None"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmdId": "[uuid]",
|
||||||
|
"range": [],
|
||||||
|
"command": {
|
||||||
|
"type": "solid3d_get_adjacency_info",
|
||||||
|
"object_id": "[uuid]",
|
||||||
|
"edge_id": "[uuid]"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmdId": "[uuid]",
|
||||||
|
"range": [],
|
||||||
|
"command": {
|
||||||
|
"type": "solid3d_get_extrusion_face_info",
|
||||||
|
"object_id": "[uuid]",
|
||||||
|
"edge_id": "[uuid]"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
@ -0,0 +1,6 @@
|
|||||||
|
---
|
||||||
|
source: kcl-lib/src/simulation_tests.rs
|
||||||
|
description: Artifact graph flowchart nested_main_kcl.kcl
|
||||||
|
extension: md
|
||||||
|
snapshot_kind: binary
|
||||||
|
---
|
@ -0,0 +1,23 @@
|
|||||||
|
```mermaid
|
||||||
|
flowchart LR
|
||||||
|
subgraph path2 [Path]
|
||||||
|
2["Path<br>[43, 81, 1]"]
|
||||||
|
3["Segment<br>[43, 81, 1]"]
|
||||||
|
4[Solid2d]
|
||||||
|
end
|
||||||
|
1["Plane<br>[18, 35, 1]"]
|
||||||
|
5["Sweep Revolve<br>[89, 142, 1]"]
|
||||||
|
6[Wall]
|
||||||
|
%% face_code_ref=Missing NodePath
|
||||||
|
7["SweepEdge Adjacent"]
|
||||||
|
1 --- 2
|
||||||
|
2 --- 3
|
||||||
|
2 --- 4
|
||||||
|
2 ---- 5
|
||||||
|
5 <--x 3
|
||||||
|
3 --- 6
|
||||||
|
3 --- 7
|
||||||
|
5 --- 6
|
||||||
|
5 --- 7
|
||||||
|
6 --- 7
|
||||||
|
```
|
67
rust/kcl-lib/tests/nested_windows_main_kcl/ast.snap
Normal file
@ -0,0 +1,67 @@
|
|||||||
|
---
|
||||||
|
source: kcl-lib/src/simulation_tests.rs
|
||||||
|
description: Result of parsing nested_windows_main_kcl.kcl
|
||||||
|
---
|
||||||
|
{
|
||||||
|
"Ok": {
|
||||||
|
"body": [
|
||||||
|
{
|
||||||
|
"commentStart": 0,
|
||||||
|
"end": 0,
|
||||||
|
"path": {
|
||||||
|
"type": "Kcl",
|
||||||
|
"filename": "nested/foo/bar/main.kcl"
|
||||||
|
},
|
||||||
|
"selector": {
|
||||||
|
"type": "None",
|
||||||
|
"alias": null
|
||||||
|
},
|
||||||
|
"start": 0,
|
||||||
|
"type": "ImportStatement",
|
||||||
|
"type": "ImportStatement"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"commentStart": 0,
|
||||||
|
"end": 0,
|
||||||
|
"expression": {
|
||||||
|
"abs_path": false,
|
||||||
|
"commentStart": 0,
|
||||||
|
"end": 0,
|
||||||
|
"name": {
|
||||||
|
"commentStart": 0,
|
||||||
|
"end": 0,
|
||||||
|
"name": "bar",
|
||||||
|
"start": 0,
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"path": [],
|
||||||
|
"start": 0,
|
||||||
|
"type": "Name",
|
||||||
|
"type": "Name"
|
||||||
|
},
|
||||||
|
"start": 0,
|
||||||
|
"type": "ExpressionStatement",
|
||||||
|
"type": "ExpressionStatement"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"commentStart": 0,
|
||||||
|
"end": 0,
|
||||||
|
"nonCodeMeta": {
|
||||||
|
"nonCodeNodes": {
|
||||||
|
"0": [
|
||||||
|
{
|
||||||
|
"commentStart": 0,
|
||||||
|
"end": 0,
|
||||||
|
"start": 0,
|
||||||
|
"type": "NonCodeNode",
|
||||||
|
"value": {
|
||||||
|
"type": "newLine"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"startNodes": []
|
||||||
|
},
|
||||||
|
"start": 0
|
||||||
|
}
|
||||||
|
}
|
3
rust/kcl-lib/tests/nested_windows_main_kcl/input.kcl
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
import "nested\foo\bar\main.kcl"
|
||||||
|
|
||||||
|
bar
|
@ -0,0 +1,7 @@
|
|||||||
|
// A donut shape.
|
||||||
|
startSketchOn(XY)
|
||||||
|
|> circle( center = [15, 0], radius = 5 )
|
||||||
|
|> revolve(
|
||||||
|
angle = 360,
|
||||||
|
axis = Y,
|
||||||
|
)
|
18
rust/kcl-lib/tests/nested_windows_main_kcl/ops.snap
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
---
|
||||||
|
source: kcl-lib/src/simulation_tests.rs
|
||||||
|
description: Operations executed nested_main_kcl.kcl
|
||||||
|
---
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"type": "GroupBegin",
|
||||||
|
"group": {
|
||||||
|
"type": "ModuleInstance",
|
||||||
|
"name": "main.kcl",
|
||||||
|
"moduleId": 0
|
||||||
|
},
|
||||||
|
"sourceRange": []
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "GroupEnd"
|
||||||
|
}
|
||||||
|
]
|
@ -0,0 +1,10 @@
|
|||||||
|
---
|
||||||
|
source: kcl-lib/src/simulation_tests.rs
|
||||||
|
description: Variables in memory after executing nested_main_kcl.kcl
|
||||||
|
---
|
||||||
|
{
|
||||||
|
"bar": {
|
||||||
|
"type": "Module",
|
||||||
|
"value": 1
|
||||||
|
}
|
||||||
|
}
|
BIN
rust/kcl-lib/tests/nested_windows_main_kcl/rendered_model.png
Normal file
After Width: | Height: | Size: 150 KiB |
7
rust/kcl-lib/tests/nested_windows_main_kcl/unparsed.snap
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
---
|
||||||
|
source: kcl-lib/src/simulation_tests.rs
|
||||||
|
description: Result of unparsing nested_windows_main_kcl.kcl
|
||||||
|
---
|
||||||
|
import "nested/foo/bar/main.kcl"
|
||||||
|
|
||||||
|
bar
|
@ -0,0 +1,8 @@
|
|||||||
|
---
|
||||||
|
source: kcl-lib/src/simulation_tests.rs
|
||||||
|
description: Result of unparsing tests/nested_windows_main_kcl/nested/foo/bar/main.kcl
|
||||||
|
---
|
||||||
|
// A donut shape.
|
||||||
|
startSketchOn(XY)
|
||||||
|
|> circle(center = [15, 0], radius = 5)
|
||||||
|
|> revolve(angle = 360, axis = Y)
|
@ -86,11 +86,11 @@ flowchart LR
|
|||||||
8 --- 18
|
8 --- 18
|
||||||
8 ---- 20
|
8 ---- 20
|
||||||
8 --- 21
|
8 --- 21
|
||||||
12 --- 22
|
12 <--x 22
|
||||||
12 <--x 23
|
12 --- 23
|
||||||
12 <--x 24
|
12 <--x 24
|
||||||
16 --- 25
|
16 <--x 25
|
||||||
16 <--x 26
|
16 --- 26
|
||||||
16 <--x 27
|
16 <--x 27
|
||||||
19 --- 22
|
19 --- 22
|
||||||
19 --- 23
|
19 --- 23
|
||||||
|
481
rust/kcl-lib/tests/subtract_regression11/artifact_commands.snap
Normal file
@ -0,0 +1,481 @@
|
|||||||
|
---
|
||||||
|
source: kcl-lib/src/simulation_tests.rs
|
||||||
|
description: Artifact commands subtract_regression11.kcl
|
||||||
|
---
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"cmdId": "[uuid]",
|
||||||
|
"range": [],
|
||||||
|
"command": {
|
||||||
|
"type": "edge_lines_visible",
|
||||||
|
"hidden": false
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmdId": "[uuid]",
|
||||||
|
"range": [],
|
||||||
|
"command": {
|
||||||
|
"type": "object_visible",
|
||||||
|
"object_id": "[uuid]",
|
||||||
|
"hidden": true
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmdId": "[uuid]",
|
||||||
|
"range": [],
|
||||||
|
"command": {
|
||||||
|
"type": "object_visible",
|
||||||
|
"object_id": "[uuid]",
|
||||||
|
"hidden": true
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmdId": "[uuid]",
|
||||||
|
"range": [],
|
||||||
|
"command": {
|
||||||
|
"type": "make_plane",
|
||||||
|
"origin": {
|
||||||
|
"x": 0.0,
|
||||||
|
"y": 0.0,
|
||||||
|
"z": 0.0
|
||||||
|
},
|
||||||
|
"x_axis": {
|
||||||
|
"x": 0.0,
|
||||||
|
"y": 1.0,
|
||||||
|
"z": 0.0
|
||||||
|
},
|
||||||
|
"y_axis": {
|
||||||
|
"x": 0.0,
|
||||||
|
"y": 0.0,
|
||||||
|
"z": 1.0
|
||||||
|
},
|
||||||
|
"size": 60.0,
|
||||||
|
"clobber": false,
|
||||||
|
"hide": true
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmdId": "[uuid]",
|
||||||
|
"range": [],
|
||||||
|
"command": {
|
||||||
|
"type": "enable_sketch_mode",
|
||||||
|
"entity_id": "[uuid]",
|
||||||
|
"ortho": false,
|
||||||
|
"animated": false,
|
||||||
|
"adjust_camera": false,
|
||||||
|
"planar_normal": {
|
||||||
|
"x": 1.0,
|
||||||
|
"y": 0.0,
|
||||||
|
"z": 0.0
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmdId": "[uuid]",
|
||||||
|
"range": [],
|
||||||
|
"command": {
|
||||||
|
"type": "move_path_pen",
|
||||||
|
"path": "[uuid]",
|
||||||
|
"to": {
|
||||||
|
"x": 0.0,
|
||||||
|
"y": 20.0,
|
||||||
|
"z": 0.0
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmdId": "[uuid]",
|
||||||
|
"range": [],
|
||||||
|
"command": {
|
||||||
|
"type": "sketch_mode_disable"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmdId": "[uuid]",
|
||||||
|
"range": [],
|
||||||
|
"command": {
|
||||||
|
"type": "start_path"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmdId": "[uuid]",
|
||||||
|
"range": [],
|
||||||
|
"command": {
|
||||||
|
"type": "extend_path",
|
||||||
|
"path": "[uuid]",
|
||||||
|
"segment": {
|
||||||
|
"type": "line",
|
||||||
|
"end": {
|
||||||
|
"x": 2.25,
|
||||||
|
"y": 0.0,
|
||||||
|
"z": 0.0
|
||||||
|
},
|
||||||
|
"relative": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmdId": "[uuid]",
|
||||||
|
"range": [],
|
||||||
|
"command": {
|
||||||
|
"type": "extend_path",
|
||||||
|
"path": "[uuid]",
|
||||||
|
"segment": {
|
||||||
|
"type": "line",
|
||||||
|
"end": {
|
||||||
|
"x": 0.75,
|
||||||
|
"y": -0.75,
|
||||||
|
"z": 0.0
|
||||||
|
},
|
||||||
|
"relative": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmdId": "[uuid]",
|
||||||
|
"range": [],
|
||||||
|
"command": {
|
||||||
|
"type": "extend_path",
|
||||||
|
"path": "[uuid]",
|
||||||
|
"segment": {
|
||||||
|
"type": "line",
|
||||||
|
"end": {
|
||||||
|
"x": 0.0,
|
||||||
|
"y": -38.5,
|
||||||
|
"z": 0.0
|
||||||
|
},
|
||||||
|
"relative": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmdId": "[uuid]",
|
||||||
|
"range": [],
|
||||||
|
"command": {
|
||||||
|
"type": "extend_path",
|
||||||
|
"path": "[uuid]",
|
||||||
|
"segment": {
|
||||||
|
"type": "line",
|
||||||
|
"end": {
|
||||||
|
"x": -0.75,
|
||||||
|
"y": -0.75,
|
||||||
|
"z": 0.0
|
||||||
|
},
|
||||||
|
"relative": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmdId": "[uuid]",
|
||||||
|
"range": [],
|
||||||
|
"command": {
|
||||||
|
"type": "extend_path",
|
||||||
|
"path": "[uuid]",
|
||||||
|
"segment": {
|
||||||
|
"type": "line",
|
||||||
|
"end": {
|
||||||
|
"x": -2.25,
|
||||||
|
"y": 0.0,
|
||||||
|
"z": 0.0
|
||||||
|
},
|
||||||
|
"relative": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmdId": "[uuid]",
|
||||||
|
"range": [],
|
||||||
|
"command": {
|
||||||
|
"type": "extend_path",
|
||||||
|
"path": "[uuid]",
|
||||||
|
"segment": {
|
||||||
|
"type": "line",
|
||||||
|
"end": {
|
||||||
|
"x": 0.0,
|
||||||
|
"y": 40.0,
|
||||||
|
"z": 0.0
|
||||||
|
},
|
||||||
|
"relative": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmdId": "[uuid]",
|
||||||
|
"range": [],
|
||||||
|
"command": {
|
||||||
|
"type": "close_path",
|
||||||
|
"path_id": "[uuid]"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmdId": "[uuid]",
|
||||||
|
"range": [],
|
||||||
|
"command": {
|
||||||
|
"type": "object_bring_to_front",
|
||||||
|
"object_id": "[uuid]"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmdId": "[uuid]",
|
||||||
|
"range": [],
|
||||||
|
"command": {
|
||||||
|
"type": "revolve",
|
||||||
|
"target": "[uuid]",
|
||||||
|
"origin": {
|
||||||
|
"x": 0.0,
|
||||||
|
"y": 0.0,
|
||||||
|
"z": 0.0
|
||||||
|
},
|
||||||
|
"axis": {
|
||||||
|
"x": 0.0,
|
||||||
|
"y": 1.0,
|
||||||
|
"z": 0.0
|
||||||
|
},
|
||||||
|
"axis_is_2d": true,
|
||||||
|
"angle": {
|
||||||
|
"unit": "degrees",
|
||||||
|
"value": 360.0
|
||||||
|
},
|
||||||
|
"tolerance": 0.0000001,
|
||||||
|
"opposite": "None"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmdId": "[uuid]",
|
||||||
|
"range": [],
|
||||||
|
"command": {
|
||||||
|
"type": "solid3d_get_adjacency_info",
|
||||||
|
"object_id": "[uuid]",
|
||||||
|
"edge_id": "[uuid]"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmdId": "[uuid]",
|
||||||
|
"range": [],
|
||||||
|
"command": {
|
||||||
|
"type": "solid3d_get_extrusion_face_info",
|
||||||
|
"object_id": "[uuid]",
|
||||||
|
"edge_id": "[uuid]"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmdId": "[uuid]",
|
||||||
|
"range": [],
|
||||||
|
"command": {
|
||||||
|
"type": "make_plane",
|
||||||
|
"origin": {
|
||||||
|
"x": 0.0,
|
||||||
|
"y": 0.0,
|
||||||
|
"z": 0.0
|
||||||
|
},
|
||||||
|
"x_axis": {
|
||||||
|
"x": 0.0,
|
||||||
|
"y": 1.0,
|
||||||
|
"z": 0.0
|
||||||
|
},
|
||||||
|
"y_axis": {
|
||||||
|
"x": 0.0,
|
||||||
|
"y": 0.0,
|
||||||
|
"z": 1.0
|
||||||
|
},
|
||||||
|
"size": 60.0,
|
||||||
|
"clobber": false,
|
||||||
|
"hide": true
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmdId": "[uuid]",
|
||||||
|
"range": [],
|
||||||
|
"command": {
|
||||||
|
"type": "enable_sketch_mode",
|
||||||
|
"entity_id": "[uuid]",
|
||||||
|
"ortho": false,
|
||||||
|
"animated": false,
|
||||||
|
"adjust_camera": false,
|
||||||
|
"planar_normal": {
|
||||||
|
"x": 1.0,
|
||||||
|
"y": 0.0,
|
||||||
|
"z": 0.0
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmdId": "[uuid]",
|
||||||
|
"range": [],
|
||||||
|
"command": {
|
||||||
|
"type": "move_path_pen",
|
||||||
|
"path": "[uuid]",
|
||||||
|
"to": {
|
||||||
|
"x": 0.65,
|
||||||
|
"y": 20.1,
|
||||||
|
"z": 0.0
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmdId": "[uuid]",
|
||||||
|
"range": [],
|
||||||
|
"command": {
|
||||||
|
"type": "sketch_mode_disable"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmdId": "[uuid]",
|
||||||
|
"range": [],
|
||||||
|
"command": {
|
||||||
|
"type": "start_path"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmdId": "[uuid]",
|
||||||
|
"range": [],
|
||||||
|
"command": {
|
||||||
|
"type": "extend_path",
|
||||||
|
"path": "[uuid]",
|
||||||
|
"segment": {
|
||||||
|
"type": "line",
|
||||||
|
"end": {
|
||||||
|
"x": 0.0,
|
||||||
|
"y": -1.5,
|
||||||
|
"z": 0.0
|
||||||
|
},
|
||||||
|
"relative": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmdId": "[uuid]",
|
||||||
|
"range": [],
|
||||||
|
"command": {
|
||||||
|
"type": "extend_path",
|
||||||
|
"path": "[uuid]",
|
||||||
|
"segment": {
|
||||||
|
"type": "line",
|
||||||
|
"end": {
|
||||||
|
"x": -1.1,
|
||||||
|
"y": 0.0,
|
||||||
|
"z": 0.0
|
||||||
|
},
|
||||||
|
"relative": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmdId": "[uuid]",
|
||||||
|
"range": [],
|
||||||
|
"command": {
|
||||||
|
"type": "extend_path",
|
||||||
|
"path": "[uuid]",
|
||||||
|
"segment": {
|
||||||
|
"type": "line",
|
||||||
|
"end": {
|
||||||
|
"x": 0.0,
|
||||||
|
"y": 1.5,
|
||||||
|
"z": 0.0
|
||||||
|
},
|
||||||
|
"relative": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmdId": "[uuid]",
|
||||||
|
"range": [],
|
||||||
|
"command": {
|
||||||
|
"type": "extend_path",
|
||||||
|
"path": "[uuid]",
|
||||||
|
"segment": {
|
||||||
|
"type": "line",
|
||||||
|
"end": {
|
||||||
|
"x": 1.1,
|
||||||
|
"y": 0.0,
|
||||||
|
"z": 0.0
|
||||||
|
},
|
||||||
|
"relative": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmdId": "[uuid]",
|
||||||
|
"range": [],
|
||||||
|
"command": {
|
||||||
|
"type": "close_path",
|
||||||
|
"path_id": "[uuid]"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmdId": "[uuid]",
|
||||||
|
"range": [],
|
||||||
|
"command": {
|
||||||
|
"type": "enable_sketch_mode",
|
||||||
|
"entity_id": "[uuid]",
|
||||||
|
"ortho": false,
|
||||||
|
"animated": false,
|
||||||
|
"adjust_camera": false,
|
||||||
|
"planar_normal": {
|
||||||
|
"x": 1.0,
|
||||||
|
"y": 0.0,
|
||||||
|
"z": 0.0
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmdId": "[uuid]",
|
||||||
|
"range": [],
|
||||||
|
"command": {
|
||||||
|
"type": "extrude",
|
||||||
|
"target": "[uuid]",
|
||||||
|
"distance": 10.0,
|
||||||
|
"faces": null,
|
||||||
|
"opposite": {
|
||||||
|
"Other": 10.0
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmdId": "[uuid]",
|
||||||
|
"range": [],
|
||||||
|
"command": {
|
||||||
|
"type": "object_bring_to_front",
|
||||||
|
"object_id": "[uuid]"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmdId": "[uuid]",
|
||||||
|
"range": [],
|
||||||
|
"command": {
|
||||||
|
"type": "sketch_mode_disable"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmdId": "[uuid]",
|
||||||
|
"range": [],
|
||||||
|
"command": {
|
||||||
|
"type": "solid3d_get_adjacency_info",
|
||||||
|
"object_id": "[uuid]",
|
||||||
|
"edge_id": "[uuid]"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmdId": "[uuid]",
|
||||||
|
"range": [],
|
||||||
|
"command": {
|
||||||
|
"type": "solid3d_get_extrusion_face_info",
|
||||||
|
"object_id": "[uuid]",
|
||||||
|
"edge_id": "[uuid]"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmdId": "[uuid]",
|
||||||
|
"range": [],
|
||||||
|
"command": {
|
||||||
|
"type": "boolean_subtract",
|
||||||
|
"target_ids": [
|
||||||
|
"[uuid]"
|
||||||
|
],
|
||||||
|
"tool_ids": [
|
||||||
|
"[uuid]"
|
||||||
|
],
|
||||||
|
"tolerance": 0.0000001
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
@ -0,0 +1,6 @@
|
|||||||
|
---
|
||||||
|
source: kcl-lib/src/simulation_tests.rs
|
||||||
|
description: Artifact graph flowchart subtract_regression11.kcl
|
||||||
|
extension: md
|
||||||
|
snapshot_kind: binary
|
||||||
|
---
|