Compare commits
1 Commits
kcl-76
...
nested_dir
Author | SHA1 | Date | |
---|---|---|---|
083103144a |
@ -11,8 +11,7 @@ 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
|
||||||
```
|
```
|
||||||
@ -26,8 +25,7 @@ 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. Incompatible with `diameter`. | No |
|
| `radius` | [`number(Length)`](/docs/kcl-std/types/std-types-number) | The radius of the circle. | Yes |
|
||||||
| `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
|
||||||
@ -53,7 +51,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], diameter = 10))
|
|> subtract2d(tool = circle(center = [0, 15], radius = 5))
|
||||||
|
|
||||||
example = extrude(exampleSketch, length = 5)
|
example = extrude(exampleSketch, length = 5)
|
||||||
```
|
```
|
||||||
|
@ -45,16 +45,15 @@ test.describe('Command bar tests', () => {
|
|||||||
await cmdBar.expectState({
|
await cmdBar.expectState({
|
||||||
stage: 'arguments',
|
stage: 'arguments',
|
||||||
commandName: 'Extrude',
|
commandName: 'Extrude',
|
||||||
currentArgKey: 'sketches',
|
currentArgKey: 'length',
|
||||||
currentArgValue: '',
|
currentArgValue: '5',
|
||||||
headerArguments: {
|
headerArguments: {
|
||||||
Profiles: '',
|
Profiles: '1 profile',
|
||||||
Length: '',
|
Length: '',
|
||||||
},
|
},
|
||||||
highlightedHeaderArg: 'Profiles',
|
highlightedHeaderArg: 'length',
|
||||||
})
|
})
|
||||||
await cmdBar.progressCmdBar()
|
await cmdBar.progressCmdBar()
|
||||||
await cmdBar.progressCmdBar()
|
|
||||||
await cmdBar.expectState({
|
await cmdBar.expectState({
|
||||||
stage: 'review',
|
stage: 'review',
|
||||||
commandName: 'Extrude',
|
commandName: 'Extrude',
|
||||||
|
@ -1134,7 +1134,6 @@ 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',
|
||||||
@ -1356,7 +1355,9 @@ 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', { name: 'Reset view' })
|
const resetCameraButton = page.getByRole('button', {
|
||||||
|
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]
|
||||||
|
@ -70,28 +70,22 @@ test.describe('Point-and-click assemblies tests', () => {
|
|||||||
await test.step('Setup parts and expect empty assembly scene', async () => {
|
await test.step('Setup parts and expect empty assembly scene', async () => {
|
||||||
const projectName = 'assembly'
|
const projectName = 'assembly'
|
||||||
await context.folderSetupFn(async (dir) => {
|
await context.folderSetupFn(async (dir) => {
|
||||||
const projDir = path.join(dir, projectName)
|
const bracketDir = path.join(dir, projectName)
|
||||||
const nestedProjDir = path.join(dir, projectName, 'nested', 'twice')
|
await fsp.mkdir(bracketDir, { recursive: true })
|
||||||
await fsp.mkdir(projDir, { recursive: true })
|
|
||||||
await fsp.mkdir(nestedProjDir, { recursive: true })
|
|
||||||
await Promise.all([
|
await Promise.all([
|
||||||
fsp.copyFile(
|
fsp.copyFile(
|
||||||
executorInputPath('cylinder.kcl'),
|
executorInputPath('cylinder.kcl'),
|
||||||
path.join(projDir, 'cylinder.kcl')
|
path.join(bracketDir, 'cylinder.kcl')
|
||||||
),
|
|
||||||
fsp.copyFile(
|
|
||||||
executorInputPath('cylinder.kcl'),
|
|
||||||
path.join(nestedProjDir, 'main.kcl')
|
|
||||||
),
|
),
|
||||||
fsp.copyFile(
|
fsp.copyFile(
|
||||||
executorInputPath('e2e-can-sketch-on-chamfer.kcl'),
|
executorInputPath('e2e-can-sketch-on-chamfer.kcl'),
|
||||||
path.join(projDir, 'bracket.kcl')
|
path.join(bracketDir, 'bracket.kcl')
|
||||||
),
|
),
|
||||||
fsp.copyFile(
|
fsp.copyFile(
|
||||||
testsInputPath('cube.step'),
|
testsInputPath('cube.step'),
|
||||||
path.join(projDir, 'cube.step')
|
path.join(bracketDir, 'cube.step')
|
||||||
),
|
),
|
||||||
fsp.writeFile(path.join(projDir, 'main.kcl'), ''),
|
fsp.writeFile(path.join(bracketDir, 'main.kcl'), ''),
|
||||||
])
|
])
|
||||||
})
|
})
|
||||||
await page.setBodyDimensions({ width: 1000, height: 500 })
|
await page.setBodyDimensions({ width: 1000, height: 500 })
|
||||||
@ -173,25 +167,6 @@ test.describe('Point-and-click assemblies tests', () => {
|
|||||||
await expect(
|
await expect(
|
||||||
page.getByText('This file is already imported')
|
page.getByText('This file is already imported')
|
||||||
).toBeVisible()
|
).toBeVisible()
|
||||||
await cmdBar.closeCmdBar()
|
|
||||||
})
|
|
||||||
|
|
||||||
await test.step('Insert a nested kcl part', async () => {
|
|
||||||
await insertPartIntoAssembly(
|
|
||||||
'nested/twice/main.kcl',
|
|
||||||
'main',
|
|
||||||
toolbar,
|
|
||||||
cmdBar,
|
|
||||||
page
|
|
||||||
)
|
|
||||||
await toolbar.openPane('code')
|
|
||||||
await page.waitForTimeout(10000)
|
|
||||||
await editor.expectEditor.toContain(
|
|
||||||
`
|
|
||||||
import "nested/twice/main.kcl" as main
|
|
||||||
`,
|
|
||||||
{ shouldNormalise: true }
|
|
||||||
)
|
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
@ -74,15 +74,6 @@ 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',
|
||||||
@ -1654,15 +1645,6 @@ 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' },
|
||||||
@ -2110,18 +2092,6 @@ 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',
|
||||||
@ -2651,18 +2621,6 @@ 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',
|
||||||
@ -2768,19 +2726,6 @@ 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',
|
||||||
@ -3264,8 +3209,6 @@ 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: {
|
||||||
@ -3699,12 +3642,13 @@ 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()
|
||||||
@ -4633,18 +4577,6 @@ 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',
|
||||||
@ -4727,19 +4659,6 @@ 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',
|
||||||
@ -4824,19 +4743,6 @@ 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,7 +11,6 @@ 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'
|
||||||
|
|
||||||
@ -1980,6 +1979,7 @@ test(
|
|||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// Flaky
|
||||||
test(
|
test(
|
||||||
'Original project name persist after onboarding',
|
'Original project name persist after onboarding',
|
||||||
{ tag: '@electron' },
|
{ tag: '@electron' },
|
||||||
@ -2066,9 +2066,13 @@ test(
|
|||||||
)
|
)
|
||||||
|
|
||||||
test(
|
test(
|
||||||
'import from nested directory',
|
'nested dir import works on windows',
|
||||||
{ tag: ['@electron', '@windows', '@macos'] },
|
{ tag: ['@electron', '@windows'] },
|
||||||
async ({ scene, cmdBar, context, page }) => {
|
async ({ scene, cmdBar, context, page }, testInfo) => {
|
||||||
|
// Skip if on non-windows
|
||||||
|
if (process.platform !== 'win32') {
|
||||||
|
test.skip()
|
||||||
|
}
|
||||||
await context.folderSetupFn(async (dir) => {
|
await context.folderSetupFn(async (dir) => {
|
||||||
const bracketDir = path.join(dir, 'bracket')
|
const bracketDir = path.join(dir, 'bracket')
|
||||||
await fsp.mkdir(bracketDir, { recursive: true })
|
await fsp.mkdir(bracketDir, { recursive: true })
|
||||||
@ -2081,9 +2085,9 @@ test(
|
|||||||
)
|
)
|
||||||
await fsp.writeFile(
|
await fsp.writeFile(
|
||||||
path.join(bracketDir, 'main.kcl'),
|
path.join(bracketDir, 'main.kcl'),
|
||||||
runningOnWindows()
|
`import 'nested\\main.kcl' as thing
|
||||||
? `import 'nested\\main.kcl' as thing\n\nthing`
|
|
||||||
: `import 'nested/main.kcl' as thing\n\nthing`
|
thing`
|
||||||
)
|
)
|
||||||
})
|
})
|
||||||
|
|
||||||
|
@ -1016,7 +1016,6 @@ 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',
|
||||||
|
@ -103,8 +103,6 @@ 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(
|
||||||
@ -156,10 +154,8 @@ 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(
|
await expect(newlyCreatedFile(sampleOne.file)).toBeVisible()
|
||||||
page.getByTestId('file-tree-item').getByText(sampleOne.folderName)
|
await expect(projectMenuButton).toContainText(sampleOne.file)
|
||||||
).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 () => {
|
||||||
@ -173,10 +169,8 @@ 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(
|
await expect(newlyCreatedFile(sampleOne.file1)).toBeVisible()
|
||||||
page.getByTestId('file-tree-item').getByText(sampleOne.folderName1)
|
await expect(projectMenuButton).toContainText(sampleOne.file1)
|
||||||
).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(
|
||||||
'main.kcl'
|
'2x2x2-cube.kcl'
|
||||||
)
|
)
|
||||||
|
|
||||||
await u.openFilePanel()
|
await u.openFilePanel()
|
||||||
await expect(
|
await expect(
|
||||||
page.getByTestId('file-tree-item').getByText('2x2x2-cube')
|
page.getByTestId('file-tree-item').getByText('2x2x2-cube.kcl')
|
||||||
).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(
|
||||||
'main.kcl'
|
'2x2x2-cube.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')
|
page.getByTestId('file-tree-item').getByText('2x2x2-cube.kcl')
|
||||||
).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(
|
||||||
'main.kcl'
|
'2x2x2-cube.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')
|
page.getByTestId('file-tree-item').getByText('2x2x2-cube.kcl')
|
||||||
).toBeVisible()
|
).toBeVisible()
|
||||||
await expect(
|
await expect(
|
||||||
page.getByTestId('file-tree-item').getByText('main.kcl')
|
page.getByTestId('file-tree-item').getByText('main.kcl')
|
||||||
|
@ -573,7 +573,6 @@ 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()
|
||||||
|
@ -33,9 +33,14 @@ 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(XY)
|
stemLoftProfile3 = startSketchOn(plane003)
|
||||||
|> 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)
|
||||||
@ -44,14 +49,18 @@ stemLoftProfile3 = startSketchOn(XY)
|
|||||||
|> 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(XY)
|
stemLoftProfile4 = startSketchOn(plane004)
|
||||||
|> 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)
|
||||||
@ -60,14 +69,18 @@ stemLoftProfile4 = startSketchOn(XY)
|
|||||||
|> 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(XY)
|
stemLoftProfile5 = startSketchOn(plane005)
|
||||||
|> 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)
|
||||||
@ -76,14 +89,18 @@ stemLoftProfile5 = startSketchOn(XY)
|
|||||||
|> 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(XY)
|
stemLoftProfile6 = startSketchOn(plane006)
|
||||||
|> 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)
|
||||||
@ -92,24 +109,27 @@ stemLoftProfile6 = startSketchOn(XY)
|
|||||||
|> 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)
|
|
||||||
|> rotate(pitch = -p6A)
|
// Draw the third profile for the femoral stem
|
||||||
|
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,
|
||||||
clone(stemLoftProfile6)
|
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])
|
||||||
|
Before Width: | Height: | Size: 81 KiB After Width: | Height: | Size: 82 KiB |
46
public/kcma-logomark-dark.svg
Normal file
After Width: | Height: | Size: 16 KiB |
BIN
public/kcma-logomark-outlined.png
Normal file
After Width: | Height: | Size: 11 KiB |
BIN
public/kcma-logomark.png
Normal file
After Width: | Height: | Size: 8.1 KiB |
46
public/kcma-logomark.svg
Normal file
After Width: | Height: | Size: 16 KiB |
13
public/zma-logomark-dark.svg
Normal file
After Width: | Height: | Size: 13 KiB |
13
public/zma-logomark.svg
Normal file
After Width: | Height: | Size: 13 KiB |
20
rust/Cargo.lock
generated
@ -1815,7 +1815,7 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "kcl-bumper"
|
name = "kcl-bumper"
|
||||||
version = "0.1.76"
|
version = "0.1.75"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"anyhow",
|
"anyhow",
|
||||||
"clap",
|
"clap",
|
||||||
@ -1826,7 +1826,7 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "kcl-derive-docs"
|
name = "kcl-derive-docs"
|
||||||
version = "0.1.76"
|
version = "0.1.75"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"Inflector",
|
"Inflector",
|
||||||
"anyhow",
|
"anyhow",
|
||||||
@ -1845,7 +1845,7 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "kcl-directory-test-macro"
|
name = "kcl-directory-test-macro"
|
||||||
version = "0.1.76"
|
version = "0.1.75"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"convert_case",
|
"convert_case",
|
||||||
"proc-macro2",
|
"proc-macro2",
|
||||||
@ -1855,7 +1855,7 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "kcl-language-server"
|
name = "kcl-language-server"
|
||||||
version = "0.2.76"
|
version = "0.2.75"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"anyhow",
|
"anyhow",
|
||||||
"clap",
|
"clap",
|
||||||
@ -1876,7 +1876,7 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "kcl-language-server-release"
|
name = "kcl-language-server-release"
|
||||||
version = "0.1.76"
|
version = "0.1.75"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"anyhow",
|
"anyhow",
|
||||||
"clap",
|
"clap",
|
||||||
@ -1896,7 +1896,7 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "kcl-lib"
|
name = "kcl-lib"
|
||||||
version = "0.2.76"
|
version = "0.2.75"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"anyhow",
|
"anyhow",
|
||||||
"approx 0.5.1",
|
"approx 0.5.1",
|
||||||
@ -1973,7 +1973,7 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "kcl-python-bindings"
|
name = "kcl-python-bindings"
|
||||||
version = "0.3.76"
|
version = "0.3.75"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"anyhow",
|
"anyhow",
|
||||||
"kcl-lib",
|
"kcl-lib",
|
||||||
@ -1988,7 +1988,7 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "kcl-test-server"
|
name = "kcl-test-server"
|
||||||
version = "0.1.76"
|
version = "0.1.75"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"anyhow",
|
"anyhow",
|
||||||
"hyper 0.14.32",
|
"hyper 0.14.32",
|
||||||
@ -2001,7 +2001,7 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "kcl-to-core"
|
name = "kcl-to-core"
|
||||||
version = "0.1.76"
|
version = "0.1.75"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"anyhow",
|
"anyhow",
|
||||||
"async-trait",
|
"async-trait",
|
||||||
@ -2015,7 +2015,7 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "kcl-wasm-lib"
|
name = "kcl-wasm-lib"
|
||||||
version = "0.1.76"
|
version = "0.1.75"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"anyhow",
|
"anyhow",
|
||||||
"bson",
|
"bson",
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
|
|
||||||
[package]
|
[package]
|
||||||
name = "kcl-bumper"
|
name = "kcl-bumper"
|
||||||
version = "0.1.76"
|
version = "0.1.75"
|
||||||
edition = "2021"
|
edition = "2021"
|
||||||
repository = "https://github.com/KittyCAD/modeling-api"
|
repository = "https://github.com/KittyCAD/modeling-api"
|
||||||
rust-version = "1.76"
|
rust-version = "1.76"
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
[package]
|
[package]
|
||||||
name = "kcl-derive-docs"
|
name = "kcl-derive-docs"
|
||||||
description = "A tool for generating documentation from Rust derive macros"
|
description = "A tool for generating documentation from Rust derive macros"
|
||||||
version = "0.1.76"
|
version = "0.1.75"
|
||||||
edition = "2021"
|
edition = "2021"
|
||||||
license = "MIT"
|
license = "MIT"
|
||||||
repository = "https://github.com/KittyCAD/modeling-app"
|
repository = "https://github.com/KittyCAD/modeling-app"
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
[package]
|
[package]
|
||||||
name = "kcl-directory-test-macro"
|
name = "kcl-directory-test-macro"
|
||||||
description = "A tool for generating tests from a directory of kcl files"
|
description = "A tool for generating tests from a directory of kcl files"
|
||||||
version = "0.1.76"
|
version = "0.1.75"
|
||||||
edition = "2021"
|
edition = "2021"
|
||||||
license = "MIT"
|
license = "MIT"
|
||||||
repository = "https://github.com/KittyCAD/modeling-app"
|
repository = "https://github.com/KittyCAD/modeling-app"
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
[package]
|
[package]
|
||||||
name = "kcl-language-server-release"
|
name = "kcl-language-server-release"
|
||||||
version = "0.1.76"
|
version = "0.1.75"
|
||||||
edition = "2021"
|
edition = "2021"
|
||||||
authors = ["KittyCAD Inc <kcl@kittycad.io>"]
|
authors = ["KittyCAD Inc <kcl@kittycad.io>"]
|
||||||
publish = false
|
publish = false
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
name = "kcl-language-server"
|
name = "kcl-language-server"
|
||||||
description = "A language server for KCL."
|
description = "A language server for KCL."
|
||||||
authors = ["KittyCAD Inc <kcl@kittycad.io>"]
|
authors = ["KittyCAD Inc <kcl@kittycad.io>"]
|
||||||
version = "0.2.76"
|
version = "0.2.75"
|
||||||
edition = "2021"
|
edition = "2021"
|
||||||
license = "MIT"
|
license = "MIT"
|
||||||
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
[package]
|
[package]
|
||||||
name = "kcl-lib"
|
name = "kcl-lib"
|
||||||
description = "KittyCAD Language implementation and tools"
|
description = "KittyCAD Language implementation and tools"
|
||||||
version = "0.2.76"
|
version = "0.2.75"
|
||||||
edition = "2021"
|
edition = "2021"
|
||||||
license = "MIT"
|
license = "MIT"
|
||||||
repository = "https://github.com/KittyCAD/modeling-app"
|
repository = "https://github.com/KittyCAD/modeling-app"
|
||||||
|
@ -631,8 +631,6 @@ 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}], diameter = ${2:3.14})"#
|
r#"circle(center = [${0:3.14}, ${1:3.14}], radius = ${2:3.14})"#
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -86,7 +86,7 @@ impl ExecutorContext {
|
|||||||
) -> Result<(Option<KclValue>, EnvironmentRef, Vec<String>), KclError> {
|
) -> Result<(Option<KclValue>, EnvironmentRef, Vec<String>), KclError> {
|
||||||
crate::log::log(format!("enter module {path} {}", exec_state.stack()));
|
crate::log::log(format!("enter module {path} {}", exec_state.stack()));
|
||||||
|
|
||||||
let mut local_state = ModuleState::new(path.clone(), exec_state.stack().memory.clone(), Some(module_id));
|
let mut local_state = ModuleState::new(path.std_path(), exec_state.stack().memory.clone(), Some(module_id));
|
||||||
if !preserve_mem {
|
if !preserve_mem {
|
||||||
std::mem::swap(&mut exec_state.mod_local, &mut local_state);
|
std::mem::swap(&mut exec_state.mod_local, &mut local_state);
|
||||||
}
|
}
|
||||||
@ -139,13 +139,8 @@ impl ExecutorContext {
|
|||||||
|
|
||||||
let source_range = SourceRange::from(import_stmt);
|
let source_range = SourceRange::from(import_stmt);
|
||||||
let attrs = &import_stmt.outer_attrs;
|
let attrs = &import_stmt.outer_attrs;
|
||||||
let module_path = ModulePath::from_import_path(
|
|
||||||
&import_stmt.path,
|
|
||||||
&self.settings.project_directory,
|
|
||||||
&exec_state.mod_local.path,
|
|
||||||
)?;
|
|
||||||
let module_id = self
|
let module_id = self
|
||||||
.open_module(&import_stmt.path, attrs, &module_path, exec_state, source_range)
|
.open_module(&import_stmt.path, attrs, exec_state, source_range)
|
||||||
.await?;
|
.await?;
|
||||||
|
|
||||||
match &import_stmt.selector {
|
match &import_stmt.selector {
|
||||||
@ -303,9 +298,9 @@ impl ExecutorContext {
|
|||||||
let impl_kind = annotations::get_impl(&ty.outer_attrs, metadata.source_range)?.unwrap_or_default();
|
let impl_kind = annotations::get_impl(&ty.outer_attrs, metadata.source_range)?.unwrap_or_default();
|
||||||
match impl_kind {
|
match impl_kind {
|
||||||
annotations::Impl::Rust => {
|
annotations::Impl::Rust => {
|
||||||
let std_path = match &exec_state.mod_local.path {
|
let std_path = match &exec_state.mod_local.std_path {
|
||||||
ModulePath::Std { value } => value,
|
Some(p) => p,
|
||||||
ModulePath::Local { .. } | ModulePath::Main => {
|
None => {
|
||||||
return Err(KclError::Semantic(KclErrorDetails::new(
|
return Err(KclError::Semantic(KclErrorDetails::new(
|
||||||
"User-defined types are not yet supported.".to_owned(),
|
"User-defined types are not yet supported.".to_owned(),
|
||||||
vec![metadata.source_range],
|
vec![metadata.source_range],
|
||||||
@ -425,15 +420,16 @@ impl ExecutorContext {
|
|||||||
&self,
|
&self,
|
||||||
path: &ImportPath,
|
path: &ImportPath,
|
||||||
attrs: &[Node<Annotation>],
|
attrs: &[Node<Annotation>],
|
||||||
resolved_path: &ModulePath,
|
|
||||||
exec_state: &mut ExecState,
|
exec_state: &mut ExecState,
|
||||||
source_range: SourceRange,
|
source_range: SourceRange,
|
||||||
) -> Result<ModuleId, KclError> {
|
) -> Result<ModuleId, KclError> {
|
||||||
|
let resolved_path = ModulePath::from_import_path(path, &self.settings.project_directory);
|
||||||
|
|
||||||
match path {
|
match path {
|
||||||
ImportPath::Kcl { .. } => {
|
ImportPath::Kcl { .. } => {
|
||||||
exec_state.global.mod_loader.cycle_check(resolved_path, source_range)?;
|
exec_state.global.mod_loader.cycle_check(&resolved_path, source_range)?;
|
||||||
|
|
||||||
if let Some(id) = exec_state.id_for_module(resolved_path) {
|
if let Some(id) = exec_state.id_for_module(&resolved_path) {
|
||||||
return Ok(id);
|
return Ok(id);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -444,12 +440,12 @@ impl ExecutorContext {
|
|||||||
exec_state.add_id_to_source(id, source.clone());
|
exec_state.add_id_to_source(id, source.clone());
|
||||||
// TODO handle parsing errors properly
|
// TODO handle parsing errors properly
|
||||||
let parsed = crate::parsing::parse_str(&source.source, id).parse_errs_as_err()?;
|
let parsed = crate::parsing::parse_str(&source.source, id).parse_errs_as_err()?;
|
||||||
exec_state.add_module(id, resolved_path.clone(), ModuleRepr::Kcl(parsed, None));
|
exec_state.add_module(id, resolved_path, ModuleRepr::Kcl(parsed, None));
|
||||||
|
|
||||||
Ok(id)
|
Ok(id)
|
||||||
}
|
}
|
||||||
ImportPath::Foreign { .. } => {
|
ImportPath::Foreign { .. } => {
|
||||||
if let Some(id) = exec_state.id_for_module(resolved_path) {
|
if let Some(id) = exec_state.id_for_module(&resolved_path) {
|
||||||
return Ok(id);
|
return Ok(id);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -459,11 +455,11 @@ impl ExecutorContext {
|
|||||||
exec_state.add_path_to_source_id(resolved_path.clone(), id);
|
exec_state.add_path_to_source_id(resolved_path.clone(), id);
|
||||||
let format = super::import::format_from_annotations(attrs, path, source_range)?;
|
let format = super::import::format_from_annotations(attrs, path, source_range)?;
|
||||||
let geom = super::import::import_foreign(path, format, exec_state, self, source_range).await?;
|
let geom = super::import::import_foreign(path, format, exec_state, self, source_range).await?;
|
||||||
exec_state.add_module(id, resolved_path.clone(), ModuleRepr::Foreign(geom, None));
|
exec_state.add_module(id, resolved_path, ModuleRepr::Foreign(geom, None));
|
||||||
Ok(id)
|
Ok(id)
|
||||||
}
|
}
|
||||||
ImportPath::Std { .. } => {
|
ImportPath::Std { .. } => {
|
||||||
if let Some(id) = exec_state.id_for_module(resolved_path) {
|
if let Some(id) = exec_state.id_for_module(&resolved_path) {
|
||||||
return Ok(id);
|
return Ok(id);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -475,7 +471,7 @@ impl ExecutorContext {
|
|||||||
let parsed = crate::parsing::parse_str(&source.source, id)
|
let parsed = crate::parsing::parse_str(&source.source, id)
|
||||||
.parse_errs_as_err()
|
.parse_errs_as_err()
|
||||||
.unwrap();
|
.unwrap();
|
||||||
exec_state.add_module(id, resolved_path.clone(), ModuleRepr::Kcl(parsed, None));
|
exec_state.add_module(id, resolved_path, ModuleRepr::Kcl(parsed, None));
|
||||||
Ok(id)
|
Ok(id)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -636,7 +632,7 @@ impl ExecutorContext {
|
|||||||
.unwrap_or(false);
|
.unwrap_or(false);
|
||||||
|
|
||||||
if rust_impl {
|
if rust_impl {
|
||||||
if let ModulePath::Std { value: std_path } = &exec_state.mod_local.path {
|
if let Some(std_path) = &exec_state.mod_local.std_path {
|
||||||
let (func, props) = crate::std::std_fn(std_path, statement_kind.expect_name());
|
let (func, props) = crate::std::std_fn(std_path, statement_kind.expect_name());
|
||||||
KclValue::Function {
|
KclValue::Function {
|
||||||
value: FunctionSource::Std {
|
value: FunctionSource::Std {
|
||||||
@ -759,7 +755,7 @@ fn apply_ascription(
|
|||||||
};
|
};
|
||||||
KclError::Semantic(KclErrorDetails::new(
|
KclError::Semantic(KclErrorDetails::new(
|
||||||
format!(
|
format!(
|
||||||
"could not coerce value of type {} to type {ty}{suggestion}",
|
"could not coerce {} value to type {ty}{suggestion}",
|
||||||
value.human_friendly_type()
|
value.human_friendly_type()
|
||||||
),
|
),
|
||||||
vec![source_range],
|
vec![source_range],
|
||||||
@ -1652,7 +1648,7 @@ a = 42: string
|
|||||||
let err = result.unwrap_err();
|
let err = result.unwrap_err();
|
||||||
assert!(
|
assert!(
|
||||||
err.to_string()
|
err.to_string()
|
||||||
.contains("could not coerce value of type number(default units) to type string"),
|
.contains("could not coerce number(default units) value to type string"),
|
||||||
"Expected error but found {err:?}"
|
"Expected error but found {err:?}"
|
||||||
);
|
);
|
||||||
|
|
||||||
@ -1663,7 +1659,7 @@ a = 42: Plane
|
|||||||
let err = result.unwrap_err();
|
let err = result.unwrap_err();
|
||||||
assert!(
|
assert!(
|
||||||
err.to_string()
|
err.to_string()
|
||||||
.contains("could not coerce value of type number(default units) to type Plane"),
|
.contains("could not coerce number(default units) value to type Plane"),
|
||||||
"Expected error but found {err:?}"
|
"Expected error but found {err:?}"
|
||||||
);
|
);
|
||||||
|
|
||||||
@ -1673,9 +1669,8 @@ arr = [0]: [string]
|
|||||||
let result = parse_execute(program).await;
|
let result = parse_execute(program).await;
|
||||||
let err = result.unwrap_err();
|
let err = result.unwrap_err();
|
||||||
assert!(
|
assert!(
|
||||||
err.to_string().contains(
|
err.to_string()
|
||||||
"could not coerce value of type array of number(default units) with 1 value to type [string]"
|
.contains("could not coerce [any; 1] value to type [string]"),
|
||||||
),
|
|
||||||
"Expected error but found {err:?}"
|
"Expected error but found {err:?}"
|
||||||
);
|
);
|
||||||
|
|
||||||
@ -1686,7 +1681,7 @@ mixedArr = [0, "a"]: [number(mm)]
|
|||||||
let err = result.unwrap_err();
|
let err = result.unwrap_err();
|
||||||
assert!(
|
assert!(
|
||||||
err.to_string()
|
err.to_string()
|
||||||
.contains("could not coerce value of type array of number(default units), string with 2 values to type [number(mm)]"),
|
.contains("could not coerce [any; 2] value to type [number(mm)]"),
|
||||||
"Expected error but found {err:?}"
|
"Expected error but found {err:?}"
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
@ -281,34 +281,8 @@ impl KclValue {
|
|||||||
/// Human readable type name used in error messages. Should not be relied
|
/// Human readable type name used in error messages. Should not be relied
|
||||||
/// on for program logic.
|
/// on for program logic.
|
||||||
pub(crate) fn human_friendly_type(&self) -> String {
|
pub(crate) fn human_friendly_type(&self) -> String {
|
||||||
self.inner_human_friendly_type(1)
|
if let Some(t) = self.principal_type() {
|
||||||
}
|
return t.to_string();
|
||||||
|
|
||||||
fn inner_human_friendly_type(&self, max_depth: usize) -> String {
|
|
||||||
if let Some(pt) = self.principal_type() {
|
|
||||||
if max_depth > 0 {
|
|
||||||
// The principal type of an array uses the array's element type,
|
|
||||||
// which is oftentimes `any`, and that's not a helpful message. So
|
|
||||||
// we show the actual elements.
|
|
||||||
if let Some(elements) = self.as_array() {
|
|
||||||
// If it's empty, we want to show the type of the array.
|
|
||||||
if !elements.is_empty() {
|
|
||||||
// A max of 3 is good because it's common to use 3D points.
|
|
||||||
let max = 3;
|
|
||||||
let len = elements.len();
|
|
||||||
let ellipsis = if len > max { ", ..." } else { "" };
|
|
||||||
let element_label = if len == 1 { "value" } else { "values" };
|
|
||||||
let element_tys = elements
|
|
||||||
.iter()
|
|
||||||
.take(max)
|
|
||||||
.map(|elem| elem.inner_human_friendly_type(max_depth - 1))
|
|
||||||
.collect::<Vec<_>>()
|
|
||||||
.join(", ");
|
|
||||||
return format!("array of {element_tys}{ellipsis} with {len} {element_label}");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return pt.to_string();
|
|
||||||
}
|
}
|
||||||
match self {
|
match self {
|
||||||
KclValue::Uuid { .. } => "Unique ID (uuid)",
|
KclValue::Uuid { .. } => "Unique ID (uuid)",
|
||||||
@ -670,88 +644,3 @@ impl From<GeometryWithImportedGeometry> for KclValue {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#[cfg(test)]
|
|
||||||
mod tests {
|
|
||||||
use super::*;
|
|
||||||
|
|
||||||
#[test]
|
|
||||||
fn test_human_friendly_type() {
|
|
||||||
let len = KclValue::Number {
|
|
||||||
value: 1.0,
|
|
||||||
ty: NumericType::Known(UnitType::Length(UnitLen::Unknown)),
|
|
||||||
meta: vec![],
|
|
||||||
};
|
|
||||||
assert_eq!(len.human_friendly_type(), "number(Length)".to_string());
|
|
||||||
|
|
||||||
let unknown = KclValue::Number {
|
|
||||||
value: 1.0,
|
|
||||||
ty: NumericType::Unknown,
|
|
||||||
meta: vec![],
|
|
||||||
};
|
|
||||||
assert_eq!(unknown.human_friendly_type(), "number(unknown units)".to_string());
|
|
||||||
|
|
||||||
let mm = KclValue::Number {
|
|
||||||
value: 1.0,
|
|
||||||
ty: NumericType::Known(UnitType::Length(UnitLen::Mm)),
|
|
||||||
meta: vec![],
|
|
||||||
};
|
|
||||||
assert_eq!(mm.human_friendly_type(), "number(mm)".to_string());
|
|
||||||
|
|
||||||
let array1_mm = KclValue::HomArray {
|
|
||||||
value: vec![mm.clone()],
|
|
||||||
ty: RuntimeType::any(),
|
|
||||||
};
|
|
||||||
assert_eq!(
|
|
||||||
array1_mm.human_friendly_type(),
|
|
||||||
"array of number(mm) with 1 value".to_string()
|
|
||||||
);
|
|
||||||
|
|
||||||
let array2_mm = KclValue::HomArray {
|
|
||||||
value: vec![mm.clone(), mm.clone()],
|
|
||||||
ty: RuntimeType::any(),
|
|
||||||
};
|
|
||||||
assert_eq!(
|
|
||||||
array2_mm.human_friendly_type(),
|
|
||||||
"array of number(mm), number(mm) with 2 values".to_string()
|
|
||||||
);
|
|
||||||
|
|
||||||
let array3_mm = KclValue::HomArray {
|
|
||||||
value: vec![mm.clone(), mm.clone(), mm.clone()],
|
|
||||||
ty: RuntimeType::any(),
|
|
||||||
};
|
|
||||||
assert_eq!(
|
|
||||||
array3_mm.human_friendly_type(),
|
|
||||||
"array of number(mm), number(mm), number(mm) with 3 values".to_string()
|
|
||||||
);
|
|
||||||
|
|
||||||
let inches = KclValue::Number {
|
|
||||||
value: 1.0,
|
|
||||||
ty: NumericType::Known(UnitType::Length(UnitLen::Inches)),
|
|
||||||
meta: vec![],
|
|
||||||
};
|
|
||||||
let array4 = KclValue::HomArray {
|
|
||||||
value: vec![mm.clone(), mm.clone(), inches.clone(), mm.clone()],
|
|
||||||
ty: RuntimeType::any(),
|
|
||||||
};
|
|
||||||
assert_eq!(
|
|
||||||
array4.human_friendly_type(),
|
|
||||||
"array of number(mm), number(mm), number(in), ... with 4 values".to_string()
|
|
||||||
);
|
|
||||||
|
|
||||||
let empty_array = KclValue::HomArray {
|
|
||||||
value: vec![],
|
|
||||||
ty: RuntimeType::any(),
|
|
||||||
};
|
|
||||||
assert_eq!(empty_array.human_friendly_type(), "[any; 0]".to_string());
|
|
||||||
|
|
||||||
let array_nested = KclValue::HomArray {
|
|
||||||
value: vec![array2_mm.clone()],
|
|
||||||
ty: RuntimeType::any(),
|
|
||||||
};
|
|
||||||
assert_eq!(
|
|
||||||
array_nested.human_friendly_type(),
|
|
||||||
"array of [any; 2] with 1 value".to_string()
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
@ -1044,7 +1044,6 @@ impl ExecutorContext {
|
|||||||
|
|
||||||
let root_imports = crate::walk::import_universe(
|
let root_imports = crate::walk::import_universe(
|
||||||
self,
|
self,
|
||||||
&ModulePath::Main,
|
|
||||||
&ModuleRepr::Kcl(program.ast.clone(), None),
|
&ModuleRepr::Kcl(program.ast.clone(), None),
|
||||||
&mut universe,
|
&mut universe,
|
||||||
exec_state,
|
exec_state,
|
||||||
@ -1212,10 +1211,15 @@ impl ExecutorContext {
|
|||||||
/// SAFETY: the current thread must have sole access to the memory referenced in exec_state.
|
/// SAFETY: the current thread must have sole access to the memory referenced in exec_state.
|
||||||
async fn eval_prelude(&self, exec_state: &mut ExecState, source_range: SourceRange) -> Result<(), KclError> {
|
async fn eval_prelude(&self, exec_state: &mut ExecState, source_range: SourceRange) -> Result<(), KclError> {
|
||||||
if exec_state.stack().memory.requires_std() {
|
if exec_state.stack().memory.requires_std() {
|
||||||
let path = vec!["std".to_owned(), "prelude".to_owned()];
|
|
||||||
let resolved_path = ModulePath::from_std_import_path(&path)?;
|
|
||||||
let id = self
|
let id = self
|
||||||
.open_module(&ImportPath::Std { path }, &[], &resolved_path, exec_state, source_range)
|
.open_module(
|
||||||
|
&ImportPath::Std {
|
||||||
|
path: vec!["std".to_owned(), "prelude".to_owned()],
|
||||||
|
},
|
||||||
|
&[],
|
||||||
|
exec_state,
|
||||||
|
source_range,
|
||||||
|
)
|
||||||
.await?;
|
.await?;
|
||||||
let (module_memory, _) = self.exec_module_for_items(id, exec_state, source_range).await?;
|
let (module_memory, _) = self.exec_module_for_items(id, exec_state, source_range).await?;
|
||||||
|
|
||||||
|
@ -85,14 +85,14 @@ pub(super) struct ModuleState {
|
|||||||
/// Settings specified from annotations.
|
/// Settings specified from annotations.
|
||||||
pub settings: MetaSettings,
|
pub settings: MetaSettings,
|
||||||
pub(super) explicit_length_units: bool,
|
pub(super) explicit_length_units: bool,
|
||||||
pub(super) path: ModulePath,
|
pub(super) std_path: Option<String>,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl ExecState {
|
impl ExecState {
|
||||||
pub fn new(exec_context: &super::ExecutorContext) -> Self {
|
pub fn new(exec_context: &super::ExecutorContext) -> Self {
|
||||||
ExecState {
|
ExecState {
|
||||||
global: GlobalState::new(&exec_context.settings),
|
global: GlobalState::new(&exec_context.settings),
|
||||||
mod_local: ModuleState::new(ModulePath::Main, ProgramMemory::new(), Default::default()),
|
mod_local: ModuleState::new(None, ProgramMemory::new(), Default::default()),
|
||||||
exec_context: Some(exec_context.clone()),
|
exec_context: Some(exec_context.clone()),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -102,7 +102,7 @@ impl ExecState {
|
|||||||
|
|
||||||
*self = ExecState {
|
*self = ExecState {
|
||||||
global,
|
global,
|
||||||
mod_local: ModuleState::new(self.mod_local.path.clone(), ProgramMemory::new(), Default::default()),
|
mod_local: ModuleState::new(None, ProgramMemory::new(), Default::default()),
|
||||||
exec_context: Some(exec_context.clone()),
|
exec_context: Some(exec_context.clone()),
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
@ -337,14 +337,14 @@ impl GlobalState {
|
|||||||
}
|
}
|
||||||
|
|
||||||
impl ModuleState {
|
impl ModuleState {
|
||||||
pub(super) fn new(path: ModulePath, memory: Arc<ProgramMemory>, module_id: Option<ModuleId>) -> Self {
|
pub(super) fn new(std_path: Option<String>, memory: Arc<ProgramMemory>, module_id: Option<ModuleId>) -> Self {
|
||||||
ModuleState {
|
ModuleState {
|
||||||
id_generator: IdGenerator::new(module_id),
|
id_generator: IdGenerator::new(module_id),
|
||||||
stack: memory.new_stack(),
|
stack: memory.new_stack(),
|
||||||
pipe_value: Default::default(),
|
pipe_value: Default::default(),
|
||||||
module_exports: Default::default(),
|
module_exports: Default::default(),
|
||||||
explicit_length_units: false,
|
explicit_length_units: false,
|
||||||
path,
|
std_path,
|
||||||
settings: MetaSettings {
|
settings: MetaSettings {
|
||||||
default_length_units: Default::default(),
|
default_length_units: Default::default(),
|
||||||
default_angle_units: Default::default(),
|
default_angle_units: Default::default(),
|
||||||
|
@ -153,6 +153,13 @@ impl ModulePath {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub(crate) fn std_path(&self) -> Option<String> {
|
||||||
|
match self {
|
||||||
|
ModulePath::Std { value: p } => Some(p.clone()),
|
||||||
|
_ => None,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
pub(crate) async fn source(&self, fs: &FileManager, source_range: SourceRange) -> Result<ModuleSource, KclError> {
|
pub(crate) async fn source(&self, fs: &FileManager, source_range: SourceRange) -> Result<ModuleSource, KclError> {
|
||||||
match self {
|
match self {
|
||||||
ModulePath::Local { value: p } => Ok(ModuleSource {
|
ModulePath::Local { value: p } => Ok(ModuleSource {
|
||||||
@ -174,52 +181,24 @@ impl ModulePath {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub(crate) fn from_import_path(
|
pub(crate) fn from_import_path(path: &ImportPath, project_directory: &Option<TypedPath>) -> Self {
|
||||||
path: &ImportPath,
|
|
||||||
project_directory: &Option<TypedPath>,
|
|
||||||
import_from: &ModulePath,
|
|
||||||
) -> Result<Self, KclError> {
|
|
||||||
match path {
|
match path {
|
||||||
ImportPath::Kcl { filename: path } | ImportPath::Foreign { path } => {
|
ImportPath::Kcl { filename: path } | ImportPath::Foreign { path } => {
|
||||||
let resolved_path = match import_from {
|
let resolved_path = if let Some(project_dir) = project_directory {
|
||||||
ModulePath::Main => {
|
|
||||||
if let Some(project_dir) = project_directory {
|
|
||||||
project_dir.join_typed(path)
|
project_dir.join_typed(path)
|
||||||
} else {
|
} else {
|
||||||
path.clone()
|
path.clone()
|
||||||
}
|
|
||||||
}
|
|
||||||
ModulePath::Local { value } => {
|
|
||||||
let import_from_dir = value.parent();
|
|
||||||
let base = import_from_dir.as_ref().or(project_directory.as_ref());
|
|
||||||
if let Some(dir) = base {
|
|
||||||
dir.join_typed(path)
|
|
||||||
} else {
|
|
||||||
path.clone()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
ModulePath::Std { .. } => {
|
|
||||||
let message = format!("Cannot import a non-std KCL file from std: {path}.");
|
|
||||||
debug_assert!(false, "{}", &message);
|
|
||||||
return Err(KclError::Internal(KclErrorDetails::new(message, vec![])));
|
|
||||||
}
|
|
||||||
};
|
};
|
||||||
|
ModulePath::Local { value: resolved_path }
|
||||||
Ok(ModulePath::Local { value: resolved_path })
|
|
||||||
}
|
}
|
||||||
ImportPath::Std { path } => Self::from_std_import_path(path),
|
ImportPath::Std { path } => {
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
pub(crate) fn from_std_import_path(path: &[String]) -> Result<Self, KclError> {
|
|
||||||
// For now we only support importing from singly-nested modules inside std.
|
// For now we only support importing from singly-nested modules inside std.
|
||||||
if path.len() != 2 || path[0] != "std" {
|
assert_eq!(path.len(), 2);
|
||||||
let message = format!("Invalid std import path: {path:?}.");
|
assert_eq!(&path[0], "std");
|
||||||
debug_assert!(false, "{}", &message);
|
|
||||||
return Err(KclError::Internal(KclErrorDetails::new(message, vec![])));
|
|
||||||
}
|
|
||||||
|
|
||||||
Ok(ModulePath::Std { value: path[1].clone() })
|
ModulePath::Std { value: path[1].clone() }
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -384,27 +384,6 @@ mod any_type {
|
|||||||
super::execute(TEST_NAME, false).await
|
super::execute(TEST_NAME, false).await
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
mod error_with_point_shows_numeric_units {
|
|
||||||
const TEST_NAME: &str = "error_with_point_shows_numeric_units";
|
|
||||||
|
|
||||||
/// 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 artifact_graph_example_code1 {
|
mod artifact_graph_example_code1 {
|
||||||
const TEST_NAME: &str = "artifact_graph_example_code1";
|
const TEST_NAME: &str = "artifact_graph_example_code1";
|
||||||
|
|
||||||
@ -3402,45 +3381,3 @@ mod nested_assembly {
|
|||||||
super::execute(TEST_NAME, true).await
|
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,11 +44,10 @@ 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: Option<TyF64> = args.get_kw_arg_opt_typed("radius", &RuntimeType::length(), exec_state)?;
|
let radius: TyF64 = args.get_kw_arg_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, diameter, tag, exec_state, args).await?;
|
let sketch = inner_circle(sketch_or_surface, center, radius, tag, exec_state, args).await?;
|
||||||
Ok(KclValue::Sketch {
|
Ok(KclValue::Sketch {
|
||||||
value: Box::new(sketch),
|
value: Box::new(sketch),
|
||||||
})
|
})
|
||||||
@ -57,8 +56,7 @@ 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: Option<TyF64>,
|
radius: TyF64,
|
||||||
diameter: Option<TyF64>,
|
|
||||||
tag: Option<TagNode>,
|
tag: Option<TagNode>,
|
||||||
exec_state: &mut ExecState,
|
exec_state: &mut ExecState,
|
||||||
args: Args,
|
args: Args,
|
||||||
@ -70,25 +68,6 @@ 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)];
|
||||||
|
|
||||||
|
@ -34,9 +34,9 @@ pub(crate) type Universe = HashMap<String, DependencyInfo>;
|
|||||||
pub fn import_graph(progs: &Universe, ctx: &ExecutorContext) -> Result<Vec<Vec<String>>, KclError> {
|
pub fn import_graph(progs: &Universe, ctx: &ExecutorContext) -> Result<Vec<Vec<String>>, KclError> {
|
||||||
let mut graph = Graph::new();
|
let mut graph = Graph::new();
|
||||||
|
|
||||||
for (name, (_, _, path, repr)) in progs.iter() {
|
for (name, (_, _, _, repr)) in progs.iter() {
|
||||||
graph.extend(
|
graph.extend(
|
||||||
import_dependencies(path, repr, ctx)?
|
import_dependencies(repr, ctx)?
|
||||||
.into_iter()
|
.into_iter()
|
||||||
.map(|(dependency, _, _)| (name.clone(), dependency))
|
.map(|(dependency, _, _)| (name.clone(), dependency))
|
||||||
.collect::<Vec<_>>(),
|
.collect::<Vec<_>>(),
|
||||||
@ -120,26 +120,17 @@ fn topsort(all_modules: &[&str], graph: Graph) -> Result<Vec<Vec<String>>, KclEr
|
|||||||
|
|
||||||
type ImportDependencies = Vec<(String, AstNode<ImportStatement>, ModulePath)>;
|
type ImportDependencies = Vec<(String, AstNode<ImportStatement>, ModulePath)>;
|
||||||
|
|
||||||
pub(crate) fn import_dependencies(
|
pub(crate) fn import_dependencies(repr: &ModuleRepr, ctx: &ExecutorContext) -> Result<ImportDependencies, KclError> {
|
||||||
path: &ModulePath,
|
|
||||||
repr: &ModuleRepr,
|
|
||||||
ctx: &ExecutorContext,
|
|
||||||
) -> Result<ImportDependencies, KclError> {
|
|
||||||
let ModuleRepr::Kcl(prog, _) = repr else {
|
let ModuleRepr::Kcl(prog, _) = repr else {
|
||||||
// It has no dependencies, so return an empty list.
|
// It has no dependencies, so return an empty list.
|
||||||
return Ok(vec![]);
|
return Ok(vec![]);
|
||||||
};
|
};
|
||||||
|
|
||||||
let ret = Arc::new(Mutex::new(vec![]));
|
let ret = Arc::new(Mutex::new(vec![]));
|
||||||
fn walk(
|
fn walk(ret: Arc<Mutex<ImportDependencies>>, node: Node<'_>, ctx: &ExecutorContext) -> Result<(), KclError> {
|
||||||
ret: Arc<Mutex<ImportDependencies>>,
|
|
||||||
node: Node<'_>,
|
|
||||||
import_from: &ModulePath,
|
|
||||||
ctx: &ExecutorContext,
|
|
||||||
) -> Result<(), KclError> {
|
|
||||||
if let Node::ImportStatement(is) = node {
|
if let Node::ImportStatement(is) = node {
|
||||||
// We only care about Kcl and Foreign imports for now.
|
// We only care about Kcl and Foreign imports for now.
|
||||||
let resolved_path = ModulePath::from_import_path(&is.path, &ctx.settings.project_directory, import_from)?;
|
let resolved_path = ModulePath::from_import_path(&is.path, &ctx.settings.project_directory);
|
||||||
match &is.path {
|
match &is.path {
|
||||||
ImportPath::Kcl { filename } => {
|
ImportPath::Kcl { filename } => {
|
||||||
// We need to lock the mutex to push the dependency.
|
// We need to lock the mutex to push the dependency.
|
||||||
@ -169,13 +160,13 @@ pub(crate) fn import_dependencies(
|
|||||||
}
|
}
|
||||||
|
|
||||||
for child in node.children().iter() {
|
for child in node.children().iter() {
|
||||||
walk(ret.clone(), *child, import_from, ctx)?;
|
walk(ret.clone(), *child, ctx)?;
|
||||||
}
|
}
|
||||||
|
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
walk(ret.clone(), prog.into(), path, ctx)?;
|
walk(ret.clone(), prog.into(), ctx)?;
|
||||||
|
|
||||||
let ret = ret.lock().map_err(|err| {
|
let ret = ret.lock().map_err(|err| {
|
||||||
KclError::Internal(KclErrorDetails::new(
|
KclError::Internal(KclErrorDetails::new(
|
||||||
@ -191,12 +182,11 @@ pub(crate) fn import_dependencies(
|
|||||||
/// only `repr`'s non-transitive imports.
|
/// only `repr`'s non-transitive imports.
|
||||||
pub(crate) async fn import_universe(
|
pub(crate) async fn import_universe(
|
||||||
ctx: &ExecutorContext,
|
ctx: &ExecutorContext,
|
||||||
path: &ModulePath,
|
|
||||||
repr: &ModuleRepr,
|
repr: &ModuleRepr,
|
||||||
out: &mut Universe,
|
out: &mut Universe,
|
||||||
exec_state: &mut ExecState,
|
exec_state: &mut ExecState,
|
||||||
) -> Result<UniverseMap, KclError> {
|
) -> Result<UniverseMap, KclError> {
|
||||||
let modules = import_dependencies(path, repr, ctx)?;
|
let modules = import_dependencies(repr, ctx)?;
|
||||||
let mut module_imports = HashMap::new();
|
let mut module_imports = HashMap::new();
|
||||||
for (filename, import_stmt, module_path) in modules {
|
for (filename, import_stmt, module_path) in modules {
|
||||||
match &module_path {
|
match &module_path {
|
||||||
@ -218,7 +208,7 @@ pub(crate) async fn import_universe(
|
|||||||
let source_range = SourceRange::from(&import_stmt);
|
let source_range = SourceRange::from(&import_stmt);
|
||||||
let attrs = &import_stmt.outer_attrs;
|
let attrs = &import_stmt.outer_attrs;
|
||||||
let module_id = ctx
|
let module_id = ctx
|
||||||
.open_module(&import_stmt.path, attrs, &module_path, exec_state, source_range)
|
.open_module(&import_stmt.path, attrs, exec_state, source_range)
|
||||||
.await?;
|
.await?;
|
||||||
|
|
||||||
let repr = {
|
let repr = {
|
||||||
@ -231,8 +221,8 @@ pub(crate) async fn import_universe(
|
|||||||
module_info.repr.clone()
|
module_info.repr.clone()
|
||||||
};
|
};
|
||||||
|
|
||||||
out.insert(filename, (import_stmt, module_id, module_path.clone(), repr.clone()));
|
out.insert(filename, (import_stmt, module_id, module_path, repr.clone()));
|
||||||
Box::pin(import_universe(ctx, &module_path, &repr, out, exec_state)).await?;
|
Box::pin(import_universe(ctx, &repr, out, exec_state)).await?;
|
||||||
}
|
}
|
||||||
|
|
||||||
Ok(module_imports)
|
Ok(module_imports)
|
||||||
|
@ -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], diameter = 10))
|
/// |> subtract2d(tool = circle(center = [0, 15], radius = 5))
|
||||||
///
|
///
|
||||||
/// example = extrude(exampleSketch, length = 5)
|
/// example = extrude(exampleSketch, length = 5)
|
||||||
/// ```
|
/// ```
|
||||||
@ -34,10 +34,8 @@ 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. Incompatible with `diameter`.
|
/// The radius of the circle.
|
||||||
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 {}
|
||||||
|
@ -4,8 +4,7 @@ description: Error from executing argument_error.kcl
|
|||||||
---
|
---
|
||||||
KCL Semantic error
|
KCL Semantic error
|
||||||
|
|
||||||
× semantic: f requires a value with type `fn(any): any`, but found array of
|
× semantic: f requires a value with type `fn(any): any`, but found [any; 2]
|
||||||
│ number(default units), number(default units) with 2 values
|
|
||||||
╭─[5:1]
|
╭─[5:1]
|
||||||
4 │
|
4 │
|
||||||
5 │ map(f, f = [0, 1])
|
5 │ map(f, f = [0, 1])
|
||||||
@ -16,7 +15,7 @@ KCL Semantic error
|
|||||||
╰─▶ KCL Semantic error
|
╰─▶ KCL Semantic error
|
||||||
|
|
||||||
× semantic: f requires a value with type `fn(any): any`, but found
|
× semantic: f requires a value with type `fn(any): any`, but found
|
||||||
│ array of number(default units), number(default units) with 2 values
|
│ [any; 2]
|
||||||
╭─[5:12]
|
╭─[5:12]
|
||||||
4 │
|
4 │
|
||||||
5 │ map(f, f = [0, 1])
|
5 │ map(f, f = [0, 1])
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
---
|
---
|
||||||
source: kcl-lib/src/simulation_tests.rs
|
source: kcl/src/simulation_tests.rs
|
||||||
description: Error from executing array_elem_pop_fail.kcl
|
description: Error from executing array_elem_pop_fail.kcl
|
||||||
---
|
---
|
||||||
KCL UndefinedValue error
|
KCL UndefinedValue error
|
||||||
|
@ -1,57 +0,0 @@
|
|||||||
---
|
|
||||||
source: kcl-lib/src/simulation_tests.rs
|
|
||||||
description: Artifact commands error_with_point_shows_numeric_units.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": 0.0,
|
|
||||||
"z": 1.0
|
|
||||||
},
|
|
||||||
"size": 60.0,
|
|
||||||
"clobber": false,
|
|
||||||
"hide": true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
]
|
|
@ -1,6 +0,0 @@
|
|||||||
---
|
|
||||||
source: kcl-lib/src/simulation_tests.rs
|
|
||||||
description: Artifact graph flowchart error_with_point_shows_numeric_units.kcl
|
|
||||||
extension: md
|
|
||||||
snapshot_kind: binary
|
|
||||||
---
|
|
@ -1,5 +0,0 @@
|
|||||||
```mermaid
|
|
||||||
flowchart LR
|
|
||||||
1["Plane<br>[0, 17, 0]"]
|
|
||||||
%% [ProgramBodyItem { index: 0 }, ExpressionStatementExpr, PipeBodyItem { index: 0 }]
|
|
||||||
```
|
|
@ -1,201 +0,0 @@
|
|||||||
---
|
|
||||||
source: kcl-lib/src/simulation_tests.rs
|
|
||||||
description: Result of parsing error_with_point_shows_numeric_units.kcl
|
|
||||||
---
|
|
||||||
{
|
|
||||||
"Ok": {
|
|
||||||
"body": [
|
|
||||||
{
|
|
||||||
"commentStart": 0,
|
|
||||||
"end": 0,
|
|
||||||
"expression": {
|
|
||||||
"body": [
|
|
||||||
{
|
|
||||||
"callee": {
|
|
||||||
"abs_path": false,
|
|
||||||
"commentStart": 0,
|
|
||||||
"end": 0,
|
|
||||||
"name": {
|
|
||||||
"commentStart": 0,
|
|
||||||
"end": 0,
|
|
||||||
"name": "startSketchOn",
|
|
||||||
"start": 0,
|
|
||||||
"type": "Identifier"
|
|
||||||
},
|
|
||||||
"path": [],
|
|
||||||
"start": 0,
|
|
||||||
"type": "Name"
|
|
||||||
},
|
|
||||||
"commentStart": 0,
|
|
||||||
"end": 0,
|
|
||||||
"start": 0,
|
|
||||||
"type": "CallExpressionKw",
|
|
||||||
"type": "CallExpressionKw",
|
|
||||||
"unlabeled": {
|
|
||||||
"abs_path": false,
|
|
||||||
"commentStart": 0,
|
|
||||||
"end": 0,
|
|
||||||
"name": {
|
|
||||||
"commentStart": 0,
|
|
||||||
"end": 0,
|
|
||||||
"name": "XZ",
|
|
||||||
"start": 0,
|
|
||||||
"type": "Identifier"
|
|
||||||
},
|
|
||||||
"path": [],
|
|
||||||
"start": 0,
|
|
||||||
"type": "Name",
|
|
||||||
"type": "Name"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"arguments": [
|
|
||||||
{
|
|
||||||
"type": "LabeledArg",
|
|
||||||
"label": {
|
|
||||||
"commentStart": 0,
|
|
||||||
"end": 0,
|
|
||||||
"name": "center",
|
|
||||||
"start": 0,
|
|
||||||
"type": "Identifier"
|
|
||||||
},
|
|
||||||
"arg": {
|
|
||||||
"commentStart": 0,
|
|
||||||
"elements": [
|
|
||||||
{
|
|
||||||
"callee": {
|
|
||||||
"abs_path": false,
|
|
||||||
"commentStart": 0,
|
|
||||||
"end": 0,
|
|
||||||
"name": {
|
|
||||||
"commentStart": 0,
|
|
||||||
"end": 0,
|
|
||||||
"name": "sin",
|
|
||||||
"start": 0,
|
|
||||||
"type": "Identifier"
|
|
||||||
},
|
|
||||||
"path": [],
|
|
||||||
"start": 0,
|
|
||||||
"type": "Name"
|
|
||||||
},
|
|
||||||
"commentStart": 0,
|
|
||||||
"end": 0,
|
|
||||||
"start": 0,
|
|
||||||
"type": "CallExpressionKw",
|
|
||||||
"type": "CallExpressionKw",
|
|
||||||
"unlabeled": {
|
|
||||||
"commentStart": 0,
|
|
||||||
"end": 0,
|
|
||||||
"raw": "66.6deg",
|
|
||||||
"start": 0,
|
|
||||||
"type": "Literal",
|
|
||||||
"type": "Literal",
|
|
||||||
"value": {
|
|
||||||
"value": 66.6,
|
|
||||||
"suffix": "Deg"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"callee": {
|
|
||||||
"abs_path": false,
|
|
||||||
"commentStart": 0,
|
|
||||||
"end": 0,
|
|
||||||
"name": {
|
|
||||||
"commentStart": 0,
|
|
||||||
"end": 0,
|
|
||||||
"name": "cos",
|
|
||||||
"start": 0,
|
|
||||||
"type": "Identifier"
|
|
||||||
},
|
|
||||||
"path": [],
|
|
||||||
"start": 0,
|
|
||||||
"type": "Name"
|
|
||||||
},
|
|
||||||
"commentStart": 0,
|
|
||||||
"end": 0,
|
|
||||||
"start": 0,
|
|
||||||
"type": "CallExpressionKw",
|
|
||||||
"type": "CallExpressionKw",
|
|
||||||
"unlabeled": {
|
|
||||||
"commentStart": 0,
|
|
||||||
"end": 0,
|
|
||||||
"raw": "66.6deg",
|
|
||||||
"start": 0,
|
|
||||||
"type": "Literal",
|
|
||||||
"type": "Literal",
|
|
||||||
"value": {
|
|
||||||
"value": 66.6,
|
|
||||||
"suffix": "Deg"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"end": 0,
|
|
||||||
"start": 0,
|
|
||||||
"type": "ArrayExpression",
|
|
||||||
"type": "ArrayExpression"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "LabeledArg",
|
|
||||||
"label": {
|
|
||||||
"commentStart": 0,
|
|
||||||
"end": 0,
|
|
||||||
"name": "radius",
|
|
||||||
"start": 0,
|
|
||||||
"type": "Identifier"
|
|
||||||
},
|
|
||||||
"arg": {
|
|
||||||
"commentStart": 0,
|
|
||||||
"end": 0,
|
|
||||||
"raw": "1",
|
|
||||||
"start": 0,
|
|
||||||
"type": "Literal",
|
|
||||||
"type": "Literal",
|
|
||||||
"value": {
|
|
||||||
"value": 1.0,
|
|
||||||
"suffix": "None"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"callee": {
|
|
||||||
"abs_path": false,
|
|
||||||
"commentStart": 0,
|
|
||||||
"end": 0,
|
|
||||||
"name": {
|
|
||||||
"commentStart": 0,
|
|
||||||
"end": 0,
|
|
||||||
"name": "circle",
|
|
||||||
"start": 0,
|
|
||||||
"type": "Identifier"
|
|
||||||
},
|
|
||||||
"path": [],
|
|
||||||
"start": 0,
|
|
||||||
"type": "Name"
|
|
||||||
},
|
|
||||||
"commentStart": 0,
|
|
||||||
"end": 0,
|
|
||||||
"start": 0,
|
|
||||||
"type": "CallExpressionKw",
|
|
||||||
"type": "CallExpressionKw",
|
|
||||||
"unlabeled": null
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"commentStart": 0,
|
|
||||||
"end": 0,
|
|
||||||
"start": 0,
|
|
||||||
"type": "PipeExpression",
|
|
||||||
"type": "PipeExpression"
|
|
||||||
},
|
|
||||||
"start": 0,
|
|
||||||
"type": "ExpressionStatement",
|
|
||||||
"type": "ExpressionStatement"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"commentStart": 0,
|
|
||||||
"end": 0,
|
|
||||||
"start": 0
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,29 +0,0 @@
|
|||||||
---
|
|
||||||
source: kcl-lib/src/simulation_tests.rs
|
|
||||||
description: Error from executing error_with_point_shows_numeric_units.kcl
|
|
||||||
---
|
|
||||||
KCL Semantic error
|
|
||||||
|
|
||||||
× semantic: center requires a value with type `Point2d`, but found array of
|
|
||||||
│ number(Count), number(Count) with 2 values
|
|
||||||
╭─[2:6]
|
|
||||||
1 │ startSketchOn(XZ)
|
|
||||||
2 │ ╭──▶ |> circle(center = [
|
|
||||||
3 │ ││ sin(66.6deg),
|
|
||||||
4 │ ││ cos(66.6deg)
|
|
||||||
5 │ ├──▶ ], radius = 1)
|
|
||||||
· ╰───── tests/error_with_point_shows_numeric_units/input.kcl
|
|
||||||
· ╰───── tests/error_with_point_shows_numeric_units/input.kcl
|
|
||||||
╰────
|
|
||||||
╰─▶ KCL Semantic error
|
|
||||||
|
|
||||||
× semantic: center requires a value with type `Point2d`, but found
|
|
||||||
│ array of number(Count), number(Count) with 2 values
|
|
||||||
╭─[2:22]
|
|
||||||
1 │ startSketchOn(XZ)
|
|
||||||
2 │ ╭─▶ |> circle(center = [
|
|
||||||
3 │ │ sin(66.6deg),
|
|
||||||
4 │ │ cos(66.6deg)
|
|
||||||
5 │ ├─▶ ], radius = 1)
|
|
||||||
· ╰──── tests/error_with_point_shows_numeric_units/input.kcl
|
|
||||||
╰────
|
|
@ -1,5 +0,0 @@
|
|||||||
startSketchOn(XZ)
|
|
||||||
|> circle(center = [
|
|
||||||
sin(66.6deg),
|
|
||||||
cos(66.6deg)
|
|
||||||
], radius = 1)
|
|
@ -1,19 +0,0 @@
|
|||||||
---
|
|
||||||
source: kcl-lib/src/simulation_tests.rs
|
|
||||||
description: Operations executed error_with_point_shows_numeric_units.kcl
|
|
||||||
---
|
|
||||||
[
|
|
||||||
{
|
|
||||||
"type": "StdLibCall",
|
|
||||||
"name": "startSketchOn",
|
|
||||||
"unlabeledArg": {
|
|
||||||
"value": {
|
|
||||||
"type": "Plane",
|
|
||||||
"artifact_id": "[uuid]"
|
|
||||||
},
|
|
||||||
"sourceRange": []
|
|
||||||
},
|
|
||||||
"labeledArgs": {},
|
|
||||||
"sourceRange": []
|
|
||||||
}
|
|
||||||
]
|
|
@ -1,6 +0,0 @@
|
|||||||
---
|
|
||||||
source: kcl-lib/src/simulation_tests.rs
|
|
||||||
description: Result of unparsing error_with_point_shows_numeric_units.kcl
|
|
||||||
---
|
|
||||||
startSketchOn(XZ)
|
|
||||||
|> circle(center = [sin(66.6deg), cos(66.6deg)], radius = 1)
|
|
@ -185,20 +185,21 @@ 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 End"]
|
87["Cap Start"]
|
||||||
%% 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["SweepEdge Opposite"]
|
90["Cap End"]
|
||||||
|
%% 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 Adjacent"]
|
97["SweepEdge Opposite"]
|
||||||
98["SweepEdge Adjacent"]
|
98["SweepEdge Adjacent"]
|
||||||
99["SweepEdge Adjacent"]
|
99["SweepEdge Adjacent"]
|
||||||
100["SweepEdge Adjacent"]
|
100["SweepEdge Adjacent"]
|
||||||
@ -213,14 +214,15 @@ flowchart LR
|
|||||||
109["SweepEdge Adjacent"]
|
109["SweepEdge Adjacent"]
|
||||||
110["SweepEdge Adjacent"]
|
110["SweepEdge Adjacent"]
|
||||||
111["SweepEdge Adjacent"]
|
111["SweepEdge Adjacent"]
|
||||||
112["EdgeCut Fillet<br>[2999, 3289, 0]"]
|
112["SweepEdge Adjacent"]
|
||||||
%% [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
|
||||||
@ -281,84 +283,84 @@ flowchart LR
|
|||||||
20 ---- 64
|
20 ---- 64
|
||||||
82 --- 20
|
82 --- 20
|
||||||
27 --- 83
|
27 --- 83
|
||||||
27 x--> 86
|
27 x--> 87
|
||||||
27 --- 96
|
27 --- 97
|
||||||
27 --- 111
|
27 --- 112
|
||||||
28 --- 68
|
28 --- 68
|
||||||
28 x--> 85
|
28 x--> 85
|
||||||
28 --- 90
|
28 --- 91
|
||||||
28 --- 97
|
28 --- 98
|
||||||
31 --- 70
|
31 --- 70
|
||||||
31 x--> 84
|
31 x--> 84
|
||||||
31 --- 94
|
31 --- 95
|
||||||
31 --- 101
|
31 --- 102
|
||||||
32 --- 71
|
32 --- 71
|
||||||
32 x--> 84
|
32 x--> 84
|
||||||
32 --- 93
|
32 --- 94
|
||||||
32 --- 100
|
32 --- 101
|
||||||
33 --- 69
|
33 --- 69
|
||||||
33 x--> 84
|
33 x--> 84
|
||||||
33 --- 92
|
33 --- 93
|
||||||
33 --- 99
|
33 --- 100
|
||||||
34 --- 72
|
34 --- 72
|
||||||
34 x--> 84
|
34 x--> 84
|
||||||
34 --- 91
|
34 --- 92
|
||||||
34 --- 98
|
34 --- 99
|
||||||
62 <--x 36
|
62 <--x 36
|
||||||
36 --- 78
|
36 --- 78
|
||||||
36 x--> 103
|
36 x--> 104
|
||||||
62 <--x 37
|
62 <--x 37
|
||||||
37 --- 77
|
37 --- 77
|
||||||
37 --- 103
|
37 --- 104
|
||||||
62 <--x 38
|
62 <--x 38
|
||||||
38 --- 82
|
38 --- 82
|
||||||
38 --- 104
|
38 --- 105
|
||||||
62 <--x 39
|
62 <--x 39
|
||||||
39 --- 79
|
39 --- 79
|
||||||
39 --- 105
|
39 --- 106
|
||||||
62 <--x 40
|
62 <--x 40
|
||||||
40 --- 74
|
40 --- 74
|
||||||
40 --- 106
|
40 --- 107
|
||||||
62 <--x 41
|
62 <--x 41
|
||||||
41 --- 81
|
41 --- 81
|
||||||
41 --- 107
|
41 --- 108
|
||||||
62 <--x 42
|
62 <--x 42
|
||||||
42 --- 76
|
42 --- 76
|
||||||
42 --- 108
|
42 --- 109
|
||||||
62 <--x 43
|
62 <--x 43
|
||||||
43 --- 75
|
43 --- 75
|
||||||
43 --- 109
|
43 --- 110
|
||||||
62 <--x 44
|
62 <--x 44
|
||||||
44 --- 80
|
44 --- 80
|
||||||
44 --- 110
|
44 --- 111
|
||||||
45 --- 73
|
45 --- 73
|
||||||
45 x--> 82
|
45 x--> 82
|
||||||
45 --- 95
|
45 --- 96
|
||||||
45 --- 102
|
45 --- 103
|
||||||
59 --- 68
|
59 --- 68
|
||||||
59 --- 85
|
59 --- 85
|
||||||
59 --- 88
|
59 --- 89
|
||||||
59 --- 90
|
59 --- 91
|
||||||
59 --- 97
|
59 --- 98
|
||||||
60 --- 83
|
60 --- 83
|
||||||
60 --- 86
|
60 --- 87
|
||||||
60 --- 89
|
60 --- 90
|
||||||
60 --- 96
|
60 --- 97
|
||||||
60 --- 111
|
60 --- 112
|
||||||
61 --- 69
|
61 --- 69
|
||||||
61 --- 70
|
61 --- 70
|
||||||
61 --- 71
|
61 --- 71
|
||||||
61 --- 72
|
61 --- 72
|
||||||
61 --- 84
|
61 --- 84
|
||||||
61 --- 87
|
61 --- 88
|
||||||
61 --- 91
|
|
||||||
61 --- 92
|
61 --- 92
|
||||||
61 --- 93
|
61 --- 93
|
||||||
61 --- 94
|
61 --- 94
|
||||||
61 --- 98
|
61 --- 95
|
||||||
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
|
||||||
@ -368,7 +370,6 @@ 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
|
||||||
@ -376,52 +377,54 @@ flowchart LR
|
|||||||
62 --- 108
|
62 --- 108
|
||||||
62 --- 109
|
62 --- 109
|
||||||
62 --- 110
|
62 --- 110
|
||||||
|
62 --- 111
|
||||||
64 --- 73
|
64 --- 73
|
||||||
64 --- 95
|
64 --- 86
|
||||||
64 --- 102
|
64 --- 96
|
||||||
68 --- 90
|
64 --- 103
|
||||||
68 --- 97
|
68 --- 91
|
||||||
69 --- 92
|
68 --- 98
|
||||||
69 --- 99
|
69 --- 93
|
||||||
100 <--x 69
|
69 --- 100
|
||||||
70 --- 94
|
101 <--x 69
|
||||||
98 <--x 70
|
70 --- 95
|
||||||
70 --- 101
|
99 <--x 70
|
||||||
71 --- 93
|
70 --- 102
|
||||||
71 --- 100
|
71 --- 94
|
||||||
101 <--x 71
|
71 --- 101
|
||||||
72 --- 91
|
102 <--x 71
|
||||||
72 --- 98
|
72 --- 92
|
||||||
99 <--x 72
|
72 --- 99
|
||||||
73 --- 95
|
100 <--x 72
|
||||||
73 --- 102
|
73 --- 96
|
||||||
95 <--x 74
|
73 --- 103
|
||||||
105 <--x 74
|
106 <--x 74
|
||||||
74 --- 106
|
74 --- 107
|
||||||
108 <--x 75
|
109 <--x 75
|
||||||
75 --- 109
|
75 --- 110
|
||||||
107 <--x 76
|
108 <--x 76
|
||||||
76 --- 108
|
76 --- 109
|
||||||
77 --- 103
|
77 --- 104
|
||||||
78 --- 103
|
78 --- 104
|
||||||
110 <--x 78
|
111 <--x 78
|
||||||
104 <--x 79
|
105 <--x 79
|
||||||
79 --- 105
|
79 --- 106
|
||||||
109 <--x 80
|
110 <--x 80
|
||||||
80 --- 110
|
80 --- 111
|
||||||
106 <--x 81
|
107 <--x 81
|
||||||
81 --- 107
|
81 --- 108
|
||||||
82 --- 104
|
82 --- 105
|
||||||
83 --- 96
|
83 --- 97
|
||||||
83 --- 111
|
83 --- 112
|
||||||
91 <--x 87
|
96 <--x 86
|
||||||
92 <--x 87
|
92 <--x 88
|
||||||
93 <--x 87
|
93 <--x 88
|
||||||
94 <--x 87
|
94 <--x 88
|
||||||
90 <--x 88
|
95 <--x 88
|
||||||
96 <--x 89
|
91 <--x 89
|
||||||
98 <--x 113
|
97 <--x 90
|
||||||
99 <--x 112
|
99 <--x 114
|
||||||
100 <--x 115
|
100 <--x 113
|
||||||
101 <--x 114
|
101 <--x 116
|
||||||
|
102 <--x 115
|
||||||
```
|
```
|
||||||
|
@ -1172,7 +1172,7 @@ description: Variables in memory after executing brake-rotor.kcl
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"height": -7.0,
|
"height": -7.0,
|
||||||
"startCapId": null,
|
"startCapId": "[uuid]",
|
||||||
"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": null,
|
"startCapId": "[uuid]",
|
||||||
"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": null,
|
"startCapId": "[uuid]",
|
||||||
"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": null,
|
"startCapId": "[uuid]",
|
||||||
"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": null,
|
"startCapId": "[uuid]",
|
||||||
"endCapId": null,
|
"endCapId": null,
|
||||||
"units": {
|
"units": {
|
||||||
"type": "Mm"
|
"type": "Mm"
|
||||||
|
Before Width: | Height: | Size: 81 KiB After Width: | Height: | Size: 82 KiB |
@ -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": 0.0
|
"z": 110.0
|
||||||
},
|
},
|
||||||
"x_axis": {
|
"x_axis": {
|
||||||
"x": 1.0,
|
"x": 0.9063,
|
||||||
"y": 0.0,
|
"y": 0.0,
|
||||||
"z": 0.0
|
"z": 0.4226
|
||||||
},
|
},
|
||||||
"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.0,
|
"x": -0.4226,
|
||||||
"y": 0.0,
|
"y": 0.0,
|
||||||
"z": 1.0
|
"z": 0.9063
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@ -458,6 +458,15 @@ description: Artifact commands prosthetic-hip.kcl
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"cmdId": "[uuid]",
|
||||||
|
"range": [],
|
||||||
|
"command": {
|
||||||
|
"type": "object_visible",
|
||||||
|
"object_id": "[uuid]",
|
||||||
|
"hidden": true
|
||||||
|
}
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"cmdId": "[uuid]",
|
"cmdId": "[uuid]",
|
||||||
"range": [],
|
"range": [],
|
||||||
@ -580,54 +589,6 @@ 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": [],
|
||||||
@ -636,12 +597,12 @@ description: Artifact commands prosthetic-hip.kcl
|
|||||||
"origin": {
|
"origin": {
|
||||||
"x": 0.0,
|
"x": 0.0,
|
||||||
"y": 0.0,
|
"y": 0.0,
|
||||||
"z": 0.0
|
"z": 130.0
|
||||||
},
|
},
|
||||||
"x_axis": {
|
"x_axis": {
|
||||||
"x": 1.0,
|
"x": 0.8039,
|
||||||
"y": 0.0,
|
"y": 0.0,
|
||||||
"z": 0.0
|
"z": 0.5948
|
||||||
},
|
},
|
||||||
"y_axis": {
|
"y_axis": {
|
||||||
"x": 0.0,
|
"x": 0.0,
|
||||||
@ -663,9 +624,9 @@ description: Artifact commands prosthetic-hip.kcl
|
|||||||
"animated": false,
|
"animated": false,
|
||||||
"adjust_camera": false,
|
"adjust_camera": false,
|
||||||
"planar_normal": {
|
"planar_normal": {
|
||||||
"x": 0.0,
|
"x": -0.5948,
|
||||||
"y": 0.0,
|
"y": 0.0,
|
||||||
"z": 1.0
|
"z": 0.8039
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@ -682,6 +643,15 @@ description: Artifact commands prosthetic-hip.kcl
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"cmdId": "[uuid]",
|
||||||
|
"range": [],
|
||||||
|
"command": {
|
||||||
|
"type": "object_visible",
|
||||||
|
"object_id": "[uuid]",
|
||||||
|
"hidden": true
|
||||||
|
}
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"cmdId": "[uuid]",
|
"cmdId": "[uuid]",
|
||||||
"range": [],
|
"range": [],
|
||||||
@ -804,54 +774,6 @@ 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": [],
|
||||||
@ -860,12 +782,12 @@ description: Artifact commands prosthetic-hip.kcl
|
|||||||
"origin": {
|
"origin": {
|
||||||
"x": 0.0,
|
"x": 0.0,
|
||||||
"y": 0.0,
|
"y": 0.0,
|
||||||
"z": 0.0
|
"z": 140.0
|
||||||
},
|
},
|
||||||
"x_axis": {
|
"x_axis": {
|
||||||
"x": 1.0,
|
"x": 0.8039,
|
||||||
"y": 0.0,
|
"y": 0.0,
|
||||||
"z": 0.0
|
"z": 0.5948
|
||||||
},
|
},
|
||||||
"y_axis": {
|
"y_axis": {
|
||||||
"x": 0.0,
|
"x": 0.0,
|
||||||
@ -887,9 +809,9 @@ description: Artifact commands prosthetic-hip.kcl
|
|||||||
"animated": false,
|
"animated": false,
|
||||||
"adjust_camera": false,
|
"adjust_camera": false,
|
||||||
"planar_normal": {
|
"planar_normal": {
|
||||||
"x": 0.0,
|
"x": -0.5948,
|
||||||
"y": 0.0,
|
"y": 0.0,
|
||||||
"z": 1.0
|
"z": 0.8039
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@ -906,6 +828,15 @@ description: Artifact commands prosthetic-hip.kcl
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"cmdId": "[uuid]",
|
||||||
|
"range": [],
|
||||||
|
"command": {
|
||||||
|
"type": "object_visible",
|
||||||
|
"object_id": "[uuid]",
|
||||||
|
"hidden": true
|
||||||
|
}
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"cmdId": "[uuid]",
|
"cmdId": "[uuid]",
|
||||||
"range": [],
|
"range": [],
|
||||||
@ -1028,54 +959,6 @@ 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": [],
|
||||||
@ -1084,12 +967,12 @@ description: Artifact commands prosthetic-hip.kcl
|
|||||||
"origin": {
|
"origin": {
|
||||||
"x": 0.0,
|
"x": 0.0,
|
||||||
"y": 0.0,
|
"y": 0.0,
|
||||||
"z": 0.0
|
"z": 145.0
|
||||||
},
|
},
|
||||||
"x_axis": {
|
"x_axis": {
|
||||||
"x": 1.0,
|
"x": 0.8039,
|
||||||
"y": 0.0,
|
"y": 0.0,
|
||||||
"z": 0.0
|
"z": 0.5948
|
||||||
},
|
},
|
||||||
"y_axis": {
|
"y_axis": {
|
||||||
"x": 0.0,
|
"x": 0.0,
|
||||||
@ -1111,9 +994,9 @@ description: Artifact commands prosthetic-hip.kcl
|
|||||||
"animated": false,
|
"animated": false,
|
||||||
"adjust_camera": false,
|
"adjust_camera": false,
|
||||||
"planar_normal": {
|
"planar_normal": {
|
||||||
"x": 0.0,
|
"x": -0.5948,
|
||||||
"y": 0.0,
|
"y": 0.0,
|
||||||
"z": 1.0
|
"z": 0.8039
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@ -1130,6 +1013,15 @@ description: Artifact commands prosthetic-hip.kcl
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"cmdId": "[uuid]",
|
||||||
|
"range": [],
|
||||||
|
"command": {
|
||||||
|
"type": "object_visible",
|
||||||
|
"object_id": "[uuid]",
|
||||||
|
"hidden": true
|
||||||
|
}
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"cmdId": "[uuid]",
|
"cmdId": "[uuid]",
|
||||||
"range": [],
|
"range": [],
|
||||||
@ -1252,163 +1144,6 @@ 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": [],
|
||||||
@ -1443,9 +1178,9 @@ description: Artifact commands prosthetic-hip.kcl
|
|||||||
"animated": false,
|
"animated": false,
|
||||||
"adjust_camera": false,
|
"adjust_camera": false,
|
||||||
"planar_normal": {
|
"planar_normal": {
|
||||||
"x": 0.0,
|
"x": -0.5948,
|
||||||
"y": 0.0,
|
"y": 0.0,
|
||||||
"z": 1.0
|
"z": 0.8039
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@ -1493,6 +1228,115 @@ 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 }]
|
||||||
79[Solid2d]
|
80[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 }]
|
||||||
85[Solid2d]
|
|
||||||
end
|
|
||||||
subgraph path13 [Path]
|
|
||||||
13["Path<br>[1293, 1328, 0]"]
|
|
||||||
%% [ProgramBodyItem { index: 10 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 1 }]
|
|
||||||
34["Segment<br>[1334, 1366, 0]"]
|
|
||||||
%% [ProgramBodyItem { index: 10 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 2 }]
|
|
||||||
35["Segment<br>[1372, 1412, 0]"]
|
|
||||||
%% [ProgramBodyItem { index: 10 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 3 }]
|
|
||||||
36["Segment<br>[1418, 1465, 0]"]
|
|
||||||
%% [ProgramBodyItem { index: 10 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 4 }]
|
|
||||||
37["Segment<br>[1471, 1511, 0]"]
|
|
||||||
%% [ProgramBodyItem { index: 10 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 5 }]
|
|
||||||
38["Segment<br>[1517, 1564, 0]"]
|
|
||||||
%% [ProgramBodyItem { index: 10 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 6 }]
|
|
||||||
39["Segment<br>[1570, 1635, 0]"]
|
|
||||||
%% [ProgramBodyItem { index: 10 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 7 }]
|
|
||||||
40["Segment<br>[1641, 1648, 0]"]
|
|
||||||
%% [ProgramBodyItem { index: 10 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 8 }]
|
|
||||||
78[Solid2d]
|
|
||||||
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]
|
84[Solid2d]
|
||||||
end
|
end
|
||||||
subgraph path16 [Path]
|
subgraph path13 [Path]
|
||||||
16["Path<br>[2888, 2923, 0]"]
|
13["Path<br>[1401, 1436, 0]"]
|
||||||
%% [ProgramBodyItem { index: 25 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 1 }]
|
%% [ProgramBodyItem { index: 11 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 1 }]
|
||||||
49["Segment<br>[2929, 2961, 0]"]
|
34["Segment<br>[1442, 1474, 0]"]
|
||||||
%% [ProgramBodyItem { index: 25 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 2 }]
|
%% [ProgramBodyItem { index: 11 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 2 }]
|
||||||
50["Segment<br>[2967, 3007, 0]"]
|
35["Segment<br>[1480, 1520, 0]"]
|
||||||
%% [ProgramBodyItem { index: 25 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 3 }]
|
%% [ProgramBodyItem { index: 11 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 3 }]
|
||||||
51["Segment<br>[3013, 3060, 0]"]
|
36["Segment<br>[1526, 1573, 0]"]
|
||||||
%% [ProgramBodyItem { index: 25 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 4 }]
|
%% [ProgramBodyItem { index: 11 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 4 }]
|
||||||
52["Segment<br>[3066, 3106, 0]"]
|
37["Segment<br>[1579, 1619, 0]"]
|
||||||
%% [ProgramBodyItem { index: 25 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 5 }]
|
%% [ProgramBodyItem { index: 11 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 5 }]
|
||||||
53["Segment<br>[3112, 3159, 0]"]
|
38["Segment<br>[1625, 1672, 0]"]
|
||||||
%% [ProgramBodyItem { index: 25 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 6 }]
|
%% [ProgramBodyItem { index: 11 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 6 }]
|
||||||
54["Segment<br>[3165, 3230, 0]"]
|
39["Segment<br>[1678, 1743, 0]"]
|
||||||
%% [ProgramBodyItem { index: 25 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 7 }]
|
%% [ProgramBodyItem { index: 11 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 7 }]
|
||||||
55["Segment<br>[3236, 3243, 0]"]
|
40["Segment<br>[1749, 1756, 0]"]
|
||||||
%% [ProgramBodyItem { index: 25 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 8 }]
|
%% [ProgramBodyItem { index: 11 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 8 }]
|
||||||
77[Solid2d]
|
77[Solid2d]
|
||||||
end
|
end
|
||||||
subgraph path17 [Path]
|
subgraph path14 [Path]
|
||||||
17["Path<br>[3755, 3780, 0]"]
|
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]
|
||||||
|
end
|
||||||
|
subgraph path15 [Path]
|
||||||
|
15["Path<br>[2583, 2618, 0]"]
|
||||||
|
%% [ProgramBodyItem { index: 23 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 1 }]
|
||||||
|
42["Segment<br>[2624, 2656, 0]"]
|
||||||
|
%% [ProgramBodyItem { index: 23 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 2 }]
|
||||||
|
43["Segment<br>[2662, 2702, 0]"]
|
||||||
|
%% [ProgramBodyItem { index: 23 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 3 }]
|
||||||
|
44["Segment<br>[2708, 2755, 0]"]
|
||||||
|
%% [ProgramBodyItem { index: 23 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 4 }]
|
||||||
|
45["Segment<br>[2761, 2801, 0]"]
|
||||||
|
%% [ProgramBodyItem { index: 23 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 5 }]
|
||||||
|
46["Segment<br>[2807, 2854, 0]"]
|
||||||
|
%% [ProgramBodyItem { index: 23 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 6 }]
|
||||||
|
47["Segment<br>[2860, 2925, 0]"]
|
||||||
|
%% [ProgramBodyItem { index: 23 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 7 }]
|
||||||
|
48["Segment<br>[2931, 2938, 0]"]
|
||||||
|
%% [ProgramBodyItem { index: 23 }, 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 }]
|
%% [ProgramBodyItem { index: 29 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 1 }]
|
||||||
56["Segment<br>[3786, 3805, 0]"]
|
49["Segment<br>[3214, 3246, 0]"]
|
||||||
%% [ProgramBodyItem { index: 29 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 2 }]
|
%% [ProgramBodyItem { index: 29 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 2 }]
|
||||||
57["Segment<br>[3811, 3848, 0]"]
|
50["Segment<br>[3252, 3292, 0]"]
|
||||||
%% [ProgramBodyItem { index: 29 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 3 }]
|
%% [ProgramBodyItem { index: 29 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 3 }]
|
||||||
58["Segment<br>[3854, 3891, 0]"]
|
51["Segment<br>[3298, 3345, 0]"]
|
||||||
%% [ProgramBodyItem { index: 29 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 4 }]
|
%% [ProgramBodyItem { index: 29 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 4 }]
|
||||||
59["Segment<br>[3897, 3915, 0]"]
|
52["Segment<br>[3351, 3391, 0]"]
|
||||||
%% [ProgramBodyItem { index: 29 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 5 }]
|
%% [ProgramBodyItem { index: 29 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 5 }]
|
||||||
60["Segment<br>[3921, 3959, 0]"]
|
53["Segment<br>[3397, 3444, 0]"]
|
||||||
%% [ProgramBodyItem { index: 29 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 6 }]
|
%% [ProgramBodyItem { index: 29 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 6 }]
|
||||||
61["Segment<br>[3965, 4030, 0]"]
|
54["Segment<br>[3450, 3515, 0]"]
|
||||||
%% [ProgramBodyItem { index: 29 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 7 }]
|
%% [ProgramBodyItem { index: 29 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 7 }]
|
||||||
62["Segment<br>[4036, 4043, 0]"]
|
55["Segment<br>[3521, 3528, 0]"]
|
||||||
%% [ProgramBodyItem { index: 29 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 8 }]
|
%% [ProgramBodyItem { index: 29 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 8 }]
|
||||||
|
78[Solid2d]
|
||||||
|
end
|
||||||
|
subgraph path17 [Path]
|
||||||
|
17["Path<br>[3998, 4023, 0]"]
|
||||||
|
%% [ProgramBodyItem { index: 33 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 1 }]
|
||||||
|
56["Segment<br>[4029, 4048, 0]"]
|
||||||
|
%% [ProgramBodyItem { index: 33 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 2 }]
|
||||||
|
57["Segment<br>[4054, 4091, 0]"]
|
||||||
|
%% [ProgramBodyItem { index: 33 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 3 }]
|
||||||
|
58["Segment<br>[4097, 4134, 0]"]
|
||||||
|
%% [ProgramBodyItem { index: 33 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 4 }]
|
||||||
|
59["Segment<br>[4140, 4158, 0]"]
|
||||||
|
%% [ProgramBodyItem { index: 33 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 5 }]
|
||||||
|
60["Segment<br>[4164, 4202, 0]"]
|
||||||
|
%% [ProgramBodyItem { index: 33 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 6 }]
|
||||||
|
61["Segment<br>[4208, 4273, 0]"]
|
||||||
|
%% [ProgramBodyItem { index: 33 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 7 }]
|
||||||
|
62["Segment<br>[4279, 4286, 0]"]
|
||||||
|
%% [ProgramBodyItem { index: 33 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 8 }]
|
||||||
81[Solid2d]
|
81[Solid2d]
|
||||||
end
|
end
|
||||||
subgraph path18 [Path]
|
subgraph path18 [Path]
|
||||||
18["Path<br>[4272, 4300, 0]"]
|
18["Path<br>[4515, 4543, 0]"]
|
||||||
%% [ProgramBodyItem { index: 30 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 1 }]
|
%% [ProgramBodyItem { index: 34 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 1 }]
|
||||||
63["Segment<br>[4306, 4325, 0]"]
|
63["Segment<br>[4549, 4568, 0]"]
|
||||||
%% [ProgramBodyItem { index: 30 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 2 }]
|
%% [ProgramBodyItem { index: 34 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 2 }]
|
||||||
64["Segment<br>[4331, 4349, 0]"]
|
64["Segment<br>[4574, 4592, 0]"]
|
||||||
%% [ProgramBodyItem { index: 30 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 3 }]
|
%% [ProgramBodyItem { index: 34 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 3 }]
|
||||||
65["Segment<br>[4355, 4396, 0]"]
|
65["Segment<br>[4598, 4639, 0]"]
|
||||||
%% [ProgramBodyItem { index: 30 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 4 }]
|
%% [ProgramBodyItem { index: 34 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 4 }]
|
||||||
66["Segment<br>[4402, 4423, 0]"]
|
66["Segment<br>[4645, 4666, 0]"]
|
||||||
%% [ProgramBodyItem { index: 30 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 5 }]
|
%% [ProgramBodyItem { index: 34 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 5 }]
|
||||||
67["Segment<br>[4429, 4449, 0]"]
|
67["Segment<br>[4672, 4692, 0]"]
|
||||||
%% [ProgramBodyItem { index: 30 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 6 }]
|
%% [ProgramBodyItem { index: 34 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 6 }]
|
||||||
68["Segment<br>[4455, 4520, 0]"]
|
68["Segment<br>[4698, 4763, 0]"]
|
||||||
%% [ProgramBodyItem { index: 30 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 7 }]
|
%% [ProgramBodyItem { index: 34 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 7 }]
|
||||||
69["Segment<br>[4526, 4533, 0]"]
|
69["Segment<br>[4769, 4776, 0]"]
|
||||||
%% [ProgramBodyItem { index: 30 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 8 }]
|
%% [ProgramBodyItem { index: 34 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 8 }]
|
||||||
82[Solid2d]
|
82[Solid2d]
|
||||||
end
|
end
|
||||||
subgraph path19 [Path]
|
subgraph path19 [Path]
|
||||||
19["Path<br>[4756, 4786, 0]"]
|
19["Path<br>[4999, 5029, 0]"]
|
||||||
%% [ProgramBodyItem { index: 31 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 1 }]
|
%% [ProgramBodyItem { index: 35 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 1 }]
|
||||||
70["Segment<br>[4792, 4809, 0]"]
|
70["Segment<br>[5035, 5052, 0]"]
|
||||||
%% [ProgramBodyItem { index: 31 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 2 }]
|
%% [ProgramBodyItem { index: 35 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 2 }]
|
||||||
71["Segment<br>[4815, 4833, 0]"]
|
71["Segment<br>[5058, 5076, 0]"]
|
||||||
%% [ProgramBodyItem { index: 31 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 3 }]
|
%% [ProgramBodyItem { index: 35 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 3 }]
|
||||||
72["Segment<br>[4839, 4877, 0]"]
|
72["Segment<br>[5082, 5120, 0]"]
|
||||||
%% [ProgramBodyItem { index: 31 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 4 }]
|
%% [ProgramBodyItem { index: 35 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 4 }]
|
||||||
73["Segment<br>[4883, 4909, 0]"]
|
73["Segment<br>[5126, 5152, 0]"]
|
||||||
%% [ProgramBodyItem { index: 31 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 5 }]
|
%% [ProgramBodyItem { index: 35 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 5 }]
|
||||||
74["Segment<br>[4915, 4934, 0]"]
|
74["Segment<br>[5158, 5177, 0]"]
|
||||||
%% [ProgramBodyItem { index: 31 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 6 }]
|
%% [ProgramBodyItem { index: 35 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 6 }]
|
||||||
75["Segment<br>[4940, 5005, 0]"]
|
75["Segment<br>[5183, 5248, 0]"]
|
||||||
%% [ProgramBodyItem { index: 31 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 7 }]
|
%% [ProgramBodyItem { index: 35 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 7 }]
|
||||||
76["Segment<br>[5011, 5018, 0]"]
|
76["Segment<br>[5254, 5261, 0]"]
|
||||||
%% [ProgramBodyItem { index: 31 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 8 }]
|
%% [ProgramBodyItem { index: 35 }, 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>[1270, 1287, 0]"]
|
3["Plane<br>[1372, 1395, 0]"]
|
||||||
%% [ProgramBodyItem { index: 10 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 0 }]
|
%% [ProgramBodyItem { index: 11 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 0 }]
|
||||||
4["Plane<br>[1802, 1819, 0]"]
|
4["Plane<br>[1963, 1986, 0]"]
|
||||||
%% [ProgramBodyItem { index: 15 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 0 }]
|
%% [ProgramBodyItem { index: 17 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 0 }]
|
||||||
5["Plane<br>[2334, 2351, 0]"]
|
5["Plane<br>[2554, 2577, 0]"]
|
||||||
%% [ProgramBodyItem { index: 20 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 0 }]
|
%% [ProgramBodyItem { index: 23 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 0 }]
|
||||||
6["Plane<br>[2865, 2882, 0]"]
|
6["Plane<br>[3144, 3167, 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 }]
|
||||||
8["Plane<br>[4249, 4266, 0]"]
|
7["Plane<br>[3975, 3992, 0]"]
|
||||||
%% [ProgramBodyItem { index: 30 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 0 }]
|
%% [ProgramBodyItem { index: 33 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 0 }]
|
||||||
9["Plane<br>[4733, 4750, 0]"]
|
8["Plane<br>[4492, 4509, 0]"]
|
||||||
%% [ProgramBodyItem { index: 31 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 0 }]
|
%% [ProgramBodyItem { index: 34 }, 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 Loft<br>[3351, 3439, 0]"]
|
86["Sweep Extrusion<br>[3616, 3638, 0]"]
|
||||||
%% [ProgramBodyItem { index: 26 }, VariableDeclarationDeclaration, VariableDeclarationInit]
|
%% [ProgramBodyItem { index: 30 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 1 }]
|
||||||
87["Sweep Loft<br>[3479, 3561, 0]"]
|
87["Sweep Loft<br>[3698, 3786, 0]"]
|
||||||
%% [ProgramBodyItem { index: 27 }, VariableDeclarationDeclaration, VariableDeclarationInit]
|
%% [ProgramBodyItem { index: 31 }, VariableDeclarationDeclaration, VariableDeclarationInit]
|
||||||
88["Sweep Extrusion<br>[3641, 3660, 0]"]
|
88["Sweep Loft<br>[3827, 3902, 0]"]
|
||||||
%% [ProgramBodyItem { index: 28 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 1 }]
|
%% [ProgramBodyItem { index: 32 }, VariableDeclarationDeclaration, VariableDeclarationInit]
|
||||||
89["Sweep Revolve<br>[4049, 4079, 0]"]
|
89["Sweep Revolve<br>[4292, 4322, 0]"]
|
||||||
%% [ProgramBodyItem { index: 29 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 9 }]
|
%% [ProgramBodyItem { index: 33 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 9 }]
|
||||||
90["Sweep Revolve<br>[4539, 4569, 0]"]
|
90["Sweep Revolve<br>[4782, 4812, 0]"]
|
||||||
%% [ProgramBodyItem { index: 30 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 9 }]
|
%% [ProgramBodyItem { index: 34 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 9 }]
|
||||||
91["Sweep Revolve<br>[5024, 5054, 0]"]
|
91["Sweep Revolve<br>[5267, 5297, 0]"]
|
||||||
%% [ProgramBodyItem { index: 31 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 9 }]
|
%% [ProgramBodyItem { index: 35 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 9 }]
|
||||||
92[Wall]
|
92[Wall]
|
||||||
%% face_code_ref=Missing NodePath
|
%% face_code_ref=Missing NodePath
|
||||||
93[Wall]
|
93[Wall]
|
||||||
@ -239,38 +239,30 @@ 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[Wall]
|
116["Cap Start"]
|
||||||
%% face_code_ref=Missing NodePath
|
%% face_code_ref=Missing NodePath
|
||||||
117[Wall]
|
117["Cap End"]
|
||||||
%% face_code_ref=Missing NodePath
|
%% face_code_ref=Missing NodePath
|
||||||
118[Wall]
|
118["SweepEdge Opposite"]
|
||||||
%% face_code_ref=Missing NodePath
|
119["SweepEdge Opposite"]
|
||||||
119[Wall]
|
120["SweepEdge Opposite"]
|
||||||
%% face_code_ref=Missing NodePath
|
121["SweepEdge Opposite"]
|
||||||
120[Wall]
|
122["SweepEdge Opposite"]
|
||||||
%% face_code_ref=Missing NodePath
|
123["SweepEdge Opposite"]
|
||||||
121[Wall]
|
124["SweepEdge Adjacent"]
|
||||||
%% face_code_ref=Missing NodePath
|
125["SweepEdge Adjacent"]
|
||||||
122["Cap Start"]
|
126["SweepEdge Adjacent"]
|
||||||
%% face_code_ref=Missing NodePath
|
127["SweepEdge Adjacent"]
|
||||||
123["Cap Start"]
|
128["SweepEdge Adjacent"]
|
||||||
%% face_code_ref=Missing NodePath
|
129["SweepEdge Adjacent"]
|
||||||
124["Cap End"]
|
130["SweepEdge Adjacent"]
|
||||||
%% face_code_ref=Missing NodePath
|
131["SweepEdge Adjacent"]
|
||||||
125["Cap End"]
|
132["SweepEdge Adjacent"]
|
||||||
%% face_code_ref=Missing NodePath
|
133["SweepEdge Adjacent"]
|
||||||
126["SweepEdge Opposite"]
|
134["SweepEdge Adjacent"]
|
||||||
127["SweepEdge Opposite"]
|
135["SweepEdge Adjacent"]
|
||||||
128["SweepEdge Opposite"]
|
136["SweepEdge Adjacent"]
|
||||||
129["SweepEdge Opposite"]
|
137["SweepEdge Adjacent"]
|
||||||
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"]
|
||||||
@ -280,26 +272,6 @@ 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
|
||||||
@ -317,8 +289,8 @@ flowchart LR
|
|||||||
11 --- 24
|
11 --- 24
|
||||||
11 --- 25
|
11 --- 25
|
||||||
11 --- 26
|
11 --- 26
|
||||||
11 --- 79
|
11 --- 80
|
||||||
11 ---- 86
|
11 ---- 87
|
||||||
12 --- 27
|
12 --- 27
|
||||||
12 --- 28
|
12 --- 28
|
||||||
12 --- 29
|
12 --- 29
|
||||||
@ -326,8 +298,8 @@ flowchart LR
|
|||||||
12 --- 31
|
12 --- 31
|
||||||
12 --- 32
|
12 --- 32
|
||||||
12 --- 33
|
12 --- 33
|
||||||
12 --- 85
|
12 --- 84
|
||||||
12 x---> 86
|
12 x---> 87
|
||||||
13 --- 34
|
13 --- 34
|
||||||
13 --- 35
|
13 --- 35
|
||||||
13 --- 36
|
13 --- 36
|
||||||
@ -335,17 +307,17 @@ flowchart LR
|
|||||||
13 --- 38
|
13 --- 38
|
||||||
13 --- 39
|
13 --- 39
|
||||||
13 --- 40
|
13 --- 40
|
||||||
13 --- 78
|
13 --- 77
|
||||||
13 x---> 86
|
13 x---> 87
|
||||||
14 --- 41
|
14 --- 41
|
||||||
14 --- 80
|
14 --- 85
|
||||||
14 x---> 86
|
14 x---> 87
|
||||||
14 x--> 132
|
14 x--> 118
|
||||||
14 x--> 133
|
14 x--> 119
|
||||||
14 x--> 134
|
14 x--> 120
|
||||||
14 x--> 135
|
14 x--> 121
|
||||||
14 x--> 136
|
14 x--> 122
|
||||||
14 x--> 137
|
14 x--> 123
|
||||||
15 --- 42
|
15 --- 42
|
||||||
15 --- 43
|
15 --- 43
|
||||||
15 --- 44
|
15 --- 44
|
||||||
@ -353,8 +325,8 @@ flowchart LR
|
|||||||
15 --- 46
|
15 --- 46
|
||||||
15 --- 47
|
15 --- 47
|
||||||
15 --- 48
|
15 --- 48
|
||||||
15 --- 84
|
15 --- 79
|
||||||
15 x---> 87
|
15 x---> 88
|
||||||
16 --- 49
|
16 --- 49
|
||||||
16 --- 50
|
16 --- 50
|
||||||
16 --- 51
|
16 --- 51
|
||||||
@ -362,8 +334,8 @@ flowchart LR
|
|||||||
16 --- 53
|
16 --- 53
|
||||||
16 --- 54
|
16 --- 54
|
||||||
16 --- 55
|
16 --- 55
|
||||||
16 --- 77
|
16 --- 78
|
||||||
16 ---- 88
|
16 x---> 88
|
||||||
17 --- 56
|
17 --- 56
|
||||||
17 --- 57
|
17 --- 57
|
||||||
17 --- 58
|
17 --- 58
|
||||||
@ -391,263 +363,195 @@ flowchart LR
|
|||||||
19 --- 76
|
19 --- 76
|
||||||
19 --- 83
|
19 --- 83
|
||||||
19 ---- 91
|
19 ---- 91
|
||||||
20 --- 109
|
20 --- 103
|
||||||
20 x--> 122
|
20 x--> 116
|
||||||
20 --- 132
|
20 --- 118
|
||||||
20 --- 150
|
20 --- 130
|
||||||
21 --- 107
|
21 --- 101
|
||||||
21 x--> 122
|
21 x--> 116
|
||||||
21 --- 133
|
21 --- 119
|
||||||
21 --- 151
|
21 --- 131
|
||||||
22 --- 106
|
22 --- 100
|
||||||
22 x--> 122
|
22 x--> 116
|
||||||
22 --- 134
|
22 --- 120
|
||||||
22 --- 152
|
22 --- 132
|
||||||
23 --- 108
|
23 --- 102
|
||||||
23 x--> 122
|
23 x--> 116
|
||||||
23 --- 135
|
23 --- 121
|
||||||
23 --- 153
|
23 --- 133
|
||||||
24 --- 105
|
24 --- 99
|
||||||
24 x--> 122
|
24 x--> 116
|
||||||
24 --- 136
|
24 --- 122
|
||||||
24 --- 154
|
24 --- 134
|
||||||
25 --- 104
|
25 --- 98
|
||||||
25 x--> 122
|
25 x--> 116
|
||||||
25 --- 137
|
25 --- 123
|
||||||
25 --- 155
|
25 --- 135
|
||||||
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 --- 115
|
56 --- 109
|
||||||
56 x--> 156
|
56 x--> 136
|
||||||
89 <--x 57
|
89 <--x 57
|
||||||
57 --- 114
|
57 --- 108
|
||||||
57 --- 156
|
57 --- 136
|
||||||
89 <--x 58
|
89 <--x 58
|
||||||
58 --- 110
|
58 --- 104
|
||||||
58 --- 157
|
58 --- 137
|
||||||
89 <--x 59
|
89 <--x 59
|
||||||
59 --- 113
|
59 --- 107
|
||||||
59 --- 158
|
59 --- 138
|
||||||
89 <--x 60
|
89 <--x 60
|
||||||
60 --- 112
|
60 --- 106
|
||||||
60 --- 159
|
60 --- 139
|
||||||
89 <--x 61
|
89 <--x 61
|
||||||
61 --- 111
|
61 --- 105
|
||||||
61 --- 160
|
61 --- 140
|
||||||
90 <--x 63
|
90 <--x 63
|
||||||
63 --- 102
|
63 --- 96
|
||||||
63 --- 144
|
63 --- 124
|
||||||
90 <--x 64
|
90 <--x 64
|
||||||
64 --- 98
|
64 --- 92
|
||||||
64 --- 145
|
64 --- 125
|
||||||
90 <--x 65
|
90 <--x 65
|
||||||
65 --- 99
|
65 --- 93
|
||||||
65 --- 146
|
65 --- 126
|
||||||
90 <--x 66
|
90 <--x 66
|
||||||
66 --- 103
|
66 --- 97
|
||||||
66 --- 147
|
66 --- 127
|
||||||
90 <--x 67
|
90 <--x 67
|
||||||
67 --- 101
|
67 --- 95
|
||||||
67 --- 148
|
67 --- 128
|
||||||
90 <--x 68
|
90 <--x 68
|
||||||
68 --- 100
|
68 --- 94
|
||||||
68 --- 149
|
68 --- 129
|
||||||
91 <--x 70
|
91 <--x 70
|
||||||
70 --- 118
|
70 --- 112
|
||||||
70 --- 161
|
70 --- 141
|
||||||
91 <--x 71
|
91 <--x 71
|
||||||
71 --- 121
|
71 --- 115
|
||||||
71 --- 162
|
71 --- 142
|
||||||
91 <--x 72
|
91 <--x 72
|
||||||
72 --- 120
|
72 --- 114
|
||||||
72 --- 163
|
72 --- 143
|
||||||
91 <--x 73
|
91 <--x 73
|
||||||
73 --- 116
|
73 --- 110
|
||||||
73 --- 164
|
73 --- 144
|
||||||
91 <--x 74
|
91 <--x 74
|
||||||
74 --- 119
|
74 --- 113
|
||||||
74 --- 165
|
74 --- 145
|
||||||
91 <--x 75
|
91 <--x 75
|
||||||
75 --- 117
|
75 --- 111
|
||||||
75 --- 166
|
75 --- 146
|
||||||
86 --- 104
|
87 --- 98
|
||||||
86 --- 105
|
87 --- 99
|
||||||
86 --- 106
|
87 --- 100
|
||||||
86 --- 107
|
87 --- 101
|
||||||
86 --- 108
|
87 --- 102
|
||||||
86 --- 109
|
87 --- 103
|
||||||
86 --- 122
|
87 --- 116
|
||||||
86 --- 124
|
87 --- 117
|
||||||
86 --- 132
|
87 --- 118
|
||||||
86 --- 133
|
87 --- 119
|
||||||
86 --- 134
|
87 --- 120
|
||||||
86 --- 135
|
87 --- 121
|
||||||
86 --- 136
|
87 --- 122
|
||||||
86 --- 137
|
87 --- 123
|
||||||
86 --- 150
|
87 --- 130
|
||||||
86 --- 151
|
87 --- 131
|
||||||
86 --- 152
|
87 --- 132
|
||||||
86 --- 153
|
87 --- 133
|
||||||
86 --- 154
|
87 --- 134
|
||||||
86 --- 155
|
87 --- 135
|
||||||
88 --- 92
|
89 --- 104
|
||||||
88 --- 93
|
89 --- 105
|
||||||
88 --- 94
|
89 --- 106
|
||||||
88 --- 95
|
89 --- 107
|
||||||
88 --- 96
|
89 --- 108
|
||||||
88 --- 97
|
89 --- 109
|
||||||
88 --- 123
|
89 --- 136
|
||||||
88 --- 125
|
89 --- 137
|
||||||
88 --- 126
|
89 --- 138
|
||||||
88 --- 127
|
89 --- 139
|
||||||
88 --- 128
|
89 --- 140
|
||||||
88 --- 129
|
90 --- 92
|
||||||
88 --- 130
|
90 --- 93
|
||||||
88 --- 131
|
90 --- 94
|
||||||
88 --- 138
|
90 --- 95
|
||||||
88 --- 139
|
90 --- 96
|
||||||
88 --- 140
|
90 --- 97
|
||||||
88 --- 141
|
90 --- 124
|
||||||
88 --- 142
|
90 --- 125
|
||||||
88 --- 143
|
90 --- 126
|
||||||
89 --- 110
|
90 --- 127
|
||||||
89 --- 111
|
90 --- 128
|
||||||
89 --- 112
|
90 --- 129
|
||||||
89 --- 113
|
91 --- 110
|
||||||
89 --- 114
|
91 --- 111
|
||||||
89 --- 115
|
91 --- 112
|
||||||
89 --- 156
|
91 --- 113
|
||||||
89 --- 157
|
91 --- 114
|
||||||
89 --- 158
|
91 --- 115
|
||||||
89 --- 159
|
91 --- 141
|
||||||
89 --- 160
|
91 --- 142
|
||||||
90 --- 98
|
91 --- 143
|
||||||
90 --- 99
|
91 --- 144
|
||||||
90 --- 100
|
91 --- 145
|
||||||
90 --- 101
|
91 --- 146
|
||||||
90 --- 102
|
124 <--x 92
|
||||||
90 --- 103
|
92 --- 125
|
||||||
90 --- 144
|
125 <--x 93
|
||||||
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
|
||||||
93 --- 138
|
128 <--x 94
|
||||||
139 <--x 93
|
94 --- 129
|
||||||
94 --- 131
|
127 <--x 95
|
||||||
138 <--x 94
|
95 --- 128
|
||||||
94 --- 143
|
96 --- 124
|
||||||
95 --- 130
|
129 <--x 96
|
||||||
95 --- 142
|
126 <--x 97
|
||||||
143 <--x 95
|
97 --- 127
|
||||||
96 --- 129
|
98 --- 123
|
||||||
96 --- 141
|
130 <--x 98
|
||||||
142 <--x 96
|
98 --- 135
|
||||||
97 --- 128
|
99 --- 122
|
||||||
97 --- 140
|
99 --- 134
|
||||||
141 <--x 97
|
135 <--x 99
|
||||||
144 <--x 98
|
100 --- 120
|
||||||
98 --- 145
|
100 --- 132
|
||||||
145 <--x 99
|
133 <--x 100
|
||||||
99 --- 146
|
101 --- 119
|
||||||
148 <--x 100
|
101 --- 131
|
||||||
100 --- 149
|
132 <--x 101
|
||||||
147 <--x 101
|
102 --- 121
|
||||||
101 --- 148
|
102 --- 133
|
||||||
102 --- 144
|
134 <--x 102
|
||||||
149 <--x 102
|
103 --- 118
|
||||||
146 <--x 103
|
103 --- 130
|
||||||
103 --- 147
|
131 <--x 103
|
||||||
104 --- 137
|
104 --- 137
|
||||||
150 <--x 104
|
139 <--x 105
|
||||||
104 --- 155
|
105 --- 140
|
||||||
105 --- 136
|
138 <--x 106
|
||||||
105 --- 154
|
106 --- 139
|
||||||
155 <--x 105
|
137 <--x 107
|
||||||
106 --- 134
|
107 --- 138
|
||||||
106 --- 152
|
108 --- 136
|
||||||
153 <--x 106
|
109 --- 136
|
||||||
107 --- 133
|
140 <--x 109
|
||||||
107 --- 151
|
143 <--x 110
|
||||||
152 <--x 107
|
110 --- 144
|
||||||
108 --- 135
|
145 <--x 111
|
||||||
108 --- 153
|
111 --- 146
|
||||||
154 <--x 108
|
112 --- 141
|
||||||
109 --- 132
|
146 <--x 112
|
||||||
109 --- 150
|
144 <--x 113
|
||||||
151 <--x 109
|
113 --- 145
|
||||||
110 --- 157
|
142 <--x 114
|
||||||
159 <--x 111
|
114 --- 143
|
||||||
111 --- 160
|
141 <--x 115
|
||||||
158 <--x 112
|
115 --- 142
|
||||||
112 --- 159
|
118 <--x 117
|
||||||
157 <--x 113
|
119 <--x 117
|
||||||
113 --- 158
|
120 <--x 117
|
||||||
114 --- 156
|
121 <--x 117
|
||||||
115 --- 156
|
122 <--x 117
|
||||||
160 <--x 115
|
123 <--x 117
|
||||||
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,118 +64,132 @@ description: Operations executed prosthetic-hip.kcl
|
|||||||
"name": "startSketchOn",
|
"name": "startSketchOn",
|
||||||
"unlabeledArg": {
|
"unlabeledArg": {
|
||||||
"value": {
|
"value": {
|
||||||
"type": "Plane",
|
"type": "Object",
|
||||||
"artifact_id": "[uuid]"
|
|
||||||
},
|
|
||||||
"sourceRange": []
|
|
||||||
},
|
|
||||||
"labeledArgs": {},
|
|
||||||
"sourceRange": []
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "StdLibCall",
|
|
||||||
"name": "startSketchOn",
|
|
||||||
"unlabeledArg": {
|
|
||||||
"value": {
|
|
||||||
"type": "Plane",
|
|
||||||
"artifact_id": "[uuid]"
|
|
||||||
},
|
|
||||||
"sourceRange": []
|
|
||||||
},
|
|
||||||
"labeledArgs": {},
|
|
||||||
"sourceRange": []
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "StdLibCall",
|
|
||||||
"name": "startSketchOn",
|
|
||||||
"unlabeledArg": {
|
|
||||||
"value": {
|
|
||||||
"type": "Plane",
|
|
||||||
"artifact_id": "[uuid]"
|
|
||||||
},
|
|
||||||
"sourceRange": []
|
|
||||||
},
|
|
||||||
"labeledArgs": {},
|
|
||||||
"sourceRange": []
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "StdLibCall",
|
|
||||||
"name": "startSketchOn",
|
|
||||||
"unlabeledArg": {
|
|
||||||
"value": {
|
|
||||||
"type": "Plane",
|
|
||||||
"artifact_id": "[uuid]"
|
|
||||||
},
|
|
||||||
"sourceRange": []
|
|
||||||
},
|
|
||||||
"labeledArgs": {},
|
|
||||||
"sourceRange": []
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "StdLibCall",
|
|
||||||
"name": "loft",
|
|
||||||
"unlabeledArg": {
|
|
||||||
"value": {
|
"value": {
|
||||||
|
"origin": {
|
||||||
"type": "Array",
|
"type": "Array",
|
||||||
"value": [
|
"value": [
|
||||||
{
|
{
|
||||||
"type": "Sketch",
|
"type": "Number",
|
||||||
"value": {
|
"value": 0.0,
|
||||||
"artifactId": "[uuid]"
|
"ty": {
|
||||||
|
"type": "Default",
|
||||||
|
"len": {
|
||||||
|
"type": "Mm"
|
||||||
|
},
|
||||||
|
"angle": {
|
||||||
|
"type": "Degrees"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"type": "Sketch",
|
"type": "Number",
|
||||||
"value": {
|
"value": 0.0,
|
||||||
"artifactId": "[uuid]"
|
"ty": {
|
||||||
|
"type": "Default",
|
||||||
|
"len": {
|
||||||
|
"type": "Mm"
|
||||||
|
},
|
||||||
|
"angle": {
|
||||||
|
"type": "Degrees"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"type": "Sketch",
|
"type": "Number",
|
||||||
"value": {
|
"value": 110.0,
|
||||||
"artifactId": "[uuid]"
|
"ty": {
|
||||||
}
|
"type": "Default",
|
||||||
|
"len": {
|
||||||
|
"type": "Mm"
|
||||||
},
|
},
|
||||||
{
|
"angle": {
|
||||||
"type": "Sketch",
|
"type": "Degrees"
|
||||||
"value": {
|
}
|
||||||
"artifactId": "[uuid]"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"sourceRange": []
|
"xAxis": {
|
||||||
},
|
|
||||||
"labeledArgs": {},
|
|
||||||
"sourceRange": []
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "StdLibCall",
|
|
||||||
"name": "loft",
|
|
||||||
"unlabeledArg": {
|
|
||||||
"value": {
|
|
||||||
"type": "Array",
|
"type": "Array",
|
||||||
"value": [
|
"value": [
|
||||||
{
|
{
|
||||||
"type": "Sketch",
|
"type": "Number",
|
||||||
"value": {
|
"value": 0.9063077870366499,
|
||||||
"artifactId": "[uuid]"
|
"ty": {
|
||||||
|
"type": "Known",
|
||||||
|
"type": "Count"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"type": "Sketch",
|
"type": "Number",
|
||||||
"value": {
|
"value": 0.0,
|
||||||
"artifactId": "[uuid]"
|
"ty": {
|
||||||
|
"type": "Default",
|
||||||
|
"len": {
|
||||||
|
"type": "Mm"
|
||||||
|
},
|
||||||
|
"angle": {
|
||||||
|
"type": "Degrees"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"type": "Sketch",
|
"type": "Number",
|
||||||
"value": {
|
"value": 0.42261826174069944,
|
||||||
"artifactId": "[uuid]"
|
"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": []
|
||||||
},
|
},
|
||||||
"labeledArgs": {},
|
"labeledArgs": {},
|
||||||
@ -183,12 +197,405 @@ description: Operations executed prosthetic-hip.kcl
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"type": "StdLibCall",
|
"type": "StdLibCall",
|
||||||
"name": "clone",
|
"name": "startSketchOn",
|
||||||
"unlabeledArg": {
|
"unlabeledArg": {
|
||||||
"value": {
|
"value": {
|
||||||
"type": "Sketch",
|
"type": "Object",
|
||||||
"value": {
|
"value": {
|
||||||
"artifactId": "[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": []
|
||||||
|
},
|
||||||
|
"labeledArgs": {},
|
||||||
|
"sourceRange": []
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "StdLibCall",
|
||||||
|
"name": "startSketchOn",
|
||||||
|
"unlabeledArg": {
|
||||||
|
"value": {
|
||||||
|
"type": "Object",
|
||||||
|
"value": {
|
||||||
|
"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": []
|
||||||
|
},
|
||||||
|
"labeledArgs": {},
|
||||||
|
"sourceRange": []
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "StdLibCall",
|
||||||
|
"name": "startSketchOn",
|
||||||
|
"unlabeledArg": {
|
||||||
|
"value": {
|
||||||
|
"type": "Object",
|
||||||
|
"value": {
|
||||||
|
"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": 145.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": []
|
||||||
@ -243,6 +650,91 @@ 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": 1889,
|
"commentStart": 2056,
|
||||||
"end": 1895,
|
"end": 2062,
|
||||||
"start": 1889,
|
"start": 2056,
|
||||||
"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": 0.0,
|
"z": 130.0,
|
||||||
"units": {
|
"units": {
|
||||||
"type": "Mm"
|
"type": "Mm"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"type": "plane",
|
"type": "plane",
|
||||||
"value": "XY",
|
"value": "Custom",
|
||||||
"xAxis": {
|
"xAxis": {
|
||||||
"x": 1.0,
|
"x": 0.8038568606172174,
|
||||||
"y": 0.0,
|
"y": 0.0,
|
||||||
"z": 0.0,
|
"z": 0.5948227867513414,
|
||||||
"units": {
|
"units": {
|
||||||
"type": "Unknown"
|
"type": "Unknown"
|
||||||
}
|
}
|
||||||
@ -1236,6 +1236,514 @@ 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": {
|
||||||
@ -2065,9 +2573,9 @@ description: Variables in memory after executing prosthetic-hip.kcl
|
|||||||
-16.0
|
-16.0
|
||||||
],
|
],
|
||||||
"tag": {
|
"tag": {
|
||||||
"commentStart": 1359,
|
"commentStart": 1467,
|
||||||
"end": 1365,
|
"end": 1473,
|
||||||
"start": 1359,
|
"start": 1467,
|
||||||
"type": "TagDeclarator",
|
"type": "TagDeclarator",
|
||||||
"value": "seg03"
|
"value": "seg03"
|
||||||
},
|
},
|
||||||
@ -2216,17 +2724,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": 0.0,
|
"z": 110.0,
|
||||||
"units": {
|
"units": {
|
||||||
"type": "Mm"
|
"type": "Mm"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"type": "plane",
|
"type": "plane",
|
||||||
"value": "XY",
|
"value": "Custom",
|
||||||
"xAxis": {
|
"xAxis": {
|
||||||
"x": 1.0,
|
"x": 0.9063077870366499,
|
||||||
"y": 0.0,
|
"y": 0.0,
|
||||||
"z": 0.0,
|
"z": 0.42261826174069944,
|
||||||
"units": {
|
"units": {
|
||||||
"type": "Unknown"
|
"type": "Unknown"
|
||||||
}
|
}
|
||||||
@ -2287,9 +2795,9 @@ description: Variables in memory after executing prosthetic-hip.kcl
|
|||||||
-8.0
|
-8.0
|
||||||
],
|
],
|
||||||
"tag": {
|
"tag": {
|
||||||
"commentStart": 1889,
|
"commentStart": 2056,
|
||||||
"end": 1895,
|
"end": 2062,
|
||||||
"start": 1889,
|
"start": 2056,
|
||||||
"type": "TagDeclarator",
|
"type": "TagDeclarator",
|
||||||
"value": "seg04"
|
"value": "seg04"
|
||||||
},
|
},
|
||||||
@ -2438,17 +2946,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": 0.0,
|
"z": 130.0,
|
||||||
"units": {
|
"units": {
|
||||||
"type": "Mm"
|
"type": "Mm"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"type": "plane",
|
"type": "plane",
|
||||||
"value": "XY",
|
"value": "Custom",
|
||||||
"xAxis": {
|
"xAxis": {
|
||||||
"x": 1.0,
|
"x": 0.8038568606172174,
|
||||||
"y": 0.0,
|
"y": 0.0,
|
||||||
"z": 0.0,
|
"z": 0.5948227867513414,
|
||||||
"units": {
|
"units": {
|
||||||
"type": "Unknown"
|
"type": "Unknown"
|
||||||
}
|
}
|
||||||
@ -2509,9 +3017,9 @@ description: Variables in memory after executing prosthetic-hip.kcl
|
|||||||
-0.8
|
-0.8
|
||||||
],
|
],
|
||||||
"tag": {
|
"tag": {
|
||||||
"commentStart": 2423,
|
"commentStart": 2649,
|
||||||
"end": 2429,
|
"end": 2655,
|
||||||
"start": 2423,
|
"start": 2649,
|
||||||
"type": "TagDeclarator",
|
"type": "TagDeclarator",
|
||||||
"value": "seg05"
|
"value": "seg05"
|
||||||
},
|
},
|
||||||
@ -2660,17 +3168,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": 0.0,
|
"z": 140.0,
|
||||||
"units": {
|
"units": {
|
||||||
"type": "Mm"
|
"type": "Mm"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"type": "plane",
|
"type": "plane",
|
||||||
"value": "XY",
|
"value": "Custom",
|
||||||
"xAxis": {
|
"xAxis": {
|
||||||
"x": 1.0,
|
"x": 0.8038568606172174,
|
||||||
"y": 0.0,
|
"y": 0.0,
|
||||||
"z": 0.0,
|
"z": 0.5948227867513414,
|
||||||
"units": {
|
"units": {
|
||||||
"type": "Unknown"
|
"type": "Unknown"
|
||||||
}
|
}
|
||||||
@ -2731,9 +3239,9 @@ description: Variables in memory after executing prosthetic-hip.kcl
|
|||||||
-0.5
|
-0.5
|
||||||
],
|
],
|
||||||
"tag": {
|
"tag": {
|
||||||
"commentStart": 2954,
|
"commentStart": 3239,
|
||||||
"end": 2960,
|
"end": 3245,
|
||||||
"start": 2954,
|
"start": 3239,
|
||||||
"type": "TagDeclarator",
|
"type": "TagDeclarator",
|
||||||
"value": "seg06"
|
"value": "seg06"
|
||||||
},
|
},
|
||||||
@ -2882,17 +3390,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": 0.0,
|
"z": 145.0,
|
||||||
"units": {
|
"units": {
|
||||||
"type": "Mm"
|
"type": "Mm"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"type": "plane",
|
"type": "plane",
|
||||||
"value": "XY",
|
"value": "Custom",
|
||||||
"xAxis": {
|
"xAxis": {
|
||||||
"x": 1.0,
|
"x": 0.8038568606172174,
|
||||||
"y": 0.0,
|
"y": 0.0,
|
||||||
"z": 0.0,
|
"z": 0.5948227867513414,
|
||||||
"units": {
|
"units": {
|
||||||
"type": "Unknown"
|
"type": "Unknown"
|
||||||
}
|
}
|
||||||
@ -2949,9 +3457,9 @@ description: Variables in memory after executing prosthetic-hip.kcl
|
|||||||
"id": "[uuid]",
|
"id": "[uuid]",
|
||||||
"sourceRange": [],
|
"sourceRange": [],
|
||||||
"tag": {
|
"tag": {
|
||||||
"commentStart": 2954,
|
"commentStart": 3239,
|
||||||
"end": 2960,
|
"end": 3245,
|
||||||
"start": 2954,
|
"start": 3239,
|
||||||
"type": "TagDeclarator",
|
"type": "TagDeclarator",
|
||||||
"value": "seg06"
|
"value": "seg06"
|
||||||
},
|
},
|
||||||
@ -3007,9 +3515,9 @@ description: Variables in memory after executing prosthetic-hip.kcl
|
|||||||
-0.5
|
-0.5
|
||||||
],
|
],
|
||||||
"tag": {
|
"tag": {
|
||||||
"commentStart": 2954,
|
"commentStart": 3239,
|
||||||
"end": 2960,
|
"end": 3245,
|
||||||
"start": 2954,
|
"start": 3239,
|
||||||
"type": "TagDeclarator",
|
"type": "TagDeclarator",
|
||||||
"value": "seg06"
|
"value": "seg06"
|
||||||
},
|
},
|
||||||
@ -3158,17 +3666,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": 0.0,
|
"z": 145.0,
|
||||||
"units": {
|
"units": {
|
||||||
"type": "Mm"
|
"type": "Mm"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"type": "plane",
|
"type": "plane",
|
||||||
"value": "XY",
|
"value": "Custom",
|
||||||
"xAxis": {
|
"xAxis": {
|
||||||
"x": 1.0,
|
"x": 0.8038568606172174,
|
||||||
"y": 0.0,
|
"y": 0.0,
|
||||||
"z": 0.0,
|
"z": 0.5948227867513414,
|
||||||
"units": {
|
"units": {
|
||||||
"type": "Unknown"
|
"type": "Unknown"
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
---
|
---
|
||||||
source: kcl-lib/src/simulation_tests.rs
|
source: kcl-lib/src/simulation_tests.rs
|
||||||
description: Artifact graph flowchart nested_assembly.kcl
|
description: Artifact graph flowchart nested_main_kcl.kcl
|
||||||
extension: md
|
extension: md
|
||||||
snapshot_kind: binary
|
snapshot_kind: binary
|
||||||
---
|
---
|
||||||
|
@ -1,12 +1,12 @@
|
|||||||
```mermaid
|
```mermaid
|
||||||
flowchart LR
|
flowchart LR
|
||||||
subgraph path2 [Path]
|
subgraph path2 [Path]
|
||||||
2["Path<br>[43, 81, 2]"]
|
2["Path<br>[43, 81, 1]"]
|
||||||
3["Segment<br>[43, 81, 2]"]
|
3["Segment<br>[43, 81, 1]"]
|
||||||
4[Solid2d]
|
4[Solid2d]
|
||||||
end
|
end
|
||||||
1["Plane<br>[18, 35, 2]"]
|
1["Plane<br>[18, 35, 1]"]
|
||||||
5["Sweep Revolve<br>[89, 142, 2]"]
|
5["Sweep Revolve<br>[89, 142, 1]"]
|
||||||
6[Wall]
|
6[Wall]
|
||||||
%% face_code_ref=Missing NodePath
|
%% face_code_ref=Missing NodePath
|
||||||
7["SweepEdge Adjacent"]
|
7["SweepEdge Adjacent"]
|
||||||
|
@ -1,481 +0,0 @@
|
|||||||
---
|
|
||||||
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
|
|
||||||
}
|
|
||||||
}
|
|
||||||
]
|
|
@ -1,6 +0,0 @@
|
|||||||
---
|
|
||||||
source: kcl-lib/src/simulation_tests.rs
|
|
||||||
description: Artifact graph flowchart subtract_regression11.kcl
|
|
||||||
extension: md
|
|
||||||
snapshot_kind: binary
|
|
||||||
---
|
|
@ -1,178 +0,0 @@
|
|||||||
```mermaid
|
|
||||||
flowchart LR
|
|
||||||
subgraph path3 [Path]
|
|
||||||
3["Path<br>[88, 127, 0]"]
|
|
||||||
%% [ProgramBodyItem { index: 1 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 0 }]
|
|
||||||
5["Segment<br>[133, 153, 0]"]
|
|
||||||
%% [ProgramBodyItem { index: 1 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 1 }]
|
|
||||||
6["Segment<br>[159, 184, 0]"]
|
|
||||||
%% [ProgramBodyItem { index: 1 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 2 }]
|
|
||||||
7["Segment<br>[190, 211, 0]"]
|
|
||||||
%% [ProgramBodyItem { index: 1 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 3 }]
|
|
||||||
8["Segment<br>[217, 243, 0]"]
|
|
||||||
%% [ProgramBodyItem { index: 1 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 4 }]
|
|
||||||
9["Segment<br>[249, 270, 0]"]
|
|
||||||
%% [ProgramBodyItem { index: 1 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 5 }]
|
|
||||||
10["Segment<br>[276, 294, 0]"]
|
|
||||||
%% [ProgramBodyItem { index: 1 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 6 }]
|
|
||||||
11["Segment<br>[300, 307, 0]"]
|
|
||||||
%% [ProgramBodyItem { index: 1 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 7 }]
|
|
||||||
18[Solid2d]
|
|
||||||
end
|
|
||||||
subgraph path4 [Path]
|
|
||||||
4["Path<br>[428, 470, 0]"]
|
|
||||||
%% [ProgramBodyItem { index: 4 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 0 }]
|
|
||||||
12["Segment<br>[476, 496, 0]"]
|
|
||||||
%% [ProgramBodyItem { index: 4 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 1 }]
|
|
||||||
13["Segment<br>[502, 522, 0]"]
|
|
||||||
%% [ProgramBodyItem { index: 4 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 2 }]
|
|
||||||
14["Segment<br>[528, 547, 0]"]
|
|
||||||
%% [ProgramBodyItem { index: 4 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 3 }]
|
|
||||||
15["Segment<br>[553, 572, 0]"]
|
|
||||||
%% [ProgramBodyItem { index: 4 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 4 }]
|
|
||||||
16["Segment<br>[578, 585, 0]"]
|
|
||||||
%% [ProgramBodyItem { index: 4 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 5 }]
|
|
||||||
17[Solid2d]
|
|
||||||
end
|
|
||||||
1["Plane<br>[47, 64, 0]"]
|
|
||||||
%% [ProgramBodyItem { index: 0 }, VariableDeclarationDeclaration, VariableDeclarationInit]
|
|
||||||
2["Plane<br>[387, 404, 0]"]
|
|
||||||
%% [ProgramBodyItem { index: 3 }, VariableDeclarationDeclaration, VariableDeclarationInit]
|
|
||||||
19["Sweep Revolve<br>[322, 373, 0]"]
|
|
||||||
%% [ProgramBodyItem { index: 2 }, VariableDeclarationDeclaration, VariableDeclarationInit]
|
|
||||||
20["Sweep Extrusion<br>[603, 672, 0]"]
|
|
||||||
%% [ProgramBodyItem { index: 5 }, VariableDeclarationDeclaration, VariableDeclarationInit]
|
|
||||||
21["CompositeSolid Subtract<br>[683, 726, 0]"]
|
|
||||||
%% [ProgramBodyItem { index: 6 }, VariableDeclarationDeclaration, VariableDeclarationInit]
|
|
||||||
22[Wall]
|
|
||||||
%% face_code_ref=Missing NodePath
|
|
||||||
23[Wall]
|
|
||||||
%% face_code_ref=Missing NodePath
|
|
||||||
24[Wall]
|
|
||||||
%% face_code_ref=Missing NodePath
|
|
||||||
25[Wall]
|
|
||||||
%% face_code_ref=Missing NodePath
|
|
||||||
26[Wall]
|
|
||||||
%% face_code_ref=Missing NodePath
|
|
||||||
27[Wall]
|
|
||||||
%% face_code_ref=Missing NodePath
|
|
||||||
28[Wall]
|
|
||||||
%% face_code_ref=Missing NodePath
|
|
||||||
29[Wall]
|
|
||||||
%% face_code_ref=Missing NodePath
|
|
||||||
30[Wall]
|
|
||||||
%% face_code_ref=Missing NodePath
|
|
||||||
31["Cap Start"]
|
|
||||||
%% face_code_ref=Missing NodePath
|
|
||||||
32["Cap End"]
|
|
||||||
%% face_code_ref=Missing NodePath
|
|
||||||
33["SweepEdge Opposite"]
|
|
||||||
34["SweepEdge Opposite"]
|
|
||||||
35["SweepEdge Opposite"]
|
|
||||||
36["SweepEdge Opposite"]
|
|
||||||
37["SweepEdge Adjacent"]
|
|
||||||
38["SweepEdge Adjacent"]
|
|
||||||
39["SweepEdge Adjacent"]
|
|
||||||
40["SweepEdge Adjacent"]
|
|
||||||
41["SweepEdge Adjacent"]
|
|
||||||
42["SweepEdge Adjacent"]
|
|
||||||
43["SweepEdge Adjacent"]
|
|
||||||
44["SweepEdge Adjacent"]
|
|
||||||
1 --- 3
|
|
||||||
2 --- 4
|
|
||||||
3 --- 5
|
|
||||||
3 --- 6
|
|
||||||
3 --- 7
|
|
||||||
3 --- 8
|
|
||||||
3 --- 9
|
|
||||||
3 --- 10
|
|
||||||
3 --- 11
|
|
||||||
3 --- 18
|
|
||||||
3 ---- 19
|
|
||||||
3 --- 21
|
|
||||||
4 --- 12
|
|
||||||
4 --- 13
|
|
||||||
4 --- 14
|
|
||||||
4 --- 15
|
|
||||||
4 --- 16
|
|
||||||
4 --- 17
|
|
||||||
4 ---- 20
|
|
||||||
4 --- 21
|
|
||||||
19 <--x 5
|
|
||||||
5 --- 30
|
|
||||||
5 --- 41
|
|
||||||
19 <--x 6
|
|
||||||
6 --- 28
|
|
||||||
6 --- 42
|
|
||||||
19 <--x 7
|
|
||||||
7 --- 27
|
|
||||||
7 --- 43
|
|
||||||
19 <--x 8
|
|
||||||
8 --- 29
|
|
||||||
8 --- 44
|
|
||||||
19 <--x 9
|
|
||||||
9 --- 26
|
|
||||||
12 --- 23
|
|
||||||
12 x--> 31
|
|
||||||
12 --- 36
|
|
||||||
12 --- 40
|
|
||||||
13 --- 25
|
|
||||||
13 x--> 31
|
|
||||||
13 --- 35
|
|
||||||
13 --- 39
|
|
||||||
14 --- 22
|
|
||||||
14 x--> 31
|
|
||||||
14 --- 34
|
|
||||||
14 --- 38
|
|
||||||
15 --- 24
|
|
||||||
15 x--> 31
|
|
||||||
15 --- 33
|
|
||||||
15 --- 37
|
|
||||||
19 --- 26
|
|
||||||
19 --- 27
|
|
||||||
19 --- 28
|
|
||||||
19 --- 29
|
|
||||||
19 --- 30
|
|
||||||
19 --- 41
|
|
||||||
19 --- 42
|
|
||||||
19 --- 43
|
|
||||||
19 --- 44
|
|
||||||
20 --- 22
|
|
||||||
20 --- 23
|
|
||||||
20 --- 24
|
|
||||||
20 --- 25
|
|
||||||
20 --- 31
|
|
||||||
20 --- 32
|
|
||||||
20 --- 33
|
|
||||||
20 --- 34
|
|
||||||
20 --- 35
|
|
||||||
20 --- 36
|
|
||||||
20 --- 37
|
|
||||||
20 --- 38
|
|
||||||
20 --- 39
|
|
||||||
20 --- 40
|
|
||||||
22 --- 34
|
|
||||||
37 <--x 22
|
|
||||||
22 --- 38
|
|
||||||
23 --- 36
|
|
||||||
39 <--x 23
|
|
||||||
23 --- 40
|
|
||||||
24 --- 33
|
|
||||||
24 --- 37
|
|
||||||
40 <--x 24
|
|
||||||
25 --- 35
|
|
||||||
38 <--x 25
|
|
||||||
25 --- 39
|
|
||||||
44 <--x 26
|
|
||||||
42 <--x 27
|
|
||||||
27 --- 43
|
|
||||||
41 <--x 28
|
|
||||||
28 --- 42
|
|
||||||
43 <--x 29
|
|
||||||
29 --- 44
|
|
||||||
30 --- 41
|
|
||||||
33 <--x 32
|
|
||||||
34 <--x 32
|
|
||||||
35 <--x 32
|
|
||||||
36 <--x 32
|
|
||||||
```
|
|
@ -1,27 +0,0 @@
|
|||||||
@settings(defaultLengthUnit = mm)
|
|
||||||
|
|
||||||
sketch001 = startSketchOn(YZ)
|
|
||||||
|
|
||||||
sketch001Profile000 = startProfile(sketch001, at = [0.0, 20])
|
|
||||||
|> xLine(length = 2.25)
|
|
||||||
|> line(end = [0.75, -0.75])
|
|
||||||
|> yLine(length = -38.5)
|
|
||||||
|> line(end = [-0.75, -0.75])
|
|
||||||
|> xLine(length = -2.25)
|
|
||||||
|> yLine(length = 40)
|
|
||||||
|> close()
|
|
||||||
|
|
||||||
revolve000 = revolve(sketch001Profile000, axis = Y, angle = 360)
|
|
||||||
|
|
||||||
sketch003 = startSketchOn(YZ)
|
|
||||||
|
|
||||||
sketch003Profile000 = startProfile(sketch003, at = [0.65, 20.1])
|
|
||||||
|> yLine(length = -1.5)
|
|
||||||
|> xLine(length = -1.1)
|
|
||||||
|> yLine(length = 1.5)
|
|
||||||
|> xLine(length = 1.1)
|
|
||||||
|> close()
|
|
||||||
|
|
||||||
cut000Extrude = extrude([sketch003Profile000], length = 10, bidirectionalLength = 10)
|
|
||||||
|
|
||||||
cut000 = subtract(revolve000, tools = cut000Extrude)
|
|
@ -1,217 +0,0 @@
|
|||||||
---
|
|
||||||
source: kcl-lib/src/simulation_tests.rs
|
|
||||||
description: Operations executed subtract_regression11.kcl
|
|
||||||
---
|
|
||||||
[
|
|
||||||
{
|
|
||||||
"type": "StdLibCall",
|
|
||||||
"name": "startSketchOn",
|
|
||||||
"unlabeledArg": {
|
|
||||||
"value": {
|
|
||||||
"type": "Plane",
|
|
||||||
"artifact_id": "[uuid]"
|
|
||||||
},
|
|
||||||
"sourceRange": []
|
|
||||||
},
|
|
||||||
"labeledArgs": {},
|
|
||||||
"sourceRange": []
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "StdLibCall",
|
|
||||||
"name": "revolve",
|
|
||||||
"unlabeledArg": {
|
|
||||||
"value": {
|
|
||||||
"type": "Array",
|
|
||||||
"value": [
|
|
||||||
{
|
|
||||||
"type": "Sketch",
|
|
||||||
"value": {
|
|
||||||
"artifactId": "[uuid]"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"sourceRange": []
|
|
||||||
},
|
|
||||||
"labeledArgs": {
|
|
||||||
"angle": {
|
|
||||||
"value": {
|
|
||||||
"type": "Number",
|
|
||||||
"value": 360.0,
|
|
||||||
"ty": {
|
|
||||||
"type": "Default",
|
|
||||||
"len": {
|
|
||||||
"type": "Mm"
|
|
||||||
},
|
|
||||||
"angle": {
|
|
||||||
"type": "Degrees"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"sourceRange": []
|
|
||||||
},
|
|
||||||
"axis": {
|
|
||||||
"value": {
|
|
||||||
"type": "Object",
|
|
||||||
"value": {
|
|
||||||
"direction": {
|
|
||||||
"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"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"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"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"sourceRange": []
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"sourceRange": []
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "StdLibCall",
|
|
||||||
"name": "startSketchOn",
|
|
||||||
"unlabeledArg": {
|
|
||||||
"value": {
|
|
||||||
"type": "Plane",
|
|
||||||
"artifact_id": "[uuid]"
|
|
||||||
},
|
|
||||||
"sourceRange": []
|
|
||||||
},
|
|
||||||
"labeledArgs": {},
|
|
||||||
"sourceRange": []
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "StdLibCall",
|
|
||||||
"name": "extrude",
|
|
||||||
"unlabeledArg": {
|
|
||||||
"value": {
|
|
||||||
"type": "Array",
|
|
||||||
"value": [
|
|
||||||
{
|
|
||||||
"type": "Sketch",
|
|
||||||
"value": {
|
|
||||||
"artifactId": "[uuid]"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"sourceRange": []
|
|
||||||
},
|
|
||||||
"labeledArgs": {
|
|
||||||
"bidirectionalLength": {
|
|
||||||
"value": {
|
|
||||||
"type": "Number",
|
|
||||||
"value": 10.0,
|
|
||||||
"ty": {
|
|
||||||
"type": "Default",
|
|
||||||
"len": {
|
|
||||||
"type": "Mm"
|
|
||||||
},
|
|
||||||
"angle": {
|
|
||||||
"type": "Degrees"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"sourceRange": []
|
|
||||||
},
|
|
||||||
"length": {
|
|
||||||
"value": {
|
|
||||||
"type": "Number",
|
|
||||||
"value": 10.0,
|
|
||||||
"ty": {
|
|
||||||
"type": "Default",
|
|
||||||
"len": {
|
|
||||||
"type": "Mm"
|
|
||||||
},
|
|
||||||
"angle": {
|
|
||||||
"type": "Degrees"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"sourceRange": []
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"sourceRange": []
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "StdLibCall",
|
|
||||||
"name": "subtract",
|
|
||||||
"unlabeledArg": {
|
|
||||||
"value": {
|
|
||||||
"type": "Solid",
|
|
||||||
"value": {
|
|
||||||
"artifactId": "[uuid]"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"sourceRange": []
|
|
||||||
},
|
|
||||||
"labeledArgs": {
|
|
||||||
"tools": {
|
|
||||||
"value": {
|
|
||||||
"type": "Solid",
|
|
||||||
"value": {
|
|
||||||
"artifactId": "[uuid]"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"sourceRange": []
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"sourceRange": []
|
|
||||||
}
|
|
||||||
]
|
|
Before Width: | Height: | Size: 39 KiB |
@ -1,31 +0,0 @@
|
|||||||
---
|
|
||||||
source: kcl-lib/src/simulation_tests.rs
|
|
||||||
description: Result of unparsing subtract_regression11.kcl
|
|
||||||
---
|
|
||||||
@settings(defaultLengthUnit = mm)
|
|
||||||
|
|
||||||
sketch001 = startSketchOn(YZ)
|
|
||||||
|
|
||||||
sketch001Profile000 = startProfile(sketch001, at = [0.0, 20])
|
|
||||||
|> xLine(length = 2.25)
|
|
||||||
|> line(end = [0.75, -0.75])
|
|
||||||
|> yLine(length = -38.5)
|
|
||||||
|> line(end = [-0.75, -0.75])
|
|
||||||
|> xLine(length = -2.25)
|
|
||||||
|> yLine(length = 40)
|
|
||||||
|> close()
|
|
||||||
|
|
||||||
revolve000 = revolve(sketch001Profile000, axis = Y, angle = 360)
|
|
||||||
|
|
||||||
sketch003 = startSketchOn(YZ)
|
|
||||||
|
|
||||||
sketch003Profile000 = startProfile(sketch003, at = [0.65, 20.1])
|
|
||||||
|> yLine(length = -1.5)
|
|
||||||
|> xLine(length = -1.1)
|
|
||||||
|> yLine(length = 1.5)
|
|
||||||
|> xLine(length = 1.1)
|
|
||||||
|> close()
|
|
||||||
|
|
||||||
cut000Extrude = extrude([sketch003Profile000], length = 10, bidirectionalLength = 10)
|
|
||||||
|
|
||||||
cut000 = subtract(revolve000, tools = cut000Extrude)
|
|
@ -1,481 +0,0 @@
|
|||||||
---
|
|
||||||
source: kcl-lib/src/simulation_tests.rs
|
|
||||||
description: Artifact commands subtract_regression12.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": "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": "move_path_pen",
|
|
||||||
"path": "[uuid]",
|
|
||||||
"to": {
|
|
||||||
"x": 5.588,
|
|
||||||
"y": 12.7,
|
|
||||||
"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": -5.588,
|
|
||||||
"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": -25.4,
|
|
||||||
"z": 0.0
|
|
||||||
},
|
|
||||||
"relative": true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"cmdId": "[uuid]",
|
|
||||||
"range": [],
|
|
||||||
"command": {
|
|
||||||
"type": "extend_path",
|
|
||||||
"path": "[uuid]",
|
|
||||||
"segment": {
|
|
||||||
"type": "line",
|
|
||||||
"end": {
|
|
||||||
"x": 2.54,
|
|
||||||
"y": 0.0,
|
|
||||||
"z": 0.0
|
|
||||||
},
|
|
||||||
"relative": true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"cmdId": "[uuid]",
|
|
||||||
"range": [],
|
|
||||||
"command": {
|
|
||||||
"type": "extend_path",
|
|
||||||
"path": "[uuid]",
|
|
||||||
"segment": {
|
|
||||||
"type": "line",
|
|
||||||
"end": {
|
|
||||||
"x": 0.635,
|
|
||||||
"y": 2.54,
|
|
||||||
"z": 0.0
|
|
||||||
},
|
|
||||||
"relative": true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"cmdId": "[uuid]",
|
|
||||||
"range": [],
|
|
||||||
"command": {
|
|
||||||
"type": "extend_path",
|
|
||||||
"path": "[uuid]",
|
|
||||||
"segment": {
|
|
||||||
"type": "line",
|
|
||||||
"end": {
|
|
||||||
"x": 0.0,
|
|
||||||
"y": 20.0406,
|
|
||||||
"z": 0.0
|
|
||||||
},
|
|
||||||
"relative": true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"cmdId": "[uuid]",
|
|
||||||
"range": [],
|
|
||||||
"command": {
|
|
||||||
"type": "extend_path",
|
|
||||||
"path": "[uuid]",
|
|
||||||
"segment": {
|
|
||||||
"type": "line",
|
|
||||||
"end": {
|
|
||||||
"x": 2.413,
|
|
||||||
"y": 2.8194,
|
|
||||||
"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": -15.24,
|
|
||||||
"y": 0.508,
|
|
||||||
"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.016,
|
|
||||||
"z": 0.0
|
|
||||||
},
|
|
||||||
"relative": true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"cmdId": "[uuid]",
|
|
||||||
"range": [],
|
|
||||||
"command": {
|
|
||||||
"type": "extend_path",
|
|
||||||
"path": "[uuid]",
|
|
||||||
"segment": {
|
|
||||||
"type": "line",
|
|
||||||
"end": {
|
|
||||||
"x": 22.86,
|
|
||||||
"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.016,
|
|
||||||
"z": 0.0
|
|
||||||
},
|
|
||||||
"relative": true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"cmdId": "[uuid]",
|
|
||||||
"range": [],
|
|
||||||
"command": {
|
|
||||||
"type": "extend_path",
|
|
||||||
"path": "[uuid]",
|
|
||||||
"segment": {
|
|
||||||
"type": "line",
|
|
||||||
"end": {
|
|
||||||
"x": -22.86,
|
|
||||||
"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": 5.08,
|
|
||||||
"faces": null,
|
|
||||||
"opposite": {
|
|
||||||
"Other": 5.08
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"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
|
|
||||||
}
|
|
||||||
}
|
|
||||||
]
|
|
@ -1,6 +0,0 @@
|
|||||||
---
|
|
||||||
source: kcl-lib/src/simulation_tests.rs
|
|
||||||
description: Artifact graph flowchart subtract_regression12.kcl
|
|
||||||
extension: md
|
|
||||||
snapshot_kind: binary
|
|
||||||
---
|
|
@ -1,180 +0,0 @@
|
|||||||
```mermaid
|
|
||||||
flowchart LR
|
|
||||||
subgraph path3 [Path]
|
|
||||||
3["Path<br>[88, 129, 0]"]
|
|
||||||
%% [ProgramBodyItem { index: 1 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 0 }]
|
|
||||||
5["Segment<br>[135, 156, 0]"]
|
|
||||||
%% [ProgramBodyItem { index: 1 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 1 }]
|
|
||||||
6["Segment<br>[162, 180, 0]"]
|
|
||||||
%% [ProgramBodyItem { index: 1 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 2 }]
|
|
||||||
7["Segment<br>[186, 205, 0]"]
|
|
||||||
%% [ProgramBodyItem { index: 1 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 3 }]
|
|
||||||
8["Segment<br>[211, 235, 0]"]
|
|
||||||
%% [ProgramBodyItem { index: 1 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 4 }]
|
|
||||||
9["Segment<br>[241, 262, 0]"]
|
|
||||||
%% [ProgramBodyItem { index: 1 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 5 }]
|
|
||||||
10["Segment<br>[268, 294, 0]"]
|
|
||||||
%% [ProgramBodyItem { index: 1 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 6 }]
|
|
||||||
11["Segment<br>[300, 307, 0]"]
|
|
||||||
%% [ProgramBodyItem { index: 1 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 7 }]
|
|
||||||
18[Solid2d]
|
|
||||||
end
|
|
||||||
subgraph path4 [Path]
|
|
||||||
4["Path<br>[428, 470, 0]"]
|
|
||||||
%% [ProgramBodyItem { index: 4 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 0 }]
|
|
||||||
12["Segment<br>[476, 497, 0]"]
|
|
||||||
%% [ProgramBodyItem { index: 4 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 1 }]
|
|
||||||
13["Segment<br>[503, 522, 0]"]
|
|
||||||
%% [ProgramBodyItem { index: 4 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 2 }]
|
|
||||||
14["Segment<br>[528, 548, 0]"]
|
|
||||||
%% [ProgramBodyItem { index: 4 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 3 }]
|
|
||||||
15["Segment<br>[554, 574, 0]"]
|
|
||||||
%% [ProgramBodyItem { index: 4 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 4 }]
|
|
||||||
16["Segment<br>[580, 587, 0]"]
|
|
||||||
%% [ProgramBodyItem { index: 4 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 5 }]
|
|
||||||
17[Solid2d]
|
|
||||||
end
|
|
||||||
1["Plane<br>[47, 64, 0]"]
|
|
||||||
%% [ProgramBodyItem { index: 0 }, VariableDeclarationDeclaration, VariableDeclarationInit]
|
|
||||||
2["Plane<br>[387, 404, 0]"]
|
|
||||||
%% [ProgramBodyItem { index: 3 }, VariableDeclarationDeclaration, VariableDeclarationInit]
|
|
||||||
19["Sweep Revolve<br>[322, 373, 0]"]
|
|
||||||
%% [ProgramBodyItem { index: 2 }, VariableDeclarationDeclaration, VariableDeclarationInit]
|
|
||||||
20["Sweep Extrusion<br>[605, 676, 0]"]
|
|
||||||
%% [ProgramBodyItem { index: 5 }, VariableDeclarationDeclaration, VariableDeclarationInit]
|
|
||||||
21["CompositeSolid Subtract<br>[687, 730, 0]"]
|
|
||||||
%% [ProgramBodyItem { index: 6 }, VariableDeclarationDeclaration, VariableDeclarationInit]
|
|
||||||
22[Wall]
|
|
||||||
%% face_code_ref=Missing NodePath
|
|
||||||
23[Wall]
|
|
||||||
%% face_code_ref=Missing NodePath
|
|
||||||
24[Wall]
|
|
||||||
%% face_code_ref=Missing NodePath
|
|
||||||
25[Wall]
|
|
||||||
%% face_code_ref=Missing NodePath
|
|
||||||
26[Wall]
|
|
||||||
%% face_code_ref=Missing NodePath
|
|
||||||
27[Wall]
|
|
||||||
%% face_code_ref=Missing NodePath
|
|
||||||
28[Wall]
|
|
||||||
%% face_code_ref=Missing NodePath
|
|
||||||
29[Wall]
|
|
||||||
%% face_code_ref=Missing NodePath
|
|
||||||
30[Wall]
|
|
||||||
%% face_code_ref=Missing NodePath
|
|
||||||
31["Cap Start"]
|
|
||||||
%% face_code_ref=Missing NodePath
|
|
||||||
32["Cap End"]
|
|
||||||
%% face_code_ref=Missing NodePath
|
|
||||||
33["SweepEdge Opposite"]
|
|
||||||
34["SweepEdge Opposite"]
|
|
||||||
35["SweepEdge Opposite"]
|
|
||||||
36["SweepEdge Opposite"]
|
|
||||||
37["SweepEdge Adjacent"]
|
|
||||||
38["SweepEdge Adjacent"]
|
|
||||||
39["SweepEdge Adjacent"]
|
|
||||||
40["SweepEdge Adjacent"]
|
|
||||||
41["SweepEdge Adjacent"]
|
|
||||||
42["SweepEdge Adjacent"]
|
|
||||||
43["SweepEdge Adjacent"]
|
|
||||||
44["SweepEdge Adjacent"]
|
|
||||||
1 --- 3
|
|
||||||
2 --- 4
|
|
||||||
3 --- 5
|
|
||||||
3 --- 6
|
|
||||||
3 --- 7
|
|
||||||
3 --- 8
|
|
||||||
3 --- 9
|
|
||||||
3 --- 10
|
|
||||||
3 --- 11
|
|
||||||
3 --- 18
|
|
||||||
3 ---- 19
|
|
||||||
3 --- 21
|
|
||||||
4 --- 12
|
|
||||||
4 --- 13
|
|
||||||
4 --- 14
|
|
||||||
4 --- 15
|
|
||||||
4 --- 16
|
|
||||||
4 --- 17
|
|
||||||
4 ---- 20
|
|
||||||
4 --- 21
|
|
||||||
19 <--x 5
|
|
||||||
5 --- 30
|
|
||||||
19 <--x 7
|
|
||||||
7 --- 28
|
|
||||||
7 --- 41
|
|
||||||
19 <--x 8
|
|
||||||
8 --- 29
|
|
||||||
8 --- 42
|
|
||||||
19 <--x 9
|
|
||||||
9 --- 27
|
|
||||||
9 --- 43
|
|
||||||
19 <--x 10
|
|
||||||
10 --- 26
|
|
||||||
10 --- 44
|
|
||||||
12 --- 23
|
|
||||||
12 x--> 31
|
|
||||||
12 --- 33
|
|
||||||
12 --- 37
|
|
||||||
13 --- 25
|
|
||||||
13 x--> 31
|
|
||||||
13 --- 34
|
|
||||||
13 --- 38
|
|
||||||
14 --- 22
|
|
||||||
14 x--> 31
|
|
||||||
14 --- 35
|
|
||||||
14 --- 39
|
|
||||||
15 --- 24
|
|
||||||
15 x--> 31
|
|
||||||
15 --- 36
|
|
||||||
15 --- 40
|
|
||||||
19 --- 26
|
|
||||||
19 --- 27
|
|
||||||
19 --- 28
|
|
||||||
19 --- 29
|
|
||||||
19 --- 30
|
|
||||||
19 --- 41
|
|
||||||
19 --- 42
|
|
||||||
19 --- 43
|
|
||||||
19 --- 44
|
|
||||||
20 --- 22
|
|
||||||
20 --- 23
|
|
||||||
20 --- 24
|
|
||||||
20 --- 25
|
|
||||||
20 --- 31
|
|
||||||
20 --- 32
|
|
||||||
20 --- 33
|
|
||||||
20 --- 34
|
|
||||||
20 --- 35
|
|
||||||
20 --- 36
|
|
||||||
20 --- 37
|
|
||||||
20 --- 38
|
|
||||||
20 --- 39
|
|
||||||
20 --- 40
|
|
||||||
22 --- 35
|
|
||||||
38 <--x 22
|
|
||||||
22 --- 39
|
|
||||||
23 --- 33
|
|
||||||
23 --- 37
|
|
||||||
40 <--x 23
|
|
||||||
24 --- 36
|
|
||||||
39 <--x 24
|
|
||||||
24 --- 40
|
|
||||||
25 --- 34
|
|
||||||
37 <--x 25
|
|
||||||
25 --- 38
|
|
||||||
42 <--x 26
|
|
||||||
43 <--x 26
|
|
||||||
26 x--> 44
|
|
||||||
41 <--x 27
|
|
||||||
42 <--x 27
|
|
||||||
27 x--> 43
|
|
||||||
28 x--> 41
|
|
||||||
41 <--x 29
|
|
||||||
29 x--> 42
|
|
||||||
43 <--x 30
|
|
||||||
33 <--x 32
|
|
||||||
34 <--x 32
|
|
||||||
35 <--x 32
|
|
||||||
36 <--x 32
|
|
||||||
```
|
|
@ -1,27 +0,0 @@
|
|||||||
@settings(defaultLengthUnit = in)
|
|
||||||
|
|
||||||
sketch000 = startSketchOn(XY)
|
|
||||||
|
|
||||||
sketch000Profile000 = startProfile(sketch000, at = [0.22, 0.5])
|
|
||||||
|> xLine(length = -0.22)
|
|
||||||
|> yLine(length = -1)
|
|
||||||
|> xLine(length = 0.1)
|
|
||||||
|> line(end = [0.025, 0.1])
|
|
||||||
|> yLine(length = 0.789)
|
|
||||||
|> line(end = [0.095, 0.111])
|
|
||||||
|> close()
|
|
||||||
|
|
||||||
revolve000 = revolve(sketch000Profile000, axis = Y, angle = 360)
|
|
||||||
|
|
||||||
sketch002 = startSketchOn(YZ)
|
|
||||||
|
|
||||||
sketch002Profile000 = startProfile(sketch002, at = [-0.6, 0.02])
|
|
||||||
|> yLine(length = -0.04)
|
|
||||||
|> xLine(length = 0.9)
|
|
||||||
|> yLine(length = 0.04)
|
|
||||||
|> xLine(length = -0.9)
|
|
||||||
|> close()
|
|
||||||
|
|
||||||
cut000Extrude = extrude([sketch002Profile000], length = 0.2, bidirectionalLength = 0.2)
|
|
||||||
|
|
||||||
cut000 = subtract(revolve000, tools = cut000Extrude)
|
|
@ -1,217 +0,0 @@
|
|||||||
---
|
|
||||||
source: kcl-lib/src/simulation_tests.rs
|
|
||||||
description: Operations executed subtract_regression12.kcl
|
|
||||||
---
|
|
||||||
[
|
|
||||||
{
|
|
||||||
"type": "StdLibCall",
|
|
||||||
"name": "startSketchOn",
|
|
||||||
"unlabeledArg": {
|
|
||||||
"value": {
|
|
||||||
"type": "Plane",
|
|
||||||
"artifact_id": "[uuid]"
|
|
||||||
},
|
|
||||||
"sourceRange": []
|
|
||||||
},
|
|
||||||
"labeledArgs": {},
|
|
||||||
"sourceRange": []
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "StdLibCall",
|
|
||||||
"name": "revolve",
|
|
||||||
"unlabeledArg": {
|
|
||||||
"value": {
|
|
||||||
"type": "Array",
|
|
||||||
"value": [
|
|
||||||
{
|
|
||||||
"type": "Sketch",
|
|
||||||
"value": {
|
|
||||||
"artifactId": "[uuid]"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"sourceRange": []
|
|
||||||
},
|
|
||||||
"labeledArgs": {
|
|
||||||
"angle": {
|
|
||||||
"value": {
|
|
||||||
"type": "Number",
|
|
||||||
"value": 360.0,
|
|
||||||
"ty": {
|
|
||||||
"type": "Default",
|
|
||||||
"len": {
|
|
||||||
"type": "Inches"
|
|
||||||
},
|
|
||||||
"angle": {
|
|
||||||
"type": "Degrees"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"sourceRange": []
|
|
||||||
},
|
|
||||||
"axis": {
|
|
||||||
"value": {
|
|
||||||
"type": "Object",
|
|
||||||
"value": {
|
|
||||||
"direction": {
|
|
||||||
"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"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"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"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"sourceRange": []
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"sourceRange": []
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "StdLibCall",
|
|
||||||
"name": "startSketchOn",
|
|
||||||
"unlabeledArg": {
|
|
||||||
"value": {
|
|
||||||
"type": "Plane",
|
|
||||||
"artifact_id": "[uuid]"
|
|
||||||
},
|
|
||||||
"sourceRange": []
|
|
||||||
},
|
|
||||||
"labeledArgs": {},
|
|
||||||
"sourceRange": []
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "StdLibCall",
|
|
||||||
"name": "extrude",
|
|
||||||
"unlabeledArg": {
|
|
||||||
"value": {
|
|
||||||
"type": "Array",
|
|
||||||
"value": [
|
|
||||||
{
|
|
||||||
"type": "Sketch",
|
|
||||||
"value": {
|
|
||||||
"artifactId": "[uuid]"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"sourceRange": []
|
|
||||||
},
|
|
||||||
"labeledArgs": {
|
|
||||||
"bidirectionalLength": {
|
|
||||||
"value": {
|
|
||||||
"type": "Number",
|
|
||||||
"value": 0.2,
|
|
||||||
"ty": {
|
|
||||||
"type": "Default",
|
|
||||||
"len": {
|
|
||||||
"type": "Inches"
|
|
||||||
},
|
|
||||||
"angle": {
|
|
||||||
"type": "Degrees"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"sourceRange": []
|
|
||||||
},
|
|
||||||
"length": {
|
|
||||||
"value": {
|
|
||||||
"type": "Number",
|
|
||||||
"value": 0.2,
|
|
||||||
"ty": {
|
|
||||||
"type": "Default",
|
|
||||||
"len": {
|
|
||||||
"type": "Inches"
|
|
||||||
},
|
|
||||||
"angle": {
|
|
||||||
"type": "Degrees"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"sourceRange": []
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"sourceRange": []
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "StdLibCall",
|
|
||||||
"name": "subtract",
|
|
||||||
"unlabeledArg": {
|
|
||||||
"value": {
|
|
||||||
"type": "Solid",
|
|
||||||
"value": {
|
|
||||||
"artifactId": "[uuid]"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"sourceRange": []
|
|
||||||
},
|
|
||||||
"labeledArgs": {
|
|
||||||
"tools": {
|
|
||||||
"value": {
|
|
||||||
"type": "Solid",
|
|
||||||
"value": {
|
|
||||||
"artifactId": "[uuid]"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"sourceRange": []
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"sourceRange": []
|
|
||||||
}
|
|
||||||
]
|
|
Before Width: | Height: | Size: 60 KiB |
@ -1,31 +0,0 @@
|
|||||||
---
|
|
||||||
source: kcl-lib/src/simulation_tests.rs
|
|
||||||
description: Result of unparsing subtract_regression12.kcl
|
|
||||||
---
|
|
||||||
@settings(defaultLengthUnit = in)
|
|
||||||
|
|
||||||
sketch000 = startSketchOn(XY)
|
|
||||||
|
|
||||||
sketch000Profile000 = startProfile(sketch000, at = [0.22, 0.5])
|
|
||||||
|> xLine(length = -0.22)
|
|
||||||
|> yLine(length = -1)
|
|
||||||
|> xLine(length = 0.1)
|
|
||||||
|> line(end = [0.025, 0.1])
|
|
||||||
|> yLine(length = 0.789)
|
|
||||||
|> line(end = [0.095, 0.111])
|
|
||||||
|> close()
|
|
||||||
|
|
||||||
revolve000 = revolve(sketch000Profile000, axis = Y, angle = 360)
|
|
||||||
|
|
||||||
sketch002 = startSketchOn(YZ)
|
|
||||||
|
|
||||||
sketch002Profile000 = startProfile(sketch002, at = [-0.6, 0.02])
|
|
||||||
|> yLine(length = -0.04)
|
|
||||||
|> xLine(length = 0.9)
|
|
||||||
|> yLine(length = 0.04)
|
|
||||||
|> xLine(length = -0.9)
|
|
||||||
|> close()
|
|
||||||
|
|
||||||
cut000Extrude = extrude([sketch002Profile000], length = 0.2, bidirectionalLength = 0.2)
|
|
||||||
|
|
||||||
cut000 = subtract(revolve000, tools = cut000Extrude)
|
|
@ -1,6 +1,6 @@
|
|||||||
[package]
|
[package]
|
||||||
name = "kcl-python-bindings"
|
name = "kcl-python-bindings"
|
||||||
version = "0.3.76"
|
version = "0.3.75"
|
||||||
edition = "2021"
|
edition = "2021"
|
||||||
repository = "https://github.com/kittycad/modeling-app"
|
repository = "https://github.com/kittycad/modeling-app"
|
||||||
exclude = ["tests/*", "files/*", "venv/*"]
|
exclude = ["tests/*", "files/*", "venv/*"]
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
[package]
|
[package]
|
||||||
name = "kcl-test-server"
|
name = "kcl-test-server"
|
||||||
description = "A test server for KCL"
|
description = "A test server for KCL"
|
||||||
version = "0.1.76"
|
version = "0.1.75"
|
||||||
edition = "2021"
|
edition = "2021"
|
||||||
license = "MIT"
|
license = "MIT"
|
||||||
|
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
[package]
|
[package]
|
||||||
name = "kcl-to-core"
|
name = "kcl-to-core"
|
||||||
description = "Utility methods to convert kcl to engine core executable tests"
|
description = "Utility methods to convert kcl to engine core executable tests"
|
||||||
version = "0.1.76"
|
version = "0.1.75"
|
||||||
edition = "2021"
|
edition = "2021"
|
||||||
license = "MIT"
|
license = "MIT"
|
||||||
repository = "https://github.com/KittyCAD/modeling-app"
|
repository = "https://github.com/KittyCAD/modeling-app"
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
[package]
|
[package]
|
||||||
name = "kcl-wasm-lib"
|
name = "kcl-wasm-lib"
|
||||||
version = "0.1.76"
|
version = "0.1.75"
|
||||||
edition = "2021"
|
edition = "2021"
|
||||||
repository = "https://github.com/KittyCAD/modeling-app"
|
repository = "https://github.com/KittyCAD/modeling-app"
|
||||||
rust-version = "1.83"
|
rust-version = "1.83"
|
||||||
|
@ -139,7 +139,7 @@ function CommandBarSelectionInput({
|
|||||||
data: {
|
data: {
|
||||||
selectionType: 'singleCodeCursor',
|
selectionType: 'singleCodeCursor',
|
||||||
},
|
},
|
||||||
}) &&
|
})
|
||||||
setHasClearedSelection(true)
|
setHasClearedSelection(true)
|
||||||
}, [arg])
|
}, [arg])
|
||||||
|
|
||||||
|
@ -406,17 +406,11 @@ export const EngineStream = (props: {
|
|||||||
|
|
||||||
// On various inputs save the camera state, in case we get disconnected.
|
// On various inputs save the camera state, in case we get disconnected.
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
// Only start saving after we are playing the stream (which means
|
|
||||||
// the scene is ready.)
|
|
||||||
// Also prevents us from stepping on the toes of the camera restoration.
|
|
||||||
if (engineStreamState.value !== EngineStreamState.Playing) return
|
|
||||||
|
|
||||||
const onInput = () => {
|
const onInput = () => {
|
||||||
// Save the remote camera state to restore on stream restore.
|
// Save the remote camera state to restore on stream restore.
|
||||||
// Fire-and-forget because we don't know when a camera movement is
|
// Fire-and-forget because we don't know when a camera movement is
|
||||||
// completed on the engine side (there are no responses to data channel
|
// completed on the engine side (there are no responses to data channel
|
||||||
// mouse movements.)
|
// mouse movements.)
|
||||||
|
|
||||||
sceneInfra.camControls.saveRemoteCameraState().catch(trap)
|
sceneInfra.camControls.saveRemoteCameraState().catch(trap)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -432,7 +426,7 @@ export const EngineStream = (props: {
|
|||||||
window.document.removeEventListener('scroll', onInput)
|
window.document.removeEventListener('scroll', onInput)
|
||||||
window.document.removeEventListener('touchend', onInput)
|
window.document.removeEventListener('touchend', onInput)
|
||||||
}
|
}
|
||||||
}, [engineStreamState.value])
|
}, [])
|
||||||
|
|
||||||
const isNetworkOkay =
|
const isNetworkOkay =
|
||||||
overallState === NetworkHealthState.Ok ||
|
overallState === NetworkHealthState.Ok ||
|
||||||
|
@ -441,46 +441,39 @@ export const FileMachineProvider = ({
|
|||||||
)
|
)
|
||||||
useMenuListener(cb)
|
useMenuListener(cb)
|
||||||
|
|
||||||
const kclCommandMemo = useMemo(() => {
|
const kclCommandMemo = useMemo(
|
||||||
const providedOptions = []
|
() =>
|
||||||
if (isDesktop() && project?.children && file?.path) {
|
kclCommands({
|
||||||
const projectPath = project.path
|
|
||||||
const filePath = file.path
|
|
||||||
let children = project.children
|
|
||||||
while (children.length > 0) {
|
|
||||||
const v = children.pop()
|
|
||||||
if (!v) {
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
|
|
||||||
if (v.children) {
|
|
||||||
children.push(...v.children)
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
|
|
||||||
const relativeFilePath = v.path.replace(
|
|
||||||
projectPath + window.electron.sep,
|
|
||||||
''
|
|
||||||
)
|
|
||||||
const isCurrentFile = v.path === filePath
|
|
||||||
if (!isCurrentFile) {
|
|
||||||
providedOptions.push({
|
|
||||||
name: relativeFilePath.replaceAll(window.electron.sep, '/'),
|
|
||||||
value: relativeFilePath.replaceAll(window.electron.sep, '/'),
|
|
||||||
})
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return kclCommands({
|
|
||||||
authToken: token ?? '',
|
authToken: token ?? '',
|
||||||
projectData,
|
projectData,
|
||||||
settings: {
|
settings: {
|
||||||
defaultUnit:
|
defaultUnit:
|
||||||
settings.modeling.defaultUnit.current ?? DEFAULT_DEFAULT_LENGTH_UNIT,
|
settings.modeling.defaultUnit.current ??
|
||||||
|
DEFAULT_DEFAULT_LENGTH_UNIT,
|
||||||
},
|
},
|
||||||
specialPropsForInsertCommand: { providedOptions },
|
specialPropsForInsertCommand: {
|
||||||
})
|
providedOptions: (isDesktop() && project?.children
|
||||||
}, [codeManager, kclManager, send, project, file])
|
? project.children
|
||||||
|
: []
|
||||||
|
).flatMap((v) => {
|
||||||
|
// TODO: add support for full tree traversal when KCL support subdir imports
|
||||||
|
const relativeFilePath = v.path.replace(
|
||||||
|
project?.path + window.electron.sep,
|
||||||
|
''
|
||||||
|
)
|
||||||
|
const isDirectory = v.children
|
||||||
|
const isCurrentFile = v.path === file?.path
|
||||||
|
return isDirectory || isCurrentFile
|
||||||
|
? []
|
||||||
|
: {
|
||||||
|
name: relativeFilePath,
|
||||||
|
value: relativeFilePath,
|
||||||
|
}
|
||||||
|
}),
|
||||||
|
},
|
||||||
|
}),
|
||||||
|
[codeManager, kclManager, send, project, file]
|
||||||
|
)
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
commandBarActor.send({
|
commandBarActor.send({
|
||||||
|
@ -161,6 +161,40 @@ export const ModelingMachineProvider = ({
|
|||||||
'enable copilot': () => {
|
'enable copilot': () => {
|
||||||
editorManager.setCopilotEnabled(true)
|
editorManager.setCopilotEnabled(true)
|
||||||
},
|
},
|
||||||
|
'sketch exit execute': ({ context: { store } }) => {
|
||||||
|
// TODO: Remove this async callback. For some reason eslint wouldn't
|
||||||
|
// let me disable @typescript-eslint/no-misused-promises for the line.
|
||||||
|
;(async () => {
|
||||||
|
// When cancelling the sketch mode we should disable sketch mode within the engine.
|
||||||
|
await engineCommandManager.sendSceneCommand({
|
||||||
|
type: 'modeling_cmd_req',
|
||||||
|
cmd_id: uuidv4(),
|
||||||
|
cmd: { type: 'sketch_mode_disable' },
|
||||||
|
})
|
||||||
|
|
||||||
|
sceneInfra.camControls.syncDirection = 'clientToEngine'
|
||||||
|
|
||||||
|
if (cameraProjection.current === 'perspective') {
|
||||||
|
await sceneInfra.camControls.snapToPerspectiveBeforeHandingBackControlToEngine()
|
||||||
|
}
|
||||||
|
|
||||||
|
sceneInfra.camControls.syncDirection = 'engineToClient'
|
||||||
|
|
||||||
|
// TODO: Re-evaluate if this pause/play logic is needed.
|
||||||
|
store.videoElement?.pause()
|
||||||
|
|
||||||
|
return kclManager
|
||||||
|
.executeCode()
|
||||||
|
.then(() => {
|
||||||
|
if (engineCommandManager.idleMode) return
|
||||||
|
|
||||||
|
store.videoElement?.play().catch((e) => {
|
||||||
|
console.warn('Video playing was prevented', e)
|
||||||
|
})
|
||||||
|
})
|
||||||
|
.catch(reportRejection)
|
||||||
|
})().catch(reportRejection)
|
||||||
|
},
|
||||||
'Set mouse state': assign(({ context, event }) => {
|
'Set mouse state': assign(({ context, event }) => {
|
||||||
if (event.type !== 'Set mouse state') return {}
|
if (event.type !== 'Set mouse state') return {}
|
||||||
const nextSegmentHoverMap = () => {
|
const nextSegmentHoverMap = () => {
|
||||||
@ -1244,12 +1278,12 @@ export const ModelingMachineProvider = ({
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// route to main.kcl by default for web and desktop
|
let filePath = file?.path
|
||||||
let filePath: string = PROJECT_ENTRYPOINT
|
|
||||||
const possibleFileName = file?.path
|
|
||||||
if (possibleFileName && isDesktop()) {
|
|
||||||
// When prompt to edit finishes, try to route to the file they were in otherwise go to main.kcl
|
// When prompt to edit finishes, try to route to the file they were in otherwise go to main.kcl
|
||||||
filePath = window.electron.path.relative(basePath, possibleFileName)
|
if (filePath) {
|
||||||
|
filePath = window.electron.path.relative(basePath, filePath)
|
||||||
|
} else {
|
||||||
|
filePath = PROJECT_ENTRYPOINT
|
||||||
}
|
}
|
||||||
return await promptToEditFlow({
|
return await promptToEditFlow({
|
||||||
projectFiles,
|
projectFiles,
|
||||||
@ -1269,7 +1303,6 @@ export const ModelingMachineProvider = ({
|
|||||||
store: {
|
store: {
|
||||||
...modelingMachineDefaultContext.store,
|
...modelingMachineDefaultContext.store,
|
||||||
...persistedContext,
|
...persistedContext,
|
||||||
cameraProjection,
|
|
||||||
},
|
},
|
||||||
machineManager,
|
machineManager,
|
||||||
},
|
},
|
||||||
|
@ -9,11 +9,9 @@ import {
|
|||||||
ZOO_STUDIO_PROTOCOL,
|
ZOO_STUDIO_PROTOCOL,
|
||||||
} from '@src/lib/constants'
|
} from '@src/lib/constants'
|
||||||
import { isDesktop } from '@src/lib/isDesktop'
|
import { isDesktop } from '@src/lib/isDesktop'
|
||||||
import { Themes, darkModeMatcher, setThemeClass } from '@src/lib/theme'
|
import { Themes, getSystemTheme } from '@src/lib/theme'
|
||||||
import toast from 'react-hot-toast'
|
import toast from 'react-hot-toast'
|
||||||
import { platform } from '@src/lib/utils'
|
import { platform } from '@src/lib/utils'
|
||||||
import { Logo } from '@src/components/Logo'
|
|
||||||
import { useEffect } from 'react'
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This component is a handler that checks if a certain query parameter
|
* This component is a handler that checks if a certain query parameter
|
||||||
@ -21,23 +19,17 @@ import { useEffect } from 'react'
|
|||||||
* want to open the current page in the desktop app.
|
* want to open the current page in the desktop app.
|
||||||
*/
|
*/
|
||||||
export const OpenInDesktopAppHandler = (props: React.PropsWithChildren) => {
|
export const OpenInDesktopAppHandler = (props: React.PropsWithChildren) => {
|
||||||
|
const theme = getSystemTheme()
|
||||||
const buttonClasses =
|
const buttonClasses =
|
||||||
'bg-transparent flex-0 hover:bg-primary/10 dark:hover:bg-primary/10'
|
'bg-transparent flex-0 hover:bg-primary/10 dark:hover:bg-primary/10'
|
||||||
|
const pathLogomarkSvg = `${isDesktop() ? '.' : ''}/zma-logomark${
|
||||||
|
theme === Themes.Light ? '-dark' : ''
|
||||||
|
}.svg`
|
||||||
const [searchParams, setSearchParams] = useSearchParams()
|
const [searchParams, setSearchParams] = useSearchParams()
|
||||||
// We also ignore this param on desktop, as it is redundant
|
// We also ignore this param on desktop, as it is redundant
|
||||||
const hasAskToOpenParam =
|
const hasAskToOpenParam =
|
||||||
!isDesktop() && searchParams.has(ASK_TO_OPEN_QUERY_PARAM)
|
!isDesktop() && searchParams.has(ASK_TO_OPEN_QUERY_PARAM)
|
||||||
|
|
||||||
// Watch the system theme for changes
|
|
||||||
useEffect(() => {
|
|
||||||
const listener = (e: MediaQueryListEvent) => {
|
|
||||||
setThemeClass(e.matches ? Themes.Dark : Themes.Light)
|
|
||||||
}
|
|
||||||
|
|
||||||
darkModeMatcher?.addEventListener('change', listener)
|
|
||||||
return () => darkModeMatcher?.removeEventListener('change', listener)
|
|
||||||
}, [])
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This function removes the query param to ask to open in desktop app
|
* This function removes the query param to ask to open in desktop app
|
||||||
* and then navigates to the same route but with our custom protocol
|
* and then navigates to the same route but with our custom protocol
|
||||||
@ -81,12 +73,17 @@ export const OpenInDesktopAppHandler = (props: React.PropsWithChildren) => {
|
|||||||
appear
|
appear
|
||||||
show={true}
|
show={true}
|
||||||
as="div"
|
as="div"
|
||||||
className="fixed inset-0 grid p-4 place-content-center bg-chalkboard-10 dark:bg-chalkboard-110"
|
className={
|
||||||
|
theme +
|
||||||
|
` fixed inset-0 grid p-4 place-content-center ${
|
||||||
|
theme === Themes.Dark ? '!bg-chalkboard-110 text-chalkboard-20' : ''
|
||||||
|
}`
|
||||||
|
}
|
||||||
>
|
>
|
||||||
<Transition.Child
|
<Transition.Child
|
||||||
as="div"
|
as="div"
|
||||||
className={`max-w-3xl py-6 px-10 flex flex-col items-center gap-12
|
className={`max-w-3xl py-6 px-10 flex flex-col items-center gap-8
|
||||||
mx-auto border rounded-lg shadow-lg bg-chalkboard-10 dark:bg-chalkboard-100`}
|
mx-auto border rounded-lg shadow-lg dark:bg-chalkboard-100`}
|
||||||
enter="ease-out duration-300"
|
enter="ease-out duration-300"
|
||||||
enterFrom="opacity-0 scale-95"
|
enterFrom="opacity-0 scale-95"
|
||||||
enterTo="opacity-100 scale-100"
|
enterTo="opacity-100 scale-100"
|
||||||
@ -95,15 +92,19 @@ export const OpenInDesktopAppHandler = (props: React.PropsWithChildren) => {
|
|||||||
leaveTo="opacity-0 scale-95"
|
leaveTo="opacity-0 scale-95"
|
||||||
style={{ zIndex: 10 }}
|
style={{ zIndex: 10 }}
|
||||||
>
|
>
|
||||||
<h1 className="text-2xl text-center ">
|
<div>
|
||||||
<div className="mb-4">Launching </div>
|
<h1 className="text-2xl">
|
||||||
<div className="flex items-center gap-4 flex-wrap text-4xl">
|
Launching{' '}
|
||||||
<Logo className="w-40" aria-label="Zoo" />
|
<img
|
||||||
<span>Design Studio</span>
|
src={pathLogomarkSvg}
|
||||||
</div>
|
className="w-48"
|
||||||
|
alt="Zoo Design Studio"
|
||||||
|
/>
|
||||||
</h1>
|
</h1>
|
||||||
<div className="flex flex-col gap-4 items-center">
|
</div>
|
||||||
<p className="text-primary">Choose where to open this link...</p>
|
<p className="text-primary flex items-center gap-2">
|
||||||
|
Choose where to open this link...
|
||||||
|
</p>
|
||||||
<div className="flex flex-col md:flex-row items-start justify-between gap-4 xl:gap-8">
|
<div className="flex flex-col md:flex-row items-start justify-between gap-4 xl:gap-8">
|
||||||
<div className="flex flex-col gap-2">
|
<div className="flex flex-col gap-2">
|
||||||
<ActionButton
|
<ActionButton
|
||||||
@ -136,7 +137,6 @@ export const OpenInDesktopAppHandler = (props: React.PropsWithChildren) => {
|
|||||||
Continue to web app
|
Continue to web app
|
||||||
</ActionButton>
|
</ActionButton>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
|
||||||
</Transition.Child>
|
</Transition.Child>
|
||||||
</Transition>
|
</Transition>
|
||||||
) : (
|
) : (
|
||||||
|
@ -159,7 +159,6 @@ export function ToastTextToCadSuccess({
|
|||||||
projectName,
|
projectName,
|
||||||
fileName,
|
fileName,
|
||||||
isProjectNew,
|
isProjectNew,
|
||||||
rootProjectName,
|
|
||||||
}: {
|
}: {
|
||||||
toastId: string
|
toastId: string
|
||||||
data: TextToCad_type & { fileName: string }
|
data: TextToCad_type & { fileName: string }
|
||||||
@ -171,7 +170,6 @@ export function ToastTextToCadSuccess({
|
|||||||
projectName: string
|
projectName: string
|
||||||
fileName: string
|
fileName: string
|
||||||
isProjectNew: boolean
|
isProjectNew: boolean
|
||||||
rootProjectName: string
|
|
||||||
}) {
|
}) {
|
||||||
const wrapperRef = useRef<HTMLDivElement | null>(null)
|
const wrapperRef = useRef<HTMLDivElement | null>(null)
|
||||||
const canvasRef = useRef<HTMLCanvasElement | null>(null)
|
const canvasRef = useRef<HTMLCanvasElement | null>(null)
|
||||||
@ -363,23 +361,26 @@ export function ToastTextToCadSuccess({
|
|||||||
if (isDesktop()) {
|
if (isDesktop()) {
|
||||||
// Delete the file from the project
|
// Delete the file from the project
|
||||||
|
|
||||||
|
if (projectName && fileName) {
|
||||||
|
// You are in the new workflow for text to cad at the global application level
|
||||||
if (isProjectNew) {
|
if (isProjectNew) {
|
||||||
// Delete the entire project if it was newly created from text to CAD
|
// Delete the entire project if it was newly created from text to CAD
|
||||||
systemIOActor.send({
|
|
||||||
type: SystemIOMachineEvents.deleteProject,
|
|
||||||
data: {
|
|
||||||
requestedProjectName: rootProjectName,
|
|
||||||
},
|
|
||||||
})
|
|
||||||
} else if (projectName && fileName) {
|
|
||||||
// deletes the folder when inside the modeling page
|
|
||||||
// The TTC Create will make a subdir, delete that dir with the main.kcl as well
|
|
||||||
systemIOActor.send({
|
systemIOActor.send({
|
||||||
type: SystemIOMachineEvents.deleteProject,
|
type: SystemIOMachineEvents.deleteProject,
|
||||||
data: {
|
data: {
|
||||||
requestedProjectName: projectName,
|
requestedProjectName: projectName,
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
|
} else {
|
||||||
|
// Only delete the file if the project was preexisting
|
||||||
|
systemIOActor.send({
|
||||||
|
type: SystemIOMachineEvents.deleteKCLFile,
|
||||||
|
data: {
|
||||||
|
requestedProjectName: projectName,
|
||||||
|
requestedFileName: fileName,
|
||||||
|
},
|
||||||
|
})
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -924,7 +924,7 @@ class EngineConnection extends EventTarget {
|
|||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
// This is required for when the app is running stand-alone / within desktop app.
|
// This is required for when KCMA is running stand-alone / within desktop app.
|
||||||
// Otherwise when run in a browser, the token is sent implicitly via
|
// Otherwise when run in a browser, the token is sent implicitly via
|
||||||
// the Cookie header.
|
// the Cookie header.
|
||||||
if (this.token) {
|
if (this.token) {
|
||||||
|
@ -10,16 +10,12 @@ import {
|
|||||||
kclSamplesManifestWithNoMultipleFiles,
|
kclSamplesManifestWithNoMultipleFiles,
|
||||||
} from '@src/lib/kclSamples'
|
} from '@src/lib/kclSamples'
|
||||||
import { getUniqueProjectName } from '@src/lib/desktopFS'
|
import { getUniqueProjectName } from '@src/lib/desktopFS'
|
||||||
import { IS_ML_EXPERIMENTAL } from '@src/lib/constants'
|
import { IS_ML_EXPERIMENTAL, PROJECT_ENTRYPOINT } from '@src/lib/constants'
|
||||||
import toast from 'react-hot-toast'
|
import toast from 'react-hot-toast'
|
||||||
import { reportRejection } from '@src/lib/trap'
|
import { reportRejection } from '@src/lib/trap'
|
||||||
import { relevantFileExtensions } from '@src/lang/wasmUtils'
|
import { relevantFileExtensions } from '@src/lang/wasmUtils'
|
||||||
import {
|
import { getStringAfterLastSeparator, webSafePathSplit } from '@src/lib/paths'
|
||||||
getStringAfterLastSeparator,
|
import { FILE_EXT } from '@src/lib/constants'
|
||||||
joinOSPaths,
|
|
||||||
webSafePathSplit,
|
|
||||||
} from '@src/lib/paths'
|
|
||||||
import { getAllSubDirectoriesAtProjectRoot } from '@src/machines/systemIO/snapshotContext'
|
|
||||||
|
|
||||||
function onSubmitKCLSampleCreation({
|
function onSubmitKCLSampleCreation({
|
||||||
sample,
|
sample,
|
||||||
@ -73,32 +69,20 @@ function onSubmitKCLSampleCreation({
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* When adding assemblies to an existing project create the assembly into a unique sub directory
|
|
||||||
*/
|
|
||||||
if (!isProjectNew) {
|
|
||||||
requestedFiles.forEach((requestedFile) => {
|
|
||||||
const subDirectoryName = projectPathPart
|
|
||||||
const firstLevelDirectories = getAllSubDirectoriesAtProjectRoot({
|
|
||||||
projectFolderName: requestedFile.requestedProjectName,
|
|
||||||
})
|
|
||||||
const uniqueSubDirectoryName = getUniqueProjectName(
|
|
||||||
subDirectoryName,
|
|
||||||
firstLevelDirectories
|
|
||||||
)
|
|
||||||
requestedFile.requestedProjectName = joinOSPaths(
|
|
||||||
requestedFile.requestedProjectName,
|
|
||||||
uniqueSubDirectoryName
|
|
||||||
)
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
if (requestedFiles.length === 1) {
|
if (requestedFiles.length === 1) {
|
||||||
|
/**
|
||||||
|
* Navigates to the single file that could be renamed on disk for duplicates
|
||||||
|
*/
|
||||||
|
const folderNameBecomesKCLFileName = projectPathPart + FILE_EXT
|
||||||
|
// If the project is new create the single file as main.kcl
|
||||||
|
const requestedFileNameWithExtension = isProjectNew
|
||||||
|
? PROJECT_ENTRYPOINT
|
||||||
|
: folderNameBecomesKCLFileName
|
||||||
systemIOActor.send({
|
systemIOActor.send({
|
||||||
type: SystemIOMachineEvents.importFileFromURL,
|
type: SystemIOMachineEvents.importFileFromURL,
|
||||||
data: {
|
data: {
|
||||||
requestedProjectName: requestedFiles[0].requestedProjectName,
|
requestedProjectName: requestedFiles[0].requestedProjectName,
|
||||||
requestedFileNameWithExtension: requestedFiles[0].requestedFileName,
|
requestedFileNameWithExtension: requestedFileNameWithExtension,
|
||||||
requestedCode: requestedFiles[0].requestedCode,
|
requestedCode: requestedFiles[0].requestedCode,
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
@ -294,7 +278,8 @@ export function createApplicationCommands({
|
|||||||
return value
|
return value
|
||||||
},
|
},
|
||||||
options: ({ argumentsToSubmit }) => {
|
options: ({ argumentsToSubmit }) => {
|
||||||
const samples = isDesktop()
|
const samples =
|
||||||
|
isDesktop() && argumentsToSubmit.method !== 'existingProject'
|
||||||
? everyKclSample
|
? everyKclSample
|
||||||
: kclSamplesManifestWithNoMultipleFiles
|
: kclSamplesManifestWithNoMultipleFiles
|
||||||
return samples.map((sample) => {
|
return samples.map((sample) => {
|
||||||
@ -311,10 +296,17 @@ export function createApplicationCommands({
|
|||||||
skip: true,
|
skip: true,
|
||||||
options: ({ argumentsToSubmit }, _) => {
|
options: ({ argumentsToSubmit }, _) => {
|
||||||
if (isDesktop() && typeof argumentsToSubmit.sample === 'string') {
|
if (isDesktop() && typeof argumentsToSubmit.sample === 'string') {
|
||||||
|
const kclSample = findKclSample(argumentsToSubmit.sample)
|
||||||
|
if (kclSample && kclSample.files.length > 1) {
|
||||||
|
return [
|
||||||
|
{ name: 'New project', value: 'newProject', isCurrent: true },
|
||||||
|
]
|
||||||
|
} else {
|
||||||
return [
|
return [
|
||||||
{ name: 'New project', value: 'newProject', isCurrent: true },
|
{ name: 'New project', value: 'newProject', isCurrent: true },
|
||||||
{ name: 'Existing project', value: 'existingProject' },
|
{ name: 'Existing project', value: 'existingProject' },
|
||||||
]
|
]
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
return [{ name: 'Overwrite', value: 'existingProject' }]
|
return [{ name: 'Overwrite', value: 'existingProject' }]
|
||||||
}
|
}
|
||||||
@ -333,7 +325,6 @@ export function createApplicationCommands({
|
|||||||
isDesktop() &&
|
isDesktop() &&
|
||||||
commandsContext.argumentsToSubmit.method === 'existingProject',
|
commandsContext.argumentsToSubmit.method === 'existingProject',
|
||||||
skip: true,
|
skip: true,
|
||||||
defaultValue: isDesktop() ? undefined : 'browser',
|
|
||||||
options: (_, _context) => {
|
options: (_, _context) => {
|
||||||
const { folders } = systemIOActor.getSnapshot().context
|
const { folders } = systemIOActor.getSnapshot().context
|
||||||
const options: CommandArgumentOption<string>[] = []
|
const options: CommandArgumentOption<string>[] = []
|
||||||
|
@ -478,7 +478,7 @@ export const modelingMachineCommandConfig: StateMachineCommandSetConfig<
|
|||||||
required: true,
|
required: true,
|
||||||
defaultValue: 'Axis',
|
defaultValue: 'Axis',
|
||||||
options: [
|
options: [
|
||||||
{ name: 'Sketch Axis', isCurrent: true, value: 'Axis' },
|
{ name: 'Axis', isCurrent: true, value: 'Axis' },
|
||||||
{ name: 'Edge', isCurrent: false, value: 'Edge' },
|
{ name: 'Edge', isCurrent: false, value: 'Edge' },
|
||||||
],
|
],
|
||||||
hidden: (context) => Boolean(context.argumentsToSubmit.nodeToEdit),
|
hidden: (context) => Boolean(context.argumentsToSubmit.nodeToEdit),
|
||||||
@ -489,7 +489,6 @@ export const modelingMachineCommandConfig: StateMachineCommandSetConfig<
|
|||||||
commandContext.argumentsToSubmit.axisOrEdge as string
|
commandContext.argumentsToSubmit.axisOrEdge as string
|
||||||
),
|
),
|
||||||
inputType: 'options',
|
inputType: 'options',
|
||||||
displayName: 'Sketch Axis',
|
|
||||||
options: [
|
options: [
|
||||||
{ name: 'X Axis', isCurrent: true, value: 'X' },
|
{ name: 'X Axis', isCurrent: true, value: 'X' },
|
||||||
{ name: 'Y Axis', isCurrent: false, value: 'Y' },
|
{ name: 'Y Axis', isCurrent: false, value: 'Y' },
|
||||||
|
@ -6,9 +6,9 @@ import {
|
|||||||
ToastTextToCadError,
|
ToastTextToCadError,
|
||||||
ToastTextToCadSuccess,
|
ToastTextToCadSuccess,
|
||||||
} from '@src/components/ToastTextToCad'
|
} from '@src/components/ToastTextToCad'
|
||||||
import { PROJECT_ENTRYPOINT } from '@src/lib/constants'
|
import { FILE_EXT, PROJECT_ENTRYPOINT } from '@src/lib/constants'
|
||||||
import crossPlatformFetch from '@src/lib/crossPlatformFetch'
|
import crossPlatformFetch from '@src/lib/crossPlatformFetch'
|
||||||
import { getUniqueProjectName } from '@src/lib/desktopFS'
|
import { getNextFileName } from '@src/lib/desktopFS'
|
||||||
import { isDesktop } from '@src/lib/isDesktop'
|
import { isDesktop } from '@src/lib/isDesktop'
|
||||||
import { kclManager, systemIOActor } from '@src/lib/singletons'
|
import { kclManager, systemIOActor } from '@src/lib/singletons'
|
||||||
import {
|
import {
|
||||||
@ -17,8 +17,6 @@ import {
|
|||||||
} from '@src/machines/systemIO/utils'
|
} from '@src/machines/systemIO/utils'
|
||||||
import { reportRejection } from '@src/lib/trap'
|
import { reportRejection } from '@src/lib/trap'
|
||||||
import { toSync } from '@src/lib/utils'
|
import { toSync } from '@src/lib/utils'
|
||||||
import { getAllSubDirectoriesAtProjectRoot } from '@src/machines/systemIO/snapshotContext'
|
|
||||||
import { joinOSPaths } from '@src/lib/paths'
|
|
||||||
|
|
||||||
export async function submitTextToCadPrompt(
|
export async function submitTextToCadPrompt(
|
||||||
prompt: string,
|
prompt: string,
|
||||||
@ -175,8 +173,7 @@ export async function submitAndAwaitTextToKclSystemIO({
|
|||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
let newFileName = PROJECT_ENTRYPOINT
|
let newFileName = ''
|
||||||
let uniqueProjectName = projectName
|
|
||||||
|
|
||||||
const textToCadOutputCreated = await textToCadComplete
|
const textToCadOutputCreated = await textToCadComplete
|
||||||
.catch((e) => {
|
.catch((e) => {
|
||||||
@ -200,28 +197,30 @@ export async function submitAndAwaitTextToKclSystemIO({
|
|||||||
|
|
||||||
const TRUNCATED_PROMPT_LENGTH = 24
|
const TRUNCATED_PROMPT_LENGTH = 24
|
||||||
// Only add the prompt name if it is a preexisting project
|
// Only add the prompt name if it is a preexisting project
|
||||||
const subDirectoryAsPromptName = `${value.prompt
|
newFileName = `${value.prompt
|
||||||
.slice(0, TRUNCATED_PROMPT_LENGTH)
|
.slice(0, TRUNCATED_PROMPT_LENGTH)
|
||||||
.replace(/\s/gi, '-')
|
.replace(/\s/gi, '-')
|
||||||
.replace(/\W/gi, '-')
|
.replace(/\W/gi, '-')
|
||||||
.toLowerCase()}`
|
.toLowerCase()}${FILE_EXT}`
|
||||||
|
|
||||||
|
// If the project is new generate a main.kcl
|
||||||
|
if (isProjectNew) {
|
||||||
|
newFileName = PROJECT_ENTRYPOINT
|
||||||
|
}
|
||||||
|
|
||||||
if (isDesktop()) {
|
if (isDesktop()) {
|
||||||
if (!isProjectNew) {
|
// We have to preemptively run our unique file name logic,
|
||||||
// If the project is new, use a sub dir
|
// so that we can pass the unique file name to the toast,
|
||||||
const firstLevelDirectories = getAllSubDirectoriesAtProjectRoot({
|
// and by extension the file-deletion-on-reject logic.
|
||||||
projectFolderName: projectName,
|
newFileName = getNextFileName({
|
||||||
})
|
entryName: newFileName,
|
||||||
const uniqueSubDirectoryName = getUniqueProjectName(
|
baseDir: projectName,
|
||||||
subDirectoryAsPromptName,
|
}).name
|
||||||
firstLevelDirectories
|
|
||||||
)
|
|
||||||
uniqueProjectName = joinOSPaths(projectName, uniqueSubDirectoryName)
|
|
||||||
}
|
|
||||||
systemIOActor.send({
|
systemIOActor.send({
|
||||||
type: SystemIOMachineEvents.createKCLFile,
|
type: SystemIOMachineEvents.createKCLFile,
|
||||||
data: {
|
data: {
|
||||||
requestedProjectName: uniqueProjectName,
|
requestedProjectName: projectName,
|
||||||
requestedCode: value.code,
|
requestedCode: value.code,
|
||||||
requestedFileNameWithExtension: newFileName,
|
requestedFileNameWithExtension: newFileName,
|
||||||
},
|
},
|
||||||
@ -252,14 +251,11 @@ export async function submitAndAwaitTextToKclSystemIO({
|
|||||||
toastId,
|
toastId,
|
||||||
data: textToCadOutputCreated,
|
data: textToCadOutputCreated,
|
||||||
token,
|
token,
|
||||||
// This can be a subdir within the rootProjectName
|
projectName: projectName,
|
||||||
projectName: uniqueProjectName,
|
|
||||||
fileName: newFileName,
|
fileName: newFileName,
|
||||||
navigate,
|
navigate,
|
||||||
isProjectNew,
|
isProjectNew,
|
||||||
settings,
|
settings,
|
||||||
// This is always the root project name, no subdir
|
|
||||||
rootProjectName: projectName,
|
|
||||||
}),
|
}),
|
||||||
{
|
{
|
||||||
id: toastId,
|
id: toastId,
|
||||||
|
@ -9,8 +9,6 @@ import {
|
|||||||
orthoScale,
|
orthoScale,
|
||||||
quaternionFromUpNForward,
|
quaternionFromUpNForward,
|
||||||
} from '@src/clientSideScene/helpers'
|
} from '@src/clientSideScene/helpers'
|
||||||
import type { Setting } from '@src/lib/settings/initialSettings'
|
|
||||||
import type { CameraProjectionType } from '@rust/kcl-lib/bindings/CameraProjectionType'
|
|
||||||
import { DRAFT_DASHED_LINE } from '@src/clientSideScene/sceneConstants'
|
import { DRAFT_DASHED_LINE } from '@src/clientSideScene/sceneConstants'
|
||||||
import { DRAFT_POINT } from '@src/clientSideScene/sceneUtils'
|
import { DRAFT_POINT } from '@src/clientSideScene/sceneUtils'
|
||||||
import { createProfileStartHandle } from '@src/clientSideScene/segments'
|
import { createProfileStartHandle } from '@src/clientSideScene/segments'
|
||||||
@ -301,7 +299,6 @@ export type SegmentOverlayPayload =
|
|||||||
export interface Store {
|
export interface Store {
|
||||||
videoElement?: HTMLVideoElement
|
videoElement?: HTMLVideoElement
|
||||||
openPanes: SidebarType[]
|
openPanes: SidebarType[]
|
||||||
cameraProjection?: Setting<CameraProjectionType>
|
|
||||||
}
|
}
|
||||||
|
|
||||||
export type SketchTool =
|
export type SketchTool =
|
||||||
@ -336,6 +333,7 @@ export type ModelingMachineEvent =
|
|||||||
}
|
}
|
||||||
| { type: 'Sketch no face' }
|
| { type: 'Sketch no face' }
|
||||||
| { type: 'Cancel'; cleanup?: () => void }
|
| { type: 'Cancel'; cleanup?: () => void }
|
||||||
|
| { type: 'CancelSketch' }
|
||||||
| {
|
| {
|
||||||
type: 'Add start point' | 'Continue existing profile'
|
type: 'Add start point' | 'Continue existing profile'
|
||||||
data: {
|
data: {
|
||||||
@ -858,6 +856,10 @@ export const modelingMachine = setup({
|
|||||||
sketchDetails: event.output,
|
sketchDetails: event.output,
|
||||||
}
|
}
|
||||||
}),
|
}),
|
||||||
|
'tear down client sketch': () => {
|
||||||
|
sceneEntitiesManager.tearDownSketch({ removeAxis: false })
|
||||||
|
},
|
||||||
|
'remove sketch grid': () => sceneEntitiesManager.removeSketchGrid(),
|
||||||
'set up draft line': assign(({ context: { sketchDetails }, event }) => {
|
'set up draft line': assign(({ context: { sketchDetails }, event }) => {
|
||||||
if (!sketchDetails) return {}
|
if (!sketchDetails) return {}
|
||||||
if (event.type !== 'Add start point') return {}
|
if (event.type !== 'Add start point') return {}
|
||||||
@ -1198,6 +1200,9 @@ export const modelingMachine = setup({
|
|||||||
'clientToEngine cam sync direction': () => {
|
'clientToEngine cam sync direction': () => {
|
||||||
sceneInfra.camControls.syncDirection = 'clientToEngine'
|
sceneInfra.camControls.syncDirection = 'clientToEngine'
|
||||||
},
|
},
|
||||||
|
'engineToClient cam sync direction': () => {
|
||||||
|
sceneInfra.camControls.syncDirection = 'engineToClient'
|
||||||
|
},
|
||||||
/** TODO: this action is hiding unawaited asynchronous code */
|
/** TODO: this action is hiding unawaited asynchronous code */
|
||||||
'set selection filter to faces only': () => {
|
'set selection filter to faces only': () => {
|
||||||
kclManager.setSelectionFilter(['face', 'object'])
|
kclManager.setSelectionFilter(['face', 'object'])
|
||||||
@ -1218,6 +1223,7 @@ export const modelingMachine = setup({
|
|||||||
return codeManager.updateEditorWithAstAndWriteToFile(kclManager.ast)
|
return codeManager.updateEditorWithAstAndWriteToFile(kclManager.ast)
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
|
'Reset Segment Overlays': () => sceneEntitiesManager.resetOverlays(),
|
||||||
'Set context': assign({
|
'Set context': assign({
|
||||||
store: ({ context: { store }, event }) => {
|
store: ({ context: { store }, event }) => {
|
||||||
if (event.type !== 'Set context') return store
|
if (event.type !== 'Set context') return store
|
||||||
@ -1536,6 +1542,7 @@ export const modelingMachine = setup({
|
|||||||
'Center camera on selection': () => {},
|
'Center camera on selection': () => {},
|
||||||
'Submit to Text-to-CAD API': () => {},
|
'Submit to Text-to-CAD API': () => {},
|
||||||
'Set sketchDetails': () => {},
|
'Set sketchDetails': () => {},
|
||||||
|
'sketch exit execute': () => {},
|
||||||
'debug-action': (data) => {
|
'debug-action': (data) => {
|
||||||
console.log('re-eval debug-action', data)
|
console.log('re-eval debug-action', data)
|
||||||
},
|
},
|
||||||
@ -1603,45 +1610,6 @@ export const modelingMachine = setup({
|
|||||||
},
|
},
|
||||||
// end actions
|
// end actions
|
||||||
actors: {
|
actors: {
|
||||||
sketchExit: fromPromise(
|
|
||||||
async (args: { input: { context: { store: Store } } }) => {
|
|
||||||
const store = args.input.context.store
|
|
||||||
|
|
||||||
// When cancelling the sketch mode we should disable sketch mode within the engine.
|
|
||||||
await engineCommandManager.sendSceneCommand({
|
|
||||||
type: 'modeling_cmd_req',
|
|
||||||
cmd_id: uuidv4(),
|
|
||||||
cmd: { type: 'sketch_mode_disable' },
|
|
||||||
})
|
|
||||||
|
|
||||||
sceneInfra.camControls.syncDirection = 'clientToEngine'
|
|
||||||
|
|
||||||
if (store.cameraProjection?.current === 'perspective') {
|
|
||||||
await sceneInfra.camControls.snapToPerspectiveBeforeHandingBackControlToEngine()
|
|
||||||
}
|
|
||||||
|
|
||||||
sceneInfra.camControls.syncDirection = 'engineToClient'
|
|
||||||
|
|
||||||
// TODO: Re-evaluate if this pause/play logic is needed.
|
|
||||||
store.videoElement?.pause()
|
|
||||||
|
|
||||||
await kclManager
|
|
||||||
.executeCode()
|
|
||||||
.then(() => {
|
|
||||||
if (engineCommandManager.idleMode) return
|
|
||||||
|
|
||||||
store.videoElement?.play().catch((e: Error) => {
|
|
||||||
console.warn('Video playing was prevented', e)
|
|
||||||
})
|
|
||||||
})
|
|
||||||
.catch(reportRejection)
|
|
||||||
|
|
||||||
sceneEntitiesManager.tearDownSketch({ removeAxis: false })
|
|
||||||
sceneEntitiesManager.removeSketchGrid()
|
|
||||||
sceneInfra.camControls.syncDirection = 'engineToClient'
|
|
||||||
sceneEntitiesManager.resetOverlays()
|
|
||||||
}
|
|
||||||
),
|
|
||||||
/* Below are all the do-constrain sketch actors,
|
/* Below are all the do-constrain sketch actors,
|
||||||
* which aren't using updateModelingState and don't have the 'no kcl errors' guard yet */
|
* which aren't using updateModelingState and don't have the 'no kcl errors' guard yet */
|
||||||
'do-constrain-remove-constraint': fromPromise(
|
'do-constrain-remove-constraint': fromPromise(
|
||||||
@ -4226,13 +4194,7 @@ export const modelingMachine = setup({
|
|||||||
},
|
},
|
||||||
|
|
||||||
'undo startSketchOn': {
|
'undo startSketchOn': {
|
||||||
invoke: [
|
invoke: {
|
||||||
{
|
|
||||||
id: 'sketchExit',
|
|
||||||
src: 'sketchExit',
|
|
||||||
input: ({ context }) => ({ context }),
|
|
||||||
},
|
|
||||||
{
|
|
||||||
src: 'AST-undo-startSketchOn',
|
src: 'AST-undo-startSketchOn',
|
||||||
id: 'AST-undo-startSketchOn',
|
id: 'AST-undo-startSketchOn',
|
||||||
input: ({ context: { sketchDetails } }) => ({ sketchDetails }),
|
input: ({ context: { sketchDetails } }) => ({ sketchDetails }),
|
||||||
@ -4248,7 +4210,6 @@ export const modelingMachine = setup({
|
|||||||
reenter: true,
|
reenter: true,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
],
|
|
||||||
},
|
},
|
||||||
|
|
||||||
'Rectangle tool': {
|
'Rectangle tool': {
|
||||||
@ -4966,6 +4927,7 @@ export const modelingMachine = setup({
|
|||||||
|
|
||||||
on: {
|
on: {
|
||||||
Cancel: '.undo startSketchOn',
|
Cancel: '.undo startSketchOn',
|
||||||
|
CancelSketch: '.SketchIdle',
|
||||||
|
|
||||||
'Delete segment': {
|
'Delete segment': {
|
||||||
reenter: false,
|
reenter: false,
|
||||||
@ -4978,7 +4940,14 @@ export const modelingMachine = setup({
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|
||||||
exit: ['enable copilot'],
|
exit: [
|
||||||
|
'sketch exit execute',
|
||||||
|
'tear down client sketch',
|
||||||
|
'remove sketch grid',
|
||||||
|
'engineToClient cam sync direction',
|
||||||
|
'Reset Segment Overlays',
|
||||||
|
'enable copilot',
|
||||||
|
],
|
||||||
|
|
||||||
entry: ['add axis n grid', 'clientToEngine cam sync direction'],
|
entry: ['add axis n grid', 'clientToEngine cam sync direction'],
|
||||||
},
|
},
|
||||||
|
@ -1,6 +1,4 @@
|
|||||||
import type { FileEntry } from '@src/lib/project'
|
|
||||||
import { systemIOActor } from '@src/lib/singletons'
|
import { systemIOActor } from '@src/lib/singletons'
|
||||||
import { isArray } from '@src/lib/utils'
|
|
||||||
|
|
||||||
export const folderSnapshot = () => {
|
export const folderSnapshot = () => {
|
||||||
const { folders } = systemIOActor.getSnapshot().context
|
const { folders } = systemIOActor.getSnapshot().context
|
||||||
@ -11,48 +9,3 @@ export const defaultProjectFolderNameSnapshot = () => {
|
|||||||
const { defaultProjectFolderName } = systemIOActor.getSnapshot().context
|
const { defaultProjectFolderName } = systemIOActor.getSnapshot().context
|
||||||
return defaultProjectFolderName
|
return defaultProjectFolderName
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* From the application project directory go down to a project folder and list all the folders at that directory level
|
|
||||||
* application project directory: /home/documents/zoo-modeling-app-projects/
|
|
||||||
*
|
|
||||||
* /home/documents/zoo-modeling-app-projects/car-door/
|
|
||||||
* ├── handle
|
|
||||||
* ├── main.kcl
|
|
||||||
* └── window
|
|
||||||
*
|
|
||||||
* The two folders are handle and window
|
|
||||||
*
|
|
||||||
* @param {Object} params
|
|
||||||
* @param {string} params.projectFolderName - The name with no path information.
|
|
||||||
* @returns {FileEntry[]} An array of subdirectory names found at the root level of the specified project folder.
|
|
||||||
*/
|
|
||||||
export const getAllSubDirectoriesAtProjectRoot = ({
|
|
||||||
projectFolderName,
|
|
||||||
}: { projectFolderName: string }): FileEntry[] => {
|
|
||||||
const subDirectories: FileEntry[] = []
|
|
||||||
const { folders } = systemIOActor.getSnapshot().context
|
|
||||||
|
|
||||||
const projectFolder = folders.find((folder) => {
|
|
||||||
return folder.name === projectFolderName
|
|
||||||
})
|
|
||||||
|
|
||||||
// Find the subdirectories
|
|
||||||
if (projectFolder) {
|
|
||||||
// 1st level
|
|
||||||
const children = projectFolder.children
|
|
||||||
if (children) {
|
|
||||||
children.forEach((childFileOrDirectory) => {
|
|
||||||
// 2nd level
|
|
||||||
const secondLevelChild = childFileOrDirectory.children
|
|
||||||
// if secondLevelChild is null then it is a file
|
|
||||||
if (secondLevelChild && isArray(secondLevelChild)) {
|
|
||||||
// this is a directory!
|
|
||||||
subDirectories.push(childFileOrDirectory)
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return subDirectories
|
|
||||||
}
|
|
||||||
|