Compare commits
7 Commits
api-deux-p
...
nrc-warn-a
Author | SHA1 | Date | |
---|---|---|---|
14e3311050 | |||
d4c5cef78a | |||
4b4960ac2c | |||
8c36105113 | |||
77e5d6e3a5 | |||
bfaec5c04e | |||
8395869b2e |
@ -912,7 +912,7 @@ a1 = startSketchOn(offsetPlane(XY, offset = 10))
|
||||
|> close()
|
||||
|> revolve(
|
||||
axis = revolveAxis,
|
||||
angle = 90
|
||||
angle = 90deg
|
||||
)
|
||||
`
|
||||
)
|
||||
|
@ -317,7 +317,7 @@ test.describe('Point-and-click tests', () => {
|
||||
clickCoords: { x: 570, y: 220 },
|
||||
cameraPos: { x: 16020, y: -2000, z: 10500 },
|
||||
cameraTarget: { x: -150, y: -4500, z: -80 },
|
||||
beforeChamferSnippet: `angledLine(angle=segAng(rectangleSegmentA001)-90,length=217.26,tag=$seg01)
|
||||
beforeChamferSnippet: `angledLine(angle=segAng(rectangleSegmentA001)-90deg,length=217.26,tag=$seg01)
|
||||
chamfer(length = 30,tags = [
|
||||
seg01,
|
||||
getNextAdjacentEdge(yo),
|
||||
@ -330,8 +330,8 @@ test.describe('Point-and-click tests', () => {
|
||||
'sketch002 = startSketchOn(extrude001, face = seg03)',
|
||||
afterRectangle1stClickSnippet:
|
||||
'startProfile(sketch002, at = [205.96, 254.59])',
|
||||
afterRectangle2ndClickSnippet: `angledLine(angle=0,length=11.39,tag=$rectangleSegmentA002)
|
||||
|>angledLine(angle=segAng(rectangleSegmentA002)-90,length=105.26)
|
||||
afterRectangle2ndClickSnippet: `angledLine(angle=0deg,length=11.39,tag=$rectangleSegmentA002)
|
||||
|>angledLine(angle=segAng(rectangleSegmentA002)-90deg,length=105.26)
|
||||
|>angledLine(angle=segAng(rectangleSegmentA002),length=-segLen(rectangleSegmentA002))
|
||||
|>line(endAbsolute=[profileStartX(%),profileStartY(%)])
|
||||
|>close()`,
|
||||
@ -341,7 +341,7 @@ test.describe('Point-and-click tests', () => {
|
||||
clickCoords: { x: 690, y: 250 },
|
||||
cameraPos: { x: 16020, y: -2000, z: 10500 },
|
||||
cameraTarget: { x: -150, y: -4500, z: -80 },
|
||||
beforeChamferSnippet: `angledLine(angle = segAng(rectangleSegmentA001) - 90, length = 217.26, tag = $seg01)chamfer(
|
||||
beforeChamferSnippet: `angledLine(angle = segAng(rectangleSegmentA001) - 90deg, length = 217.26, tag = $seg01)chamfer(
|
||||
length = 30,
|
||||
tags = [
|
||||
seg01,
|
||||
@ -354,8 +354,8 @@ test.describe('Point-and-click tests', () => {
|
||||
'sketch003 = startSketchOn(extrude001, face = seg04)',
|
||||
afterRectangle1stClickSnippet:
|
||||
'startProfile(sketch003, at = [-209.64, 255.28])',
|
||||
afterRectangle2ndClickSnippet: `angledLine(angle=0,length=11.56,tag=$rectangleSegmentA003)
|
||||
|>angledLine(angle=segAng(rectangleSegmentA003)-90,length=106.84)
|
||||
afterRectangle2ndClickSnippet: `angledLine(angle=0deg,length=11.56,tag=$rectangleSegmentA003)
|
||||
|>angledLine(angle=segAng(rectangleSegmentA003)-90deg,length=106.84)
|
||||
|>angledLine(angle=segAng(rectangleSegmentA003),length=-segLen(rectangleSegmentA003))
|
||||
|>line(endAbsolute=[profileStartX(%),profileStartY(%)])
|
||||
|>close()`,
|
||||
@ -365,7 +365,7 @@ test.describe('Point-and-click tests', () => {
|
||||
clickCoords: { x: 677, y: 87 },
|
||||
cameraPos: { x: -6200, y: 1500, z: 6200 },
|
||||
cameraTarget: { x: 8300, y: 1100, z: 4800 },
|
||||
beforeChamferSnippet: `angledLine(angle = 0, length = 268.43, tag = $rectangleSegmentA001)chamfer(
|
||||
beforeChamferSnippet: `angledLine(angle = 0deg, length = 268.43, tag = $rectangleSegmentA001)chamfer(
|
||||
length = 30,
|
||||
tags = [
|
||||
getNextAdjacentEdge(yo),
|
||||
@ -376,8 +376,8 @@ test.describe('Point-and-click tests', () => {
|
||||
'sketch004 = startSketchOn(extrude001, face = seg05)',
|
||||
afterRectangle1stClickSnippet:
|
||||
'startProfile(sketch004, at = [82.57, 322.96])',
|
||||
afterRectangle2ndClickSnippet: `angledLine(angle=0,length=11.16,tag=$rectangleSegmentA004)
|
||||
|>angledLine(angle=segAng(rectangleSegmentA004)-90,length=103.07)
|
||||
afterRectangle2ndClickSnippet: `angledLine(angle=0deg,length=11.16,tag=$rectangleSegmentA004)
|
||||
|>angledLine(angle=segAng(rectangleSegmentA004)-90deg,length=103.07)
|
||||
|>angledLine(angle=segAng(rectangleSegmentA004),length=-segLen(rectangleSegmentA004))
|
||||
|>line(endAbsolute=[profileStartX(%),profileStartY(%)])
|
||||
|>close()`,
|
||||
@ -394,8 +394,8 @@ test.describe('Point-and-click tests', () => {
|
||||
'sketch005 = startSketchOn(extrude001, face = seg06)',
|
||||
afterRectangle1stClickSnippet:
|
||||
'startProfile(sketch005, at = [-23.43, 19.69])',
|
||||
afterRectangle2ndClickSnippet: `angledLine(angle=0,length=9.1,tag=$rectangleSegmentA005)
|
||||
|>angledLine(angle=segAng(rectangleSegmentA005)-90,length=84.07)
|
||||
afterRectangle2ndClickSnippet: `angledLine(angle=0deg,length=9.1,tag=$rectangleSegmentA005)
|
||||
|>angledLine(angle=segAng(rectangleSegmentA005)-90deg,length=84.07)
|
||||
|>angledLine(angle=segAng(rectangleSegmentA005),length=-segLen(rectangleSegmentA005))
|
||||
|>line(endAbsolute=[profileStartX(%),profileStartY(%)])
|
||||
|>close()`,
|
||||
@ -407,8 +407,8 @@ test.describe('Point-and-click tests', () => {
|
||||
|
||||
sketch001 = startSketchOn(XZ)
|
||||
|> startProfile(at = [75.8, 317.2]) // [$startCapTag, $EndCapTag]
|
||||
|> angledLine(angle = 0, length = 268.43, tag = $rectangleSegmentA001)
|
||||
|> angledLine(angle = segAng(rectangleSegmentA001) - 90, length = 217.26, tag = $seg01)
|
||||
|> angledLine(angle = 0deg, length = 268.43, tag = $rectangleSegmentA001)
|
||||
|> angledLine(angle = segAng(rectangleSegmentA001) - 90deg, length = 217.26, tag = $seg01)
|
||||
|> angledLine(angle = segAng(rectangleSegmentA001), length = -segLen(rectangleSegmentA001), tag = $yo)
|
||||
|> line(endAbsolute = [profileStartX(%), profileStartY(%)], tag = $seg02)
|
||||
|> close()
|
||||
@ -419,29 +419,29 @@ extrude001 = extrude(sketch001, length = 100)
|
||||
|> chamfer(length = 30, tags = [getNextAdjacentEdge(yo)], tag = $seg06)
|
||||
sketch002 = startSketchOn(extrude001, face = seg03)
|
||||
profile001 = startProfile(sketch002, at = [205.96, 254.59])
|
||||
|> angledLine(angle = 0, length = 11.39, tag = $rectangleSegmentA002)
|
||||
|> angledLine(angle = segAng(rectangleSegmentA002) - 90, length = 105.26)
|
||||
|> angledLine(angle = 0deg, length = 11.39, tag = $rectangleSegmentA002)
|
||||
|> angledLine(angle = segAng(rectangleSegmentA002) - 90deg, length = 105.26)
|
||||
|> angledLine(angle = segAng(rectangleSegmentA002), length = -segLen(rectangleSegmentA002))
|
||||
|> line(endAbsolute = [profileStartX(%), profileStartY(%)])
|
||||
|> close()
|
||||
sketch003 = startSketchOn(extrude001, face = seg04)
|
||||
profile002 = startProfile(sketch003, at = [-209.64, 255.28])
|
||||
|> angledLine(angle = 0, length = 11.56, tag = $rectangleSegmentA003)
|
||||
|> angledLine(angle = segAng(rectangleSegmentA003) - 90, length = 106.84)
|
||||
|> angledLine(angle = 0deg, length = 11.56, tag = $rectangleSegmentA003)
|
||||
|> angledLine(angle = segAng(rectangleSegmentA003) - 90deg, length = 106.84)
|
||||
|> angledLine(angle = segAng(rectangleSegmentA003), length = -segLen(rectangleSegmentA003))
|
||||
|> line(endAbsolute = [profileStartX(%), profileStartY(%)])
|
||||
|> close()
|
||||
sketch004 = startSketchOn(extrude001, face = seg05)
|
||||
profile003 = startProfile(sketch004, at = [82.57, 322.96])
|
||||
|> angledLine(angle = 0, length = 11.16, tag = $rectangleSegmentA004)
|
||||
|> angledLine(angle = segAng(rectangleSegmentA004) - 90, length = 103.07)
|
||||
|> angledLine(angle = 0deg, length = 11.16, tag = $rectangleSegmentA004)
|
||||
|> angledLine(angle = segAng(rectangleSegmentA004) - 90deg, length = 103.07)
|
||||
|> angledLine(angle = segAng(rectangleSegmentA004), length = -segLen(rectangleSegmentA004))
|
||||
|> line(endAbsolute = [profileStartX(%), profileStartY(%)])
|
||||
|> close()
|
||||
sketch005 = startSketchOn(extrude001, face = seg06)
|
||||
profile004 = startProfile(sketch005, at = [-23.43, 19.69])
|
||||
|> angledLine(angle = 0, length = 9.1, tag = $rectangleSegmentA005)
|
||||
|> angledLine(angle = segAng(rectangleSegmentA005) - 90, length = 84.07)
|
||||
|> angledLine(angle = 0deg, length = 9.1, tag = $rectangleSegmentA005)
|
||||
|> angledLine(angle = segAng(rectangleSegmentA005) - 90deg, length = 84.07)
|
||||
|> angledLine(angle = segAng(rectangleSegmentA005), length = -segLen(rectangleSegmentA005))
|
||||
|> line(endAbsolute = [profileStartX(%), profileStartY(%)])
|
||||
|> close()
|
||||
@ -482,7 +482,7 @@ profile004 = startProfile(sketch005, at = [-23.43, 19.69])
|
||||
clickCoords: { x: 570, y: 220 },
|
||||
cameraPos: { x: 16020, y: -2000, z: 10500 },
|
||||
cameraTarget: { x: -150, y: -4500, z: -80 },
|
||||
beforeChamferSnippet: `angledLine(angle=segAng(rectangleSegmentA001)-90,length=217.26,tag=$seg01)
|
||||
beforeChamferSnippet: `angledLine(angle=segAng(rectangleSegmentA001)-90deg,length=217.26,tag=$seg01)
|
||||
chamfer(extrude001,length=30,tags=[
|
||||
seg01,
|
||||
getNextAdjacentEdge(yo),
|
||||
@ -494,8 +494,8 @@ profile004 = startProfile(sketch005, at = [-23.43, 19.69])
|
||||
'sketch002 = startSketchOn(extrude001, face = seg03)',
|
||||
afterRectangle1stClickSnippet:
|
||||
'startProfile(sketch002, at = [205.96, 254.59])',
|
||||
afterRectangle2ndClickSnippet: `angledLine(angle=0,length=11.39,tag=$rectangleSegmentA002)
|
||||
|>angledLine(angle=segAng(rectangleSegmentA002)-90,length=105.26)
|
||||
afterRectangle2ndClickSnippet: `angledLine(angle=0deg,length=11.39,tag=$rectangleSegmentA002)
|
||||
|>angledLine(angle=segAng(rectangleSegmentA002)-90deg,length=105.26)
|
||||
|>angledLine(angle=segAng(rectangleSegmentA002),length=-segLen(rectangleSegmentA002))
|
||||
|>line(endAbsolute=[profileStartX(%),profileStartY(%)])
|
||||
|>close()`,
|
||||
@ -504,8 +504,8 @@ profile004 = startProfile(sketch005, at = [-23.43, 19.69])
|
||||
`@settings(defaultLengthUnit = in)
|
||||
sketch001 = startSketchOn(XZ)
|
||||
|> startProfile(at = [75.8, 317.2])
|
||||
|> angledLine(angle = 0, length = 268.43, tag = $rectangleSegmentA001)
|
||||
|> angledLine(angle = segAng(rectangleSegmentA001) - 90, length = 217.26, tag = $seg01)
|
||||
|> angledLine(angle = 0deg, length = 268.43, tag = $rectangleSegmentA001)
|
||||
|> angledLine(angle = segAng(rectangleSegmentA001) - 90deg, length = 217.26, tag = $seg01)
|
||||
|> angledLine(angle = segAng(rectangleSegmentA001), length = -segLen(rectangleSegmentA001), tag = $yo)
|
||||
|> line(endAbsolute = [profileStartX(%), profileStartY(%)], tag = $seg02)
|
||||
|> close()
|
||||
@ -526,8 +526,8 @@ chamf = chamfer(
|
||||
)
|
||||
sketch002 = startSketchOn(extrude001, face = seg03)
|
||||
profile001 = startProfile(sketch002, at = [205.96, 254.59])
|
||||
|> angledLine(angle = 0, length = 11.39, tag = $rectangleSegmentA002)
|
||||
|> angledLine(angle = segAng(rectangleSegmentA002) - 90, length = 105.26)
|
||||
|> angledLine(angle = 0deg, length = 11.39, tag = $rectangleSegmentA002)
|
||||
|> angledLine(angle = segAng(rectangleSegmentA002) - 90deg, length = 105.26)
|
||||
|> angledLine(angle = segAng(rectangleSegmentA002), length = -segLen(rectangleSegmentA002))
|
||||
|> line(endAbsolute = [profileStartX(%), profileStartY(%)])
|
||||
|> close()
|
||||
@ -1153,7 +1153,7 @@ openSketch = startSketchOn(XY)
|
||||
}) => {
|
||||
// One dumb hardcoded screen pixel value
|
||||
const testPoint = { x: 620, y: 257 }
|
||||
const expectedOutput = `helix001 = helix( axis = X, radius = 5, length = 5, revolutions = 1, angleStart = 270, ccw = false,)`
|
||||
const expectedOutput = `helix001 = helix( axis = X, radius = 5, length = 5, revolutions = 1, angleStart = 270deg, ccw = false,)`
|
||||
const expectedLine = `axis=X,`
|
||||
|
||||
await homePage.goToModelingScene()
|
||||
@ -1183,7 +1183,7 @@ openSketch = startSketchOn(XY)
|
||||
stage: 'arguments',
|
||||
currentArgKey: 'angleStart',
|
||||
highlightedHeaderArg: 'angleStart',
|
||||
currentArgValue: '360',
|
||||
currentArgValue: '360deg',
|
||||
headerArguments: {
|
||||
Mode: 'Axis',
|
||||
Axis: 'X',
|
||||
@ -1195,7 +1195,7 @@ openSketch = startSketchOn(XY)
|
||||
},
|
||||
commandName: 'Helix',
|
||||
})
|
||||
await cmdBar.currentArgumentInput.locator('.cm-content').fill('270')
|
||||
await cmdBar.currentArgumentInput.locator('.cm-content').fill('270deg')
|
||||
await cmdBar.progressCmdBar()
|
||||
await cmdBar.progressCmdBar()
|
||||
await cmdBar.progressCmdBar()
|
||||
@ -1471,9 +1471,9 @@ extrude001 = extrude(profile001, length = 100)
|
||||
// One dumb hardcoded screen pixel value
|
||||
const testPoint = { x: 620, y: 257 }
|
||||
const [clickOnWall] = scene.makeMouseHelpers(testPoint.x, testPoint.y)
|
||||
const expectedOutput = `helix001 = helix( cylinder = extrude001, revolutions = 1, angleStart = 360, ccw = false,)`
|
||||
const expectedOutput = `helix001 = helix( cylinder = extrude001, revolutions = 1, angleStart = 360deg, ccw = false,)`
|
||||
const expectedLine = `cylinder = extrude001,`
|
||||
const expectedEditedOutput = `helix001 = helix( cylinder = extrude001, revolutions = 1, angleStart = 360, ccw = true,)`
|
||||
const expectedEditedOutput = `helix001 = helix( cylinder = extrude001, revolutions = 1, angleStart = 360deg, ccw = true,)`
|
||||
|
||||
await test.step(`Go through the command bar flow`, async () => {
|
||||
await toolbar.helixButton.click()
|
||||
@ -1776,8 +1776,8 @@ profile002 = startProfile(sketch002, at = [0, 0])
|
||||
initialCode: `@settings(defaultLengthUnit = in)
|
||||
sketch001 = startSketchOn(YZ)
|
||||
profile001 = startProfile(sketch001, at = [-400, -400])
|
||||
|> angledLine(angle = 0, length = 800, tag = $rectangleSegmentA001)
|
||||
|> angledLine(angle = segAng(rectangleSegmentA001) + 90, length = 800)
|
||||
|> angledLine(angle = 0deg, length = 800, tag = $rectangleSegmentA001)
|
||||
|> angledLine(angle = segAng(rectangleSegmentA001) + 90deg, length = 800)
|
||||
|> angledLine(angle = segAng(rectangleSegmentA001), length = -segLen(rectangleSegmentA001))
|
||||
|> line(endAbsolute = [profileStartX(%), profileStartY(%)])
|
||||
|> close()
|
||||
@ -1950,7 +1950,7 @@ profile002 = startProfile(sketch002, at = [0, 0])
|
||||
radius = 1,
|
||||
length = 10,
|
||||
revolutions = 10,
|
||||
angleStart = 0,
|
||||
angleStart = 0deg,
|
||||
ccw = false,
|
||||
)
|
||||
sketch001 = startSketchOn(XZ)
|
||||
@ -3660,8 +3660,8 @@ profile001 = startProfile(sketch001, at = [-20, 20])
|
||||
const initialCode = `
|
||||
sketch001 = startSketchOn(XZ)
|
||||
|> startProfile(at = [-100.0, 100.0])
|
||||
|> angledLine(angle = 0, length = 200.0, tag = $rectangleSegmentA001)
|
||||
|> angledLine(angle = segAng(rectangleSegmentA001) - 90, length = 200, tag = $rectangleSegmentB001)
|
||||
|> angledLine(angle = 0deg, length = 200.0, tag = $rectangleSegmentA001)
|
||||
|> angledLine(angle = segAng(rectangleSegmentA001) - 90deg, length = 200, tag = $rectangleSegmentB001)
|
||||
|> angledLine(
|
||||
angle=segAng(rectangleSegmentA001),
|
||||
length=-segLen(rectangleSegmentA001),
|
||||
@ -3672,9 +3672,9 @@ tag=$rectangleSegmentC001,
|
||||
extrude001 = extrude(sketch001, length = 200)
|
||||
sketch002 = startSketchOn(extrude001, face = rectangleSegmentA001)
|
||||
|> startProfile(at = [-66.77, 84.81])
|
||||
|> angledLine(angle = 180, length = 27.08, tag = $rectangleSegmentA002)
|
||||
|> angledLine(angle = 180deg, length = 27.08, tag = $rectangleSegmentA002)
|
||||
|> angledLine(
|
||||
angle=segAng(rectangleSegmentA002) - 90,
|
||||
angle=segAng(rectangleSegmentA002) - 90deg,
|
||||
length=27.8,
|
||||
tag=$rectangleSegmentB002,
|
||||
)
|
||||
@ -3706,11 +3706,10 @@ tag=$rectangleSegmentC002,
|
||||
await cmdBar.progressCmdBar()
|
||||
await cmdBar.progressCmdBar()
|
||||
|
||||
const newCodeToFind = `revolve001 = revolve(sketch002, angle = 360, axis = X)`
|
||||
const newCodeToFind = `revolve001 = revolve(sketch002, angle = 360deg, axis = X)`
|
||||
expect(editor.expectEditor.toContain(newCodeToFind)).toBeTruthy()
|
||||
|
||||
// Edit flow
|
||||
const newAngle = '90'
|
||||
await toolbar.openPane('feature-tree')
|
||||
const operationButton = await toolbar.getFeatureTreeOperation(
|
||||
'Revolve',
|
||||
@ -3720,26 +3719,26 @@ tag=$rectangleSegmentC002,
|
||||
await cmdBar.expectState({
|
||||
commandName: 'Revolve',
|
||||
currentArgKey: 'angle',
|
||||
currentArgValue: '360',
|
||||
currentArgValue: '360deg',
|
||||
headerArguments: {
|
||||
Angle: '360',
|
||||
},
|
||||
highlightedHeaderArg: 'angle',
|
||||
stage: 'arguments',
|
||||
})
|
||||
await page.keyboard.insertText(newAngle)
|
||||
await page.keyboard.insertText('90deg')
|
||||
await cmdBar.progressCmdBar()
|
||||
await cmdBar.expectState({
|
||||
stage: 'review',
|
||||
headerArguments: {
|
||||
Angle: newAngle,
|
||||
Angle: '90',
|
||||
},
|
||||
commandName: 'Revolve',
|
||||
})
|
||||
await cmdBar.progressCmdBar()
|
||||
await toolbar.closePane('feature-tree')
|
||||
await editor.expectEditor.toContain(
|
||||
newCodeToFind.replace('angle = 360', 'angle = ' + newAngle)
|
||||
newCodeToFind.replace('angle = 360deg', 'angle = 90deg')
|
||||
)
|
||||
})
|
||||
test('revolve surface around edge from an extruded solid2d', async ({
|
||||
@ -3753,8 +3752,8 @@ tag=$rectangleSegmentC002,
|
||||
}) => {
|
||||
const initialCode = `sketch001 = startSketchOn(XZ)
|
||||
|> startProfile(at = [-102.57, 101.72])
|
||||
|> angledLine(angle = 0, length = 202.6, tag = $rectangleSegmentA001)
|
||||
|> angledLine(angle = segAng(rectangleSegmentA001) - 90, length = 202.6, tag = $rectangleSegmentB001)
|
||||
|> angledLine(angle = 0deg, length = 202.6, tag = $rectangleSegmentA001)
|
||||
|> angledLine(angle = segAng(rectangleSegmentA001) - 90deg, length = 202.6, tag = $rectangleSegmentB001)
|
||||
|> angledLine(angle = segAng(rectangleSegmentA001), length = -segLen(rectangleSegmentA001), tag = $rectangleSegmentC001)
|
||||
|> line(endAbsolute = [profileStartX(%), profileStartY(%)])
|
||||
|> close()
|
||||
@ -3779,17 +3778,17 @@ sketch002 = startSketchOn(extrude001, face = rectangleSegmentA001)
|
||||
await toolbar.revolveButton.click()
|
||||
await cmdBar.progressCmdBar()
|
||||
await page.getByText('Edge', { exact: true }).click()
|
||||
const lineCodeToSelection = `angledLine(angle = 0, length = 202.6, tag = $rectangleSegmentA001)`
|
||||
const lineCodeToSelection = `angledLine(angle = 0deg, length = 202.6, tag = $rectangleSegmentA001)`
|
||||
await page.getByText(lineCodeToSelection).click()
|
||||
await cmdBar.progressCmdBar()
|
||||
await cmdBar.progressCmdBar()
|
||||
await cmdBar.progressCmdBar()
|
||||
|
||||
const newCodeToFind = `revolve001 = revolve(sketch002, angle = 360, axis = rectangleSegmentA001)`
|
||||
const newCodeToFind = `revolve001 = revolve(sketch002, angle = 360deg, axis = rectangleSegmentA001)`
|
||||
await editor.expectEditor.toContain(newCodeToFind)
|
||||
|
||||
// Edit flow
|
||||
const newAngle = '180'
|
||||
const newAngle = '180deg'
|
||||
await toolbar.openPane('feature-tree')
|
||||
const operationButton = await toolbar.getFeatureTreeOperation(
|
||||
'Revolve',
|
||||
@ -3799,9 +3798,9 @@ sketch002 = startSketchOn(extrude001, face = rectangleSegmentA001)
|
||||
await cmdBar.expectState({
|
||||
commandName: 'Revolve',
|
||||
currentArgKey: 'angle',
|
||||
currentArgValue: '360',
|
||||
currentArgValue: '360deg',
|
||||
headerArguments: {
|
||||
Angle: '360',
|
||||
Angle: '360deg',
|
||||
},
|
||||
highlightedHeaderArg: 'angle',
|
||||
stage: 'arguments',
|
||||
@ -3823,7 +3822,7 @@ sketch002 = startSketchOn(extrude001, face = rectangleSegmentA001)
|
||||
await toolbar.closePane('feature-tree')
|
||||
await editor.expectEditor.toContain('angle001 = ' + newAngle)
|
||||
await editor.expectEditor.toContain(
|
||||
newCodeToFind.replace('angle = 360', 'angle = angle001')
|
||||
newCodeToFind.replace('angle = 360deg', 'angle = angle001')
|
||||
)
|
||||
expect(editor.expectEditor.toContain(newCodeToFind)).toBeTruthy()
|
||||
})
|
||||
@ -3842,8 +3841,8 @@ sketch002 = startSketchOn(extrude001, face = rectangleSegmentA001)
|
||||
|> xLine(length = 2.6)
|
||||
sketch001 = startSketchOn(-XY)
|
||||
|> startProfile(at = [-0.48, 1.25])
|
||||
|> angledLine(angle = 0, length = 2.38, tag = $rectangleSegmentA001)
|
||||
|> angledLine(angle = segAng(rectangleSegmentA001) - 90, length = 2.4, tag = $rectangleSegmentB001)
|
||||
|> angledLine(angle = 0deg, length = 2.38, tag = $rectangleSegmentA001)
|
||||
|> angledLine(angle = segAng(rectangleSegmentA001) - 90deg, length = 2.4, tag = $rectangleSegmentB001)
|
||||
|> angledLine(angle = segAng(rectangleSegmentA001), length = -segLen(rectangleSegmentA001), tag = $rectangleSegmentC001)
|
||||
|> line(endAbsolute = [profileStartX(%), profileStartY(%)])
|
||||
|> close()
|
||||
@ -3880,11 +3879,10 @@ sketch002 = startSketchOn(extrude001, face = rectangleSegmentA001)
|
||||
await cmdBar.progressCmdBar()
|
||||
await cmdBar.progressCmdBar()
|
||||
|
||||
const newCodeToFind = `revolve001 = revolve(sketch003, angle = 360, axis = seg01)`
|
||||
const newCodeToFind = `revolve001 = revolve(sketch003, angle = 360deg, axis = seg01)`
|
||||
expect(editor.expectEditor.toContain(newCodeToFind)).toBeTruthy()
|
||||
|
||||
// Edit flow
|
||||
const newAngle = '270'
|
||||
await toolbar.openPane('feature-tree')
|
||||
const operationButton = await toolbar.getFeatureTreeOperation(
|
||||
'Revolve',
|
||||
@ -3894,26 +3892,26 @@ sketch002 = startSketchOn(extrude001, face = rectangleSegmentA001)
|
||||
await cmdBar.expectState({
|
||||
commandName: 'Revolve',
|
||||
currentArgKey: 'angle',
|
||||
currentArgValue: '360',
|
||||
currentArgValue: '360deg',
|
||||
headerArguments: {
|
||||
Angle: '360',
|
||||
},
|
||||
highlightedHeaderArg: 'angle',
|
||||
stage: 'arguments',
|
||||
})
|
||||
await page.keyboard.insertText(newAngle)
|
||||
await page.keyboard.insertText('270deg')
|
||||
await cmdBar.progressCmdBar()
|
||||
await cmdBar.expectState({
|
||||
stage: 'review',
|
||||
headerArguments: {
|
||||
Angle: newAngle,
|
||||
Angle: '270',
|
||||
},
|
||||
commandName: 'Revolve',
|
||||
})
|
||||
await cmdBar.progressCmdBar()
|
||||
await toolbar.closePane('feature-tree')
|
||||
await editor.expectEditor.toContain(
|
||||
newCodeToFind.replace('angle = 360', 'angle = ' + newAngle)
|
||||
newCodeToFind.replace('angle = 360deg', 'angle = 270deg')
|
||||
)
|
||||
})
|
||||
})
|
||||
@ -4856,7 +4854,7 @@ path001 = startProfile(sketch001, at = [0, 0])
|
||||
await cmdBar.expectState({
|
||||
stage: 'arguments',
|
||||
currentArgKey: 'angle',
|
||||
currentArgValue: '360',
|
||||
currentArgValue: '360deg',
|
||||
headerArguments: {
|
||||
Profiles: '2 profiles',
|
||||
AxisOrEdge: 'Edge',
|
||||
@ -4866,7 +4864,7 @@ path001 = startProfile(sketch001, at = [0, 0])
|
||||
highlightedHeaderArg: 'angle',
|
||||
commandName: 'Revolve',
|
||||
})
|
||||
await page.keyboard.insertText('180')
|
||||
await page.keyboard.insertText('180deg')
|
||||
await cmdBar.progressCmdBar()
|
||||
await cmdBar.expectState({
|
||||
stage: 'review',
|
||||
@ -4885,7 +4883,7 @@ path001 = startProfile(sketch001, at = [0, 0])
|
||||
shouldNormalise: true,
|
||||
})
|
||||
await editor.expectEditor.toContain(
|
||||
`revolve001 = revolve([profile001, profile002], angle=180, axis=seg01)`,
|
||||
`revolve001 = revolve([profile001, profile002], angle=180deg, axis=seg01)`,
|
||||
{ shouldNormalise: true }
|
||||
)
|
||||
})
|
||||
@ -4897,7 +4895,7 @@ path001 = startProfile(sketch001, at = [0, 0])
|
||||
await page.getByTestId('context-menu-delete').click()
|
||||
await scene.settled(cmdBar)
|
||||
await editor.expectEditor.not.toContain(
|
||||
`revolve001 = revolve([profile001, profile002], axis = XY, angle = 180)`,
|
||||
`revolve001 = revolve([profile001, profile002], axis = XY, angle = 180deg)`,
|
||||
{ shouldNormalise: true }
|
||||
)
|
||||
})
|
||||
|
@ -2100,8 +2100,8 @@ profile003 = startProfile(sketch001, at = [206.63, -56.73])
|
||||
)
|
||||
await crnRect1point2()
|
||||
await editor.expectEditor.toContain(
|
||||
`|> angledLine(angle = 0, length = 2.37, tag = $rectangleSegmentA001)
|
||||
|> angledLine(angle = segAng(rectangleSegmentA001) - 90, length = 7.8)
|
||||
`|> angledLine(angle = 0deg, length = 2.37, tag = $rectangleSegmentA001)
|
||||
|> angledLine(angle = segAng(rectangleSegmentA001) - 90deg, length = 7.8)
|
||||
|> angledLine(angle = segAng(rectangleSegmentA001), length = -segLen(rectangleSegmentA001))
|
||||
|> line(endAbsolute = [profileStartX(%), profileStartY(%)])
|
||||
|> close()`.replaceAll('\n', '')
|
||||
@ -2115,8 +2115,8 @@ profile003 = startProfile(sketch001, at = [206.63, -56.73])
|
||||
await crnRect2point2()
|
||||
await page.waitForTimeout(300)
|
||||
await editor.expectEditor.toContain(
|
||||
`|> angledLine(angle = 0, length = 5.49, tag = $rectangleSegmentA002)
|
||||
|> angledLine(angle = segAng(rectangleSegmentA002) - 90, length = 4.14)
|
||||
`|> angledLine(angle = 0deg, length = 5.49, tag = $rectangleSegmentA002)
|
||||
|> angledLine(angle = segAng(rectangleSegmentA002) - 90deg, length = 4.14)
|
||||
|> angledLine(angle = segAng(rectangleSegmentA002), length = -segLen(rectangleSegmentA002))
|
||||
|> line(endAbsolute = [profileStartX(%), profileStartY(%)])
|
||||
|> close()`.replaceAll('\n', '')
|
||||
@ -2134,8 +2134,8 @@ profile003 = startProfile(sketch001, at = [206.63, -56.73])
|
||||
await cntrRect1point2()
|
||||
await page.waitForTimeout(300)
|
||||
await editor.expectEditor.toContain(
|
||||
`|> angledLine(angle = 0, length = 7.06, tag = $rectangleSegmentA003)
|
||||
|> angledLine(angle = segAng(rectangleSegmentA003) + 90, length = 4.34)
|
||||
`|> angledLine(angle = 0deg, length = 7.06, tag = $rectangleSegmentA003)
|
||||
|> angledLine(angle = segAng(rectangleSegmentA003) + 90deg, length = 4.34)
|
||||
|> angledLine(angle = segAng(rectangleSegmentA003), length = -segLen(rectangleSegmentA003))
|
||||
|> line(endAbsolute = [profileStartX(%), profileStartY(%)])
|
||||
|> close()`.replaceAll('\n', '')
|
||||
@ -2150,8 +2150,8 @@ profile003 = startProfile(sketch001, at = [206.63, -56.73])
|
||||
await cntrRect2point2()
|
||||
await page.waitForTimeout(300)
|
||||
await editor.expectEditor.toContain(
|
||||
`|> angledLine(angle = 0, length = 3.12, tag = $rectangleSegmentA004)
|
||||
|> angledLine(angle = segAng(rectangleSegmentA004) + 90, length = 6.24)
|
||||
`|> angledLine(angle = 0deg, length = 3.12, tag = $rectangleSegmentA004)
|
||||
|> angledLine(angle = segAng(rectangleSegmentA004) + 90deg, length = 6.24)
|
||||
|> angledLine(angle = segAng(rectangleSegmentA004), length = -segLen(rectangleSegmentA004))
|
||||
|> line(endAbsolute = [profileStartX(%), profileStartY(%)])
|
||||
|> close()`.replaceAll('\n', '')
|
||||
@ -2300,8 +2300,8 @@ profile001 = startProfile(sketch001, at = [6.24, 4.54])
|
||||
|> line(end = [8.61, 0.74])
|
||||
|> line(end = [10.99, -5.22])
|
||||
profile002 = startProfile(sketch001, at = [11.19, 5.02])
|
||||
|> angledLine(angle = 0, length = 10.78, tag = $rectangleSegmentA001)
|
||||
|> angledLine(angle = segAng(rectangleSegmentA001) - 90, length = 4.14)
|
||||
|> angledLine(angle = 0deg, length = 10.78, tag = $rectangleSegmentA001)
|
||||
|> angledLine(angle = segAng(rectangleSegmentA001) - 90deg, length = 4.14)
|
||||
|> angledLine(angle = segAng(rectangleSegmentA001), length = -segLen(rectangleSegmentA001))
|
||||
|> line(endAbsolute = [profileStartX(%), profileStartY(%)])
|
||||
|> close()
|
||||
@ -2373,7 +2373,7 @@ profile004 = circleThreePoint(sketch001, p1 = [13.44, -6.8], p2 = [13.39, -2.07]
|
||||
await page.mouse.up()
|
||||
await page.waitForTimeout(200)
|
||||
await editor.expectEditor.toContain(
|
||||
`angledLine(angle = -7, length = 10.27, tag = $rectangleSegmentA001)`
|
||||
`angledLine(angle = -7deg, length = 10.27, tag = $rectangleSegmentA001)`
|
||||
)
|
||||
})
|
||||
|
||||
@ -2415,8 +2415,8 @@ profile004 = circleThreePoint(sketch001, p1 = [13.44, -6.8], p2 = [13.39, -2.07]
|
||||
await page.waitForTimeout(100)
|
||||
await rectEnd()
|
||||
await editor.expectEditor.toContain(
|
||||
`|> angledLine(angle = 180, length = 1.97, tag = $rectangleSegmentA002)
|
||||
|> angledLine(angle = segAng(rectangleSegmentA002) + 90, length = 3.89)
|
||||
`|> angledLine(angle = 180deg, length = 1.97, tag = $rectangleSegmentA002)
|
||||
|> angledLine(angle = segAng(rectangleSegmentA002) + 90deg, length = 3.89)
|
||||
|> angledLine(angle = segAng(rectangleSegmentA002), length = -segLen(rectangleSegmentA002))
|
||||
|> line(endAbsolute = [profileStartX(%), profileStartY(%)])
|
||||
|> close()`.replaceAll('\n', '')
|
||||
@ -2441,8 +2441,8 @@ profile001 = startProfile(sketch001, at = [6.24, 4.54])
|
||||
|> line(end = [8.61, 0.74])
|
||||
|> line(end = [10.99, -5.22])
|
||||
profile002 = startProfile(sketch001, at = [11.19, 5.02])
|
||||
|> angledLine(angle = 0, length = 10.78, tag = $rectangleSegmentA001)
|
||||
|> angledLine(angle = segAng(rectangleSegmentA001) - 90, length = 4.14)
|
||||
|> angledLine(angle = 0deg, length = 10.78, tag = $rectangleSegmentA001)
|
||||
|> angledLine(angle = segAng(rectangleSegmentA001) - 90deg, length = 4.14)
|
||||
|> angledLine(angle = segAng(rectangleSegmentA001), length = -segLen(rectangleSegmentA001))
|
||||
|> line(endAbsolute = [profileStartX(%), profileStartY(%)])
|
||||
|> close()
|
||||
@ -2771,8 +2771,8 @@ profile002 = startProfile(sketch002, at = [0.75, 13.46])
|
||||
|> line(end = [4.52, 3.79])
|
||||
|> line(end = [5.98, -2.81])
|
||||
profile003 = startProfile(sketch002, at = [3.19, 13.3])
|
||||
|> angledLine(angle = 0, length = 6.64, tag = $rectangleSegmentA001)
|
||||
|> angledLine(angle = segAng(rectangleSegmentA001) - 90, length = 2.81)
|
||||
|> angledLine(angle = 0deg, length = 6.64, tag = $rectangleSegmentA001)
|
||||
|> angledLine(angle = segAng(rectangleSegmentA001) - 90deg, length = 2.81)
|
||||
|> angledLine(angle = segAng(rectangleSegmentA001), length = -segLen(rectangleSegmentA001))
|
||||
|> line(endAbsolute = [profileStartX(%), profileStartY(%)])
|
||||
|> close()
|
||||
@ -2789,7 +2789,7 @@ profile006 = startProfile(sketch002, at = [9.65, 3.82])
|
||||
|> close()
|
||||
revolve001 = revolve(
|
||||
profile004,
|
||||
angle = 45,
|
||||
angle = 45deg,
|
||||
axis = getNextAdjacentEdge(seg01)
|
||||
)
|
||||
extrude002 = extrude(profile006, length = 4)
|
||||
@ -2813,8 +2813,8 @@ profile010 = circle(
|
||||
radius = 2.67
|
||||
)
|
||||
profile011 = startProfile(sketch003, at = [5.07, -6.39])
|
||||
|> angledLine(angle = 0, length = 4.54, tag = $rectangleSegmentA002)
|
||||
|> angledLine(angle = segAng(rectangleSegmentA002) - 90, length = 4.17)
|
||||
|> angledLine(angle = 0deg, length = 4.54, tag = $rectangleSegmentA002)
|
||||
|> angledLine(angle = segAng(rectangleSegmentA002) - 90deg, length = 4.17)
|
||||
|> angledLine(angle = segAng(rectangleSegmentA002), length = -segLen(rectangleSegmentA002))
|
||||
|> line(endAbsolute = [profileStartX(%), profileStartY(%)])
|
||||
|> close()
|
||||
@ -2966,7 +2966,7 @@ loft([profile001, profile002])
|
||||
)
|
||||
await rect1Crn2()
|
||||
await editor.expectEditor.toContain(
|
||||
`angledLine(angle = 0, length = 113.01, tag = $rectangleSegmentA001)`
|
||||
`angledLine(angle = 0deg, length = 113.01, tag = $rectangleSegmentA001)`
|
||||
)
|
||||
})
|
||||
test('Can enter sketch loft edges offsetPlane and continue sketch', async ({
|
||||
@ -3035,7 +3035,7 @@ loft([profile001, profile002])
|
||||
)
|
||||
await rect1Crn2()
|
||||
await editor.expectEditor.toContain(
|
||||
`angledLine(angle = 0, length = 106.42], tag = $rectangleSegmentA001)`
|
||||
`angledLine(angle = 0deg, length = 106.42], tag = $rectangleSegmentA001)`
|
||||
)
|
||||
await page.waitForTimeout(100)
|
||||
})
|
||||
@ -3257,8 +3257,8 @@ test.describe('manual edits during sketch mode', () => {
|
||||
extrude001 = extrude(profile001, length = 500)
|
||||
sketch002 = startSketchOn(extrude001, face = seg01)
|
||||
profile002 = startProfile(sketch002, at = [83.39, 329.15])
|
||||
|> angledLine(angle = 0, length = 119.61, tag = $rectangleSegmentA001)
|
||||
|> angledLine(length = 156.54, angle = -28)
|
||||
|> angledLine(angle = 0deg, length = 119.61, tag = $rectangleSegmentA001)
|
||||
|> angledLine(length = 156.54, angle = -28deg)
|
||||
|> angledLine(
|
||||
angle = -151,
|
||||
length = 116.27,
|
||||
@ -3296,7 +3296,9 @@ test.describe('manual edits during sketch mode', () => {
|
||||
await expect
|
||||
.poll(
|
||||
async () => {
|
||||
await editor.expectEditor.toContain('length = 156.54, angle = -28')
|
||||
await editor.expectEditor.toContain(
|
||||
'length = 156.54, angle = -28deg'
|
||||
)
|
||||
await page.mouse.move(handle1Location.x, handle1Location.y)
|
||||
await page.mouse.down()
|
||||
await page.mouse.move(
|
||||
@ -3307,7 +3309,9 @@ test.describe('manual edits during sketch mode', () => {
|
||||
}
|
||||
)
|
||||
await page.mouse.up()
|
||||
await editor.expectEditor.toContain('length = 231.59, angle = -34')
|
||||
await editor.expectEditor.toContain(
|
||||
'length = 231.59, angle = -34deg'
|
||||
)
|
||||
return true
|
||||
},
|
||||
{ timeout: 10_000 }
|
||||
@ -3325,7 +3329,7 @@ test.describe('manual edits during sketch mode', () => {
|
||||
|
||||
const handle2Location = { x: 872, y: 273 }
|
||||
await test.step('Edit sketch again', async () => {
|
||||
await editor.expectEditor.toContain('length = 231.59, angle = -34')
|
||||
await editor.expectEditor.toContain('length = 231.59, angle = -34deg')
|
||||
await page.waitForTimeout(500)
|
||||
await expect
|
||||
.poll(
|
||||
@ -3336,7 +3340,9 @@ test.describe('manual edits during sketch mode', () => {
|
||||
steps: 5,
|
||||
})
|
||||
await page.mouse.up()
|
||||
await editor.expectEditor.toContain('length = 167.36, angle = -14')
|
||||
await editor.expectEditor.toContain(
|
||||
'length = 167.36, angle = -14deg'
|
||||
)
|
||||
return true
|
||||
},
|
||||
{ timeout: 10_000 }
|
||||
@ -3361,14 +3367,18 @@ test.describe('manual edits during sketch mode', () => {
|
||||
await expect
|
||||
.poll(
|
||||
async () => {
|
||||
await editor.expectEditor.toContain('length = 167.36, angle = -14')
|
||||
await editor.expectEditor.toContain(
|
||||
'length = 167.36, angle = -14deg'
|
||||
)
|
||||
await page.mouse.move(handle3Location.x, handle3Location.y)
|
||||
await page.mouse.down()
|
||||
await page.mouse.move(handle3Location.x, handle3Location.y + 110, {
|
||||
steps: 5,
|
||||
})
|
||||
await page.mouse.up()
|
||||
await editor.expectEditor.toContain('length = 219.2, angle = -56')
|
||||
await editor.expectEditor.toContain(
|
||||
'length = 219.2, angle = -56deg'
|
||||
)
|
||||
return true
|
||||
},
|
||||
{ timeout: 10_000 }
|
||||
@ -3393,9 +3403,9 @@ profile001 = startProfile(sketch001, at = [106.68, 89.77])
|
||||
extrude001 = extrude(profile001, length = 500)
|
||||
sketch002 = startSketchOn(extrude001, face = seg01)
|
||||
profile002 = startProfile(sketch002, at = [83.39, 329.15])
|
||||
|> angledLine(angle = 0, length = 119.61, tag = $rectangleSegmentA001)
|
||||
|> angledLine(length = 219.2, angle = -56)
|
||||
|> angledLine(angle = -151, length = 116.27)
|
||||
|> angledLine(angle = 0deg, length = 119.61, tag = $rectangleSegmentA001)
|
||||
|> angledLine(length = 219.2, angle = -56deg)
|
||||
|> angledLine(angle = -151deg, length = 116.27)
|
||||
|> line(endAbsolute = [profileStartX(%), profileStartY(%)])
|
||||
|> close()
|
||||
profile003 = startProfile(sketch002, at = [-201.08, 254.17])
|
||||
@ -3432,10 +3442,10 @@ profile003 = startProfile(sketch002, at = [-201.08, 254.17])
|
||||
extrude001 = extrude(profile001, length = 500)
|
||||
sketch002 = startSketchOn(extrude001, face = seg01)
|
||||
profile002 = startProfile(sketch002, at = [83.39, 329.15])
|
||||
|> angledLine(angle = 0, length = 119.61, tag = $rectangleSegmentA001)
|
||||
|> angledLine(length = 156.54, angle = -28)
|
||||
|> angledLine(angle = 0deg, length = 119.61, tag = $rectangleSegmentA001)
|
||||
|> angledLine(length = 156.54, angle = -28deg)
|
||||
|> angledLine(
|
||||
angle = -151,
|
||||
angle = -151deg,
|
||||
length = 116.27,
|
||||
)
|
||||
|> line(endAbsolute = [profileStartX(%), profileStartY(%)])
|
||||
@ -3496,10 +3506,10 @@ profile003 = startProfile(sketch002, at = [-201.08, 254.17])
|
||||
extrude001 = extrude(profile001, length = 500)
|
||||
sketch002 = startSketchOn(extrude001, face = seg01)
|
||||
profile002 = startProfile(sketch002, at = [83.39, 329.15])
|
||||
|> angledLine(angle = 0, length = 119.61, tag = $rectangleSegmentA001)
|
||||
|> angledLine(length = 156.54, angle = -28)
|
||||
|> angledLine(angle = 0deg, length = 119.61, tag = $rectangleSegmentA001)
|
||||
|> angledLine(length = 156.54, angle = -28deg)
|
||||
|> angledLine(
|
||||
angle = -151,
|
||||
angle = -151deg,
|
||||
length = 116.27,
|
||||
)
|
||||
|> line(endAbsolute = [profileStartX(%), profileStartY(%)])
|
||||
|
@ -845,14 +845,14 @@ test.describe('code color goober', { tag: '@snapshot' }, () => {
|
||||
sweepPath = startSketchOn(XZ)
|
||||
|> startProfile(at = [0.05, 0.05])
|
||||
|> line(end = [0, 7])
|
||||
|> tangentialArc(angle = 90, radius = 5)
|
||||
|> tangentialArc(angle = 90deg, radius = 5)
|
||||
|> line(end = [-3, 0])
|
||||
|> tangentialArc(angle = -90, radius = 5)
|
||||
|> tangentialArc(angle = -90deg, radius = 5)
|
||||
|> line(end = [0, 7])
|
||||
|
||||
sweepSketch = startSketchOn(XY)
|
||||
|> startProfile(at = [2, 0])
|
||||
|> arc(angleStart = 0, angleEnd = 360, radius = 2)
|
||||
|> arc(angleStart = 0, angleEnd = 360deg, radius = 2)
|
||||
|> sweep(path = sweepPath)
|
||||
|> appearance(
|
||||
color = "#bb00ff",
|
||||
@ -889,14 +889,14 @@ sweepSketch = startSketchOn(XY)
|
||||
sweepPath = startSketchOn(XZ)
|
||||
|> startProfile(at = [0.05, 0.05])
|
||||
|> line(end = [0, 7])
|
||||
|> tangentialArc(angle = 90, radius = 5)
|
||||
|> tangentialArc(angle = 90deg, radius = 5)
|
||||
|> line(end = [-3, 0])
|
||||
|> tangentialArc(angle = -90, radius = 5)
|
||||
|> tangentialArc(angle = -90deg, radius = 5)
|
||||
|> line(end = [0, 7])
|
||||
|
||||
sweepSketch = startSketchOn(XY)
|
||||
|> startProfile(at = [2, 0])
|
||||
|> arc(angleStart = 0, angleEnd = 360, radius = 2)
|
||||
|> arc(angleStart = 0deg, angleEnd = 360deg, radius = 2)
|
||||
|> sweep(path = sweepPath)
|
||||
|> appearance(
|
||||
color = '#bb00ff',
|
||||
@ -934,14 +934,14 @@ sweepSketch = startSketchOn(XY)
|
||||
sweepPath = startSketchOn(XZ)
|
||||
|> startProfile(at = [0.05, 0.05])
|
||||
|> line(end = [0, 7])
|
||||
|> tangentialArc(angle = 90, radius = 5)
|
||||
|> tangentialArc(angle = 90deg, radius = 5)
|
||||
|> line(end = [-3, 0])
|
||||
|> tangentialArc(angle = -90, radius = 5)
|
||||
|> tangentialArc(angle = -90deg, radius = 5)
|
||||
|> line(end = [0, 7])
|
||||
|
||||
sweepSketch = startSketchOn(XY)
|
||||
|> startProfile(at = [2, 0])
|
||||
|> arc(angleStart = 0, angleEnd = 360, radius = 2)
|
||||
|> arc(angleStart = 0deg, angleEnd = 360deg, radius = 2)
|
||||
|> sweep(path = sweepPath)
|
||||
|> appearance(
|
||||
color = "#bb00ff",
|
||||
|
Binary file not shown.
Before Width: | Height: | Size: 134 KiB After Width: | Height: | Size: 135 KiB |
Binary file not shown.
Before Width: | Height: | Size: 117 KiB After Width: | Height: | Size: 119 KiB |
Binary file not shown.
Before Width: | Height: | Size: 134 KiB After Width: | Height: | Size: 135 KiB |
@ -57,7 +57,7 @@ test.describe('Testing constraints', () => {
|
||||
.click()
|
||||
|
||||
await expect(page.locator('.cm-content')).toHaveText(
|
||||
`length001 = 20sketch001 = startSketchOn(XY) |> startProfile(at = [-10, -10]) |> line(end = [20, 0]) |> angledLine(angle = 90, length = length001) |> xLine(length = -20)`
|
||||
`length001 = 20sketch001 = startSketchOn(XY) |> startProfile(at = [-10, -10]) |> line(end = [20, 0]) |> angledLine(angle = 90deg, length = length001) |> xLine(length = -20)`
|
||||
)
|
||||
|
||||
// Make sure we didn't pop out of sketch mode.
|
||||
@ -208,7 +208,9 @@ test.describe('Testing constraints', () => {
|
||||
.click()
|
||||
|
||||
// Wait for the codemod to take effect
|
||||
await expect(page.locator('.cm-content')).toContainText(`angle = -57,`)
|
||||
await expect(page.locator('.cm-content')).toContainText(
|
||||
`angle = -57deg,`
|
||||
)
|
||||
await expect(page.locator('.cm-content')).toContainText(
|
||||
`offset = ${offset},`
|
||||
)
|
||||
@ -219,7 +221,7 @@ test.describe('Testing constraints', () => {
|
||||
`|> line(end = [74.36, 130.4], tag = $seg01)`
|
||||
)
|
||||
await expect(activeLinesContent[1]).toHaveText(
|
||||
` |> angledLineThatIntersects(angle = -57, offset = ${offset}, intersectTag = seg01)`
|
||||
` |> angledLineThatIntersects(angle = -57deg, offset = ${offset}, intersectTag = seg01)`
|
||||
)
|
||||
|
||||
// checking the count of the overlays is a good proxy check that the client sketch scene is in a good state
|
||||
@ -470,7 +472,7 @@ test.describe('Testing constraints', () => {
|
||||
testName: 'No variable',
|
||||
addVariable: false,
|
||||
axisSelect: false,
|
||||
value: 'segAng(seg01) + 22.69',
|
||||
value: 'segAng(seg01) + 22.69deg',
|
||||
},
|
||||
{
|
||||
testName: 'Add variable, selecting axis',
|
||||
@ -482,7 +484,7 @@ test.describe('Testing constraints', () => {
|
||||
testName: 'No variable, selecting axis',
|
||||
addVariable: false,
|
||||
axisSelect: true,
|
||||
value: 'turns::QUARTER_TURN - 7',
|
||||
value: 'turns::QUARTER_TURN - 7deg',
|
||||
},
|
||||
] as const
|
||||
for (const { testName, addVariable, value, axisSelect } of cases) {
|
||||
@ -585,7 +587,7 @@ test.describe('Testing constraints', () => {
|
||||
testName: 'Angle - No variable',
|
||||
addVariable: false,
|
||||
constraint: 'angle',
|
||||
value: '83, 78.33',
|
||||
value: '83deg, 78.33',
|
||||
},
|
||||
] as const
|
||||
for (const { testName, addVariable, value, constraint } of cases) {
|
||||
@ -657,13 +659,13 @@ test.describe('Testing constraints', () => {
|
||||
testName: 'Length - Add variable',
|
||||
addVariable: true,
|
||||
constraint: 'length',
|
||||
value: '83, length001',
|
||||
value: '83deg, length001',
|
||||
},
|
||||
{
|
||||
testName: 'Length - No variable',
|
||||
addVariable: false,
|
||||
constraint: 'length',
|
||||
value: '83, 78.33',
|
||||
value: '83deg, 78.33',
|
||||
},
|
||||
] as const
|
||||
for (const { testName, addVariable, value, constraint } of cases) {
|
||||
@ -852,7 +854,7 @@ part002 = startSketchOn(XZ)
|
||||
test.describe('Two segment - no modal constraints', () => {
|
||||
const cases = [
|
||||
{
|
||||
codeAfter: `|> angledLine(angle = 83, length = segLen(seg01))`,
|
||||
codeAfter: `|> angledLine(angle = 83deg, length = segLen(seg01))`,
|
||||
constraintName: 'Equal Length',
|
||||
},
|
||||
{
|
||||
@ -1174,7 +1176,7 @@ test.describe('Electron constraint tests', () => {
|
||||
await cmdBar.progressCmdBar()
|
||||
await editor.expectEditor.toContain('length001 = 15.3')
|
||||
await editor.expectEditor.toContain(
|
||||
'|> angledLine(angle = 9, length = length001)'
|
||||
'|> angledLine(angle = 9deg, length = length001)'
|
||||
)
|
||||
})
|
||||
|
||||
|
1
package-lock.json
generated
1
package-lock.json
generated
@ -2495,6 +2495,7 @@
|
||||
},
|
||||
"node_modules/@clack/prompts/node_modules/is-unicode-supported": {
|
||||
"version": "1.3.0",
|
||||
"extraneous": true,
|
||||
"inBundle": true,
|
||||
"license": "MIT",
|
||||
"engines": {
|
||||
|
@ -27,7 +27,7 @@ insideWall = extrude(insideWallSketch, length = overallThickness)
|
||||
// Create the sketch of one of the balls
|
||||
ballsSketch = startSketchOn(XY)
|
||||
|> startProfile(at = [shaftDia / 2 + wallThickness, 0.001])
|
||||
|> arc(angleStart = 180, angleEnd = 0, radius = sphereDia / 2)
|
||||
|> arc(angleStart = 180deg, angleEnd = 0, radius = sphereDia / 2)
|
||||
|> close()
|
||||
|
||||
// Revolve the ball to make a sphere and pattern around the inside wall
|
||||
@ -44,9 +44,9 @@ balls = revolve(ballsSketch, axis = X)
|
||||
chainSketch = startSketchOn(XY)
|
||||
|> startProfile(at = [
|
||||
shaftDia / 2 + wallThickness + sphereDia / 2 - (chainWidth / 2),
|
||||
0.125 * sin(60)
|
||||
0.125 * sin(60deg)
|
||||
])
|
||||
|> arc(angleStart = 120, angleEnd = 60, radius = sphereDia / 2)
|
||||
|> arc(angleStart = 120deg, angleEnd = 60deg, radius = sphereDia / 2)
|
||||
|> line(end = [0, chainThickness])
|
||||
|> line(end = [-chainWidth, 0])
|
||||
|> close()
|
||||
@ -54,7 +54,7 @@ chainSketch = startSketchOn(XY)
|
||||
// Revolve the chain sketch
|
||||
chainHead = revolve(chainSketch, axis = X)
|
||||
|> patternCircular3d(
|
||||
arcDegrees = 360,
|
||||
arcDegrees = 360deg,
|
||||
axis = [0, 0, 1],
|
||||
center = [0, 0, 0],
|
||||
instances = nBalls,
|
||||
@ -72,9 +72,9 @@ linkSketch = startSketchOn(XZ)
|
||||
)
|
||||
|
||||
// Revolve the link sketch
|
||||
linkRevolve = revolve(linkSketch, axis = Y, angle = 360 / nBalls)
|
||||
linkRevolve = revolve(linkSketch, axis = Y, angle = 360deg / nBalls)
|
||||
|> patternCircular3d(
|
||||
arcDegrees = 360,
|
||||
arcDegrees = 360deg,
|
||||
axis = [0, 0, 1],
|
||||
center = [0, 0, 0],
|
||||
instances = nBalls,
|
||||
|
@ -23,12 +23,12 @@ nVentBosses = 36
|
||||
|
||||
// Drilling parameters.
|
||||
dDrillDia = 6
|
||||
aBase = 90
|
||||
aSweep = 30
|
||||
aBase = 90deg
|
||||
aSweep = 30deg
|
||||
nArcs = 12
|
||||
|
||||
// Bell parameters.
|
||||
aDraftBell = 5
|
||||
aDraftBell = 5deg
|
||||
tBell = 5 // Wall thickness.
|
||||
hBellAboveDiscFace = 40
|
||||
hBellSubflush = 4
|
||||
@ -98,7 +98,7 @@ planeVent = offsetPlane(XY, offset = tDiscHalf)
|
||||
sketchVent = startSketchOn(planeVent)
|
||||
profileVent = startProfile(sketchVent, at = [-wVent, dDisc / 2])
|
||||
|> angledLine(angle = 0, length = wVent, tag = $rectangleSegmentA001)
|
||||
|> angledLine(angle = segAng(rectangleSegmentA001) - 90, length = hFrictionSurface, tag = $seg02)
|
||||
|> angledLine(angle = segAng(rectangleSegmentA001) - 90deg, length = hFrictionSurface, tag = $seg02)
|
||||
|> angledLine(angle = segAng(rectangleSegmentA001), length = -segLen(rectangleSegmentA001), tag = $seg03)
|
||||
|> line(endAbsolute = [profileStartX(%), profileStartY(%)], tag = $seg01)
|
||||
|> close()
|
||||
@ -118,7 +118,7 @@ ventSet = patternCircular3d(
|
||||
instances = nVentBosses,
|
||||
axis = [0, 0, 1],
|
||||
center = [0, 0, tDiscHalf],
|
||||
arcDegrees = 360,
|
||||
arcDegrees = 360deg,
|
||||
rotateDuplicates = true,
|
||||
)
|
||||
|
||||
@ -134,8 +134,8 @@ discOutboard = createDiscHalf(
|
||||
// Now create bell.
|
||||
rCenter = dDisc / 2 - hFrictionSurface - wUndercut
|
||||
rBore = dBore / 2
|
||||
lDraftExterior = hBellAboveDiscFace / tan(90 - aDraftBell)
|
||||
lDraftInterior = (hBellAboveDiscFace - tBell) / tan(90 - aDraftBell)
|
||||
lDraftExterior = hBellAboveDiscFace / tan(90deg - aDraftBell)
|
||||
lDraftInterior = (hBellAboveDiscFace - tBell) / tan(90deg - aDraftBell)
|
||||
|
||||
// Inner and outer radius of outboard face of disc bell.
|
||||
rOuter = rCenter - lDraftExterior - rBore
|
||||
@ -151,7 +151,7 @@ bodyDiscBell = startProfile(
|
||||
)
|
||||
|> arc(
|
||||
%,
|
||||
angleStart = -180,
|
||||
angleStart = -180deg,
|
||||
angleEnd = 0,
|
||||
radius = wUndercut / 2,
|
||||
)
|
||||
@ -172,7 +172,7 @@ profileStud = circle(sketchLugs, center = [0, dPitchCircle / 2], radius = dStudD
|
||||
%,
|
||||
instances = nStuds,
|
||||
center = [0, 0],
|
||||
arcDegrees = 360,
|
||||
arcDegrees = 360deg,
|
||||
rotateDuplicates = true,
|
||||
)
|
||||
|
||||
|
@ -28,8 +28,8 @@ hour = 9
|
||||
minute = 29
|
||||
|
||||
// Calculate hand angles
|
||||
hourHandAngle = 90 - (hour * 30)
|
||||
minuteHandAngle = 90 - (minute * 6)
|
||||
hourHandAngle = 90deg - (hour * 30deg)
|
||||
minuteHandAngle = 90deg - (minute * 6deg)
|
||||
|
||||
// Create the clock body
|
||||
clockBodySketch = startSketchOn(XY)
|
||||
@ -72,18 +72,18 @@ numberObject = {
|
||||
// one = { i = [90, 160] },
|
||||
one = {
|
||||
i = [
|
||||
clockDiameter / 2 * 3 / 4 * cos(60),
|
||||
clockDiameter / 2 * 3 / 4 * sin(60)
|
||||
clockDiameter / 2 * 3 / 4 * cos(60deg),
|
||||
clockDiameter / 2 * 3 / 4 * sin(60deg)
|
||||
]
|
||||
},
|
||||
two = {
|
||||
i = [
|
||||
clockDiameter / 2 * 3 / 4 * cos(30) - 10,
|
||||
clockDiameter / 2 * 3 / 4 * sin(30)
|
||||
clockDiameter / 2 * 3 / 4 * cos(30deg) - 10,
|
||||
clockDiameter / 2 * 3 / 4 * sin(30deg)
|
||||
],
|
||||
i2 = [
|
||||
clockDiameter / 2 * 3 / 4 * cos(30) + 5,
|
||||
clockDiameter / 2 * 3 / 4 * sin(30)
|
||||
clockDiameter / 2 * 3 / 4 * cos(30deg) + 5,
|
||||
clockDiameter / 2 * 3 / 4 * sin(30deg)
|
||||
]
|
||||
},
|
||||
three = {
|
||||
@ -102,100 +102,100 @@ numberObject = {
|
||||
},
|
||||
four = {
|
||||
i = [
|
||||
clockDiameter / 2 * 3 / 4 * cos(-30) - 10,
|
||||
clockDiameter / 2 * 3 / 4 * sin(-30)
|
||||
clockDiameter / 2 * 3 / 4 * cos(-30deg) - 10,
|
||||
clockDiameter / 2 * 3 / 4 * sin(-30deg)
|
||||
],
|
||||
v = [
|
||||
clockDiameter / 2 * 3 / 4 * cos(-30) + 13,
|
||||
clockDiameter / 2 * 3 / 4 * sin(-30)
|
||||
clockDiameter / 2 * 3 / 4 * cos(-30deg) + 13,
|
||||
clockDiameter / 2 * 3 / 4 * sin(-30deg)
|
||||
]
|
||||
},
|
||||
five = {
|
||||
v = [
|
||||
clockDiameter / 2 * 3 / 4 * cos(-60),
|
||||
clockDiameter / 2 * 3 / 4 * sin(-60)
|
||||
clockDiameter / 2 * 3 / 4 * cos(-60deg),
|
||||
clockDiameter / 2 * 3 / 4 * sin(-60deg)
|
||||
]
|
||||
},
|
||||
six = {
|
||||
v = [
|
||||
clockDiameter / 2 * 3 / 4 * cos(-90) - 10,
|
||||
clockDiameter / 2 * 3 / 4 * sin(-90)
|
||||
clockDiameter / 2 * 3 / 4 * cos(-90deg) - 10,
|
||||
clockDiameter / 2 * 3 / 4 * sin(-90deg)
|
||||
],
|
||||
i = [
|
||||
clockDiameter / 2 * 3 / 4 * cos(-90) + 12,
|
||||
clockDiameter / 2 * 3 / 4 * sin(-90)
|
||||
clockDiameter / 2 * 3 / 4 * cos(-90deg) + 12,
|
||||
clockDiameter / 2 * 3 / 4 * sin(-90deg)
|
||||
]
|
||||
},
|
||||
seven = {
|
||||
v = [
|
||||
clockDiameter / 2 * 3 / 4 * cos(-120) - 15,
|
||||
clockDiameter / 2 * 3 / 4 * sin(-120)
|
||||
clockDiameter / 2 * 3 / 4 * cos(-120deg) - 15,
|
||||
clockDiameter / 2 * 3 / 4 * sin(-120deg)
|
||||
],
|
||||
i = [
|
||||
clockDiameter / 2 * 3 / 4 * cos(-120) + 5,
|
||||
clockDiameter / 2 * 3 / 4 * sin(-120)
|
||||
clockDiameter / 2 * 3 / 4 * cos(-120deg) + 5,
|
||||
clockDiameter / 2 * 3 / 4 * sin(-120deg)
|
||||
],
|
||||
i2 = [
|
||||
clockDiameter / 2 * 3 / 4 * cos(-120) + 20,
|
||||
clockDiameter / 2 * 3 / 4 * sin(-120)
|
||||
clockDiameter / 2 * 3 / 4 * cos(-120deg) + 20,
|
||||
clockDiameter / 2 * 3 / 4 * sin(-120deg)
|
||||
]
|
||||
},
|
||||
eight = {
|
||||
v = [
|
||||
clockDiameter / 2 * 3 / 4 * cos(-150) - 10,
|
||||
clockDiameter / 2 * 3 / 4 * sin(-150)
|
||||
clockDiameter / 2 * 3 / 4 * cos(-150deg) - 10,
|
||||
clockDiameter / 2 * 3 / 4 * sin(-150deg)
|
||||
],
|
||||
i = [
|
||||
clockDiameter / 2 * 3 / 4 * cos(-150) + 10,
|
||||
clockDiameter / 2 * 3 / 4 * sin(-150)
|
||||
clockDiameter / 2 * 3 / 4 * cos(-150deg) + 10,
|
||||
clockDiameter / 2 * 3 / 4 * sin(-150deg)
|
||||
],
|
||||
i2 = [
|
||||
clockDiameter / 2 * 3 / 4 * cos(-150) + 25,
|
||||
clockDiameter / 2 * 3 / 4 * sin(-150)
|
||||
clockDiameter / 2 * 3 / 4 * cos(-150deg) + 25,
|
||||
clockDiameter / 2 * 3 / 4 * sin(-150deg)
|
||||
],
|
||||
i3 = [
|
||||
clockDiameter / 2 * 3 / 4 * cos(-150) + 40,
|
||||
clockDiameter / 2 * 3 / 4 * sin(-150)
|
||||
clockDiameter / 2 * 3 / 4 * cos(-150deg) + 40,
|
||||
clockDiameter / 2 * 3 / 4 * sin(-150deg)
|
||||
]
|
||||
},
|
||||
nine = {
|
||||
i = [
|
||||
clockDiameter / 2 * 3 / 4 * cos(180) - 15,
|
||||
clockDiameter / 2 * 3 / 4 * sin(180)
|
||||
clockDiameter / 2 * 3 / 4 * cos(180deg) - 15,
|
||||
clockDiameter / 2 * 3 / 4 * sin(180deg)
|
||||
],
|
||||
x = [
|
||||
clockDiameter / 2 * 3 / 4 * cos(180) + 15,
|
||||
clockDiameter / 2 * 3 / 4 * sin(180)
|
||||
clockDiameter / 2 * 3 / 4 * cos(180deg) + 15,
|
||||
clockDiameter / 2 * 3 / 4 * sin(180deg)
|
||||
]
|
||||
},
|
||||
ten = {
|
||||
x = [
|
||||
clockDiameter / 2 * 3 / 4 * cos(150) + 5,
|
||||
clockDiameter / 2 * 3 / 4 * sin(150)
|
||||
clockDiameter / 2 * 3 / 4 * cos(150deg) + 5,
|
||||
clockDiameter / 2 * 3 / 4 * sin(150deg)
|
||||
]
|
||||
},
|
||||
eleven = {
|
||||
x = [
|
||||
clockDiameter / 2 * 3 / 4 * cos(120),
|
||||
clockDiameter / 2 * 3 / 4 * sin(120)
|
||||
clockDiameter / 2 * 3 / 4 * cos(120deg),
|
||||
clockDiameter / 2 * 3 / 4 * sin(120deg)
|
||||
],
|
||||
i = [
|
||||
clockDiameter / 2 * 3 / 4 * cos(120) + 10,
|
||||
clockDiameter / 2 * 3 / 4 * sin(120)
|
||||
clockDiameter / 2 * 3 / 4 * cos(120deg) + 10,
|
||||
clockDiameter / 2 * 3 / 4 * sin(120deg)
|
||||
]
|
||||
},
|
||||
twelve = {
|
||||
x = [
|
||||
clockDiameter / 2 * 3 / 4 * cos(90) - 10,
|
||||
clockDiameter / 2 * 3 / 4 * sin(90)
|
||||
clockDiameter / 2 * 3 / 4 * cos(90deg) - 10,
|
||||
clockDiameter / 2 * 3 / 4 * sin(90deg)
|
||||
],
|
||||
i = [
|
||||
clockDiameter / 2 * 3 / 4 * cos(90) + 5,
|
||||
clockDiameter / 2 * 3 / 4 * sin(90)
|
||||
clockDiameter / 2 * 3 / 4 * cos(90deg) + 5,
|
||||
clockDiameter / 2 * 3 / 4 * sin(90deg)
|
||||
],
|
||||
i2 = [
|
||||
clockDiameter / 2 * 3 / 4 * cos(90) + 20,
|
||||
clockDiameter / 2 * 3 / 4 * sin(90)
|
||||
clockDiameter / 2 * 3 / 4 * cos(90deg) + 20,
|
||||
clockDiameter / 2 * 3 / 4 * sin(90deg)
|
||||
]
|
||||
}
|
||||
}
|
||||
@ -234,16 +234,16 @@ fn letterX(startX, startY) {
|
||||
],
|
||||
)
|
||||
|> xLine(%, length = xWidth / 6)
|
||||
|> angledLine(%, angle = -70, lengthY = xLength * 1 / 3)
|
||||
|> angledLine(%, angle = 70, lengthY = xLength * 1 / 3)
|
||||
|> angledLine(%, angle = -70deg, lengthY = xLength * 1 / 3)
|
||||
|> angledLine(%, angle = 70deg, lengthY = xLength * 1 / 3)
|
||||
|> xLine(%, length = xWidth / 6)
|
||||
|> angledLine(%, angle = 70 + 180, lengthY = xLength * 1 / 2)
|
||||
|> angledLine(%, angle = -70, lengthY = xLength * 1 / 2)
|
||||
|> angledLine(%, angle = 70deg + 180deg, lengthY = xLength * 1 / 2)
|
||||
|> angledLine(%, angle = -70deg, lengthY = xLength * 1 / 2)
|
||||
|> xLine(%, length = -xWidth / 6)
|
||||
|> angledLine(%, angle = -70 - 180, lengthY = xLength * 1 / 3)
|
||||
|> angledLine(%, angle = 70 + 180, lengthY = xLength * 1 / 3)
|
||||
|> angledLine(%, angle = -70deg - 180deg, lengthY = xLength * 1 / 3)
|
||||
|> angledLine(%, angle = 70deg + 180deg, lengthY = xLength * 1 / 3)
|
||||
|> xLine(%, length = -xWidth / 6)
|
||||
|> angledLine(%, angle = 70, lengthY = xLength * 1 / 2)
|
||||
|> angledLine(%, angle = 70deg, lengthY = xLength * 1 / 2)
|
||||
|> close(%)
|
||||
|> extrude(%, length = numberThickness)
|
||||
|> appearance(%, color = "#140f0f")
|
||||
@ -333,25 +333,25 @@ sketch005 = startSketchOn(offsetPlane(XY, offset = 55))
|
||||
profile007 = startProfile(
|
||||
sketch005,
|
||||
at = [
|
||||
nubDiameter / 2 * 1.375 * cos(hourHandAngle + 20),
|
||||
nubDiameter / 2 * 1.375 * sin(hourHandAngle + 20)
|
||||
nubDiameter / 2 * 1.375 * cos(hourHandAngle + 20deg),
|
||||
nubDiameter / 2 * 1.375 * sin(hourHandAngle + 20deg)
|
||||
],
|
||||
)
|
||||
|> arc(
|
||||
%,
|
||||
interiorAbsolute = [
|
||||
nubDiameter / 2 * 1.375 * cos(hourHandAngle + 180),
|
||||
nubDiameter / 2 * 1.375 * sin(hourHandAngle + 180)
|
||||
nubDiameter / 2 * 1.375 * cos(hourHandAngle + 180deg),
|
||||
nubDiameter / 2 * 1.375 * sin(hourHandAngle + 180deg)
|
||||
],
|
||||
endAbsolute = [
|
||||
nubDiameter / 2 * 1.375 * cos(hourHandAngle + 340),
|
||||
nubDiameter / 2 * 1.375 * sin(hourHandAngle + 340)
|
||||
nubDiameter / 2 * 1.375 * cos(hourHandAngle + 340deg),
|
||||
nubDiameter / 2 * 1.375 * sin(hourHandAngle + 340deg)
|
||||
],
|
||||
)
|
||||
|> angledLine(%, angle = hourHandAngle, length = hourHandArmLength)
|
||||
|> angledLine(
|
||||
%,
|
||||
angle = hourHandAngle - 90,
|
||||
angle = hourHandAngle - 90deg,
|
||||
length = hourHandWidth / 2,
|
||||
tag = $seg004,
|
||||
)
|
||||
@ -363,9 +363,9 @@ profile007 = startProfile(
|
||||
],
|
||||
tag = $seg002,
|
||||
)
|
||||
|> angledLine(%, angle = segAng(seg002) + 120, length = segLen(seg002))
|
||||
// |> angledLineThatIntersects(%, angle = segAng(seg002) + hourHandAngle - 90, intersectTag = seg004)
|
||||
|> angledLine(%, angle = hourHandAngle - 90, length = segLen(seg004))
|
||||
|> angledLine(%, angle = segAng(seg002) + 120deg, length = segLen(seg002))
|
||||
// |> angledLineThatIntersects(%, angle = segAng(seg002) + hourHandAngle - 90deg, intersectTag = seg004)
|
||||
|> angledLine(%, angle = hourHandAngle - 90deg, length = segLen(seg004))
|
||||
|> line(%, endAbsolute = [profileStartX(%), profileStartY(%)])
|
||||
|> close(%)
|
||||
profile008 = circle(sketch005, center = [0, 0], diameter = nubDiameter)
|
||||
@ -378,25 +378,25 @@ sketch006 = startSketchOn(offsetPlane(XY, offset = 50))
|
||||
profile009 = startProfile(
|
||||
sketch006,
|
||||
at = [
|
||||
nubDiameter / 2 * 1.375 * cos(minuteHandAngle + 20),
|
||||
nubDiameter / 2 * 1.375 * sin(minuteHandAngle + 20)
|
||||
nubDiameter / 2 * 1.375 * cos(minuteHandAngle + 20deg),
|
||||
nubDiameter / 2 * 1.375 * sin(minuteHandAngle + 20deg)
|
||||
],
|
||||
)
|
||||
|> arc(
|
||||
%,
|
||||
interiorAbsolute = [
|
||||
nubDiameter / 2 * 1.375 * cos(minuteHandAngle + 180),
|
||||
nubDiameter / 2 * 1.375 * sin(minuteHandAngle + 180)
|
||||
nubDiameter / 2 * 1.375 * cos(minuteHandAngle + 180deg),
|
||||
nubDiameter / 2 * 1.375 * sin(minuteHandAngle + 180deg)
|
||||
],
|
||||
endAbsolute = [
|
||||
nubDiameter / 2 * 1.375 * cos(minuteHandAngle + 340),
|
||||
nubDiameter / 2 * 1.375 * sin(minuteHandAngle + 340)
|
||||
nubDiameter / 2 * 1.375 * cos(minuteHandAngle + 340deg),
|
||||
nubDiameter / 2 * 1.375 * sin(minuteHandAngle + 340deg)
|
||||
],
|
||||
)
|
||||
|> angledLine(%, angle = minuteHandAngle, length = minuteHandArmLength)
|
||||
|> angledLine(
|
||||
%,
|
||||
angle = minuteHandAngle - 90,
|
||||
angle = minuteHandAngle - 90deg,
|
||||
length = minuteHandWidth / 2,
|
||||
tag = $seg003,
|
||||
)
|
||||
@ -408,8 +408,8 @@ profile009 = startProfile(
|
||||
],
|
||||
tag = $seg005,
|
||||
)
|
||||
|> angledLine(%, angle = segAng(seg005) + 120, length = segLen(seg005))
|
||||
|> angledLine(%, angle = minuteHandAngle - 90, length = segLen(seg003))
|
||||
|> angledLine(%, angle = segAng(seg005) + 120deg, length = segLen(seg005))
|
||||
|> angledLine(%, angle = minuteHandAngle - 90deg, length = segLen(seg003))
|
||||
|> line(%, endAbsolute = [profileStartX(%), profileStartY(%)])
|
||||
|> close(%)
|
||||
profile010 = circle(sketch006, center = [0, 0], diameter = 30)
|
||||
@ -430,8 +430,8 @@ profile004 = startProfile(sketch003, at = [-slotWidth / 2, 200])
|
||||
|> arc(
|
||||
%,
|
||||
radius = screwHeadDiameter / 2 + screwTolerance,
|
||||
angleStart = 120,
|
||||
angleEnd = 420,
|
||||
angleStart = 120deg,
|
||||
angleEnd = 420deg,
|
||||
)
|
||||
|> yLine(%, length = slotLength)
|
||||
|> tangentialArc(endAbsolute = [profileStartX(%), profileStartY(%)])
|
||||
|
@ -14,15 +14,15 @@ coldPlate = startSketchOn(YZ)
|
||||
|> startProfile(at = [0, tubeDiameter * 2])
|
||||
|> xLine(length = bendRadius - (tubeDiameter / 2))
|
||||
|> yLine(length = -tubeDiameter)
|
||||
|> tangentialArc(angle = 180, radius = tubeDiameter / 2)
|
||||
|> tangentialArc(angle = 180deg, radius = tubeDiameter / 2)
|
||||
|> yLine(length = tubeDiameter)
|
||||
|> xLine(length = bendRadius * 2 - tubeDiameter, tag = $seg07)
|
||||
|> yLine(length = -tubeDiameter, tag = $seg09)
|
||||
|> tangentialArc(angle = 180, radius = tubeDiameter / 2)
|
||||
|> tangentialArc(angle = 180deg, radius = tubeDiameter / 2)
|
||||
|> yLine(length = tubeDiameter, tag = $seg08)
|
||||
|> xLine(length = bendRadius - (tubeDiameter / 2))
|
||||
|> angledLine(angle = -77, length = tubeDiameter / 3)
|
||||
|> tangentialArc(angle = 77, radius = tubeDiameter, tag = $seg01)
|
||||
|> angledLine(angle = -77deg, length = tubeDiameter / 3)
|
||||
|> tangentialArc(angle = 77deg, radius = tubeDiameter, tag = $seg01)
|
||||
|> angledLine(angle = tangentToEnd(seg01), length = 1)
|
||||
|> yLine(endAbsolute = 0)
|
||||
|> xLine(endAbsolute = 0)
|
||||
@ -34,11 +34,11 @@ coldPlate = startSketchOn(YZ)
|
||||
copperTubePath = startSketchOn(offsetPlane(XY, offset = tubeDiameter))
|
||||
|> startProfile(at = [-7.35, -bendRadius * 3])
|
||||
|> xLine(length = 14.13, tag = $seg05)
|
||||
|> tangentialArc(angle = 180, radius = bendRadius, tag = $seg02)
|
||||
|> tangentialArc(angle = 180deg, radius = bendRadius, tag = $seg02)
|
||||
|> angledLine(angle = tangentToEnd(seg02), length = 13.02, tag = $seg06)
|
||||
|> tangentialArc(angle = -180, radius = bendRadius, tag = $seg03)
|
||||
|> tangentialArc(angle = -180deg, radius = bendRadius, tag = $seg03)
|
||||
|> angledLine(angle = tangentToEnd(seg03), length = segLen(seg06))
|
||||
|> tangentialArc(angle = 180, radius = bendRadius, tag = $seg04)
|
||||
|> tangentialArc(angle = 180deg, radius = bendRadius, tag = $seg04)
|
||||
|> angledLine(angle = tangentToEnd(seg04), length = segLen(seg05))
|
||||
|
||||
// Create the profile for the inner and outer diameter of the hollow copper tube
|
||||
|
@ -22,13 +22,13 @@ tangentLength = (r1 - r2) / tan(tangentAngle)
|
||||
|
||||
plateBody = startSketchOn(XY)
|
||||
// Use polar coordinates to start the sketch at the tangent point of the larger radius
|
||||
|> startProfile(at = polar(angle = 90 - tangentAngle, length = r1))
|
||||
|> startProfile(at = polar(angle = 90deg - tangentAngle, length = r1))
|
||||
|> angledLine(angle = -tangentAngle, length = tangentLength)
|
||||
|> tangentialArc(radius = r2, angle = (tangentAngle - 90) * 2)
|
||||
|> tangentialArc(radius = r2, angle = (tangentAngle - 90deg) * 2)
|
||||
|> angledLine(angle = tangentAngle, length = -tangentLength)
|
||||
|> tangentialArc(radius = r1, angle = -tangentAngle * 2)
|
||||
|> angledLine(angle = -tangentAngle, length = -tangentLength)
|
||||
|> tangentialArc(radius = r2, angle = (tangentAngle - 90) * 2)
|
||||
|> tangentialArc(radius = r2, angle = (tangentAngle - 90deg) * 2)
|
||||
|> angledLine(angle = tangentAngle, length = tangentLength)
|
||||
|> tangentialArc(endAbsolute = [profileStartX(%), profileStartY(%)])
|
||||
|> close()
|
||||
|
@ -12,7 +12,7 @@ import * from "parameters.kcl"
|
||||
bottomFaceSketch = startSketchOn(YZ)
|
||||
|> startProfile(at = [-fanSize / 2, -fanSize / 2])
|
||||
|> angledLine(angle = 0, length = fanSize, tag = $rectangleSegmentA001)
|
||||
|> angledLine(angle = segAng(rectangleSegmentA001) + 90, length = fanSize, tag = $rectangleSegmentB001)
|
||||
|> angledLine(angle = segAng(rectangleSegmentA001) + 90deg, length = fanSize, tag = $rectangleSegmentB001)
|
||||
|> angledLine(angle = segAng(rectangleSegmentA001), length = -segLen(rectangleSegmentA001), tag = $rectangleSegmentC001)
|
||||
|> line(endAbsolute = [profileStartX(%), profileStartY(%)], tag = $rectangleSegmentD001)
|
||||
|> close()
|
||||
@ -50,12 +50,12 @@ bottomFaceSketch = startSketchOn(YZ)
|
||||
// Add large openings to the bottom face to allow airflow through the fan
|
||||
airflowPattern = startSketchOn(bottomFaceSketch, face = END)
|
||||
|> startProfile(at = [fanSize * 7 / 25, -fanSize * 9 / 25])
|
||||
|> angledLine(angle = 140, length = fanSize * 12 / 25, tag = $seg01)
|
||||
|> tangentialArc(radius = fanSize * 1 / 50, angle = 90)
|
||||
|> angledLine(angle = -130, length = fanSize * 8 / 25)
|
||||
|> tangentialArc(radius = fanSize * 1 / 50, angle = 90)
|
||||
|> angledLine(angle = segAng(seg01) + 180, length = fanSize * 2 / 25)
|
||||
|> tangentialArc(radius = fanSize * 8 / 25, angle = 40)
|
||||
|> angledLine(angle = 140deg, length = fanSize * 12 / 25, tag = $seg01)
|
||||
|> tangentialArc(radius = fanSize * 1 / 50, angle = 90deg)
|
||||
|> angledLine(angle = -130deg, length = fanSize * 8 / 25)
|
||||
|> tangentialArc(radius = fanSize * 1 / 50, angle = 90deg)
|
||||
|> angledLine(angle = segAng(seg01) + 180deg, length = fanSize * 2 / 25)
|
||||
|> tangentialArc(radius = fanSize * 8 / 25, angle = 40deg)
|
||||
|> xLine(length = fanSize * 3 / 25)
|
||||
|> tangentialArc(endAbsolute = [profileStartX(%), profileStartY(%)])
|
||||
|> close()
|
||||
@ -75,13 +75,13 @@ bodyMiddle = startSketchOn(bottomFaceSketch, face = END)
|
||||
housingMiddleLength / 2,
|
||||
-housingMiddleLength / 2 - housingMiddleRadius
|
||||
])
|
||||
|> tangentialArc(radius = housingMiddleRadius, angle = 90)
|
||||
|> tangentialArc(radius = housingMiddleRadius, angle = 90deg)
|
||||
|> yLine(length = housingMiddleLength)
|
||||
|> tangentialArc(radius = housingMiddleRadius, angle = 90)
|
||||
|> tangentialArc(radius = housingMiddleRadius, angle = 90deg)
|
||||
|> xLine(length = -housingMiddleLength)
|
||||
|> tangentialArc(radius = housingMiddleRadius, angle = 90)
|
||||
|> tangentialArc(radius = housingMiddleRadius, angle = 90deg)
|
||||
|> yLine(length = -housingMiddleLength)
|
||||
|> tangentialArc(radius = housingMiddleRadius, angle = 90)
|
||||
|> tangentialArc(radius = housingMiddleRadius, angle = 90deg)
|
||||
|> line(endAbsolute = [profileStartX(%), profileStartY(%)])
|
||||
|> extrude(length = fanHeight - 4 - 4)
|
||||
|
||||
|
@ -20,32 +20,32 @@ fn fanBlade(offsetHeight, startAngle) {
|
||||
15 * cos(startAngle),
|
||||
15 * sin(startAngle)
|
||||
])
|
||||
|> arc(angleStart = startAngle, angleEnd = startAngle + 14, radius = 15)
|
||||
|> arc(angleStart = startAngle, angleEnd = startAngle + 14deg, radius = 15)
|
||||
|> arc(
|
||||
endAbsolute = [
|
||||
fanSize * 22 / 50 * cos(startAngle - 20),
|
||||
fanSize * 22 / 50 * sin(startAngle - 20)
|
||||
fanSize * 22 / 50 * cos(startAngle - 20deg),
|
||||
fanSize * 22 / 50 * sin(startAngle - 20deg)
|
||||
],
|
||||
interiorAbsolute = [
|
||||
fanSize * 11 / 50 * cos(startAngle + 3),
|
||||
fanSize * 11 / 50 * sin(startAngle + 3)
|
||||
fanSize * 11 / 50 * cos(startAngle + 3deg),
|
||||
fanSize * 11 / 50 * sin(startAngle + 3deg)
|
||||
],
|
||||
)
|
||||
|> arc(
|
||||
endAbsolute = [
|
||||
fanSize * 22 / 50 * cos(startAngle - 24),
|
||||
fanSize * 22 / 50 * sin(startAngle - 24)
|
||||
fanSize * 22 / 50 * cos(startAngle - 24deg),
|
||||
fanSize * 22 / 50 * sin(startAngle - 24deg)
|
||||
],
|
||||
interiorAbsolute = [
|
||||
fanSize * 22 / 50 * cos(startAngle - 22),
|
||||
fanSize * 22 / 50 * sin(startAngle - 22)
|
||||
fanSize * 22 / 50 * cos(startAngle - 22deg),
|
||||
fanSize * 22 / 50 * sin(startAngle - 22deg)
|
||||
],
|
||||
)
|
||||
|> arc(
|
||||
endAbsolute = [profileStartX(%), profileStartY(%)],
|
||||
interiorAbsolute = [
|
||||
fanSize * 11 / 50 * cos(startAngle - 5),
|
||||
fanSize * 11 / 50 * sin(startAngle - 5)
|
||||
fanSize * 11 / 50 * cos(startAngle - 5deg),
|
||||
fanSize * 11 / 50 * sin(startAngle - 5deg)
|
||||
],
|
||||
)
|
||||
|> close()
|
||||
@ -54,8 +54,8 @@ fn fanBlade(offsetHeight, startAngle) {
|
||||
|
||||
// Loft the fan blade cross sections into a single blade, then pattern them about the fan center
|
||||
crossSections = [
|
||||
fanBlade(offsetHeight = 4.5, startAngle = 50),
|
||||
fanBlade(offsetHeight = (fanHeight - 2 - 4) / 2, startAngle = 30),
|
||||
fanBlade(offsetHeight = 4.5, startAngle = 50deg),
|
||||
fanBlade(offsetHeight = (fanHeight - 2 - 4) / 2, startAngle = 30deg),
|
||||
fanBlade(offsetHeight = fanHeight - 2, startAngle = 0)
|
||||
]
|
||||
bladeLoft = loft(crossSections)
|
||||
@ -63,7 +63,7 @@ bladeLoft = loft(crossSections)
|
||||
instances = 9,
|
||||
axis = [1, 0, 0],
|
||||
center = [0, 0, 0],
|
||||
arcDegrees = 360,
|
||||
arcDegrees = 360deg,
|
||||
rotateDuplicates = true,
|
||||
)
|
||||
|
||||
|
@ -11,10 +11,10 @@ import * from "parameters.kcl"
|
||||
endTubePath = startSketchOn(offsetPlane(YZ, offset = -20))
|
||||
|> startProfile(at = [fanSize / 4, fanSize + 38])
|
||||
|> yLine(endAbsolute = bendRadius + 10, tag = $seg01)
|
||||
|> tangentialArc(radius = bendRadius, angle = -90)
|
||||
|> tangentialArc(radius = bendRadius, angle = -90deg)
|
||||
|> xLine(endAbsolute = 0, tag = $seg02)
|
||||
|> xLine(length = -segLen(seg02))
|
||||
|> tangentialArc(radius = bendRadius, angle = -90)
|
||||
|> tangentialArc(radius = bendRadius, angle = -90deg)
|
||||
|> yLine(length = segLen(seg01))
|
||||
|
||||
// Sweep and translate the outermost tube on each end
|
||||
@ -35,13 +35,13 @@ endTube = startSketchOn(offsetPlane(XY, offset = fanSize + 38))
|
||||
centerTubePath = startSketchOn(offsetPlane(YZ, offset = -4))
|
||||
|> startProfile(at = [fanSize / 2.67, fanSize + 38])
|
||||
|> yLine(endAbsolute = bendRadius + 15 + 10)
|
||||
|> tangentialArc(radius = bendRadius, angle = -45)
|
||||
|> angledLine(angle = -135, lengthY = 15)
|
||||
|> tangentialArc(radius = bendRadius, angle = -45)
|
||||
|> tangentialArc(radius = bendRadius, angle = -45deg)
|
||||
|> angledLine(angle = -135deg, lengthY = 15)
|
||||
|> tangentialArc(radius = bendRadius, angle = -45deg)
|
||||
|> xLine(endAbsolute = 0, tag = $seg03)
|
||||
|> xLine(length = -segLen(seg03))
|
||||
|> tangentialArc(radius = bendRadius, angle = -155)
|
||||
|> tangentialArc(radius = bendRadius, angle = 65)
|
||||
|> tangentialArc(radius = bendRadius, angle = -155deg)
|
||||
|> tangentialArc(radius = bendRadius, angle = 65deg)
|
||||
|> yLine(endAbsolute = fanSize + 38)
|
||||
|
||||
// Draw the profile and sweep the 4 interior tubes
|
||||
@ -68,13 +68,13 @@ centerTube = startSketchOn(offsetPlane(XY, offset = fanSize + 38))
|
||||
heatFins = startSketchOn(offsetPlane(XY, offset = 45))
|
||||
|> startProfile(at = [0, -fanSize / 2])
|
||||
|> xLine(length = 9)
|
||||
|> angledLine(angle = -60, length = 2.5, tag = $seg04)
|
||||
|> angledLine(angle = -60deg, length = 2.5, tag = $seg04)
|
||||
|> xLine(length = 0.75)
|
||||
|> arc(interiorAbsolute = [lastSegX(%) + 1, lastSegY(%) + 1.2], endAbsolute = [lastSegX(%) + 2, lastSegY(%)])
|
||||
|> xLine(length = 0.75)
|
||||
|> angledLine(angle = 60, length = segLen(seg04))
|
||||
|> angledLine(angle = 60deg, length = segLen(seg04))
|
||||
|> xLine(endAbsolute = heatSinkDepth / 2 - 3)
|
||||
|> tangentialArc(angle = 90, radius = 3)
|
||||
|> tangentialArc(angle = 90deg, radius = 3)
|
||||
|> yLine(endAbsolute = 0)
|
||||
|> mirror2d(axis = X)
|
||||
|> mirror2d(axis = Y)
|
||||
@ -91,11 +91,11 @@ heatFins = startSketchOn(offsetPlane(XY, offset = 45))
|
||||
coolerBase = startSketchOn(-XZ)
|
||||
baseLower = startProfile(coolerBase, at = [0, 10])
|
||||
|> xLine(length = -0.9)
|
||||
|> arc(angleStart = 0, angleEnd = -180, radius = 3.1)
|
||||
|> arc(angleStart = 0, angleEnd = -180deg, radius = 3.1)
|
||||
|> xLine(length = -1.8)
|
||||
|> arc(angleStart = 0, angleEnd = -180, radius = 3)
|
||||
|> arc(angleStart = 0, angleEnd = -180deg, radius = 3)
|
||||
|> xLine(length = -1.8)
|
||||
|> arc(angleStart = 0, angleEnd = -180, radius = 3)
|
||||
|> arc(angleStart = 0, angleEnd = -180deg, radius = 3)
|
||||
|> xLine(length = -1.8)
|
||||
|> xLine(length = -2)
|
||||
|> yLine(length = -10)
|
||||
@ -105,15 +105,15 @@ baseLower = startProfile(coolerBase, at = [0, 10])
|
||||
|
||||
baseUpper = startProfile(coolerBase, at = [0, 10])
|
||||
|> xLine(length = -0.9)
|
||||
|> arc(angleStart = 0, angleEnd = 180, radius = 3.1)
|
||||
|> arc(angleStart = 0, angleEnd = 180deg, radius = 3.1)
|
||||
|> xLine(length = -1.8)
|
||||
|> arc(angleStart = 0, angleEnd = 180, radius = 3)
|
||||
|> arc(angleStart = 0, angleEnd = 180deg, radius = 3)
|
||||
|> xLine(length = -1.8)
|
||||
|> arc(angleStart = 0, angleEnd = 180, radius = 3)
|
||||
|> arc(angleStart = 0, angleEnd = 180deg, radius = 3)
|
||||
|> xLine(length = -1.8)
|
||||
|> xLine(length = -1)
|
||||
|> yLine(length = 4)
|
||||
|> tangentialArc(angle = -90, radius = 2)
|
||||
|> tangentialArc(angle = -90deg, radius = 2)
|
||||
|> xLine(endAbsolute = 0)
|
||||
|> mirror2d(axis = Y)
|
||||
|> extrude(length = 2 * segLen(seg02) * 3 / 4, symmetric = true)
|
||||
@ -122,15 +122,15 @@ baseUpper = startProfile(coolerBase, at = [0, 10])
|
||||
mountingBracket = startSketchOn(XZ)
|
||||
|> startProfile(at = [-10, 16])
|
||||
|> xLine(length = -20)
|
||||
|> tangentialArc(angle = 20, radius = bendRadius)
|
||||
|> angledLine(angle = -160, length = 14, tag = $seg09)
|
||||
|> tangentialArc(angle = -30, radius = bendRadius + sheetThickness)
|
||||
|> angledLine(angle = 170, length = 21.5, tag = $seg04Q)
|
||||
|> angledLine(angle = 170 - 90, length = sheetThickness, tag = $seg08)
|
||||
|> angledLine(angle = segAng(seg04Q) + 180, length = segLen(seg04Q), tag = $seg05E)
|
||||
|> tangentialArc(angle = 30, radius = bendRadius)
|
||||
|> angledLine(angle = segAng(seg09) + 180, length = segLen(seg09))
|
||||
|> tangentialArc(angle = -20, radius = bendRadius + sheetThickness)
|
||||
|> tangentialArc(angle = 20deg, radius = bendRadius)
|
||||
|> angledLine(angle = -160deg, length = 14, tag = $seg09)
|
||||
|> tangentialArc(angle = -30deg, radius = bendRadius + sheetThickness)
|
||||
|> angledLine(angle = 170deg, length = 21.5, tag = $seg04Q)
|
||||
|> angledLine(angle = 170deg - 90, length = sheetThickness, tag = $seg08)
|
||||
|> angledLine(angle = segAng(seg04Q) + 180deg, length = segLen(seg04Q), tag = $seg05E)
|
||||
|> tangentialArc(angle = 30deg, radius = bendRadius)
|
||||
|> angledLine(angle = segAng(seg09) + 180deg, length = segLen(seg09))
|
||||
|> tangentialArc(angle = -20deg, radius = bendRadius + sheetThickness)
|
||||
|> xLine(endAbsolute = profileStartX(%))
|
||||
|> line(endAbsolute = [profileStartX(%), profileStartY(%)], tag = $seg07)
|
||||
|> close()
|
||||
@ -166,6 +166,6 @@ thruHole = startSketchOn(mountingBracket, face = seg05E)
|
||||
instances = 2,
|
||||
axis = [0, 0, 1],
|
||||
center = [0, 0, 0],
|
||||
arcDegrees = 360,
|
||||
arcDegrees = 360deg,
|
||||
rotateDuplicates = true,
|
||||
)
|
||||
|
@ -37,7 +37,7 @@ mountingWire
|
||||
instances = 2,
|
||||
axis = [0, 1, 0],
|
||||
center = [0, 0, 40 + fanSize / 2],
|
||||
arcDegrees = 360,
|
||||
arcDegrees = 360deg,
|
||||
rotateDuplicates = true,
|
||||
)
|
||||
|> patternCircular3d(
|
||||
@ -45,7 +45,7 @@ mountingWire
|
||||
instances = 2,
|
||||
axis = [0, 0, 1],
|
||||
center = [0, 0, 0],
|
||||
arcDegrees = 360,
|
||||
arcDegrees = 360deg,
|
||||
rotateDuplicates = true,
|
||||
)
|
||||
removableSticker
|
||||
|
@ -11,29 +11,29 @@ import * from "parameters.kcl"
|
||||
upperArm = startSketchOn(offsetPlane(XZ, offset = fanSize / 2 + 2))
|
||||
|> startProfile(at = [-12, 40 + fanSize / 2])
|
||||
|> yLine(length = 7)
|
||||
|> tangentialArc(radius = 2, angle = 90)
|
||||
|> tangentialArc(radius = 2, angle = 90deg)
|
||||
|> xLine(length = -9)
|
||||
|> tangentialArc(radius = 2, angle = -90)
|
||||
|> tangentialArc(radius = 2, angle = -90deg)
|
||||
|> yLine(length = 14)
|
||||
|> tangentialArc(radius = 2, angle = 90)
|
||||
|> tangentialArc(radius = 2, angle = 90deg)
|
||||
|> xLine(length = -9)
|
||||
|> tangentialArc(radius = 2, angle = -80)
|
||||
|> angledLine(angle = 100, endAbsoluteY = 40 + fanSize / 2 + mountingHoleSpacing / 2 - 1.5)
|
||||
|> tangentialArc(radius = 2, angle = 80, tag = $seg07)
|
||||
|> tangentialArc(radius = 2, angle = -80deg)
|
||||
|> angledLine(angle = 100deg, endAbsoluteY = 40 + fanSize / 2 + mountingHoleSpacing / 2 - 1.5)
|
||||
|> tangentialArc(radius = 2, angle = 80deg, tag = $seg07)
|
||||
|
||||
// Draw the XZ component of the mounting wire path
|
||||
lowerArm = startSketchOn(offsetPlane(XZ, offset = fanSize / 2 + 2))
|
||||
|> startProfile(at = [-12, 40 + fanSize / 2])
|
||||
|> yLine(length = -7)
|
||||
|> tangentialArc(radius = 2, angle = -90)
|
||||
|> tangentialArc(radius = 2, angle = -90deg)
|
||||
|> xLine(length = -9)
|
||||
|> tangentialArc(radius = 2, angle = 90)
|
||||
|> tangentialArc(radius = 2, angle = 90deg)
|
||||
|> yLine(length = -14)
|
||||
|> tangentialArc(radius = 2, angle = -90)
|
||||
|> tangentialArc(radius = 2, angle = -90deg)
|
||||
|> xLine(length = -9)
|
||||
|> tangentialArc(radius = 2, angle = 80)
|
||||
|> angledLine(angle = -100, endAbsoluteY = 40 + fanSize / 2 - (mountingHoleSpacing / 2) + 1.5)
|
||||
|> tangentialArc(radius = 2, angle = -80, tag = $seg08)
|
||||
|> tangentialArc(radius = 2, angle = 80deg)
|
||||
|> angledLine(angle = -100deg, endAbsoluteY = 40 + fanSize / 2 - (mountingHoleSpacing / 2) + 1.5)
|
||||
|> tangentialArc(radius = 2, angle = -80deg, tag = $seg08)
|
||||
|
||||
// Create the profile of the mounting wire and sweep along the XZ path
|
||||
wireProfile = startSketchOn(offsetPlane(XY, offset = 40 + fanSize / 2))
|
||||
@ -47,18 +47,18 @@ sweepLowerArm = circle(wireProfile, center = [-12, -fanSize / 2 - 2], radius = 1
|
||||
upperHook = startSketchOn(offsetPlane(XY, offset = segEndY(seg07)))
|
||||
|> startProfile(at = [segEndX(seg07), -fanSize / 2 - 2])
|
||||
|> xLine(endAbsolute = -heatSinkDepth / 2 - fanHeight)
|
||||
|> tangentialArc(radius = 2, angle = -90)
|
||||
|> tangentialArc(radius = 2, angle = -90deg)
|
||||
|> yLine(endAbsolute = -mountingHoleSpacing / 2 - 2)
|
||||
|> tangentialArc(radius = 2, angle = -90)
|
||||
|> tangentialArc(radius = 2, angle = -90deg)
|
||||
|> xLine(length = fanHeight / 3)
|
||||
|
||||
// Draw the XY components of the mounting wire path
|
||||
lowerHook = startSketchOn(offsetPlane(XY, offset = segEndY(seg08)))
|
||||
|> startProfile(at = [segEndX(seg07), -fanSize / 2 - 2])
|
||||
|> xLine(endAbsolute = -heatSinkDepth / 2 - fanHeight)
|
||||
|> tangentialArc(radius = 2, angle = -90)
|
||||
|> tangentialArc(radius = 2, angle = -90deg)
|
||||
|> yLine(endAbsolute = -mountingHoleSpacing / 2 - 2)
|
||||
|> tangentialArc(radius = 2, angle = -90)
|
||||
|> tangentialArc(radius = 2, angle = -90deg)
|
||||
|> xLine(length = fanHeight / 3)
|
||||
|
||||
// Sweep the wire profile around the hook-shaped segments of the mounting wire
|
||||
|
@ -8,7 +8,7 @@
|
||||
removableSticker = startSketchOn(-XY)
|
||||
|> startProfile(at = [-12, -12])
|
||||
|> angledLine(angle = 0, length = 24, tag = $rectangleSegmentA001)
|
||||
|> angledLine(angle = segAng(rectangleSegmentA001) + 90, length = 24, tag = $rectangleSegmentB001)
|
||||
|> angledLine(angle = segAng(rectangleSegmentA001) + 90deg, length = 24, tag = $rectangleSegmentB001)
|
||||
|> angledLine(angle = segAng(rectangleSegmentA001), length = -segLen(rectangleSegmentA001), tag = $rectangleSegmentC001)
|
||||
|> line(endAbsolute = [profileStartX(%), profileStartY(%)], tag = $rectangleSegmentD001)
|
||||
|> close()
|
||||
|
@ -14,11 +14,11 @@ fn cycloidalGear(gearPitch, gearHeight, holeDiameter, helixAngle: number(deg)) {
|
||||
gearPitch * 1.55 * cos(helixAngleP) + gearPitch * sin(-helixAngleP),
|
||||
gearPitch * 1.55 * sin(helixAngleP) + gearPitch * cos(-helixAngleP)
|
||||
])
|
||||
|> arc(angleStart = 90 + helixAngleP, angleEnd = -90 + helixAngleP, radius = gearPitch)
|
||||
|> tangentialArc(radius = gearPitch * 1.67, angle = 60)
|
||||
|> tangentialArc(radius = gearPitch, angle = -180)
|
||||
|> tangentialArc(radius = gearPitch * 1.67, angle = 60)
|
||||
|> tangentialArc(radius = gearPitch, angle = -180)
|
||||
|> arc(angleStart = 90deg + helixAngleP, angleEnd = -90deg + helixAngleP, radius = gearPitch)
|
||||
|> tangentialArc(radius = gearPitch * 1.67, angle = 60deg)
|
||||
|> tangentialArc(radius = gearPitch, angle = -180deg)
|
||||
|> tangentialArc(radius = gearPitch * 1.67, angle = 60deg)
|
||||
|> tangentialArc(radius = gearPitch, angle = -180deg)
|
||||
|> tangentialArc(endAbsolute = [profileStartX(%), profileStartY(%)])
|
||||
|> close(%)
|
||||
|> subtract2d(tool = circle(center = [0, 0], radius = holeDiameter / 2))
|
||||
@ -40,5 +40,5 @@ cycloidalGear(
|
||||
gearPitch = .3,
|
||||
gearHeight = 1.5,
|
||||
holeDiameter = 0.297,
|
||||
helixAngle = -80,
|
||||
helixAngle = -80deg,
|
||||
)
|
||||
|
@ -27,9 +27,9 @@ fn primaryTube(n, angle001, length001, length002, length003) {
|
||||
sweepPath = startSketchOn(sweepPlane)
|
||||
|> startProfile(at = [0, plateHeight])
|
||||
|> line(end = [0, length001])
|
||||
|> tangentialArc(angle = -80, radius = bendRadius, tag = $arc01)
|
||||
|> tangentialArc(angle = -80deg, radius = bendRadius, tag = $arc01)
|
||||
|> angledLine(angle = tangentToEnd(arc01), length = length002)
|
||||
|> tangentialArc(angle = 85, radius = bendRadius, tag = $arc02)
|
||||
|> tangentialArc(angle = 85deg, radius = bendRadius, tag = $arc02)
|
||||
|> angledLine(angle = tangentToEnd(arc02), length = length003)
|
||||
|
||||
// Create the cross section of each tube and sweep them
|
||||
@ -51,21 +51,21 @@ primaryTube(
|
||||
)
|
||||
primaryTube(
|
||||
n = 1,
|
||||
angle001 = 1,
|
||||
angle001 = 1deg,
|
||||
length001 = 3,
|
||||
length002 = 6,
|
||||
length003 = 5,
|
||||
)
|
||||
primaryTube(
|
||||
n = 2,
|
||||
angle001 = 24.3,
|
||||
angle001 = 24.3deg,
|
||||
length001 = 5,
|
||||
length002 = 5,
|
||||
length003 = 3,
|
||||
)
|
||||
primaryTube(
|
||||
n = 3,
|
||||
angle001 = 25.2,
|
||||
angle001 = 25.2deg,
|
||||
length001 = 5,
|
||||
length002 = 5,
|
||||
length003 = 3,
|
||||
@ -75,20 +75,20 @@ primaryTube(
|
||||
flangeSketch = startSketchOn(XY)
|
||||
|> startProfile(at = [3 + 1.3, -1.25])
|
||||
|> xLine(length = -2.6, tag = $seg01)
|
||||
|> tangentialArc(radius = .3, angle = -40)
|
||||
|> tangentialArc(radius = .9, angle = 80)
|
||||
|> tangentialArc(radius = .3, angle = -40)
|
||||
|> tangentialArc(radius = .3, angle = -40deg)
|
||||
|> tangentialArc(radius = .9, angle = 80deg)
|
||||
|> tangentialArc(radius = .3, angle = -40deg)
|
||||
|> xLine(length = -1.4, tag = $seg03)
|
||||
|> yLine(length = segLen(seg01), tag = $seg04)
|
||||
|> xLine(length = 3.1, tag = $seg05)
|
||||
|> tangentialArc(radius = .3, angle = -40)
|
||||
|> tangentialArc(radius = 1.5, angle = 80)
|
||||
|> tangentialArc(radius = .3, angle = -40)
|
||||
|> tangentialArc(radius = .3, angle = -40deg)
|
||||
|> tangentialArc(radius = 1.5, angle = 80deg)
|
||||
|> tangentialArc(radius = .3, angle = -40deg)
|
||||
|> xLine(length = segLen(seg05), tag = $seg07)
|
||||
|> yLine(endAbsolute = profileStartY(%), tag = $seg08)
|
||||
|> xLine(length = -segLen(seg03), tag = $seg09)
|
||||
|> tangentialArc(radius = .3, angle = -40)
|
||||
|> tangentialArc(radius = .9, angle = 80)
|
||||
|> tangentialArc(radius = .3, angle = -40deg)
|
||||
|> tangentialArc(radius = .9, angle = 80deg)
|
||||
|> tangentialArc(endAbsolute = [profileStartX(%), profileStartY(%)])
|
||||
|> close()
|
||||
|
||||
|
@ -20,24 +20,24 @@ gripSlotWidth = 8.0
|
||||
fn slot(sketch1, start, end, width) {
|
||||
angle = if start[0] == end[0] {
|
||||
if end[1] > start[1] {
|
||||
90
|
||||
90deg
|
||||
} else {
|
||||
270
|
||||
270deg
|
||||
}
|
||||
} else {
|
||||
if end[0] < start[0] {
|
||||
units::toDegrees(atan((end[1] - start[1]) / (end[0] - start[0]))) + 180
|
||||
units::toDegrees(atan((end[1] - start[1]) / (end[0] - start[0]))) + 180deg
|
||||
} else {
|
||||
units::toDegrees(atan((end[1] - start[1]) / (end[0] - start[0])))
|
||||
}
|
||||
}
|
||||
dist = sqrt(pow(end[1] - start[1], exp = 2) + pow(end[0] - start[0], exp = 2))
|
||||
xstart = width / 2 * cos(angle - 90) + start[0]
|
||||
ystart = width / 2 * sin(angle - 90) + start[1]
|
||||
xstart = width / 2 * cos(angle - 90deg) + start[0]
|
||||
ystart = width / 2 * sin(angle - 90deg) + start[1]
|
||||
slotSketch = startProfile(sketch1, at = [xstart, ystart])
|
||||
|> angledLine(angle = angle, length = dist)
|
||||
|> tangentialArc(radius = width / 2, angle = 180)
|
||||
|> angledLine(angle = angle, length = -dist)
|
||||
|> angledLine(angle, length = dist)
|
||||
|> tangentialArc(radius = width / 2, angle = 180deg)
|
||||
|> angledLine(angle, length = -dist)
|
||||
|> tangentialArc(endAbsolute = [profileStartX(%), profileStartY(%)])
|
||||
|> close()
|
||||
return slotSketch
|
||||
@ -51,7 +51,7 @@ flipperProfile = startProfile(flipperSketch, at = [-flipperLength, -32.0])
|
||||
|> line(end = [flipperLength, 2.0])
|
||||
|> yLine(length = 60.0, tag = $backEdge)
|
||||
|> line(end = [-flipperLength, 2.0])
|
||||
|> arc(angleStart = 163.087610, angleEnd = 196.912390, radius = 110.0)
|
||||
|> arc(angleStart = 163.087610deg, angleEnd = 196.912390deg, radius = 110.0)
|
||||
|> close()
|
||||
|
||||
// Create a profile of the middle
|
||||
@ -137,13 +137,13 @@ gripSketch = startSketchOn(handlePlane)
|
||||
// Create a profile of the grip
|
||||
gripProfile = startProfile(gripSketch, at = [-26.806746, -10.0])
|
||||
|> xLine(length = gripWidth - (2 * gripFilletRadius))
|
||||
|> arc(angleStart = -90.0, angleEnd = 0.0, radius = gripFilletRadius)
|
||||
|> arc(angleStart = -90.0deg, angleEnd = 0.0, radius = gripFilletRadius)
|
||||
|> yLine(length = gripHeight - (2 * gripFilletRadius))
|
||||
|> arc(angleStart = 0.0, angleEnd = 90.0, radius = gripFilletRadius)
|
||||
|> arc(angleStart = 0.0, angleEnd = 90.0deg, radius = gripFilletRadius)
|
||||
|> xLine(length = -(gripWidth - (2 * gripFilletRadius)))
|
||||
|> arc(angleStart = 90.0, angleEnd = 180.0, radius = gripFilletRadius)
|
||||
|> arc(angleStart = 90.0deg, angleEnd = 180.0deg, radius = gripFilletRadius)
|
||||
|> yLine(length = -(gripHeight - (2 * gripFilletRadius)), tag = $gripEdgeTop)
|
||||
|> arc(angleStart = 180.0, angleEnd = 270.0, radius = gripFilletRadius)
|
||||
|> arc(angleStart = 180.0deg, angleEnd = 270.0deg, radius = gripFilletRadius)
|
||||
|> close()
|
||||
|
||||
// Extrude the grip profile to create the grip
|
||||
|
@ -13,11 +13,11 @@ handleThickness = 0.65
|
||||
sketch001 = startSketchOn(XZ)
|
||||
|> startProfile(at = [carafeDiameter / 2, 5.7])
|
||||
|> angledLine(angle = 0, length = 0.1, tag = $rectangleSegmentA001)
|
||||
|> angledLine(angle = segAng(rectangleSegmentA001) - 90, length = -0.75, tag = $rectangleSegmentB001)
|
||||
|> angledLine(angle = segAng(rectangleSegmentA001) - 90deg, length = -0.75, tag = $rectangleSegmentB001)
|
||||
|> angledLine(angle = segAng(rectangleSegmentA001), length = -segLen(rectangleSegmentA001), tag = $rectangleSegmentC001)
|
||||
|> line(endAbsolute = [profileStartX(%), profileStartY(%)])
|
||||
|> close()
|
||||
|> revolve(angle = 360, axis = Y)
|
||||
|> revolve(angle = 360deg, axis = Y)
|
||||
|
||||
// Create an angled plane to sketch the supports
|
||||
plane001 = {
|
||||
@ -32,19 +32,19 @@ sketch002 = startSketchOn(plane001)
|
||||
|> startProfile(at = [carafeDiameter / 2, 5.7])
|
||||
|> xLine(length = 0.1)
|
||||
|> yLine(length = -5.2, tag = $edge1)
|
||||
|> arc(angleStart = 180, angleEnd = 205, radius = 0.3)
|
||||
|> angledLine(angle = -60, length = 0.6, tag = $edge2)
|
||||
|> arc(angleStart = 30, angleEnd = -120, radius = 0.6)
|
||||
|> angledLine(angle = 150, endAbsoluteY = -0.2, tag = $edge3)
|
||||
|> arc(angleStart = 60, angleEnd = 90, radius = 0.5)
|
||||
|> arc(angleStart = 180deg, angleEnd = 205deg, radius = 0.3)
|
||||
|> angledLine(angle = -60deg, length = 0.6, tag = $edge2)
|
||||
|> arc(angleStart = 30deg, angleEnd = -120deg, radius = 0.6)
|
||||
|> angledLine(angle = 150deg, endAbsoluteY = -0.2, tag = $edge3)
|
||||
|> arc(angleStart = 60deg, angleEnd = 90deg, radius = 0.5)
|
||||
|> xLine(endAbsolute = 0.1, tag = $edgeLen)
|
||||
|> yLine(length = 0.1)
|
||||
|> xLine(length = segLen(edgeLen) + 0.035, tag = $edge4)
|
||||
|> arc(angleStart = 90, angleEnd = 60, radius = 0.6)
|
||||
|> angledLine(angle = 150, length = -segLen(edge3) + 0.035, tag = $edge5)
|
||||
|> arc(angleStart = -120, angleEnd = 30, radius = 0.5)
|
||||
|> angledLine(angle = -60, length = -segLen(edge2) + 0.035, tag = $edge6)
|
||||
|> arc(angleStart = 205, angleEnd = 180, radius = 0.6)
|
||||
|> arc(angleStart = 90deg, angleEnd = 60deg, radius = 0.6)
|
||||
|> angledLine(angle = 150deg, length = -segLen(edge3) + 0.035, tag = $edge5)
|
||||
|> arc(angleStart = -120deg, angleEnd = 30deg, radius = 0.5)
|
||||
|> angledLine(angle = -60deg, length = -segLen(edge2) + 0.035, tag = $edge6)
|
||||
|> arc(angleStart = 205deg, angleEnd = 180deg, radius = 0.6)
|
||||
|> line(endAbsolute = [profileStartX(%), profileStartY(%)])
|
||||
|> close()
|
||||
|> extrude(length = 0.75)
|
||||
@ -52,7 +52,7 @@ sketch002 = startSketchOn(plane001)
|
||||
axis = [0, 0, 1],
|
||||
center = [0, 0, 0],
|
||||
instances = 4,
|
||||
arcDegrees = 360,
|
||||
arcDegrees = 360deg,
|
||||
rotateDuplicates = true,
|
||||
)
|
||||
|
||||
@ -65,7 +65,7 @@ extrude001 = extrude(sketch003, length = 0.050)
|
||||
sketch004 = startSketchOn(extrude001, face = END)
|
||||
|> startProfile(at = [0.3, 0.17])
|
||||
|> yLine(length = 1.2)
|
||||
|> arc(angleStart = 90, angleEnd = -30, radius = 1.2)
|
||||
|> arc(angleStart = 90deg, angleEnd = -30deg, radius = 1.2)
|
||||
|> line(endAbsolute = [profileStartX(%), profileStartY(%)])
|
||||
|> close()
|
||||
|> patternCircular2d(
|
||||
@ -81,9 +81,9 @@ extrude002 = extrude(sketch004, length = -0.050)
|
||||
sketch005 = startSketchOn(XZ)
|
||||
|> startProfile(at = [0.15, 1.11])
|
||||
|> xLine(endAbsolute = carafeDiameter / 2 - 0.2)
|
||||
|> angledLine(angle = 30, endAbsoluteX = carafeDiameter / 2 - 0.07, tag = $seg1)
|
||||
|> angledLine(angle = -60, length = 0.050)
|
||||
|> angledLine(angle = 30, length = -segLen(seg1))
|
||||
|> angledLine(angle = 30deg, endAbsoluteX = carafeDiameter / 2 - 0.07, tag = $seg1)
|
||||
|> angledLine(angle = -60deg, length = 0.050)
|
||||
|> angledLine(angle = 30deg, length = -segLen(seg1))
|
||||
|> xLine(endAbsolute = 0.15)
|
||||
|> line(endAbsolute = [profileStartX(%), profileStartY(%)])
|
||||
|> close()
|
||||
@ -93,11 +93,11 @@ sketch005 = startSketchOn(XZ)
|
||||
sketch006 = startSketchOn(XZ)
|
||||
|> startProfile(at = [0.1, 1])
|
||||
|> line(end = [0.1, 0])
|
||||
|> angledLine(angle = 10, endAbsoluteX = 0.05)
|
||||
|> angledLine(angle = 10deg, endAbsoluteX = 0.05)
|
||||
|> yLine(length = 10)
|
||||
|> line(end = [0.6, 0])
|
||||
|> yLine(length = -.05)
|
||||
|> tangentialArc(radius = 0.6, angle = -90)
|
||||
|> tangentialArc(radius = 0.6, angle = -90deg)
|
||||
|> line(endAbsolute = [profileStartX(%), profileStartY(%)])
|
||||
|> close()
|
||||
|> revolve(axis = Y)
|
||||
@ -115,7 +115,7 @@ sketch008 = startSketchOn(extrude003, face = END)
|
||||
|> patternCircular2d(
|
||||
center = [0, 0],
|
||||
instances = 8,
|
||||
arcDegrees = 360,
|
||||
arcDegrees = 360deg,
|
||||
rotateDuplicates = true,
|
||||
)
|
||||
|
||||
@ -127,7 +127,7 @@ sketch009 = startSketchOn(extrude003, face = END)
|
||||
|> patternCircular2d(
|
||||
center = [0, 0],
|
||||
instances = 4,
|
||||
arcDegrees = 360,
|
||||
arcDegrees = 360deg,
|
||||
rotateDuplicates = true,
|
||||
)
|
||||
|
||||
|
@ -10,16 +10,16 @@ headSideProfile = startSketchOn(XZ)
|
||||
|> yLine(length = 0.1)
|
||||
|> tangentialArc(endAbsolute = [0.95, 11.92])
|
||||
|> tangentialArc(endAbsolute = [2.72, 11.26], tag = $seg01)
|
||||
|> angledLine(angle = tangentToEnd(seg01) + 90, length = .2)
|
||||
|> angledLine(angle = tangentToEnd(seg01) - 10, length = -0.5)
|
||||
|> angledLine(angle = tangentToEnd(seg01) + 90deg, length = .2)
|
||||
|> angledLine(angle = tangentToEnd(seg01) - 10deg, length = -0.5)
|
||||
|> tangentialArc(endAbsolute = [-0.91, 12.78], tag = $seg03)
|
||||
|> tangentialArc(endAbsolute = [-1.67, 12.85])
|
||||
|> xLine(length = -.25)
|
||||
|> tangentialArc(angle = 90, radius = .05)
|
||||
|> tangentialArc(angle = 90deg, radius = .05)
|
||||
|> yLine(length = -1.125, tag = $seg02)
|
||||
|> tangentialArc(angle = 90, radius = .05)
|
||||
|> tangentialArc(angle = 90deg, radius = .05)
|
||||
|> xLine(length = .25, tag = $seg04)
|
||||
|> angledLine(angle = 23, length = 0.1)
|
||||
|> angledLine(angle = 23deg, length = 0.1)
|
||||
|> tangentialArc(endAbsolute = [-0.33, profileStartY(%)])
|
||||
|> xLine(endAbsolute = profileStartX(%))
|
||||
|> close()
|
||||
@ -31,8 +31,8 @@ leftSideCut = startProfile(headTopProfile, at = [-4, -1.6])
|
||||
|> line(endAbsolute = [segEndX(seg02), -segLen(seg02) / 2])
|
||||
|> arc(
|
||||
%,
|
||||
angleStart = 180,
|
||||
angleEnd = 270,
|
||||
angleStart = 180deg,
|
||||
angleEnd = 270deg,
|
||||
radius = .05,
|
||||
)
|
||||
|> xLine(endAbsolute = segEndX(seg04))
|
||||
@ -44,7 +44,7 @@ leftSideCut = startProfile(headTopProfile, at = [-4, -1.6])
|
||||
|> extrude(length = -14)
|
||||
|
||||
rearCut = startProfile(headTopProfile, at = [3.39, -0.56])
|
||||
|> angledLine(angle = 177, length = 0.1)
|
||||
|> angledLine(angle = 177deg, length = 0.1)
|
||||
|> tangentialArc(endAbsolute = [1.86, -0.37])
|
||||
|> tangentialArc(endAbsolute = [lastSegX(%), -lastSegY(%)])
|
||||
|> tangentialArc(endAbsolute = [profileStartX(%), -profileStartY(%)])
|
||||
@ -56,8 +56,8 @@ rightSideCut = startProfile(headTopProfile, at = [-4, 1.6])
|
||||
|> line(endAbsolute = [segEndX(seg02), segLen(seg02) / 2])
|
||||
|> arc(
|
||||
%,
|
||||
angleStart = -180,
|
||||
angleEnd = -270,
|
||||
angleStart = -180deg,
|
||||
angleEnd = -270deg,
|
||||
radius = .05,
|
||||
)
|
||||
|> xLine(endAbsolute = segEndX(seg04))
|
||||
@ -108,11 +108,11 @@ hammerHead = union([firstProfiles, baseSupport])
|
||||
handleSketch = startSketchOn(XZ)
|
||||
|> startProfile(at = [0.01, 0])
|
||||
|> xLine(length = 1.125 / 2)
|
||||
|> tangentialArc(angle = 90, radius = 0.05)
|
||||
|> tangentialArc(angle = 90deg, radius = 0.05)
|
||||
|> tangentialArc(endAbsolute = [0.38, 12.8 / 1.612])
|
||||
|> tangentialArc(endAbsolute = [0.28, 12.8])
|
||||
|> xLine(endAbsolute = profileStartX(%))
|
||||
|> line(endAbsolute = [profileStartX(%), profileStartY(%)])
|
||||
|> close()
|
||||
handle = revolve(handleSketch, angle = 360, axis = Y)
|
||||
handle = revolve(handleSketch, angle = 360deg, axis = Y)
|
||||
|> appearance(color = "#f14f04")
|
||||
|
@ -29,8 +29,8 @@ fn helicalGear(nTeeth, module, pressureAngle, helixAngle, gearHeight) {
|
||||
|> xLine(length = keywayDepth)
|
||||
|> yLine(length = -keywayWidth)
|
||||
|> xLine(length = -keywayDepth)
|
||||
|> arc(angleStart = -1 * startAngle + 360, angleEnd = 180, radius = holeRadius)
|
||||
|> arc(angleStart = 180, angleEnd = startAngle, radius = holeRadius)
|
||||
|> arc(angleStart = -1 * startAngle + 360deg, angleEnd = 180deg, radius = holeRadius)
|
||||
|> arc(angleStart = 180deg, angleEnd = startAngle, radius = holeRadius)
|
||||
|> close()
|
||||
|
||||
// Define a function to create a rotated gear sketch on an offset plane
|
||||
@ -47,7 +47,7 @@ fn helicalGear(nTeeth, module, pressureAngle, helixAngle, gearHeight) {
|
||||
angle = helixCalc,
|
||||
tag = $seg01,
|
||||
)
|
||||
|> line(endAbsolute = polar(angle = 160 / nTeeth + helixCalc, length = tipDiameter / 2))
|
||||
|> line(endAbsolute = polar(angle = 160deg / nTeeth + helixCalc, length = tipDiameter / 2))
|
||||
|> involuteCircular(
|
||||
startRadius = baseDiameter / 2,
|
||||
endRadius = tipDiameter / 2,
|
||||
@ -56,14 +56,14 @@ fn helicalGear(nTeeth, module, pressureAngle, helixAngle, gearHeight) {
|
||||
)
|
||||
|
||||
// Position the end line of the sketch at the start of the next tooth
|
||||
|> line(endAbsolute = polar(angle = 360 / nTeeth + helixCalc, length = baseDiameter / 2))
|
||||
|> line(endAbsolute = polar(angle = 360deg / nTeeth + helixCalc, length = baseDiameter / 2))
|
||||
|
||||
// Pattern the sketch about the center by the specified number of teeth, then close the sketch
|
||||
|> patternCircular2d(
|
||||
%,
|
||||
instances = nTeeth,
|
||||
center = [0, 0],
|
||||
arcDegrees = 360,
|
||||
arcDegrees = 360deg,
|
||||
rotateDuplicates = true,
|
||||
)
|
||||
|> close()
|
||||
@ -93,7 +93,7 @@ fn helicalGear(nTeeth, module, pressureAngle, helixAngle, gearHeight) {
|
||||
helicalGear(
|
||||
nTeeth = 21,
|
||||
module = 2,
|
||||
pressureAngle = 20,
|
||||
helixAngle = 35,
|
||||
pressureAngle = 20deg,
|
||||
helixAngle = 35deg,
|
||||
gearHeight = 7,
|
||||
)
|
||||
|
@ -29,8 +29,8 @@ fn helicalGear(nTeeth, module, pressureAngle, helixAngle, gearHeight) {
|
||||
|> xLine(length = keywayDepth)
|
||||
|> yLine(length = -keywayWidth)
|
||||
|> xLine(length = -keywayDepth)
|
||||
|> arc(angleStart = -1 * startAngle + 360, angleEnd = 180, radius = holeRadius)
|
||||
|> arc(angleStart = 180, angleEnd = startAngle, radius = holeRadius)
|
||||
|> arc(angleStart = -1 * startAngle + 360deg, angleEnd = 180deg, radius = holeRadius)
|
||||
|> arc(angleStart = 180deg, angleEnd = startAngle, radius = holeRadius)
|
||||
|> close()
|
||||
|
||||
// Define a function to create a rotated gear sketch on an offset plane
|
||||
@ -47,7 +47,7 @@ fn helicalGear(nTeeth, module, pressureAngle, helixAngle, gearHeight) {
|
||||
angle = helixCalc,
|
||||
tag = $seg01,
|
||||
)
|
||||
|> line(endAbsolute = polar(angle = 160 / nTeeth + helixCalc, length = tipDiameter / 2))
|
||||
|> line(endAbsolute = polar(angle = 160deg / nTeeth + helixCalc, length = tipDiameter / 2))
|
||||
|> involuteCircular(
|
||||
startRadius = baseDiameter / 2,
|
||||
endRadius = tipDiameter / 2,
|
||||
@ -56,14 +56,14 @@ fn helicalGear(nTeeth, module, pressureAngle, helixAngle, gearHeight) {
|
||||
)
|
||||
|
||||
// Position the end line of the sketch at the start of the next tooth
|
||||
|> line(endAbsolute = polar(angle = 360 / nTeeth + helixCalc, length = baseDiameter / 2))
|
||||
|> line(endAbsolute = polar(angle = 360deg / nTeeth + helixCalc, length = baseDiameter / 2))
|
||||
|
||||
// Pattern the sketch about the center by the specified number of teeth, then close the sketch
|
||||
|> patternCircular2d(
|
||||
%,
|
||||
instances = nTeeth,
|
||||
center = [0, 0],
|
||||
arcDegrees = 360,
|
||||
arcDegrees = 360deg,
|
||||
rotateDuplicates = true,
|
||||
)
|
||||
|> close()
|
||||
@ -113,7 +113,7 @@ fn ringGear(nTeeth, module, pressureAngle, helixAngle, gearHeight) {
|
||||
angle = helixCalc,
|
||||
tag = $seg01,
|
||||
)
|
||||
|> line(endAbsolute = polar(angle = 200 / nTeeth + helixCalc, length = tipDiameter / 2))
|
||||
|> line(endAbsolute = polar(angle = 200deg / nTeeth + helixCalc, length = tipDiameter / 2))
|
||||
|> involuteCircular(
|
||||
startRadius = baseDiameter / 2,
|
||||
endRadius = tipDiameter / 2,
|
||||
@ -129,7 +129,7 @@ fn ringGear(nTeeth, module, pressureAngle, helixAngle, gearHeight) {
|
||||
%,
|
||||
instances = nTeeth,
|
||||
center = [0, 0],
|
||||
arcDegrees = 360,
|
||||
arcDegrees = 360deg,
|
||||
rotateDuplicates = true,
|
||||
)
|
||||
|> close()
|
||||
@ -164,8 +164,8 @@ fn ringGear(nTeeth, module, pressureAngle, helixAngle, gearHeight) {
|
||||
ringGear(
|
||||
nTeeth = 42,
|
||||
module = 1.5,
|
||||
pressureAngle = 14,
|
||||
helixAngle = -25,
|
||||
pressureAngle = 14deg,
|
||||
helixAngle = -25deg,
|
||||
gearHeight = 5,
|
||||
)
|
||||
|
||||
@ -173,8 +173,8 @@ ringGear(
|
||||
helicalGear(
|
||||
nTeeth = 12,
|
||||
module = 1.5,
|
||||
pressureAngle = 14,
|
||||
helixAngle = 25,
|
||||
pressureAngle = 14deg,
|
||||
helixAngle = 25deg,
|
||||
gearHeight = 5,
|
||||
)
|
||||
|
||||
@ -183,8 +183,8 @@ numPlanetGears = 3
|
||||
helicalGear(
|
||||
nTeeth = 12,
|
||||
module = 1.5,
|
||||
pressureAngle = 14,
|
||||
helixAngle = -25,
|
||||
pressureAngle = 14deg,
|
||||
helixAngle = -25deg,
|
||||
gearHeight = 5,
|
||||
)
|
||||
|> translate(y = (12 + 12) / 2 * 1.5 + 2.7)
|
||||
@ -192,6 +192,6 @@ helicalGear(
|
||||
instances = numPlanetGears,
|
||||
axis = [0, 0, 1],
|
||||
center = [0, 0, 0],
|
||||
arcDegrees = 360,
|
||||
arcDegrees = 360deg,
|
||||
rotateDuplicates = false,
|
||||
)
|
||||
|
@ -17,26 +17,26 @@ tankSketch = startSketchOn(YZ)
|
||||
|> startProfile(at = [portDiameter / 2, tankHeight])
|
||||
|> yLine(length = -0.6)
|
||||
|> xLine(length = 0.1)
|
||||
|> tangentialArc(angle = -110, radius = 0.1)
|
||||
|> tangentialArc(angle = 40, radius = 0.6)
|
||||
|> tangentialArc(angle = -110, radius = 0.1)
|
||||
|> tangentialArc(angle = 180, radius = 0.1)
|
||||
|> tangentialArc(angle = -90, radius = tankDiameter / 2 - lastSegX(%), tag = $seg01)
|
||||
|> tangentialArc(angle = -110deg, radius = 0.1)
|
||||
|> tangentialArc(angle = 40deg, radius = 0.6)
|
||||
|> tangentialArc(angle = -110deg, radius = 0.1)
|
||||
|> tangentialArc(angle = 180deg, radius = 0.1)
|
||||
|> tangentialArc(angle = -90deg, radius = tankDiameter / 2 - lastSegX(%), tag = $seg01)
|
||||
|> angledLine(angle = tangentToEnd(seg01), endAbsoluteY = 1.5, tag = $seg09)
|
||||
|> tangentialArc(angle = -90, radius = 2, tag = $seg02)
|
||||
|> tangentialArc(angle = -90deg, radius = 2, tag = $seg02)
|
||||
|> angledLine(angle = tangentToEnd(seg02), endAbsoluteX = 0.001, tag = $seg08)
|
||||
|> yLine(length = wallThickness)
|
||||
|> xLine(length = segLen(seg08))
|
||||
|> tangentialArc(angle = 90, radius = 2 - wallThickness)
|
||||
|> tangentialArc(angle = 90deg, radius = 2 - wallThickness)
|
||||
|> yLine(length = segLen(seg09))
|
||||
|> tangentialArc(angle = 90, radius = tankDiameter / 2 - wallThickness - 1.3)
|
||||
|> tangentialArc(angle = 90deg, radius = tankDiameter / 2 - wallThickness - 1.3)
|
||||
|> xLine(endAbsolute = profileStartX(%) - .1)
|
||||
|> yLine(endAbsolute = profileStartY(%))
|
||||
|> line(endAbsolute = [profileStartX(%), profileStartY(%)])
|
||||
|> close()
|
||||
|
||||
// Only revolving to 220deg so that the interior of the tank is visible. It should ultimately be closed at 360deg
|
||||
tankRevolve = revolve(tankSketch, angle = 220, axis = Y)
|
||||
tankRevolve = revolve(tankSketch, angle = 220deg, axis = Y)
|
||||
|
||||
// Model the brass valve on top of the tank port
|
||||
valveBody = startSketchOn(offsetPlane(XY, offset = tankHeight - 0.5))
|
||||
@ -61,10 +61,10 @@ valve = union([valveBody, valvePort])
|
||||
bracketOffsetProfile = startSketchOn(offsetPlane(XY, offset = tankHeight * 0.67))
|
||||
|> startProfile(at = [0, tankDiameter / 2 + wallThickness])
|
||||
|> xLine(length = -0.1)
|
||||
|> tangentialArc(angle = 35, radius = tankDiameter / 2 + wallThickness)
|
||||
|> tangentialArc(angle = -135, radius = 0.25 - wallThickness, tag = $seg06)
|
||||
|> tangentialArc(angle = 35deg, radius = tankDiameter / 2 + wallThickness)
|
||||
|> tangentialArc(angle = -135deg, radius = 0.25 - wallThickness, tag = $seg06)
|
||||
|> angledLine(angle = tangentToEnd(seg06), length = tankDiameter / 7)
|
||||
|> tangentialArc(angle = -80, radius = 0.25 - wallThickness, tag = $seg07)
|
||||
|> tangentialArc(angle = -80deg, radius = 0.25 - wallThickness, tag = $seg07)
|
||||
|> angledLine(angle = tangentToEnd(seg07), endAbsoluteX = 0)
|
||||
|> mirror2d(axis = Y)
|
||||
|> close()
|
||||
@ -73,10 +73,10 @@ bracketOffsetProfile = startSketchOn(offsetPlane(XY, offset = tankHeight * 0.67)
|
||||
bracketProfile = startSketchOn(offsetPlane(XY, offset = tankHeight * 0.67))
|
||||
|> startProfile(at = [0, tankDiameter / 2])
|
||||
|> xLine(length = -0.1)
|
||||
|> tangentialArc(angle = 35, radius = tankDiameter / 2)
|
||||
|> tangentialArc(angle = -135, radius = 0.25, tag = $seg04)
|
||||
|> tangentialArc(angle = 35deg, radius = tankDiameter / 2)
|
||||
|> tangentialArc(angle = -135deg, radius = 0.25, tag = $seg04)
|
||||
|> angledLine(angle = tangentToEnd(seg04), length = tankDiameter / 7)
|
||||
|> tangentialArc(angle = -80, radius = 0.25, tag = $seg05)
|
||||
|> tangentialArc(angle = -80deg, radius = 0.25, tag = $seg05)
|
||||
|> angledLine(angle = tangentToEnd(seg05), endAbsoluteX = 0)
|
||||
|> mirror2d(axis = Y)
|
||||
|> close()
|
||||
|
@ -27,7 +27,7 @@ fn herringboneGear(nTeeth, module, pressureAngle, helixAngle, gearHeight) {
|
||||
angle = helixCalc,
|
||||
tag = $seg01,
|
||||
)
|
||||
|> line(endAbsolute = polar(angle = 160 / nTeeth + helixCalc, length = tipDiameter / 2))
|
||||
|> line(endAbsolute = polar(angle = 160deg / nTeeth + helixCalc, length = tipDiameter / 2))
|
||||
|> involuteCircular(
|
||||
startRadius = baseDiameter / 2,
|
||||
endRadius = tipDiameter / 2,
|
||||
@ -36,14 +36,14 @@ fn herringboneGear(nTeeth, module, pressureAngle, helixAngle, gearHeight) {
|
||||
)
|
||||
|
||||
// Position the end line of the sketch at the start of the next tooth
|
||||
|> line(endAbsolute = polar(angle = 360 / nTeeth + helixCalc, length = baseDiameter / 2))
|
||||
|> line(endAbsolute = polar(angle = 360deg / nTeeth + helixCalc, length = baseDiameter / 2))
|
||||
|
||||
// Pattern the sketch about the center by the specified number of teeth, then close the sketch
|
||||
|> patternCircular2d(
|
||||
%,
|
||||
instances = nTeeth,
|
||||
center = [0, 0],
|
||||
arcDegrees = 360,
|
||||
arcDegrees = 360deg,
|
||||
rotateDuplicates = true,
|
||||
)
|
||||
|> close()
|
||||
@ -78,7 +78,7 @@ fn herringboneGear(nTeeth, module, pressureAngle, helixAngle, gearHeight) {
|
||||
herringboneGear(
|
||||
nTeeth = 25,
|
||||
module = 1,
|
||||
pressureAngle = 14,
|
||||
helixAngle = 40,
|
||||
pressureAngle = 14deg,
|
||||
helixAngle = 40deg,
|
||||
gearHeight = 8,
|
||||
)
|
||||
|
@ -27,7 +27,7 @@ fn herringboneGear(nTeeth, module, pressureAngle, helixAngle, gearHeight) {
|
||||
angle = helixCalc,
|
||||
tag = $seg01,
|
||||
)
|
||||
|> line(endAbsolute = polar(angle = 160 / nTeeth + helixCalc, length = tipDiameter / 2))
|
||||
|> line(endAbsolute = polar(angle = 160deg / nTeeth + helixCalc, length = tipDiameter / 2))
|
||||
|> involuteCircular(
|
||||
startRadius = baseDiameter / 2,
|
||||
endRadius = tipDiameter / 2,
|
||||
@ -36,14 +36,14 @@ fn herringboneGear(nTeeth, module, pressureAngle, helixAngle, gearHeight) {
|
||||
)
|
||||
|
||||
// Position the end line of the sketch at the start of the next tooth
|
||||
|> line(endAbsolute = polar(angle = 360 / nTeeth + helixCalc, length = baseDiameter / 2))
|
||||
|> line(endAbsolute = polar(angle = 360deg / nTeeth + helixCalc, length = baseDiameter / 2))
|
||||
|
||||
// Pattern the sketch about the center by the specified number of teeth, then close the sketch
|
||||
|> patternCircular2d(
|
||||
%,
|
||||
instances = nTeeth,
|
||||
center = [0, 0],
|
||||
arcDegrees = 360,
|
||||
arcDegrees = 360deg,
|
||||
rotateDuplicates = true,
|
||||
)
|
||||
|> close()
|
||||
@ -98,7 +98,7 @@ fn ringGear(nTeeth, module, pressureAngle, helixAngle, gearHeight) {
|
||||
angle = helixCalc,
|
||||
tag = $seg01,
|
||||
)
|
||||
|> line(endAbsolute = polar(angle = 220 / nTeeth + helixCalc, length = tipDiameter / 2))
|
||||
|> line(endAbsolute = polar(angle = 220deg / nTeeth + helixCalc, length = tipDiameter / 2))
|
||||
|> involuteCircular(
|
||||
startRadius = baseDiameter / 2,
|
||||
endRadius = tipDiameter / 2,
|
||||
@ -107,14 +107,14 @@ fn ringGear(nTeeth, module, pressureAngle, helixAngle, gearHeight) {
|
||||
)
|
||||
|
||||
// Position the end line of the sketch at the start of the next tooth
|
||||
|> line(endAbsolute = polar(angle = 360 / nTeeth + helixCalc, length = baseDiameter / 2))
|
||||
|> line(endAbsolute = polar(angle = 360deg / nTeeth + helixCalc, length = baseDiameter / 2))
|
||||
|
||||
// Pattern the sketch about the center by the specified number of teeth, then close the sketch
|
||||
|> patternCircular2d(
|
||||
%,
|
||||
instances = nTeeth,
|
||||
center = [0, 0],
|
||||
arcDegrees = 360,
|
||||
arcDegrees = 360deg,
|
||||
rotateDuplicates = true,
|
||||
)
|
||||
|> close()
|
||||
@ -153,8 +153,8 @@ fn ringGear(nTeeth, module, pressureAngle, helixAngle, gearHeight) {
|
||||
ringGear(
|
||||
nTeeth = 58,
|
||||
module = 1.5,
|
||||
pressureAngle = 14,
|
||||
helixAngle = -35,
|
||||
pressureAngle = 14deg,
|
||||
helixAngle = -35deg,
|
||||
gearHeight = 8,
|
||||
)
|
||||
|
||||
@ -162,8 +162,8 @@ ringGear(
|
||||
herringboneGear(
|
||||
nTeeth = 18,
|
||||
module = 1.5,
|
||||
pressureAngle = 14,
|
||||
helixAngle = 35,
|
||||
pressureAngle = 14deg,
|
||||
helixAngle = 35deg,
|
||||
gearHeight = 8,
|
||||
)
|
||||
|
||||
@ -172,8 +172,8 @@ numPlanetGears = 4
|
||||
herringboneGear(
|
||||
nTeeth = 18,
|
||||
module = 1.5,
|
||||
pressureAngle = 14,
|
||||
helixAngle = -35,
|
||||
pressureAngle = 14deg,
|
||||
helixAngle = -35deg,
|
||||
gearHeight = 8,
|
||||
)
|
||||
|> translate(y = 18 * 1.5 + 1.95)
|
||||
@ -181,6 +181,6 @@ herringboneGear(
|
||||
instances = numPlanetGears,
|
||||
axis = [0, 0, 1],
|
||||
center = [0, 0, 0],
|
||||
arcDegrees = 360,
|
||||
arcDegrees = 360deg,
|
||||
rotateDuplicates = false,
|
||||
)
|
||||
|
@ -18,7 +18,7 @@ iBeam = startSketchOn(-XZ)
|
||||
|> xLine(length = flangeWidth / 2)
|
||||
|> yLine(length = -flangeThickness)
|
||||
|> xLine(endAbsolute = webThickness / 2 + rootRadius)
|
||||
|> tangentialArc(radius = rootRadius, angle = 90)
|
||||
|> tangentialArc(radius = rootRadius, angle = 90deg)
|
||||
|> yLine(endAbsolute = 0)
|
||||
|> mirror2d(axis = X)
|
||||
|> mirror2d(axis = Y)
|
||||
|
@ -22,7 +22,7 @@ row6 = row5 + keyHeight + spacing
|
||||
sketch001 = startSketchOn(YZ)
|
||||
|> startProfile(at = [0, 0])
|
||||
|> line(end = [-0.14, 0.68], tag = $seg01)
|
||||
|> angledLine(angle = 7, length = row6 + 3 * spacing + keyHeight, tag = $seg02)
|
||||
|> angledLine(angle = 7deg, length = row6 + 3 * spacing + keyHeight, tag = $seg02)
|
||||
|> line(endAbsolute = [5.13, 0], tag = $seg03)
|
||||
|> line(endAbsolute = [profileStartX(%), profileStartY(%)], tag = $seg04)
|
||||
|> close()
|
||||
@ -66,13 +66,13 @@ plane001 = {
|
||||
fn keyFn(originStart, keyWidth, keyHeight, repeats, color) {
|
||||
sketch002 = startSketchOn(plane001)
|
||||
profile002 = startProfile(sketch002, at = [originStart[0], originStart[1]])
|
||||
|> arc(angleStart = 180, angleEnd = 270, radius = 0.1)
|
||||
|> arc(angleStart = 180deg, angleEnd = 270deg, radius = 0.1)
|
||||
|> angledLine(angle = 0, length = keyWidth - .2, tag = $rectangleSegmentA001)
|
||||
|> tangentialArc(radius = 0.1, angle = 90)
|
||||
|> angledLine(angle = segAng(rectangleSegmentA001) + 90, length = keyHeight - .2, tag = $rectangleSegmentB001)
|
||||
|> tangentialArc(radius = 0.1, angle = 90)
|
||||
|> tangentialArc(radius = 0.1, angle = 90deg)
|
||||
|> angledLine(angle = segAng(rectangleSegmentA001) + 90deg, length = keyHeight - .2, tag = $rectangleSegmentB001)
|
||||
|> tangentialArc(radius = 0.1, angle = 90deg)
|
||||
|> angledLine(angle = segAng(rectangleSegmentA001), length = -segLen(rectangleSegmentA001), tag = $rectangleSegmentC001)
|
||||
|> tangentialArc(radius = 0.1, angle = 90)
|
||||
|> tangentialArc(radius = 0.1, angle = 90deg)
|
||||
|> line(endAbsolute = [profileStartX(%), profileStartY(%)], tag = $rectangleSegmentD001)
|
||||
|> close()
|
||||
|> extrude(length = keyDepth)
|
||||
@ -263,15 +263,15 @@ fn z(origin, scale, depth) {
|
||||
])
|
||||
|> yLine(length = -0.15 * scale)
|
||||
|> xLine(length = 0.15 * scale)
|
||||
|> angledLine(angle = 47.15, endAbsoluteX = 0.3 * scale + origin[0], tag = $seg1)
|
||||
|> angledLine(angle = 47.15deg, endAbsoluteX = 0.3 * scale + origin[0], tag = $seg1)
|
||||
|> yLine(endAbsolute = 0 + origin[1], tag = $seg3)
|
||||
|> xLine(length = 0.63 * scale)
|
||||
|> yLine(length = 0.225 * scale)
|
||||
|> xLine(length = -0.57 * scale)
|
||||
|> angledLine(angle = 47.15, endAbsoluteX = 0.93 * scale + origin[0])
|
||||
|> angledLine(angle = 47.15deg, endAbsoluteX = 0.93 * scale + origin[0])
|
||||
|> yLine(length = 0.15 * scale)
|
||||
|> xLine(length = -0.15 * scale)
|
||||
|> angledLine(angle = 47.15, length = -segLen(seg1), tag = $seg2)
|
||||
|> angledLine(angle = 47.15deg, length = -segLen(seg1), tag = $seg2)
|
||||
|> yLine(length = segLen(seg3))
|
||||
|> xLine(endAbsolute = 0 + origin[0])
|
||||
|> yLine(length = -0.225 * scale)
|
||||
@ -289,9 +289,9 @@ fn o(origin, scale, depth) {
|
||||
.788 * scale + origin[0],
|
||||
.921 * scale + origin[1]
|
||||
])
|
||||
|> arc(angleStart = 47.15 + 6, angleEnd = 47.15 - 6 + 180, radius = .525 * scale)
|
||||
|> angledLine(angle = 47.15, length = .24 * scale)
|
||||
|> arc(angleStart = 47.15 - 11 + 180, angleEnd = 47.15 + 11, radius = .288 * scale)
|
||||
|> arc(angleStart = 47.15deg + 6deg, angleEnd = 47.15deg - 6deg + 180deg, radius = .525 * scale)
|
||||
|> angledLine(angle = 47.15deg, length = .24 * scale)
|
||||
|> arc(angleStart = 47.15deg - 11deg + 180deg, angleEnd = 47.15deg + 11deg, radius = .288 * scale)
|
||||
|> close()
|
||||
|> extrude(length = -depth)
|
||||
|> appearance(color = baseColor)
|
||||
@ -301,9 +301,9 @@ fn o(origin, scale, depth) {
|
||||
.16 * scale + origin[0],
|
||||
.079 * scale + origin[1]
|
||||
])
|
||||
|> arc(angleStart = 47.15 + 6 - 180, angleEnd = 47.15 - 6, radius = .525 * scale)
|
||||
|> angledLine(angle = 47.15, length = -.24 * scale)
|
||||
|> arc(angleStart = 47.15 - 11, angleEnd = 47.15 + 11 - 180, radius = .288 * scale)
|
||||
|> arc(angleStart = 47.15deg + 6deg - 180deg, angleEnd = 47.15deg - 6deg, radius = .525 * scale)
|
||||
|> angledLine(angle = 47.15deg, length = -.24 * scale)
|
||||
|> arc(angleStart = 47.15deg - 11deg, angleEnd = 47.15deg + 11deg - 180deg, radius = .288 * scale)
|
||||
|> close()
|
||||
|> extrude(length = -depth)
|
||||
|> appearance(color = baseColor)
|
||||
|
@ -17,21 +17,21 @@ frontLength = 7
|
||||
sketch001 = startSketchOn(-YZ)
|
||||
|> startProfile(at = [wallsWidth / 2, 0])
|
||||
|> xLine(length = wallThickness / 2)
|
||||
|> angledLine(angle = 60, endAbsoluteX = wallsWidth, tag = $seg01)
|
||||
|> angledLine(angle = 60deg, endAbsoluteX = wallsWidth, tag = $seg01)
|
||||
|> yLine(endAbsolute = height)
|
||||
|> xLine(length = -wallThickness)
|
||||
|> yLine(endAbsolute = segEndY(seg01))
|
||||
|> angledLine(angle = 60, endAbsoluteX = wallsWidth / 2 + wallThickness / 2)
|
||||
|> angledLine(angle = 60deg, endAbsoluteX = wallsWidth / 2 + wallThickness / 2)
|
||||
|> xLine(length = -wallThickness)
|
||||
|> angledLine(angle = 180 - 60, endAbsoluteX = wallThickness)
|
||||
|> angledLine(angle = 180deg - 60deg, endAbsoluteX = wallThickness)
|
||||
|> yLine(endAbsolute = height)
|
||||
|> xLine(endAbsolute = 0)
|
||||
|> yLine(endAbsolute = segEndY(seg01))
|
||||
|> angledLine(angle = 180 - 60, endAbsoluteY = 0)
|
||||
|> angledLine(angle = 180deg - 60deg, endAbsoluteY = 0)
|
||||
|> close()
|
||||
part001 = revolve(
|
||||
sketch001,
|
||||
angle = 90,
|
||||
angle = 90deg,
|
||||
axis = {
|
||||
direction = [1.0, 0.0],
|
||||
origin = [0.0, height + .0001]
|
||||
@ -41,17 +41,17 @@ part001 = revolve(
|
||||
sketch002 = startSketchOn(-YZ)
|
||||
|> startProfile(at = [wallsWidth / 2, 0])
|
||||
|> xLine(length = wallThickness / 2)
|
||||
|> angledLine(angle = 60, endAbsoluteX = wallsWidth, tag = $seg02)
|
||||
|> angledLine(angle = 60deg, endAbsoluteX = wallsWidth, tag = $seg02)
|
||||
|> yLine(endAbsolute = height)
|
||||
|> xLine(length = -wallThickness)
|
||||
|> yLine(endAbsolute = segEndY(seg01))
|
||||
|> angledLine(angle = 60, endAbsoluteX = wallsWidth / 2 + wallThickness / 2)
|
||||
|> angledLine(angle = 60deg, endAbsoluteX = wallsWidth / 2 + wallThickness / 2)
|
||||
|> xLine(length = -wallThickness)
|
||||
|> angledLine(angle = 180 - 60, endAbsoluteX = wallThickness)
|
||||
|> angledLine(angle = 180deg - 60deg, endAbsoluteX = wallThickness)
|
||||
|> yLine(endAbsolute = height)
|
||||
|> xLine(endAbsolute = 0)
|
||||
|> yLine(endAbsolute = segEndY(seg02))
|
||||
|> angledLine(angle = 180 - 60, endAbsoluteY = 0)
|
||||
|> angledLine(angle = 180deg - 60deg, endAbsoluteY = 0)
|
||||
|> close()
|
||||
|> extrude(length = backLength - height)
|
||||
|
||||
@ -66,8 +66,8 @@ customPlane = {
|
||||
}
|
||||
sketch003 = startSketchOn(customPlane)
|
||||
|> startProfile(at = [0, 0])
|
||||
|> tangentialArc(angle = 60, radius = height)
|
||||
|> angledLine(angle = 60, endAbsoluteY = 0)
|
||||
|> tangentialArc(angle = 60deg, radius = height)
|
||||
|> angledLine(angle = 60deg, endAbsoluteY = 0)
|
||||
|> close()
|
||||
|> extrude(length = wallThickness)
|
||||
|
||||
@ -77,9 +77,9 @@ sketch004 = startSketchOn(sketch002, face = END)
|
||||
|> yLine(endAbsolute = height)
|
||||
|> xLine(endAbsolute = wallThickness)
|
||||
|> yLine(endAbsolute = segEndY(seg01))
|
||||
|> angledLine(angle = 180 - 60, endAbsoluteX = wallsWidth / 2 - (wallThickness / 2))
|
||||
|> angledLine(angle = 180deg - 60deg, endAbsoluteX = wallsWidth / 2 - (wallThickness / 2))
|
||||
|> xLine(length = wallThickness)
|
||||
|> angledLine(angle = 60, endAbsoluteY = segEndY(seg01))
|
||||
|> angledLine(angle = 60deg, endAbsoluteY = segEndY(seg01))
|
||||
|> yLine(endAbsolute = height)
|
||||
|> xLine(length = wallThickness)
|
||||
|> tangentialArc(endAbsolute = [
|
||||
|
@ -10,10 +10,10 @@ r1 = 3
|
||||
stemLoftProfile1 = startSketchOn(XY)
|
||||
|> startProfile(at = [-3, -l1 / 2])
|
||||
|> yLine(length = l1, tag = $seg01)
|
||||
|> tangentialArc(angle = -120, radius = r1)
|
||||
|> angledLine(angle = -30, length = segLen(seg01))
|
||||
|> tangentialArc(angle = -120, radius = r1)
|
||||
|> angledLine(angle = 30, length = -segLen(seg01))
|
||||
|> tangentialArc(angle = -120deg, radius = r1)
|
||||
|> angledLine(angle = -30deg, length = segLen(seg01))
|
||||
|> tangentialArc(angle = -120deg, radius = r1)
|
||||
|> angledLine(angle = 30deg, length = -segLen(seg01))
|
||||
|> tangentialArc(endAbsolute = [profileStartX(%), profileStartY(%)])
|
||||
|> close()
|
||||
|
||||
@ -23,10 +23,10 @@ r2 = 3
|
||||
stemLoftProfile2 = startSketchOn(offsetPlane(XY, offset = 75))
|
||||
|> startProfile(at = [-8, -l2 / 2])
|
||||
|> yLine(length = l2, tag = $seg02)
|
||||
|> tangentialArc(angle = -120, radius = r2)
|
||||
|> angledLine(angle = -30, length = segLen(seg02))
|
||||
|> tangentialArc(angle = -120, radius = r2)
|
||||
|> angledLine(angle = 30, length = -segLen(seg02))
|
||||
|> tangentialArc(angle = -120deg, radius = r2)
|
||||
|> angledLine(angle = -30deg, length = segLen(seg02))
|
||||
|> tangentialArc(angle = -120deg, radius = r2)
|
||||
|> angledLine(angle = 30deg, length = -segLen(seg02))
|
||||
|> tangentialArc(endAbsolute = [profileStartX(%), profileStartY(%)])
|
||||
|> close()
|
||||
|
||||
@ -38,10 +38,10 @@ r3 = 4
|
||||
stemLoftProfile3 = startSketchOn(XY)
|
||||
|> startProfile(at = [-15.5, -l3 / 2])
|
||||
|> yLine(length = l3, tag = $seg03)
|
||||
|> tangentialArc(angle = -120, radius = r3)
|
||||
|> angledLine(angle = -30, length = segLen(seg03))
|
||||
|> tangentialArc(angle = -120, radius = r3)
|
||||
|> angledLine(angle = 30, length = -segLen(seg03))
|
||||
|> tangentialArc(angle = -120deg, radius = r3)
|
||||
|> angledLine(angle = -30deg, length = segLen(seg03))
|
||||
|> tangentialArc(angle = -120deg, radius = r3)
|
||||
|> angledLine(angle = 30deg, length = -segLen(seg03))
|
||||
|> tangentialArc(endAbsolute = [profileStartX(%), profileStartY(%)])
|
||||
|> close()
|
||||
|> translate(z = p3Z)
|
||||
@ -54,10 +54,10 @@ r4 = 5
|
||||
stemLoftProfile4 = startSketchOn(XY)
|
||||
|> startProfile(at = [-23, -l4 / 2])
|
||||
|> yLine(length = l4, tag = $seg04)
|
||||
|> tangentialArc(angle = -120, radius = r4)
|
||||
|> angledLine(angle = -30, length = segLen(seg04))
|
||||
|> tangentialArc(angle = -120, radius = r4)
|
||||
|> angledLine(angle = 30, length = -segLen(seg04))
|
||||
|> tangentialArc(angle = -120deg, radius = r4)
|
||||
|> angledLine(angle = -30deg, length = segLen(seg04))
|
||||
|> tangentialArc(angle = -120deg, radius = r4)
|
||||
|> angledLine(angle = 30deg, length = -segLen(seg04))
|
||||
|> tangentialArc(endAbsolute = [profileStartX(%), profileStartY(%)])
|
||||
|> close()
|
||||
|> translate(z = p4Z)
|
||||
@ -70,10 +70,10 @@ r5 = 1.6
|
||||
stemLoftProfile5 = startSketchOn(XY)
|
||||
|> startProfile(at = [-19.5, -l5 / 2])
|
||||
|> yLine(length = l5, tag = $seg05)
|
||||
|> tangentialArc(angle = -120, radius = r5)
|
||||
|> angledLine(angle = -30, length = segLen(seg05))
|
||||
|> tangentialArc(angle = -120, radius = r5)
|
||||
|> angledLine(angle = 30, length = -segLen(seg05))
|
||||
|> tangentialArc(angle = -120deg, radius = r5)
|
||||
|> angledLine(angle = -30deg, length = segLen(seg05))
|
||||
|> tangentialArc(angle = -120deg, radius = r5)
|
||||
|> angledLine(angle = 30deg, length = -segLen(seg05))
|
||||
|> tangentialArc(endAbsolute = [profileStartX(%), profileStartY(%)])
|
||||
|> close()
|
||||
|> translate(z = p5Z)
|
||||
@ -86,10 +86,10 @@ r6 = 3
|
||||
stemLoftProfile6 = startSketchOn(XY)
|
||||
|> startProfile(at = [-23.4, -l6 / 2])
|
||||
|> yLine(length = l6, tag = $seg06)
|
||||
|> tangentialArc(angle = -120, radius = r6)
|
||||
|> angledLine(angle = -30, length = segLen(seg06))
|
||||
|> tangentialArc(angle = -120, radius = r6)
|
||||
|> angledLine(angle = 30, length = -segLen(seg06))
|
||||
|> tangentialArc(angle = -120deg, radius = r6)
|
||||
|> angledLine(angle = -30deg, length = segLen(seg06))
|
||||
|> tangentialArc(angle = -120deg, radius = r6)
|
||||
|> angledLine(angle = 30deg, length = -segLen(seg06))
|
||||
|> tangentialArc(endAbsolute = [profileStartX(%), profileStartY(%)])
|
||||
|> close()
|
||||
|> translate(z = p6Z)
|
||||
@ -114,13 +114,13 @@ stemTab = stemLoftProfile6
|
||||
femoralHead = startSketchOn(XZ)
|
||||
|> startProfile(at = [4, 0])
|
||||
|> xLine(length = 1.1)
|
||||
|> tangentialArc(angle = 90, radius = 3)
|
||||
|> tangentialArc(angle = 90, radius = 8)
|
||||
|> tangentialArc(angle = 90deg, radius = 3)
|
||||
|> tangentialArc(angle = 90deg, radius = 8)
|
||||
|> yLine(length = -1)
|
||||
|> tangentialArc(angle = 90, radius = .1)
|
||||
|> tangentialArc(angle = 90deg, radius = .1)
|
||||
|> tangentialArc(endAbsolute = [profileStartX(%), profileStartY(%)])
|
||||
|> close()
|
||||
|> revolve(angle = 360, axis = Y)
|
||||
|> revolve(angle = 360deg, axis = Y)
|
||||
|> translate(x = -16.1, z = 133)
|
||||
|> rotate(pitch = -36.5)
|
||||
|> appearance(color = "#d64398")
|
||||
@ -135,7 +135,7 @@ polyethyleneInsert = startSketchOn(XZ)
|
||||
|> xLine(length = 0.58)
|
||||
|> tangentialArc(endAbsolute = [profileStartX(%), profileStartY(%)])
|
||||
|> close()
|
||||
|> revolve(angle = 360, axis = Y)
|
||||
|> revolve(angle = 360deg, axis = Y)
|
||||
|> translate(x = -16.1, z = 133)
|
||||
|> rotate(pitch = -36.5)
|
||||
|> appearance(color = "#3cadd3")
|
||||
@ -150,7 +150,7 @@ acetabularShell = startSketchOn(XZ)
|
||||
|> xLine(length = 0.1)
|
||||
|> tangentialArc(endAbsolute = [profileStartX(%), profileStartY(%)])
|
||||
|> close()
|
||||
|> revolve(angle = 360, axis = Y)
|
||||
|> revolve(angle = 360deg, axis = Y)
|
||||
|> translate(x = -16.1, z = 133)
|
||||
|> rotate(pitch = -36.5)
|
||||
|> appearance(color = "#a55e2c")
|
||||
|
@ -16,7 +16,7 @@ componentBoltPatternY = 3
|
||||
|
||||
// Define bracket parameters such as sheet metal thickness, bend radius, flange length, etc.
|
||||
hatHeight = 2.5
|
||||
bendAngle = 75
|
||||
bendAngle = 75deg
|
||||
thickness = 0.125
|
||||
interiorBendRadius = 0.125
|
||||
|
||||
@ -49,12 +49,12 @@ bracketProfile = startSketchOn(XZ)
|
||||
|> yLine(length = thickness, tag = $seg03)
|
||||
|> xLine(length = -flangeLength, tag = $seg04)
|
||||
|> tangentialArc(radius = interiorBendRadius, angle = -bendAngle)
|
||||
|> angledLine(angle = 180 - bendAngle, length = segLen(seg01))
|
||||
|> angledLine(angle = 180deg - bendAngle, length = segLen(seg01))
|
||||
|> tangentialArc(radius = exteriorBendRadius, angle = bendAngle)
|
||||
|> xLine(endAbsolute = 0, tag = $seg05)
|
||||
|> xLine(length = -segLen(seg05))
|
||||
|> tangentialArc(radius = exteriorBendRadius, angle = bendAngle)
|
||||
|> angledLine(angle = bendAngle - 180, length = segLen(seg01))
|
||||
|> angledLine(angle = bendAngle - 180deg, length = segLen(seg01))
|
||||
|> tangentialArc(radius = interiorBendRadius, angle = -bendAngle)
|
||||
|> xLine(length = -flangeLength, tag = $seg06)
|
||||
|> line(endAbsolute = [profileStartX(%), profileStartY(%)], tag = $seg07)
|
||||
|
@ -10,8 +10,8 @@ hookRadius = 12
|
||||
shankLength = 5
|
||||
threadedEndLength = 30
|
||||
nutDistance = 20
|
||||
hookStartAngle = 290
|
||||
hookEndAngle = 150
|
||||
hookStartAngle = 290deg
|
||||
hookEndAngle = 150deg
|
||||
|
||||
approximatePitch = boltDiameter * 0.15
|
||||
threadDepth = 0.6134 * approximatePitch
|
||||
@ -19,7 +19,7 @@ innerRadius = boltDiameter / 2 - threadDepth
|
||||
boltNumberOfRevolutions = threadedEndLength / approximatePitch
|
||||
|
||||
// Helper values for computing geometry transitions between straight shaft and hook arc
|
||||
hypotenuse = hookRadius / cos(hookStartAngle - 270)
|
||||
hypotenuse = hookRadius / cos(hookStartAngle - 270deg)
|
||||
side = sqrt(pow(hypotenuse, exp = 2) - pow(hookRadius, exp = 2))
|
||||
shankOffset = hypotenuse + side
|
||||
|
||||
@ -86,4 +86,4 @@ boltThreadSectionShapeForRevolve = startProfile(
|
||||
|> close()
|
||||
|
||||
// Create a revolved solid representing the thread geometry by repeating and revolving the profile around the shaft
|
||||
boltThreadRevolve = revolve(boltThreadSectionShapeForRevolve, angle = 360, axis = Y)
|
||||
boltThreadRevolve = revolve(boltThreadSectionShapeForRevolve, angle = 360deg, axis = Y)
|
||||
|
@ -29,8 +29,8 @@ fn spurGear(nTeeth, module, pressureAngle, gearHeight) {
|
||||
|> xLine(length = keywayDepth)
|
||||
|> yLine(length = -keywayWidth)
|
||||
|> xLine(length = -keywayDepth)
|
||||
|> arc(angleStart = -1 * startAngle + 360, angleEnd = 180, radius = holeRadius)
|
||||
|> arc(angleStart = 180, angleEnd = startAngle, radius = holeRadius)
|
||||
|> arc(angleStart = -1 * startAngle + 360deg, angleEnd = 180deg, radius = holeRadius)
|
||||
|> arc(angleStart = 180deg, angleEnd = startAngle, radius = holeRadius)
|
||||
|> close()
|
||||
|
||||
// Using the gear parameters, sketch an involute tooth spanning from the base diameter to the tip diameter
|
||||
@ -42,21 +42,21 @@ fn spurGear(nTeeth, module, pressureAngle, gearHeight) {
|
||||
angle = 0,
|
||||
tag = $seg01,
|
||||
)
|
||||
|> line(endAbsolute = polar(angle = 160 / nTeeth, length = tipDiameter / 2))
|
||||
|> line(endAbsolute = polar(angle = 160deg / nTeeth, length = tipDiameter / 2))
|
||||
|> involuteCircular(
|
||||
startRadius = baseDiameter / 2,
|
||||
endRadius = tipDiameter / 2,
|
||||
angle = -atan(segEndY(seg01) / segEndX(seg01)) - (180 / nTeeth),
|
||||
angle = -atan(segEndY(seg01) / segEndX(seg01)) - (180deg / nTeeth),
|
||||
reverse = true,
|
||||
)
|
||||
// Position the end line of the sketch at the start of the next tooth
|
||||
|> line(endAbsolute = polar(angle = 360 / nTeeth, length = baseDiameter / 2))
|
||||
|> line(endAbsolute = polar(angle = 360deg / nTeeth, length = baseDiameter / 2))
|
||||
// Pattern the sketch about the center by the specified number of teeth, then close the sketch
|
||||
|> patternCircular2d(
|
||||
%,
|
||||
instances = nTeeth,
|
||||
center = [0, 0],
|
||||
arcDegrees = 360,
|
||||
arcDegrees = 360deg,
|
||||
rotateDuplicates = true,
|
||||
)
|
||||
|> close()
|
||||
@ -71,6 +71,6 @@ fn spurGear(nTeeth, module, pressureAngle, gearHeight) {
|
||||
spurGear(
|
||||
nTeeth = 21,
|
||||
module = 1.5,
|
||||
pressureAngle = 14,
|
||||
pressureAngle = 14deg,
|
||||
gearHeight = 6,
|
||||
)
|
||||
|
@ -22,21 +22,21 @@ fn spurGear(nTeeth, module, pressureAngle, gearHeight) {
|
||||
angle = 0,
|
||||
tag = $seg01,
|
||||
)
|
||||
|> line(endAbsolute = polar(angle = 160 / nTeeth, length = tipDiameter / 2))
|
||||
|> line(endAbsolute = polar(angle = 160deg / nTeeth, length = tipDiameter / 2))
|
||||
|> involuteCircular(
|
||||
startRadius = baseDiameter / 2,
|
||||
endRadius = tipDiameter / 2,
|
||||
angle = -atan(segEndY(seg01) / segEndX(seg01)) - (180 / nTeeth),
|
||||
angle = -atan(segEndY(seg01) / segEndX(seg01)) - (180deg / nTeeth),
|
||||
reverse = true,
|
||||
)
|
||||
// Position the end line of the sketch at the start of the next tooth
|
||||
|> line(endAbsolute = polar(angle = 360 / nTeeth, length = baseDiameter / 2))
|
||||
|> line(endAbsolute = polar(angle = 360deg / nTeeth, length = baseDiameter / 2))
|
||||
// Pattern the sketch about the center by the specified number of teeth, then close the sketch
|
||||
|> patternCircular2d(
|
||||
%,
|
||||
instances = nTeeth,
|
||||
center = [0, 0],
|
||||
arcDegrees = 360,
|
||||
arcDegrees = 360deg,
|
||||
rotateDuplicates = true,
|
||||
)
|
||||
|> close()
|
||||
@ -52,7 +52,7 @@ fn spurGear(nTeeth, module, pressureAngle, gearHeight) {
|
||||
spurGear(
|
||||
nTeeth = 17,
|
||||
module = 1.5,
|
||||
pressureAngle = 14,
|
||||
pressureAngle = 14deg,
|
||||
gearHeight = 9,
|
||||
)
|
||||
|
||||
@ -60,7 +60,7 @@ spurGear(
|
||||
spurGear(
|
||||
nTeeth = 51,
|
||||
module = 1.5,
|
||||
pressureAngle = 14,
|
||||
pressureAngle = 14deg,
|
||||
gearHeight = 7,
|
||||
)
|
||||
// Translate the larger gear by the combined pitch radius of both gears, plus a small gap
|
||||
|
@ -19,10 +19,10 @@ bracket = startSketchOn(YZ)
|
||||
|> xLine(length = handleLength, tag = $seg02)
|
||||
|> yLine(length = stockThickness, tag = $seg06)
|
||||
|> xLine(length = -segLen(seg02), tag = $seg04)
|
||||
|> tangentialArc(angle = -60, radius = bendRadius, tag = $seg01)
|
||||
|> tangentialArc(angle = -60deg, radius = bendRadius, tag = $seg01)
|
||||
|> angledLine(angle = tangentToEnd(seg01), length = handleLength / 3, tag = $seg03)
|
||||
|> angledLine(angle = tangentToEnd(seg01) + 90, length = stockThickness, tag = $seg05)
|
||||
|> angledLine(angle = segAng(seg03) + 180, length = segLen(seg03), tag = $seg07)
|
||||
|> angledLine(angle = tangentToEnd(seg01) + 90deg, length = stockThickness, tag = $seg05)
|
||||
|> angledLine(angle = segAng(seg03) + 180deg, length = segLen(seg03), tag = $seg07)
|
||||
|> tangentialArc(endAbsolute = [profileStartX(%), profileStartY(%)])
|
||||
|> close()
|
||||
|> extrude(
|
||||
|
@ -15,17 +15,17 @@ fn railTslot(railHeight, railLength) {
|
||||
railProfile = startSketchOn(XZ)
|
||||
|> startProfile(at = [0.5, (1 - 0.356) / 2])
|
||||
|> xLine(length = -0.08)
|
||||
|> tangentialArc(angle = 45, radius = .09)
|
||||
|> angledLine(angle = 45, endAbsoluteY = 0.113)
|
||||
|> tangentialArc(angle = 135, radius = interiorRadius)
|
||||
|> tangentialArc(angle = 45deg, radius = .09)
|
||||
|> angledLine(angle = 45deg, endAbsoluteY = 0.113)
|
||||
|> tangentialArc(angle = 135deg, radius = interiorRadius)
|
||||
|> xLine(endAbsolute = .5 - (.320 / 2) - interiorRadius)
|
||||
|> tangentialArc(angle = -90, radius = interiorRadius)
|
||||
|> tangentialArc(angle = -90deg, radius = interiorRadius)
|
||||
|> yLine(endAbsolute = interiorRadius)
|
||||
|> tangentialArc(angle = -90, radius = interiorRadius)
|
||||
|> tangentialArc(angle = -90deg, radius = interiorRadius)
|
||||
|> xLine(length = -0.03)
|
||||
|> arc(angleStart = 0, angleEnd = 180, radius = scoreDepth)
|
||||
|> arc(angleStart = 0, angleEnd = 180deg, radius = scoreDepth)
|
||||
|> xLine(length = -0.1)
|
||||
|> arc(angleStart = 0, angleEnd = 180, radius = scoreDepth)
|
||||
|> arc(angleStart = 0, angleEnd = 180deg, radius = scoreDepth)
|
||||
|> xLine(length = -0.03)
|
||||
|> tangentialArc(endAbsolute = [arcEnd, arcEnd])
|
||||
|
||||
|
@ -22,7 +22,7 @@ ribSketch = startSketchOn(offsetPlane(-XZ, offset = -foilThickness))
|
||||
|> line(endAbsolute = [rearSpar, upperCamber])
|
||||
|> tangentialArc(endAbsolute = [frontSpar, upperCamber * 1.3])
|
||||
|> tangentialArc(endAbsolute = [0, 0])
|
||||
|> tangentialArc(angle = 76, radius = lowerCamber)
|
||||
|> tangentialArc(angle = 76deg, radius = lowerCamber)
|
||||
|> tangentialArc(endAbsolute = [rearSpar, -lowerCamber])
|
||||
|> tangentialArc(endAbsolute = [profileStartX(%), profileStartY(%)])
|
||||
|> close()
|
||||
@ -43,19 +43,19 @@ sparSketch = startSketchOn(-XZ)
|
||||
// Sketch the sheet metal profile for the front spar, then extrude
|
||||
frontSparProfile = startProfile(sparSketch, at = [frontSpar, -lowerCamber * 0.85])
|
||||
|> yLine(endAbsolute = upperCamber, tag = $seg01)
|
||||
|> tangentialArc(angle = -90, radius = sparBendRadius + sparStockThicknes)
|
||||
|> tangentialArc(angle = -90deg, radius = sparBendRadius + sparStockThicknes)
|
||||
|> xLine(length = 4, tag = $seg02)
|
||||
|> tangentialArc(angle = -90, radius = sparBendRadius + sparStockThicknes)
|
||||
|> tangentialArc(angle = -90deg, radius = sparBendRadius + sparStockThicknes)
|
||||
|> yLine(length = -4, tag = $seg03)
|
||||
|> tangentialArc(angle = -90, radius = sparBendRadius + sparStockThicknes)
|
||||
|> tangentialArc(angle = -90deg, radius = sparBendRadius + sparStockThicknes)
|
||||
|> xLine(length = -3, tag = $seg04)
|
||||
|> yLine(length = sparStockThicknes)
|
||||
|> xLine(length = segLen(seg04))
|
||||
|> tangentialArc(angle = 90, radius = sparBendRadius)
|
||||
|> tangentialArc(angle = 90deg, radius = sparBendRadius)
|
||||
|> yLine(length = segLen(seg03))
|
||||
|> tangentialArc(angle = 90, radius = sparBendRadius)
|
||||
|> tangentialArc(angle = 90deg, radius = sparBendRadius)
|
||||
|> xLine(length = -segLen(seg02))
|
||||
|> tangentialArc(angle = 90, radius = sparBendRadius)
|
||||
|> tangentialArc(angle = 90deg, radius = sparBendRadius)
|
||||
|> yLine(length = -segLen(seg01), tag = $seg10)
|
||||
|> line(endAbsolute = [profileStartX(%), profileStartY(%)])
|
||||
|> close()
|
||||
@ -64,19 +64,19 @@ frontSparProfile = startProfile(sparSketch, at = [frontSpar, -lowerCamber * 0.85
|
||||
// Sketch the sheet metal profile for the rear spar, then extrude
|
||||
rearSparProfile = startProfile(sparSketch, at = [rearSpar, -lowerCamber * 0.7])
|
||||
|> yLine(endAbsolute = upperCamber * 0.7, tag = $seg05)
|
||||
|> tangentialArc(angle = 90, radius = sparBendRadius + sparStockThicknes)
|
||||
|> tangentialArc(angle = 90deg, radius = sparBendRadius + sparStockThicknes)
|
||||
|> xLine(length = -4, tag = $seg06)
|
||||
|> tangentialArc(angle = 90, radius = sparBendRadius + sparStockThicknes)
|
||||
|> tangentialArc(angle = 90deg, radius = sparBendRadius + sparStockThicknes)
|
||||
|> yLine(length = -4, tag = $seg07)
|
||||
|> tangentialArc(angle = 90, radius = sparBendRadius + sparStockThicknes)
|
||||
|> tangentialArc(angle = 90deg, radius = sparBendRadius + sparStockThicknes)
|
||||
|> xLine(length = 3, tag = $seg08)
|
||||
|> yLine(length = sparStockThicknes)
|
||||
|> xLine(length = -segLen(seg08))
|
||||
|> tangentialArc(angle = -90, radius = sparBendRadius)
|
||||
|> tangentialArc(angle = -90deg, radius = sparBendRadius)
|
||||
|> yLine(length = segLen(seg07))
|
||||
|> tangentialArc(angle = -90, radius = sparBendRadius)
|
||||
|> tangentialArc(angle = -90deg, radius = sparBendRadius)
|
||||
|> xLine(length = segLen(seg06))
|
||||
|> tangentialArc(angle = -90, radius = sparBendRadius)
|
||||
|> tangentialArc(angle = -90deg, radius = sparBendRadius)
|
||||
|> yLine(length = -segLen(seg05), tag = $seg09)
|
||||
|> line(endAbsolute = [profileStartX(%), profileStartY(%)])
|
||||
|> close()
|
||||
@ -86,11 +86,11 @@ rearSparProfile = startProfile(sparSketch, at = [rearSpar, -lowerCamber * 0.7])
|
||||
frontSparHoles = startSketchOn(frontSparProfile, face = seg10)
|
||||
|> startProfile(at = [-lowerCamber * 0.1, -foilThickness * 3])
|
||||
|> xLine(endAbsolute = upperCamber * 0.4, tag = $seg11)
|
||||
|> tangentialArc(angle = -90, radius = 5)
|
||||
|> tangentialArc(angle = -90deg, radius = 5)
|
||||
|> yLine(endAbsolute = -(sparSpan - (3 * foilThickness)) / (nSections - 1) + 5, tag = $seg12)
|
||||
|> tangentialArc(angle = -90, radius = 5)
|
||||
|> tangentialArc(angle = -90deg, radius = 5)
|
||||
|> xLine(length = -segLen(seg11))
|
||||
|> tangentialArc(angle = -90, radius = 5)
|
||||
|> tangentialArc(angle = -90deg, radius = 5)
|
||||
|> yLine(length = segLen(seg12))
|
||||
|> tangentialArc(endAbsolute = [profileStartX(%), profileStartY(%)])
|
||||
|> close()
|
||||
@ -104,11 +104,11 @@ frontSparHoles = startSketchOn(frontSparProfile, face = seg10)
|
||||
rearSparHoles = startSketchOn(rearSparProfile, face = seg09)
|
||||
|> startProfile(at = [-lowerCamber * 0.3, -foilThickness * 3])
|
||||
|> xLine(endAbsolute = -upperCamber * 0.01, tag = $seg14)
|
||||
|> tangentialArc(angle = -90, radius = 5)
|
||||
|> tangentialArc(angle = -90deg, radius = 5)
|
||||
|> yLine(length = -segLen(seg12))
|
||||
|> tangentialArc(angle = -90, radius = 5)
|
||||
|> tangentialArc(angle = -90deg, radius = 5)
|
||||
|> xLine(length = -segLen(seg14))
|
||||
|> tangentialArc(angle = -90, radius = 5)
|
||||
|> tangentialArc(angle = -90deg, radius = 5)
|
||||
|> yLine(length = segLen(seg12))
|
||||
|> tangentialArc(endAbsolute = [profileStartX(%), profileStartY(%)])
|
||||
|> close()
|
||||
|
@ -1,8 +1,8 @@
|
||||
@settings(defaultLengthUnit = in)
|
||||
sketch001 = startSketchOn(XZ)
|
||||
|> startProfile(at = [75.8, 317.2])
|
||||
|> angledLine(angle = 0, length = 268.43, tag = $rectangleSegmentA001)
|
||||
|> angledLine(angle = segAng(rectangleSegmentA001) - 90, length = 217.26, tag = $seg01)
|
||||
|> angledLine(angle = 0deg, length = 268.43, tag = $rectangleSegmentA001)
|
||||
|> angledLine(angle = segAng(rectangleSegmentA001) - 90deg, length = 217.26, tag = $seg01)
|
||||
|> angledLine(angle = segAng(rectangleSegmentA001), length = -segLen(rectangleSegmentA001), tag = $yo)
|
||||
|> line(endAbsolute = [profileStartX(%), profileStartY(%)], tag = $seg02)
|
||||
|> close()
|
||||
|
@ -1,8 +1,8 @@
|
||||
@settings(defaultLengthUnit = in)
|
||||
sketch001 = startSketchOn(XZ)
|
||||
|> startProfile(at = [75.8, 317.2]) // [$startCapTag, $EndCapTag]
|
||||
|> angledLine(angle = 0, length = 268.43, tag = $rectangleSegmentA001)
|
||||
|> angledLine(angle = segAng(rectangleSegmentA001) - 90, length = 217.26, tag = $seg01)
|
||||
|> angledLine(angle = 0deg, length = 268.43, tag = $rectangleSegmentA001)
|
||||
|> angledLine(angle = segAng(rectangleSegmentA001) - 90deg, length = 217.26, tag = $seg01)
|
||||
|> angledLine(angle = segAng(rectangleSegmentA001), length = -segLen(rectangleSegmentA001), tag = $yo)
|
||||
|> line(endAbsolute = [profileStartX(%), profileStartY(%)], tag = $seg02)
|
||||
|> close()
|
||||
|
@ -181,13 +181,13 @@ wallMountL = 8
|
||||
bracket = startSketchOn(XY)
|
||||
|> startProfile(at = [0, 0])
|
||||
|> line(end = [0, wallMountL])
|
||||
|> tangentialArc(radius = filletR, angle = 90 )
|
||||
|> tangentialArc(radius = filletR, angle = 90deg )
|
||||
|> line(end = [-shelfMountL, 0])
|
||||
|> line(end = [0, -thickness])
|
||||
|> line(end = [shelfMountL, 0])
|
||||
|> tangentialArc(
|
||||
radius = filletR - thickness,
|
||||
angle = -90,
|
||||
angle = -90deg,
|
||||
)
|
||||
|> line(end = [0, -wallMountL])
|
||||
|> close()
|
||||
|
@ -816,7 +816,16 @@ impl ArgData {
|
||||
}
|
||||
match self.ty.as_deref() {
|
||||
Some("Sketch") if self.kind == ArgKind::Special => None,
|
||||
Some(s) if s.starts_with("number") => Some((index, format!(r#"{label}${{{}:10}}"#, index))),
|
||||
Some(s) if s.starts_with("number") => {
|
||||
let value = match &*self.name {
|
||||
"angleStart" => "0",
|
||||
"angleEnd" => "180deg",
|
||||
"angle" => "180deg",
|
||||
"arcDegrees" => "360deg",
|
||||
_ => "10",
|
||||
};
|
||||
Some((index, format!(r#"{label}${{{}:{value}}}"#, index)))
|
||||
}
|
||||
Some("Point2d") => Some((index + 1, format!(r#"{label}[${{{}:0}}, ${{{}:0}}]"#, index, index + 1))),
|
||||
Some("Point3d") => Some((
|
||||
index + 2,
|
||||
|
@ -106,7 +106,7 @@ mod tests {
|
||||
let snippet = data.to_autocomplete_snippet();
|
||||
assert_eq!(
|
||||
snippet,
|
||||
r#"arc(angleStart = ${0:10}, angleEnd = ${1:10}, diameter = ${2:10})"#
|
||||
r#"arc(angleStart = ${0:0}, angleEnd = ${1:180deg}, diameter = ${2:10})"#
|
||||
);
|
||||
}
|
||||
|
||||
@ -172,7 +172,7 @@ mod tests {
|
||||
let snippet = helix_fn.to_autocomplete_snippet();
|
||||
assert_eq!(
|
||||
snippet,
|
||||
r#"helix(revolutions = ${0:10}, angleStart = ${1:10}, radius = ${2:10}, axis = ${3:X}, length = ${4:10})"#
|
||||
r#"helix(revolutions = ${0:10}, angleStart = ${1:0}, radius = ${2:10}, axis = ${3:X}, length = ${4:10})"#
|
||||
);
|
||||
}
|
||||
|
||||
|
@ -12,7 +12,7 @@ use crate::{
|
||||
};
|
||||
|
||||
/// Annotations which should cause re-execution if they change.
|
||||
pub(super) const SIGNIFICANT_ATTRS: [&str; 2] = [SETTINGS, NO_PRELUDE];
|
||||
pub(super) const SIGNIFICANT_ATTRS: [&str; 3] = [SETTINGS, NO_PRELUDE, WARNINGS];
|
||||
|
||||
pub(crate) const SETTINGS: &str = "settings";
|
||||
pub(crate) const SETTINGS_UNIT_LENGTH: &str = "defaultLengthUnit";
|
||||
@ -33,6 +33,23 @@ pub(crate) const IMPL_PRIMITIVE: &str = "primitive";
|
||||
pub(super) const IMPL_VALUES: [&str; 3] = [IMPL_RUST, IMPL_KCL, IMPL_PRIMITIVE];
|
||||
|
||||
pub(crate) const DEPRECATED: &str = "deprecated";
|
||||
pub(crate) const WARNINGS: &str = "warnings";
|
||||
pub(crate) const WARN_ALLOW: &str = "allow";
|
||||
pub(crate) const WARN_DENY: &str = "deny";
|
||||
pub(crate) const WARN_UNKNOWN_UNITS: &str = "unknownUnits";
|
||||
pub(crate) const WARN_ANGLE_UNITS: &str = "angleUnits";
|
||||
pub(crate) const WARN_UNKNOWN_ATTR: &str = "unknownAttribute";
|
||||
pub(crate) const WARN_MOD_RETURN_VALUE: &str = "moduleReturnValue";
|
||||
pub(crate) const WARN_DEPRECATED: &str = "deprecated";
|
||||
pub(crate) const WARN_IGNORED_Z_AXIS: &str = "ignoredZAxis";
|
||||
pub(super) const WARN_VALUES: [&str; 6] = [
|
||||
WARN_UNKNOWN_UNITS,
|
||||
WARN_ANGLE_UNITS,
|
||||
WARN_UNKNOWN_ATTR,
|
||||
WARN_MOD_RETURN_VALUE,
|
||||
WARN_DEPRECATED,
|
||||
WARN_IGNORED_Z_AXIS,
|
||||
];
|
||||
|
||||
#[derive(Clone, Copy, Eq, PartialEq, Debug, Default)]
|
||||
pub enum Impl {
|
||||
@ -92,6 +109,64 @@ pub(super) fn expect_ident(expr: &Expr) -> Result<&str, KclError> {
|
||||
)))
|
||||
}
|
||||
|
||||
pub(super) fn many_of(
|
||||
expr: &Expr,
|
||||
of: &[&'static str],
|
||||
source_range: SourceRange,
|
||||
) -> Result<Vec<&'static str>, KclError> {
|
||||
const UNEXPECTED_MSG: &str = "Unexpected warnings value, expected a name or array of names, e.g., `unknownUnits` or `[unknownUnits, deprecated]`";
|
||||
|
||||
let values = match expr {
|
||||
Expr::Name(name) => {
|
||||
if let Some(name) = name.local_ident() {
|
||||
vec![*name]
|
||||
} else {
|
||||
return Err(KclError::new_semantic(KclErrorDetails::new(
|
||||
UNEXPECTED_MSG.to_owned(),
|
||||
vec![expr.into()],
|
||||
)));
|
||||
}
|
||||
}
|
||||
Expr::ArrayExpression(e) => {
|
||||
let mut result = Vec::new();
|
||||
for e in &e.elements {
|
||||
if let Expr::Name(name) = e {
|
||||
if let Some(name) = name.local_ident() {
|
||||
result.push(*name);
|
||||
continue;
|
||||
}
|
||||
}
|
||||
return Err(KclError::new_semantic(KclErrorDetails::new(
|
||||
UNEXPECTED_MSG.to_owned(),
|
||||
vec![e.into()],
|
||||
)));
|
||||
}
|
||||
result
|
||||
}
|
||||
_ => {
|
||||
return Err(KclError::new_semantic(KclErrorDetails::new(
|
||||
UNEXPECTED_MSG.to_owned(),
|
||||
vec![expr.into()],
|
||||
)))
|
||||
}
|
||||
};
|
||||
|
||||
values
|
||||
.into_iter()
|
||||
.map(|v| {
|
||||
of.iter()
|
||||
.find(|vv| **vv == v)
|
||||
.ok_or_else(|| {
|
||||
KclError::new_semantic(KclErrorDetails::new(
|
||||
format!("Unexpected warning value: `{v}`; accepted values: {}", of.join(", "),),
|
||||
vec![source_range],
|
||||
))
|
||||
})
|
||||
.copied()
|
||||
})
|
||||
.collect::<Result<Vec<&str>, KclError>>()
|
||||
}
|
||||
|
||||
// Returns the unparsed number literal.
|
||||
pub(super) fn expect_number(expr: &Expr) -> Result<String, KclError> {
|
||||
if let Expr::Literal(lit) = expr {
|
||||
|
@ -49,9 +49,20 @@ impl ExecutorContext {
|
||||
for annotation in annotations {
|
||||
if annotation.name() == Some(annotations::SETTINGS) {
|
||||
if matches!(body_type, BodyType::Root) {
|
||||
if exec_state.mod_local.settings.update_from_annotation(annotation)? {
|
||||
let (updated_len, updated_angle) =
|
||||
exec_state.mod_local.settings.update_from_annotation(annotation)?;
|
||||
if updated_len {
|
||||
exec_state.mod_local.explicit_length_units = true;
|
||||
}
|
||||
if updated_angle {
|
||||
exec_state.warn(
|
||||
CompilationError::err(
|
||||
annotation.as_source_range(),
|
||||
"Prefer to use explicit units for angles",
|
||||
),
|
||||
annotations::WARN_ANGLE_UNITS,
|
||||
);
|
||||
}
|
||||
} else {
|
||||
exec_state.err(CompilationError::err(
|
||||
annotation.as_source_range(),
|
||||
@ -67,11 +78,51 @@ impl ExecutorContext {
|
||||
"The standard library can only be skipped at the top level scope of a file",
|
||||
));
|
||||
}
|
||||
} else if annotation.name() == Some(annotations::WARNINGS) {
|
||||
// TODO we should support setting warnings for the whole project, not just one file
|
||||
if matches!(body_type, BodyType::Root) {
|
||||
let props = annotations::expect_properties(annotations::WARNINGS, annotation)?;
|
||||
for p in props {
|
||||
match &*p.inner.key.name {
|
||||
annotations::WARN_ALLOW => {
|
||||
let allowed = annotations::many_of(
|
||||
&p.inner.value,
|
||||
&annotations::WARN_VALUES,
|
||||
annotation.as_source_range(),
|
||||
)?;
|
||||
exec_state.mod_local.allowed_warnings = allowed;
|
||||
}
|
||||
annotations::WARN_DENY => {
|
||||
let denied = annotations::many_of(
|
||||
&p.inner.value,
|
||||
&annotations::WARN_VALUES,
|
||||
annotation.as_source_range(),
|
||||
)?;
|
||||
exec_state.mod_local.denied_warnings = denied;
|
||||
}
|
||||
name => {
|
||||
return Err(KclError::new_semantic(KclErrorDetails::new(
|
||||
format!(
|
||||
"Unexpected warnings key: `{name}`; expected one of `{}`, `{}`",
|
||||
annotations::WARN_ALLOW,
|
||||
annotations::WARN_DENY,
|
||||
),
|
||||
vec![annotation.as_source_range()],
|
||||
)))
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
exec_state.err(CompilationError::err(
|
||||
annotation.as_source_range(),
|
||||
"Warnings can only be customized at the top level scope of a file",
|
||||
));
|
||||
}
|
||||
} else {
|
||||
exec_state.warn(CompilationError::err(
|
||||
annotation.as_source_range(),
|
||||
"Unknown annotation",
|
||||
));
|
||||
exec_state.warn(
|
||||
CompilationError::err(annotation.as_source_range(), "Unknown annotation"),
|
||||
annotations::WARN_UNKNOWN_ATTR,
|
||||
);
|
||||
}
|
||||
}
|
||||
Ok(no_prelude)
|
||||
@ -685,7 +736,8 @@ impl ExecutorContext {
|
||||
exec_state.warn(CompilationError::err(
|
||||
metadata.source_range,
|
||||
"Imported module has no return value. The last statement of the module must be an expression, usually the Solid.",
|
||||
));
|
||||
),
|
||||
annotations::WARN_MOD_RETURN_VALUE);
|
||||
|
||||
let mut new_meta = vec![metadata.to_owned()];
|
||||
new_meta.extend(meta);
|
||||
@ -1163,12 +1215,12 @@ impl Node<BinaryExpression> {
|
||||
|
||||
let value = match self.operator {
|
||||
BinaryOperator::Add => {
|
||||
let (l, r, ty) = NumericType::combine_eq_coerce(left, right);
|
||||
let (l, r, ty) = NumericType::combine_eq_coerce(left, right, None);
|
||||
self.warn_on_unknown(&ty, "Adding", exec_state);
|
||||
KclValue::Number { value: l + r, meta, ty }
|
||||
}
|
||||
BinaryOperator::Sub => {
|
||||
let (l, r, ty) = NumericType::combine_eq_coerce(left, right);
|
||||
let (l, r, ty) = NumericType::combine_eq_coerce(left, right, None);
|
||||
self.warn_on_unknown(&ty, "Subtracting", exec_state);
|
||||
KclValue::Number { value: l - r, meta, ty }
|
||||
}
|
||||
@ -1193,32 +1245,32 @@ impl Node<BinaryExpression> {
|
||||
ty: exec_state.current_default_units(),
|
||||
},
|
||||
BinaryOperator::Neq => {
|
||||
let (l, r, ty) = NumericType::combine_eq(left, right);
|
||||
let (l, r, ty) = NumericType::combine_eq(left, right, exec_state, self.as_source_range());
|
||||
self.warn_on_unknown(&ty, "Comparing", exec_state);
|
||||
KclValue::Bool { value: l != r, meta }
|
||||
}
|
||||
BinaryOperator::Gt => {
|
||||
let (l, r, ty) = NumericType::combine_eq(left, right);
|
||||
let (l, r, ty) = NumericType::combine_eq(left, right, exec_state, self.as_source_range());
|
||||
self.warn_on_unknown(&ty, "Comparing", exec_state);
|
||||
KclValue::Bool { value: l > r, meta }
|
||||
}
|
||||
BinaryOperator::Gte => {
|
||||
let (l, r, ty) = NumericType::combine_eq(left, right);
|
||||
let (l, r, ty) = NumericType::combine_eq(left, right, exec_state, self.as_source_range());
|
||||
self.warn_on_unknown(&ty, "Comparing", exec_state);
|
||||
KclValue::Bool { value: l >= r, meta }
|
||||
}
|
||||
BinaryOperator::Lt => {
|
||||
let (l, r, ty) = NumericType::combine_eq(left, right);
|
||||
let (l, r, ty) = NumericType::combine_eq(left, right, exec_state, self.as_source_range());
|
||||
self.warn_on_unknown(&ty, "Comparing", exec_state);
|
||||
KclValue::Bool { value: l < r, meta }
|
||||
}
|
||||
BinaryOperator::Lte => {
|
||||
let (l, r, ty) = NumericType::combine_eq(left, right);
|
||||
let (l, r, ty) = NumericType::combine_eq(left, right, exec_state, self.as_source_range());
|
||||
self.warn_on_unknown(&ty, "Comparing", exec_state);
|
||||
KclValue::Bool { value: l <= r, meta }
|
||||
}
|
||||
BinaryOperator::Eq => {
|
||||
let (l, r, ty) = NumericType::combine_eq(left, right);
|
||||
let (l, r, ty) = NumericType::combine_eq(left, right, exec_state, self.as_source_range());
|
||||
self.warn_on_unknown(&ty, "Comparing", exec_state);
|
||||
KclValue::Bool { value: l == r, meta }
|
||||
}
|
||||
@ -1237,7 +1289,7 @@ impl Node<BinaryExpression> {
|
||||
format!("{} numbers which have unknown or incompatible units.\nYou can probably fix this error by specifying the units using type ascription, e.g., `len: number(mm)` or `(a * b): number(deg)`.", verb),
|
||||
);
|
||||
err.tag = crate::errors::Tag::UnknownNumericUnits;
|
||||
exec_state.warn(err);
|
||||
exec_state.warn(err, annotations::WARN_UNKNOWN_UNITS);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -1733,6 +1785,7 @@ mod test {
|
||||
|
||||
use super::*;
|
||||
use crate::{
|
||||
errors::Severity,
|
||||
exec::UnitType,
|
||||
execution::{parse_execute, ContextType},
|
||||
ExecutorSettings, UnitLen,
|
||||
@ -2141,4 +2194,29 @@ c = ((PI * 2) / 3): number(deg)
|
||||
let result = parse_execute(ast).await.unwrap();
|
||||
assert_eq!(result.exec_state.errors().len(), 2);
|
||||
}
|
||||
|
||||
#[tokio::test(flavor = "multi_thread")]
|
||||
async fn custom_warning() {
|
||||
let warn = r#"
|
||||
a = PI * 2
|
||||
"#;
|
||||
let result = parse_execute(warn).await.unwrap();
|
||||
assert_eq!(result.exec_state.errors().len(), 1);
|
||||
assert_eq!(result.exec_state.errors()[0].severity, Severity::Warning);
|
||||
|
||||
let allow = r#"
|
||||
@warnings(allow = unknownUnits)
|
||||
a = PI * 2
|
||||
"#;
|
||||
let result = parse_execute(allow).await.unwrap();
|
||||
assert_eq!(result.exec_state.errors().len(), 0);
|
||||
|
||||
let deny = r#"
|
||||
@warnings(deny = [unknownUnits])
|
||||
a = PI * 2
|
||||
"#;
|
||||
let result = parse_execute(deny).await.unwrap();
|
||||
assert_eq!(result.exec_state.errors().len(), 1);
|
||||
assert_eq!(result.exec_state.errors()[0].severity, Severity::Error);
|
||||
}
|
||||
}
|
||||
|
@ -4,6 +4,7 @@ use indexmap::IndexMap;
|
||||
use crate::{
|
||||
errors::{KclError, KclErrorDetails},
|
||||
execution::{
|
||||
annotations,
|
||||
cad_op::{Group, OpArg, OpKclValue, Operation},
|
||||
kcl_value::FunctionSource,
|
||||
memory,
|
||||
@ -290,16 +291,19 @@ impl FunctionDefinition<'_> {
|
||||
callsite: SourceRange,
|
||||
) -> Result<Option<KclValue>, KclError> {
|
||||
if self.deprecated {
|
||||
exec_state.warn(CompilationError::err(
|
||||
callsite,
|
||||
format!(
|
||||
"{} is deprecated, see the docs for a recommended replacement",
|
||||
match &fn_name {
|
||||
Some(n) => format!("`{n}`"),
|
||||
None => "This function".to_owned(),
|
||||
}
|
||||
exec_state.warn(
|
||||
CompilationError::err(
|
||||
callsite,
|
||||
format!(
|
||||
"{} is deprecated, see the docs for a recommended replacement",
|
||||
match &fn_name {
|
||||
Some(n) => format!("`{n}`"),
|
||||
None => "This function".to_owned(),
|
||||
}
|
||||
),
|
||||
),
|
||||
));
|
||||
annotations::WARN_DEPRECATED,
|
||||
);
|
||||
}
|
||||
|
||||
type_check_params_kw(fn_name.as_deref(), self, &mut args.kw_args, exec_state)?;
|
||||
|
@ -7,7 +7,7 @@ use serde::Serialize;
|
||||
use crate::{
|
||||
errors::KclErrorDetails,
|
||||
execution::{
|
||||
annotations::{SETTINGS, SETTINGS_UNIT_LENGTH},
|
||||
annotations::{self, SETTINGS, SETTINGS_UNIT_LENGTH},
|
||||
types::{NumericType, PrimitiveType, RuntimeType, UnitLen},
|
||||
EnvironmentRef, ExecState, Face, Geometry, GeometryWithImportedGeometry, Helix, ImportedGeometry, MetaSettings,
|
||||
Metadata, Plane, Sketch, Solid, TagIdentifier,
|
||||
@ -377,6 +377,7 @@ impl KclValue {
|
||||
Some(SourceRange::new(0, 0, literal.module_id)),
|
||||
crate::errors::Tag::Deprecated,
|
||||
),
|
||||
annotations::WARN_DEPRECATED,
|
||||
);
|
||||
}
|
||||
}
|
||||
|
@ -604,8 +604,9 @@ impl ExecutorContext {
|
||||
settings: &self.settings,
|
||||
};
|
||||
|
||||
let cache_result = cache::get_changed_program(old, new).await;
|
||||
// Get the program that actually changed from the old and new information.
|
||||
let (clear_scene, program, import_check_info) = match cache::get_changed_program(old, new).await {
|
||||
let (clear_scene, program, import_check_info) = match cache_result {
|
||||
CacheResult::ReExecute {
|
||||
clear_scene,
|
||||
reapply_settings,
|
||||
|
@ -108,6 +108,9 @@ pub(super) struct ModuleState {
|
||||
pub(super) path: ModulePath,
|
||||
/// Artifacts for only this module.
|
||||
pub artifacts: ModuleArtifactState,
|
||||
|
||||
pub(super) allowed_warnings: Vec<&'static str>,
|
||||
pub(super) denied_warnings: Vec<&'static str>,
|
||||
}
|
||||
|
||||
impl ExecState {
|
||||
@ -133,8 +136,19 @@ impl ExecState {
|
||||
}
|
||||
|
||||
/// Log a warning.
|
||||
pub fn warn(&mut self, mut e: CompilationError) {
|
||||
e.severity = Severity::Warning;
|
||||
pub fn warn(&mut self, mut e: CompilationError, name: &'static str) {
|
||||
debug_assert!(annotations::WARN_VALUES.contains(&name));
|
||||
|
||||
if self.mod_local.allowed_warnings.contains(&name) {
|
||||
return;
|
||||
}
|
||||
|
||||
if self.mod_local.denied_warnings.contains(&name) {
|
||||
e.severity = Severity::Error;
|
||||
} else {
|
||||
e.severity = Severity::Warning;
|
||||
}
|
||||
|
||||
self.global.errors.push(e);
|
||||
}
|
||||
|
||||
@ -502,6 +516,8 @@ impl ModuleState {
|
||||
kcl_version: "0.1".to_owned(),
|
||||
},
|
||||
artifacts: Default::default(),
|
||||
allowed_warnings: Vec::new(),
|
||||
denied_warnings: Vec::new(),
|
||||
}
|
||||
}
|
||||
|
||||
@ -526,10 +542,11 @@ impl MetaSettings {
|
||||
pub(crate) fn update_from_annotation(
|
||||
&mut self,
|
||||
annotation: &crate::parsing::ast::types::Node<Annotation>,
|
||||
) -> Result<bool, KclError> {
|
||||
) -> Result<(bool, bool), KclError> {
|
||||
let properties = annotations::expect_properties(annotations::SETTINGS, annotation)?;
|
||||
|
||||
let mut updated_len = false;
|
||||
let mut updated_angle = false;
|
||||
for p in properties {
|
||||
match &*p.inner.key.name {
|
||||
annotations::SETTINGS_UNIT_LENGTH => {
|
||||
@ -542,6 +559,7 @@ impl MetaSettings {
|
||||
let value = annotations::expect_ident(&p.inner.value)?;
|
||||
let value = types::UnitAngle::from_str(value, annotation.as_source_range())?;
|
||||
self.default_angle_units = value;
|
||||
updated_angle = true;
|
||||
}
|
||||
annotations::SETTINGS_VERSION => {
|
||||
let value = annotations::expect_number(&p.inner.value)?;
|
||||
@ -560,6 +578,6 @@ impl MetaSettings {
|
||||
}
|
||||
}
|
||||
|
||||
Ok(updated_len)
|
||||
Ok((updated_len, updated_angle))
|
||||
}
|
||||
}
|
||||
|
@ -6,6 +6,7 @@ use serde::{Deserialize, Serialize};
|
||||
|
||||
use crate::{
|
||||
execution::{
|
||||
annotations,
|
||||
kcl_value::{KclValue, TypeDef},
|
||||
memory::{self},
|
||||
ExecState, Plane, PlaneInfo, Point3d,
|
||||
@ -505,7 +506,12 @@ impl NumericType {
|
||||
///
|
||||
/// This combinator function is suitable for comparisons where uncertainty should
|
||||
/// be handled by the user.
|
||||
pub fn combine_eq(a: TyF64, b: TyF64) -> (f64, f64, NumericType) {
|
||||
pub fn combine_eq(
|
||||
a: TyF64,
|
||||
b: TyF64,
|
||||
exec_state: &mut ExecState,
|
||||
source_range: SourceRange,
|
||||
) -> (f64, f64, NumericType) {
|
||||
use NumericType::*;
|
||||
match (a.ty, b.ty) {
|
||||
(at, bt) if at == bt => (a.n, b.n, at),
|
||||
@ -520,8 +526,24 @@ impl NumericType {
|
||||
}
|
||||
(t @ Known(UnitType::Length(l1)), Default { len: l2, .. }) if l1 == l2 => (a.n, b.n, t),
|
||||
(Default { len: l1, .. }, t @ Known(UnitType::Length(l2))) if l1 == l2 => (a.n, b.n, t),
|
||||
(t @ Known(UnitType::Angle(a1)), Default { angle: a2, .. }) if a1 == a2 => (a.n, b.n, t),
|
||||
(Default { angle: a1, .. }, t @ Known(UnitType::Angle(a2))) if a1 == a2 => (a.n, b.n, t),
|
||||
(t @ Known(UnitType::Angle(a1)), Default { angle: a2, .. }) if a1 == a2 => {
|
||||
if b.n != 0.0 {
|
||||
exec_state.warn(
|
||||
CompilationError::err(source_range, "Prefer to use explicit units for angles"),
|
||||
annotations::WARN_ANGLE_UNITS,
|
||||
);
|
||||
}
|
||||
(a.n, b.n, t)
|
||||
}
|
||||
(Default { angle: a1, .. }, t @ Known(UnitType::Angle(a2))) if a1 == a2 => {
|
||||
if a.n != 0.0 {
|
||||
exec_state.warn(
|
||||
CompilationError::err(source_range, "Prefer to use explicit units for angles"),
|
||||
annotations::WARN_ANGLE_UNITS,
|
||||
);
|
||||
}
|
||||
(a.n, b.n, t)
|
||||
}
|
||||
|
||||
_ => (a.n, b.n, Unknown),
|
||||
}
|
||||
@ -534,7 +556,11 @@ impl NumericType {
|
||||
/// coerced together, for example two arguments to the same function or two numbers in an array being used as a point.
|
||||
///
|
||||
/// Prefer to use `combine_eq` if possible since using that prioritises correctness over ergonomics.
|
||||
pub fn combine_eq_coerce(a: TyF64, b: TyF64) -> (f64, f64, NumericType) {
|
||||
pub fn combine_eq_coerce(
|
||||
a: TyF64,
|
||||
b: TyF64,
|
||||
for_errs: Option<(&mut ExecState, SourceRange)>,
|
||||
) -> (f64, f64, NumericType) {
|
||||
use NumericType::*;
|
||||
match (a.ty, b.ty) {
|
||||
(at, bt) if at == bt => (a.n, b.n, at),
|
||||
@ -552,8 +578,28 @@ impl NumericType {
|
||||
|
||||
(t @ Known(UnitType::Length(l1)), Default { len: l2, .. }) => (a.n, l2.adjust_to(b.n, l1).0, t),
|
||||
(Default { len: l1, .. }, t @ Known(UnitType::Length(l2))) => (l1.adjust_to(a.n, l2).0, b.n, t),
|
||||
(t @ Known(UnitType::Angle(a1)), Default { angle: a2, .. }) => (a.n, a2.adjust_to(b.n, a1).0, t),
|
||||
(Default { angle: a1, .. }, t @ Known(UnitType::Angle(a2))) => (a1.adjust_to(a.n, a2).0, b.n, t),
|
||||
(t @ Known(UnitType::Angle(a1)), Default { angle: a2, .. }) => {
|
||||
if let Some((exec_state, source_range)) = for_errs {
|
||||
if b.n != 0.0 {
|
||||
exec_state.warn(
|
||||
CompilationError::err(source_range, "Prefer to use explicit units for angles"),
|
||||
annotations::WARN_ANGLE_UNITS,
|
||||
);
|
||||
}
|
||||
}
|
||||
(a.n, a2.adjust_to(b.n, a1).0, t)
|
||||
}
|
||||
(Default { angle: a1, .. }, t @ Known(UnitType::Angle(a2))) => {
|
||||
if let Some((exec_state, source_range)) = for_errs {
|
||||
if a.n != 0.0 {
|
||||
exec_state.warn(
|
||||
CompilationError::err(source_range, "Prefer to use explicit units for angles"),
|
||||
annotations::WARN_ANGLE_UNITS,
|
||||
);
|
||||
}
|
||||
}
|
||||
(a1.adjust_to(a.n, a2).0, b.n, t)
|
||||
}
|
||||
|
||||
(Known(_), Known(_)) | (Default { .. }, Default { .. }) | (_, Unknown) | (Unknown, _) => {
|
||||
(a.n, b.n, Unknown)
|
||||
@ -714,7 +760,7 @@ impl NumericType {
|
||||
}
|
||||
}
|
||||
|
||||
fn coerce(&self, val: &KclValue) -> Result<KclValue, CoercionError> {
|
||||
fn coerce(&self, val: &KclValue, exec_state: &mut ExecState) -> Result<KclValue, CoercionError> {
|
||||
let KclValue::Number { value, ty, meta } = val else {
|
||||
return Err(val.into());
|
||||
};
|
||||
@ -786,6 +832,14 @@ impl NumericType {
|
||||
}
|
||||
|
||||
(Default { angle: a1, .. }, Known(UnitType::Angle(a2))) => {
|
||||
let mut source_ranges = Into::<Vec<SourceRange>>::into(val);
|
||||
// A single source range means it's not via a function or something.
|
||||
if source_ranges.len() == 1 {
|
||||
exec_state.warn(
|
||||
CompilationError::err(source_ranges.pop().unwrap(), "Prefer to use explicit units for angles"),
|
||||
annotations::WARN_ANGLE_UNITS,
|
||||
);
|
||||
}
|
||||
let (value, ty) = a1.adjust_to(*value, *a2);
|
||||
Ok(KclValue::Number {
|
||||
value,
|
||||
@ -1110,7 +1164,7 @@ impl KclValue {
|
||||
PrimitiveType::Any => Ok(self.clone()),
|
||||
PrimitiveType::Number(ty) => {
|
||||
if convert_units {
|
||||
return ty.coerce(self);
|
||||
return ty.coerce(self, exec_state);
|
||||
}
|
||||
|
||||
// Instead of converting units, reinterpret the number as having
|
||||
@ -1126,10 +1180,10 @@ impl KclValue {
|
||||
value: *n,
|
||||
meta: meta.clone(),
|
||||
};
|
||||
return ty.coerce(&value);
|
||||
return ty.coerce(&value, exec_state);
|
||||
}
|
||||
}
|
||||
ty.coerce(self)
|
||||
ty.coerce(self, exec_state)
|
||||
}
|
||||
PrimitiveType::String => match self {
|
||||
KclValue::String { .. } => Ok(self.clone()),
|
||||
@ -1147,54 +1201,56 @@ impl KclValue {
|
||||
KclValue::Solid { .. } => Ok(self.clone()),
|
||||
_ => Err(self.into()),
|
||||
},
|
||||
PrimitiveType::Plane => match self {
|
||||
KclValue::String { value: s, .. }
|
||||
if [
|
||||
"xy", "xz", "yz", "-xy", "-xz", "-yz", "XY", "XZ", "YZ", "-XY", "-XZ", "-YZ",
|
||||
]
|
||||
.contains(&&**s) =>
|
||||
{
|
||||
Ok(self.clone())
|
||||
}
|
||||
KclValue::Plane { .. } => Ok(self.clone()),
|
||||
KclValue::Object { value, meta } => {
|
||||
let origin = value
|
||||
.get("origin")
|
||||
.and_then(Point3d::from_kcl_val)
|
||||
.ok_or(CoercionError::from(self))?;
|
||||
let x_axis = value
|
||||
.get("xAxis")
|
||||
.and_then(Point3d::from_kcl_val)
|
||||
.ok_or(CoercionError::from(self))?;
|
||||
let y_axis = value
|
||||
.get("yAxis")
|
||||
.and_then(Point3d::from_kcl_val)
|
||||
.ok_or(CoercionError::from(self))?;
|
||||
PrimitiveType::Plane => {
|
||||
match self {
|
||||
KclValue::String { value: s, .. }
|
||||
if [
|
||||
"xy", "xz", "yz", "-xy", "-xz", "-yz", "XY", "XZ", "YZ", "-XY", "-XZ", "-YZ",
|
||||
]
|
||||
.contains(&&**s) =>
|
||||
{
|
||||
Ok(self.clone())
|
||||
}
|
||||
KclValue::Plane { .. } => Ok(self.clone()),
|
||||
KclValue::Object { value, meta } => {
|
||||
let origin = value
|
||||
.get("origin")
|
||||
.and_then(Point3d::from_kcl_val)
|
||||
.ok_or(CoercionError::from(self))?;
|
||||
let x_axis = value
|
||||
.get("xAxis")
|
||||
.and_then(Point3d::from_kcl_val)
|
||||
.ok_or(CoercionError::from(self))?;
|
||||
let y_axis = value
|
||||
.get("yAxis")
|
||||
.and_then(Point3d::from_kcl_val)
|
||||
.ok_or(CoercionError::from(self))?;
|
||||
|
||||
if value.get("zAxis").is_some() {
|
||||
exec_state.warn(CompilationError::err(
|
||||
if value.get("zAxis").is_some() {
|
||||
exec_state.warn(CompilationError::err(
|
||||
self.into(),
|
||||
"Object with a zAxis field is being coerced into a plane, but the zAxis is ignored.",
|
||||
));
|
||||
), annotations::WARN_IGNORED_Z_AXIS);
|
||||
}
|
||||
|
||||
let id = exec_state.mod_local.id_generator.next_uuid();
|
||||
let plane = Plane {
|
||||
id,
|
||||
artifact_id: id.into(),
|
||||
info: PlaneInfo {
|
||||
origin,
|
||||
x_axis: x_axis.normalize(),
|
||||
y_axis: y_axis.normalize(),
|
||||
},
|
||||
value: super::PlaneType::Uninit,
|
||||
meta: meta.clone(),
|
||||
};
|
||||
|
||||
Ok(KclValue::Plane { value: Box::new(plane) })
|
||||
}
|
||||
|
||||
let id = exec_state.mod_local.id_generator.next_uuid();
|
||||
let plane = Plane {
|
||||
id,
|
||||
artifact_id: id.into(),
|
||||
info: PlaneInfo {
|
||||
origin,
|
||||
x_axis: x_axis.normalize(),
|
||||
y_axis: y_axis.normalize(),
|
||||
},
|
||||
value: super::PlaneType::Uninit,
|
||||
meta: meta.clone(),
|
||||
};
|
||||
|
||||
Ok(KclValue::Plane { value: Box::new(plane) })
|
||||
_ => Err(self.into()),
|
||||
}
|
||||
_ => Err(self.into()),
|
||||
},
|
||||
}
|
||||
PrimitiveType::Face => match self {
|
||||
KclValue::Face { .. } => Ok(self.clone()),
|
||||
_ => Err(self.into()),
|
||||
@ -2347,14 +2403,18 @@ b = 180 / PI * a + 360
|
||||
#[tokio::test(flavor = "multi_thread")]
|
||||
async fn cos_coercions() {
|
||||
let program = r#"
|
||||
a = cos(units::toRadians(30))
|
||||
a = cos(units::toRadians(30deg))
|
||||
b = 3 / a
|
||||
c = cos(30deg)
|
||||
d = cos(30)
|
||||
d = cos(1rad)
|
||||
"#;
|
||||
|
||||
let result = parse_execute(program).await.unwrap();
|
||||
assert!(result.exec_state.errors().is_empty());
|
||||
assert!(
|
||||
result.exec_state.errors().is_empty(),
|
||||
"{:?}",
|
||||
result.exec_state.errors()
|
||||
);
|
||||
|
||||
assert_value_and_type("a", &result, 1.0, NumericType::default());
|
||||
assert_value_and_type("b", &result, 3.0, NumericType::default());
|
||||
|
@ -228,13 +228,9 @@ impl Program {
|
||||
}
|
||||
|
||||
/// Change the meta settings for the kcl file.
|
||||
pub fn change_default_units(
|
||||
&self,
|
||||
length_units: Option<execution::types::UnitLen>,
|
||||
angle_units: Option<execution::types::UnitAngle>,
|
||||
) -> Result<Self, KclError> {
|
||||
pub fn change_default_units(&self, length_units: Option<execution::types::UnitLen>) -> Result<Self, KclError> {
|
||||
Ok(Self {
|
||||
ast: self.ast.change_default_units(length_units, angle_units)?,
|
||||
ast: self.ast.change_default_units(length_units)?,
|
||||
original_file_contents: self.original_file_contents.clone(),
|
||||
})
|
||||
}
|
||||
|
@ -28,7 +28,7 @@ use crate::{
|
||||
errors::KclError,
|
||||
execution::{
|
||||
annotations,
|
||||
types::{ArrayLen, UnitAngle, UnitLen},
|
||||
types::{ArrayLen, UnitLen},
|
||||
KclValue, Metadata, TagIdentifier,
|
||||
},
|
||||
parsing::{ast::digest::Digest, token::NumericSuffix, PIPE_OPERATOR},
|
||||
@ -357,11 +357,7 @@ impl Node<Program> {
|
||||
Ok(None)
|
||||
}
|
||||
|
||||
pub fn change_default_units(
|
||||
&self,
|
||||
length_units: Option<UnitLen>,
|
||||
angle_units: Option<UnitAngle>,
|
||||
) -> Result<Self, KclError> {
|
||||
pub fn change_default_units(&self, length_units: Option<UnitLen>) -> Result<Self, KclError> {
|
||||
let mut new_program = self.clone();
|
||||
let mut found = false;
|
||||
for node in &mut new_program.inner_attrs {
|
||||
@ -372,13 +368,6 @@ impl Node<Program> {
|
||||
Expr::Name(Box::new(Name::new(&len.to_string()))),
|
||||
);
|
||||
}
|
||||
if let Some(angle) = angle_units {
|
||||
node.inner.add_or_update(
|
||||
annotations::SETTINGS_UNIT_ANGLE,
|
||||
Expr::Name(Box::new(Name::new(&angle.to_string()))),
|
||||
);
|
||||
}
|
||||
|
||||
// Previous source range no longer makes sense, but we want to
|
||||
// preserve other things like comments.
|
||||
node.reset_source();
|
||||
@ -395,12 +384,6 @@ impl Node<Program> {
|
||||
Expr::Name(Box::new(Name::new(&len.to_string()))),
|
||||
);
|
||||
}
|
||||
if let Some(angle) = angle_units {
|
||||
settings.inner.add_or_update(
|
||||
annotations::SETTINGS_UNIT_ANGLE,
|
||||
Expr::Name(Box::new(Name::new(&angle.to_string()))),
|
||||
);
|
||||
}
|
||||
|
||||
new_program.inner_attrs.push(settings);
|
||||
}
|
||||
@ -4256,7 +4239,7 @@ startSketchOn(XY)"#;
|
||||
|
||||
// Edit the ast.
|
||||
let new_program = program
|
||||
.change_default_units(Some(crate::execution::types::UnitLen::Mm), None)
|
||||
.change_default_units(Some(crate::execution::types::UnitLen::Mm))
|
||||
.unwrap();
|
||||
|
||||
let result = new_program.meta_settings().unwrap();
|
||||
@ -4285,7 +4268,7 @@ startSketchOn(XY)
|
||||
|
||||
// Edit the ast.
|
||||
let new_program = program
|
||||
.change_default_units(Some(crate::execution::types::UnitLen::Mm), None)
|
||||
.change_default_units(Some(crate::execution::types::UnitLen::Mm))
|
||||
.unwrap();
|
||||
|
||||
let result = new_program.meta_settings().unwrap();
|
||||
@ -4320,7 +4303,7 @@ startSketchOn(XY)
|
||||
let program = crate::parsing::top_level_parse(code).unwrap();
|
||||
|
||||
let new_program = program
|
||||
.change_default_units(Some(crate::execution::types::UnitLen::Cm), None)
|
||||
.change_default_units(Some(crate::execution::types::UnitLen::Cm))
|
||||
.unwrap();
|
||||
|
||||
let result = new_program.meta_settings().unwrap();
|
||||
|
@ -9,6 +9,7 @@ pub use crate::execution::fn_call::Args;
|
||||
use crate::{
|
||||
errors::{KclError, KclErrorDetails},
|
||||
execution::{
|
||||
annotations,
|
||||
kcl_value::FunctionSource,
|
||||
types::{NumericType, PrimitiveType, RuntimeType, UnitAngle, UnitLen, UnitType},
|
||||
ExecState, ExtrudeSurface, Helix, KclObjectFields, KclValue, Metadata, PlaneInfo, Sketch, SketchSurface, Solid,
|
||||
@ -21,7 +22,7 @@ use crate::{
|
||||
sketch::FaceTag,
|
||||
sweep::SweepPath,
|
||||
},
|
||||
ModuleId,
|
||||
CompilationError, ModuleId,
|
||||
};
|
||||
|
||||
const ERROR_STRING_SKETCH_TO_SOLID_HELPER: &str =
|
||||
@ -56,9 +57,17 @@ impl TyF64 {
|
||||
len.adjust_to(self.n, units).0
|
||||
}
|
||||
|
||||
pub fn to_degrees(&self) -> f64 {
|
||||
pub fn to_degrees(&self, exec_state: &mut ExecState, source_range: SourceRange) -> f64 {
|
||||
let angle = match self.ty {
|
||||
NumericType::Default { angle, .. } => angle,
|
||||
NumericType::Default { angle, .. } => {
|
||||
if self.n != 0.0 {
|
||||
exec_state.warn(
|
||||
CompilationError::err(source_range, "Prefer to use explicit units for angles"),
|
||||
annotations::WARN_ANGLE_UNITS,
|
||||
);
|
||||
}
|
||||
angle
|
||||
}
|
||||
NumericType::Known(UnitType::Angle(angle)) => angle,
|
||||
_ => unreachable!(),
|
||||
};
|
||||
@ -68,9 +77,17 @@ impl TyF64 {
|
||||
angle.adjust_to(self.n, UnitAngle::Degrees).0
|
||||
}
|
||||
|
||||
pub fn to_radians(&self) -> f64 {
|
||||
pub fn to_radians(&self, exec_state: &mut ExecState, source_range: SourceRange) -> f64 {
|
||||
let angle = match self.ty {
|
||||
NumericType::Default { angle, .. } => angle,
|
||||
NumericType::Default { angle, .. } => {
|
||||
if self.n != 0.0 {
|
||||
exec_state.warn(
|
||||
CompilationError::err(source_range, "Prefer to use explicit units for angles"),
|
||||
annotations::WARN_ANGLE_UNITS,
|
||||
);
|
||||
}
|
||||
angle
|
||||
}
|
||||
NumericType::Known(UnitType::Angle(angle)) => angle,
|
||||
_ => unreachable!(),
|
||||
};
|
||||
|
@ -104,8 +104,13 @@ async fn inner_extrude(
|
||||
let cmd = match (&twist_angle, &twist_angle_step, &twist_center) {
|
||||
(Some(angle), angle_step, center) => {
|
||||
let center = center.clone().map(point_to_mm).map(Point2d::from).unwrap_or_default();
|
||||
let total_rotation_angle = Angle::from_degrees(angle.to_degrees());
|
||||
let angle_step_size = Angle::from_degrees(angle_step.clone().map(|a| a.to_degrees()).unwrap_or(15.0));
|
||||
let total_rotation_angle = Angle::from_degrees(angle.to_degrees(exec_state, args.source_range));
|
||||
let angle_step_size = Angle::from_degrees(
|
||||
angle_step
|
||||
.clone()
|
||||
.map(|a| a.to_degrees(exec_state, args.source_range))
|
||||
.unwrap_or(15.0),
|
||||
);
|
||||
ModelingCmd::from(mcmd::TwistExtrude {
|
||||
target: sketch.id.into(),
|
||||
distance: LengthUnit(length.to_mm()),
|
||||
|
@ -5,6 +5,7 @@ use anyhow::Result;
|
||||
use crate::{
|
||||
errors::{KclError, KclErrorDetails},
|
||||
execution::{
|
||||
annotations,
|
||||
types::{ArrayLen, NumericType, RuntimeType},
|
||||
ExecState, KclValue,
|
||||
},
|
||||
@ -33,21 +34,21 @@ pub async fn rem(exec_state: &mut ExecState, args: Args) -> Result<KclValue, Kcl
|
||||
/// Compute the cosine of a number (in radians).
|
||||
pub async fn cos(exec_state: &mut ExecState, args: Args) -> Result<KclValue, KclError> {
|
||||
let num: TyF64 = args.get_unlabeled_kw_arg("input", &RuntimeType::angle(), exec_state)?;
|
||||
let num = num.to_radians();
|
||||
let num = num.to_radians(exec_state, args.source_range);
|
||||
Ok(args.make_user_val_from_f64_with_type(TyF64::new(libm::cos(num), exec_state.current_default_units())))
|
||||
}
|
||||
|
||||
/// Compute the sine of a number (in radians).
|
||||
pub async fn sin(exec_state: &mut ExecState, args: Args) -> Result<KclValue, KclError> {
|
||||
let num: TyF64 = args.get_unlabeled_kw_arg("input", &RuntimeType::angle(), exec_state)?;
|
||||
let num = num.to_radians();
|
||||
let num = num.to_radians(exec_state, args.source_range);
|
||||
Ok(args.make_user_val_from_f64_with_type(TyF64::new(libm::sin(num), exec_state.current_default_units())))
|
||||
}
|
||||
|
||||
/// Compute the tangent of a number (in radians).
|
||||
pub async fn tan(exec_state: &mut ExecState, args: Args) -> Result<KclValue, KclError> {
|
||||
let num: TyF64 = args.get_unlabeled_kw_arg("input", &RuntimeType::angle(), exec_state)?;
|
||||
let num = num.to_radians();
|
||||
let num = num.to_radians(exec_state, args.source_range);
|
||||
Ok(args.make_user_val_from_f64_with_type(TyF64::new(libm::tan(num), exec_state.current_default_units())))
|
||||
}
|
||||
|
||||
@ -114,7 +115,7 @@ pub async fn min(exec_state: &mut ExecState, args: Args) -> Result<KclValue, Kcl
|
||||
exec_state.warn(CompilationError::err(
|
||||
args.source_range,
|
||||
"Calling `min` on numbers which have unknown or incompatible units.\n\nYou may need to add information about the type of the argument, for example:\n using a numeric suffix: `42{ty}`\n or using type ascription: `foo(): number({ty})`",
|
||||
));
|
||||
), annotations::WARN_UNKNOWN_UNITS);
|
||||
}
|
||||
|
||||
let mut result = f64::MAX;
|
||||
@ -139,7 +140,7 @@ pub async fn max(exec_state: &mut ExecState, args: Args) -> Result<KclValue, Kcl
|
||||
exec_state.warn(CompilationError::err(
|
||||
args.source_range,
|
||||
"Calling `max` on numbers which have unknown or incompatible units.\n\nYou may need to add information about the type of the argument, for example:\n using a numeric suffix: `42{ty}`\n or using type ascription: `foo(): number({ty})`",
|
||||
));
|
||||
), annotations::WARN_UNKNOWN_UNITS);
|
||||
}
|
||||
|
||||
let mut result = f64::MIN;
|
||||
@ -189,7 +190,7 @@ pub async fn atan(exec_state: &mut ExecState, args: Args) -> Result<KclValue, Kc
|
||||
pub async fn atan2(exec_state: &mut ExecState, args: Args) -> Result<KclValue, KclError> {
|
||||
let y = args.get_kw_arg("y", &RuntimeType::length(), exec_state)?;
|
||||
let x = args.get_kw_arg("x", &RuntimeType::length(), exec_state)?;
|
||||
let (y, x, _) = NumericType::combine_eq_coerce(y, x);
|
||||
let (y, x, _) = NumericType::combine_eq_coerce(y, x, Some((exec_state, args.source_range)));
|
||||
let result = libm::atan2(y, x);
|
||||
|
||||
Ok(args.make_user_val_from_f64_with_type(TyF64::new(result, NumericType::radians())))
|
||||
@ -236,7 +237,7 @@ pub async fn ln(exec_state: &mut ExecState, args: Args) -> Result<KclValue, KclE
|
||||
pub async fn leg_length(exec_state: &mut ExecState, args: Args) -> Result<KclValue, KclError> {
|
||||
let hypotenuse: TyF64 = args.get_kw_arg("hypotenuse", &RuntimeType::length(), exec_state)?;
|
||||
let leg: TyF64 = args.get_kw_arg("leg", &RuntimeType::length(), exec_state)?;
|
||||
let (hypotenuse, leg, ty) = NumericType::combine_eq_coerce(hypotenuse, leg);
|
||||
let (hypotenuse, leg, ty) = NumericType::combine_eq_coerce(hypotenuse, leg, Some((exec_state, args.source_range)));
|
||||
let result = (hypotenuse.powi(2) - f64::min(hypotenuse.abs(), leg.abs()).powi(2)).sqrt();
|
||||
Ok(KclValue::from_number_with_type(result, ty, vec![args.into()]))
|
||||
}
|
||||
@ -245,7 +246,7 @@ pub async fn leg_length(exec_state: &mut ExecState, args: Args) -> Result<KclVal
|
||||
pub async fn leg_angle_x(exec_state: &mut ExecState, args: Args) -> Result<KclValue, KclError> {
|
||||
let hypotenuse: TyF64 = args.get_kw_arg("hypotenuse", &RuntimeType::length(), exec_state)?;
|
||||
let leg: TyF64 = args.get_kw_arg("leg", &RuntimeType::length(), exec_state)?;
|
||||
let (hypotenuse, leg, _ty) = NumericType::combine_eq_coerce(hypotenuse, leg);
|
||||
let (hypotenuse, leg, _ty) = NumericType::combine_eq_coerce(hypotenuse, leg, Some((exec_state, args.source_range)));
|
||||
let result = libm::acos(leg.min(hypotenuse) / hypotenuse).to_degrees();
|
||||
Ok(KclValue::from_number_with_type(
|
||||
result,
|
||||
@ -258,7 +259,7 @@ pub async fn leg_angle_x(exec_state: &mut ExecState, args: Args) -> Result<KclVa
|
||||
pub async fn leg_angle_y(exec_state: &mut ExecState, args: Args) -> Result<KclValue, KclError> {
|
||||
let hypotenuse: TyF64 = args.get_kw_arg("hypotenuse", &RuntimeType::length(), exec_state)?;
|
||||
let leg: TyF64 = args.get_kw_arg("leg", &RuntimeType::length(), exec_state)?;
|
||||
let (hypotenuse, leg, _ty) = NumericType::combine_eq_coerce(hypotenuse, leg);
|
||||
let (hypotenuse, leg, _ty) = NumericType::combine_eq_coerce(hypotenuse, leg, Some((exec_state, args.source_range)));
|
||||
let result = libm::asin(leg.min(hypotenuse) / hypotenuse).to_degrees();
|
||||
Ok(KclValue::from_number_with_type(
|
||||
result,
|
||||
|
@ -132,6 +132,8 @@ async fn inner_involute_circular(
|
||||
args: Args,
|
||||
) -> Result<Sketch, KclError> {
|
||||
let id = exec_state.next_uuid();
|
||||
let angle_deg = angle.to_degrees(exec_state, args.source_range);
|
||||
let angle_rad = angle.to_radians(exec_state, args.source_range);
|
||||
|
||||
exec_state
|
||||
.batch_modeling_cmd(
|
||||
@ -141,7 +143,7 @@ async fn inner_involute_circular(
|
||||
segment: PathSegment::CircularInvolute {
|
||||
start_radius: LengthUnit(start_radius.to_mm()),
|
||||
end_radius: LengthUnit(end_radius.to_mm()),
|
||||
angle: Angle::from_degrees(angle.to_degrees()),
|
||||
angle: Angle::from_degrees(angle_deg),
|
||||
reverse: reverse.unwrap_or_default(),
|
||||
},
|
||||
}),
|
||||
@ -157,11 +159,11 @@ async fn inner_involute_circular(
|
||||
let theta = f64::sqrt(end_radius * end_radius - start_radius * start_radius) / start_radius;
|
||||
let (x, y) = involute_curve(start_radius, theta);
|
||||
|
||||
end.x = x * libm::cos(angle.to_radians()) - y * libm::sin(angle.to_radians());
|
||||
end.y = x * libm::sin(angle.to_radians()) + y * libm::cos(angle.to_radians());
|
||||
end.x = x * libm::cos(angle_rad) - y * libm::sin(angle_rad);
|
||||
end.y = x * libm::sin(angle_rad) + y * libm::cos(angle_rad);
|
||||
|
||||
end.x -= start_radius * libm::cos(angle.to_radians());
|
||||
end.y -= start_radius * libm::sin(angle.to_radians());
|
||||
end.x -= start_radius * libm::cos(angle_rad);
|
||||
end.y -= start_radius * libm::sin(angle_rad);
|
||||
|
||||
if reverse.unwrap_or_default() {
|
||||
end.x = -end.x;
|
||||
@ -718,7 +720,7 @@ pub async fn inner_angled_line_that_intersects(
|
||||
point_to_len_unit(path.get_to(), from.units),
|
||||
],
|
||||
offset.map(|t| t.to_length_units(from.units)).unwrap_or_default(),
|
||||
angle.to_degrees(),
|
||||
angle.to_degrees(exec_state, args.source_range),
|
||||
from.ignore_units(),
|
||||
);
|
||||
let to = [
|
||||
@ -1256,8 +1258,8 @@ pub async fn relative_arc(
|
||||
radius: TyF64,
|
||||
tag: Option<TagNode>,
|
||||
) -> Result<Sketch, KclError> {
|
||||
let a_start = Angle::from_degrees(angle_start.to_degrees());
|
||||
let a_end = Angle::from_degrees(angle_end.to_degrees());
|
||||
let a_start = Angle::from_degrees(angle_start.to_degrees(exec_state, args.source_range));
|
||||
let a_end = Angle::from_degrees(angle_end.to_degrees(exec_state, args.source_range));
|
||||
let radius = radius.to_length_units(from.units);
|
||||
let (center, end) = arc_center_and_end(from.ignore_units(), a_start, a_end, radius);
|
||||
if a_start == a_end {
|
||||
@ -1409,7 +1411,7 @@ async fn inner_tangential_arc_radius_angle(
|
||||
let (center, to, ccw) = match data {
|
||||
TangentialArcData::RadiusAndOffset { radius, offset } => {
|
||||
// KCL stdlib types use degrees.
|
||||
let offset = Angle::from_degrees(offset.to_degrees());
|
||||
let offset = Angle::from_degrees(offset.to_degrees(exec_state, args.source_range));
|
||||
|
||||
// Calculate the end point from the angle and radius.
|
||||
// atan2 outputs radians.
|
||||
|
@ -6,7 +6,7 @@ use super::args::TyF64;
|
||||
use crate::execution::types::{NumericType, UnitLen};
|
||||
|
||||
pub(crate) fn untype_point(p: [TyF64; 2]) -> ([f64; 2], NumericType) {
|
||||
let (x, y, ty) = NumericType::combine_eq_coerce(p[0].clone(), p[1].clone());
|
||||
let (x, y, ty) = NumericType::combine_eq_coerce(p[0].clone(), p[1].clone(), None);
|
||||
([x, y], ty)
|
||||
}
|
||||
|
||||
|
@ -5571398,7 +5571398,7 @@ description: Artifact commands import_async.kcl
|
||||
"segment": {
|
||||
"type": "line",
|
||||
"end": {
|
||||
"x": -5.816564508980187,
|
||||
"x": -5.816564508980192,
|
||||
"y": 18.856838998639372,
|
||||
"z": 0.0
|
||||
},
|
||||
@ -5571814,7 +5571814,7 @@ description: Artifact commands import_async.kcl
|
||||
"segment": {
|
||||
"type": "line",
|
||||
"end": {
|
||||
"x": -1.6644342460226098,
|
||||
"x": -1.664434246022614,
|
||||
"y": 19.66322604122736,
|
||||
"z": 0.0
|
||||
},
|
||||
|
@ -9,64 +9,64 @@ flowchart LR
|
||||
%% [ProgramBodyItem { index: 2 }, VariableDeclarationDeclaration, VariableDeclarationInit, FunctionExpressionBody, FunctionExpressionBodyItem { index: 10 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 3 }]
|
||||
5["Segment<br>[938, 966, 0]"]
|
||||
%% [ProgramBodyItem { index: 2 }, VariableDeclarationDeclaration, VariableDeclarationInit, FunctionExpressionBody, FunctionExpressionBodyItem { index: 10 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 4 }]
|
||||
6["Segment<br>[974, 1050, 0]"]
|
||||
6["Segment<br>[974, 1056, 0]"]
|
||||
%% [ProgramBodyItem { index: 2 }, VariableDeclarationDeclaration, VariableDeclarationInit, FunctionExpressionBody, FunctionExpressionBodyItem { index: 10 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 5 }]
|
||||
7["Segment<br>[1058, 1123, 0]"]
|
||||
7["Segment<br>[1064, 1132, 0]"]
|
||||
%% [ProgramBodyItem { index: 2 }, VariableDeclarationDeclaration, VariableDeclarationInit, FunctionExpressionBody, FunctionExpressionBodyItem { index: 10 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 6 }]
|
||||
8["Segment<br>[1131, 1138, 0]"]
|
||||
8["Segment<br>[1140, 1147, 0]"]
|
||||
%% [ProgramBodyItem { index: 2 }, VariableDeclarationDeclaration, VariableDeclarationInit, FunctionExpressionBody, FunctionExpressionBodyItem { index: 10 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 7 }]
|
||||
9[Solid2d]
|
||||
end
|
||||
subgraph path11 [Path]
|
||||
11["Path<br>[1643, 1713, 0]"]
|
||||
11["Path<br>[1652, 1722, 0]"]
|
||||
%% [ProgramBodyItem { index: 2 }, VariableDeclarationDeclaration, VariableDeclarationInit, FunctionExpressionBody, FunctionExpressionBodyItem { index: 11 }, VariableDeclarationDeclaration, VariableDeclarationInit, FunctionExpressionBody, FunctionExpressionBodyItem { index: 1 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 1 }]
|
||||
12["Segment<br>[1723, 1889, 0]"]
|
||||
12["Segment<br>[1732, 1898, 0]"]
|
||||
%% [ProgramBodyItem { index: 2 }, VariableDeclarationDeclaration, VariableDeclarationInit, FunctionExpressionBody, FunctionExpressionBodyItem { index: 11 }, VariableDeclarationDeclaration, VariableDeclarationInit, FunctionExpressionBody, FunctionExpressionBodyItem { index: 1 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 2 }]
|
||||
13["Segment<br>[1899, 1984, 0]"]
|
||||
13["Segment<br>[1908, 1993, 0]"]
|
||||
%% [ProgramBodyItem { index: 2 }, VariableDeclarationDeclaration, VariableDeclarationInit, FunctionExpressionBody, FunctionExpressionBodyItem { index: 11 }, VariableDeclarationDeclaration, VariableDeclarationInit, FunctionExpressionBody, FunctionExpressionBodyItem { index: 1 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 3 }]
|
||||
14["Segment<br>[1994, 2215, 0]"]
|
||||
14["Segment<br>[2003, 2224, 0]"]
|
||||
%% [ProgramBodyItem { index: 2 }, VariableDeclarationDeclaration, VariableDeclarationInit, FunctionExpressionBody, FunctionExpressionBodyItem { index: 11 }, VariableDeclarationDeclaration, VariableDeclarationInit, FunctionExpressionBody, FunctionExpressionBodyItem { index: 1 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 4 }]
|
||||
15["Segment<br>[2302, 2388, 0]"]
|
||||
15["Segment<br>[2311, 2400, 0]"]
|
||||
%% [ProgramBodyItem { index: 2 }, VariableDeclarationDeclaration, VariableDeclarationInit, FunctionExpressionBody, FunctionExpressionBodyItem { index: 11 }, VariableDeclarationDeclaration, VariableDeclarationInit, FunctionExpressionBody, FunctionExpressionBodyItem { index: 1 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 5 }]
|
||||
16["Segment<br>[2677, 2684, 0]"]
|
||||
16["Segment<br>[2692, 2699, 0]"]
|
||||
%% [ProgramBodyItem { index: 2 }, VariableDeclarationDeclaration, VariableDeclarationInit, FunctionExpressionBody, FunctionExpressionBodyItem { index: 11 }, VariableDeclarationDeclaration, VariableDeclarationInit, FunctionExpressionBody, FunctionExpressionBodyItem { index: 1 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 7 }]
|
||||
17[Solid2d]
|
||||
end
|
||||
subgraph path19 [Path]
|
||||
19["Path<br>[1643, 1713, 0]"]
|
||||
19["Path<br>[1652, 1722, 0]"]
|
||||
%% [ProgramBodyItem { index: 2 }, VariableDeclarationDeclaration, VariableDeclarationInit, FunctionExpressionBody, FunctionExpressionBodyItem { index: 11 }, VariableDeclarationDeclaration, VariableDeclarationInit, FunctionExpressionBody, FunctionExpressionBodyItem { index: 1 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 1 }]
|
||||
20["Segment<br>[1723, 1889, 0]"]
|
||||
20["Segment<br>[1732, 1898, 0]"]
|
||||
%% [ProgramBodyItem { index: 2 }, VariableDeclarationDeclaration, VariableDeclarationInit, FunctionExpressionBody, FunctionExpressionBodyItem { index: 11 }, VariableDeclarationDeclaration, VariableDeclarationInit, FunctionExpressionBody, FunctionExpressionBodyItem { index: 1 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 2 }]
|
||||
21["Segment<br>[1899, 1984, 0]"]
|
||||
21["Segment<br>[1908, 1993, 0]"]
|
||||
%% [ProgramBodyItem { index: 2 }, VariableDeclarationDeclaration, VariableDeclarationInit, FunctionExpressionBody, FunctionExpressionBodyItem { index: 11 }, VariableDeclarationDeclaration, VariableDeclarationInit, FunctionExpressionBody, FunctionExpressionBodyItem { index: 1 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 3 }]
|
||||
22["Segment<br>[1994, 2215, 0]"]
|
||||
22["Segment<br>[2003, 2224, 0]"]
|
||||
%% [ProgramBodyItem { index: 2 }, VariableDeclarationDeclaration, VariableDeclarationInit, FunctionExpressionBody, FunctionExpressionBodyItem { index: 11 }, VariableDeclarationDeclaration, VariableDeclarationInit, FunctionExpressionBody, FunctionExpressionBodyItem { index: 1 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 4 }]
|
||||
23["Segment<br>[2302, 2388, 0]"]
|
||||
23["Segment<br>[2311, 2400, 0]"]
|
||||
%% [ProgramBodyItem { index: 2 }, VariableDeclarationDeclaration, VariableDeclarationInit, FunctionExpressionBody, FunctionExpressionBodyItem { index: 11 }, VariableDeclarationDeclaration, VariableDeclarationInit, FunctionExpressionBody, FunctionExpressionBodyItem { index: 1 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 5 }]
|
||||
24["Segment<br>[2677, 2684, 0]"]
|
||||
24["Segment<br>[2692, 2699, 0]"]
|
||||
%% [ProgramBodyItem { index: 2 }, VariableDeclarationDeclaration, VariableDeclarationInit, FunctionExpressionBody, FunctionExpressionBodyItem { index: 11 }, VariableDeclarationDeclaration, VariableDeclarationInit, FunctionExpressionBody, FunctionExpressionBodyItem { index: 1 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 7 }]
|
||||
25[Solid2d]
|
||||
end
|
||||
subgraph path27 [Path]
|
||||
27["Path<br>[1643, 1713, 0]"]
|
||||
27["Path<br>[1652, 1722, 0]"]
|
||||
%% [ProgramBodyItem { index: 2 }, VariableDeclarationDeclaration, VariableDeclarationInit, FunctionExpressionBody, FunctionExpressionBodyItem { index: 11 }, VariableDeclarationDeclaration, VariableDeclarationInit, FunctionExpressionBody, FunctionExpressionBodyItem { index: 1 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 1 }]
|
||||
32["Segment<br>[2677, 2684, 0]"]
|
||||
32["Segment<br>[2692, 2699, 0]"]
|
||||
%% [ProgramBodyItem { index: 2 }, VariableDeclarationDeclaration, VariableDeclarationInit, FunctionExpressionBody, FunctionExpressionBodyItem { index: 11 }, VariableDeclarationDeclaration, VariableDeclarationInit, FunctionExpressionBody, FunctionExpressionBodyItem { index: 1 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 7 }]
|
||||
33[Solid2d]
|
||||
end
|
||||
1["Plane<br>[728, 745, 0]"]
|
||||
%% [ProgramBodyItem { index: 2 }, VariableDeclarationDeclaration, VariableDeclarationInit, FunctionExpressionBody, FunctionExpressionBodyItem { index: 10 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 0 }]
|
||||
10["Plane<br>[1594, 1632, 0]"]
|
||||
10["Plane<br>[1603, 1641, 0]"]
|
||||
%% [ProgramBodyItem { index: 2 }, VariableDeclarationDeclaration, VariableDeclarationInit, FunctionExpressionBody, FunctionExpressionBodyItem { index: 11 }, VariableDeclarationDeclaration, VariableDeclarationInit, FunctionExpressionBody, FunctionExpressionBodyItem { index: 1 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 0 }, CallKwUnlabeledArg]
|
||||
18["Plane<br>[1594, 1632, 0]"]
|
||||
18["Plane<br>[1603, 1641, 0]"]
|
||||
%% [ProgramBodyItem { index: 2 }, VariableDeclarationDeclaration, VariableDeclarationInit, FunctionExpressionBody, FunctionExpressionBodyItem { index: 11 }, VariableDeclarationDeclaration, VariableDeclarationInit, FunctionExpressionBody, FunctionExpressionBodyItem { index: 1 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 0 }, CallKwUnlabeledArg]
|
||||
26["Plane<br>[1594, 1632, 0]"]
|
||||
26["Plane<br>[1603, 1641, 0]"]
|
||||
%% [ProgramBodyItem { index: 2 }, VariableDeclarationDeclaration, VariableDeclarationInit, FunctionExpressionBody, FunctionExpressionBodyItem { index: 11 }, VariableDeclarationDeclaration, VariableDeclarationInit, FunctionExpressionBody, FunctionExpressionBodyItem { index: 1 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 0 }, CallKwUnlabeledArg]
|
||||
28["SweepEdge Opposite"]
|
||||
29["SweepEdge Opposite"]
|
||||
30["SweepEdge Opposite"]
|
||||
31["SweepEdge Opposite"]
|
||||
34["Sweep Loft<br>[3201, 3268, 0]"]
|
||||
34["Sweep Loft<br>[3216, 3283, 0]"]
|
||||
%% [ProgramBodyItem { index: 2 }, VariableDeclarationDeclaration, VariableDeclarationInit, FunctionExpressionBody, FunctionExpressionBodyItem { index: 15 }, VariableDeclarationDeclaration, VariableDeclarationInit]
|
||||
35[Wall]
|
||||
%% face_code_ref=Missing NodePath
|
||||
@ -84,11 +84,11 @@ flowchart LR
|
||||
42["SweepEdge Adjacent"]
|
||||
43["SweepEdge Adjacent"]
|
||||
44["SweepEdge Adjacent"]
|
||||
45["StartSketchOnPlane<br>[1580, 1633, 0]"]
|
||||
45["StartSketchOnPlane<br>[1589, 1642, 0]"]
|
||||
%% [ProgramBodyItem { index: 2 }, VariableDeclarationDeclaration, VariableDeclarationInit, FunctionExpressionBody, FunctionExpressionBodyItem { index: 11 }, VariableDeclarationDeclaration, VariableDeclarationInit, FunctionExpressionBody, FunctionExpressionBodyItem { index: 1 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 0 }]
|
||||
46["StartSketchOnPlane<br>[1580, 1633, 0]"]
|
||||
46["StartSketchOnPlane<br>[1589, 1642, 0]"]
|
||||
%% [ProgramBodyItem { index: 2 }, VariableDeclarationDeclaration, VariableDeclarationInit, FunctionExpressionBody, FunctionExpressionBodyItem { index: 11 }, VariableDeclarationDeclaration, VariableDeclarationInit, FunctionExpressionBody, FunctionExpressionBodyItem { index: 1 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 0 }]
|
||||
47["StartSketchOnPlane<br>[1580, 1633, 0]"]
|
||||
47["StartSketchOnPlane<br>[1589, 1642, 0]"]
|
||||
%% [ProgramBodyItem { index: 2 }, VariableDeclarationDeclaration, VariableDeclarationInit, FunctionExpressionBody, FunctionExpressionBodyItem { index: 11 }, VariableDeclarationDeclaration, VariableDeclarationInit, FunctionExpressionBody, FunctionExpressionBodyItem { index: 1 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 0 }]
|
||||
1 --- 2
|
||||
2 --- 3
|
||||
|
@ -1179,13 +1179,13 @@ description: Result of parsing import_async.kcl
|
||||
"right": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"raw": "360",
|
||||
"raw": "360deg",
|
||||
"start": 0,
|
||||
"type": "Literal",
|
||||
"type": "Literal",
|
||||
"value": {
|
||||
"value": 360.0,
|
||||
"suffix": "None"
|
||||
"suffix": "Deg"
|
||||
}
|
||||
},
|
||||
"start": 0,
|
||||
@ -1205,13 +1205,13 @@ description: Result of parsing import_async.kcl
|
||||
"arg": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"raw": "180",
|
||||
"raw": "180deg",
|
||||
"start": 0,
|
||||
"type": "Literal",
|
||||
"type": "Literal",
|
||||
"value": {
|
||||
"value": 180.0,
|
||||
"suffix": "None"
|
||||
"suffix": "Deg"
|
||||
}
|
||||
}
|
||||
},
|
||||
@ -1278,13 +1278,13 @@ description: Result of parsing import_async.kcl
|
||||
"arg": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"raw": "180",
|
||||
"raw": "180deg",
|
||||
"start": 0,
|
||||
"type": "Literal",
|
||||
"type": "Literal",
|
||||
"value": {
|
||||
"value": 180.0,
|
||||
"suffix": "None"
|
||||
"suffix": "Deg"
|
||||
}
|
||||
}
|
||||
},
|
||||
@ -2518,13 +2518,13 @@ description: Result of parsing import_async.kcl
|
||||
"left": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"raw": "360",
|
||||
"raw": "360deg",
|
||||
"start": 0,
|
||||
"type": "Literal",
|
||||
"type": "Literal",
|
||||
"value": {
|
||||
"value": 360.0,
|
||||
"suffix": "None"
|
||||
"suffix": "Deg"
|
||||
}
|
||||
},
|
||||
"operator": "/",
|
||||
@ -2746,13 +2746,13 @@ description: Result of parsing import_async.kcl
|
||||
"arg": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"raw": "360",
|
||||
"raw": "360deg",
|
||||
"start": 0,
|
||||
"type": "Literal",
|
||||
"type": "Literal",
|
||||
"value": {
|
||||
"value": 360.0,
|
||||
"suffix": "None"
|
||||
"suffix": "Deg"
|
||||
}
|
||||
}
|
||||
},
|
||||
@ -3514,13 +3514,13 @@ description: Result of parsing import_async.kcl
|
||||
"arg": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"raw": "20",
|
||||
"raw": "20deg",
|
||||
"start": 0,
|
||||
"type": "Literal",
|
||||
"type": "Literal",
|
||||
"value": {
|
||||
"value": 20.0,
|
||||
"suffix": "None"
|
||||
"suffix": "Deg"
|
||||
}
|
||||
}
|
||||
},
|
||||
@ -3536,13 +3536,13 @@ description: Result of parsing import_async.kcl
|
||||
"arg": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"raw": "35",
|
||||
"raw": "35deg",
|
||||
"start": 0,
|
||||
"type": "Literal",
|
||||
"type": "Literal",
|
||||
"value": {
|
||||
"value": 35.0,
|
||||
"suffix": "None"
|
||||
"suffix": "Deg"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
@ -30,8 +30,8 @@ fn helicalGear(nTeeth, module, pressureAngle, helixAngle, gearHeight) {
|
||||
|> xLine(length = keywayDepth)
|
||||
|> yLine(length = -keywayWidth)
|
||||
|> xLine(length = -keywayDepth)
|
||||
|> arc(angleStart = -1 * startAngle + 360, angleEnd = 180, radius = holeRadius)
|
||||
|> arc(angleStart = 180, angleEnd = startAngle, radius = holeRadius)
|
||||
|> arc(angleStart = -1 * startAngle + 360deg, angleEnd = 180deg, radius = holeRadius)
|
||||
|> arc(angleStart = 180deg, angleEnd = startAngle, radius = holeRadius)
|
||||
|> close()
|
||||
|
||||
// Define a function to create a rotated gear sketch on an offset plane
|
||||
@ -57,14 +57,14 @@ fn helicalGear(nTeeth, module, pressureAngle, helixAngle, gearHeight) {
|
||||
)
|
||||
|
||||
// Position the end line of the sketch at the start of the next tooth
|
||||
|> line(endAbsolute = polar(angle = 360 / nTeeth + helixCalc, length = baseDiameter / 2))
|
||||
|> line(endAbsolute = polar(angle = 360deg / nTeeth + helixCalc, length = baseDiameter / 2))
|
||||
|
||||
// Pattern the sketch about the center by the specified number of teeth, then close the sketch
|
||||
|> patternCircular2d(
|
||||
%,
|
||||
instances = nTeeth,
|
||||
center = [0, 0],
|
||||
arcDegrees = 360,
|
||||
arcDegrees = 360deg,
|
||||
rotateDuplicates = true,
|
||||
)
|
||||
|> close()
|
||||
@ -94,8 +94,8 @@ fn helicalGear(nTeeth, module, pressureAngle, helixAngle, gearHeight) {
|
||||
helicalGear(
|
||||
nTeeth = 21,
|
||||
module = 2,
|
||||
pressureAngle = 20,
|
||||
helixAngle = 35,
|
||||
pressureAngle = 20deg,
|
||||
helixAngle = 35deg,
|
||||
gearHeight = 7,
|
||||
)
|
||||
|
||||
|
@ -54,13 +54,9 @@ description: Operations executed import_async.kcl
|
||||
"type": "Number",
|
||||
"value": 35.0,
|
||||
"ty": {
|
||||
"type": "Default",
|
||||
"len": {
|
||||
"type": "Mm"
|
||||
},
|
||||
"angle": {
|
||||
"type": "Degrees"
|
||||
}
|
||||
"type": "Known",
|
||||
"type": "Angle",
|
||||
"type": "Degrees"
|
||||
}
|
||||
},
|
||||
"sourceRange": []
|
||||
@ -102,13 +98,9 @@ description: Operations executed import_async.kcl
|
||||
"type": "Number",
|
||||
"value": 20.0,
|
||||
"ty": {
|
||||
"type": "Default",
|
||||
"len": {
|
||||
"type": "Mm"
|
||||
},
|
||||
"angle": {
|
||||
"type": "Degrees"
|
||||
}
|
||||
"type": "Known",
|
||||
"type": "Angle",
|
||||
"type": "Degrees"
|
||||
}
|
||||
},
|
||||
"sourceRange": []
|
||||
@ -1153,7 +1145,7 @@ description: Operations executed import_async.kcl
|
||||
"angle": {
|
||||
"value": {
|
||||
"type": "Number",
|
||||
"value": 1.8699956271367815,
|
||||
"value": 1.8699956271367817,
|
||||
"ty": {
|
||||
"type": "Known",
|
||||
"type": "Angle",
|
||||
@ -1235,7 +1227,7 @@ description: Operations executed import_async.kcl
|
||||
"name": "x",
|
||||
"value": {
|
||||
"type": "Number",
|
||||
"value": -5.816564508980187,
|
||||
"value": -5.816564508980192,
|
||||
"ty": {
|
||||
"type": "Default",
|
||||
"len": {
|
||||
@ -2595,7 +2587,7 @@ description: Operations executed import_async.kcl
|
||||
"angle": {
|
||||
"value": {
|
||||
"type": "Number",
|
||||
"value": 1.655242081157069,
|
||||
"value": 1.6552420811570692,
|
||||
"ty": {
|
||||
"type": "Known",
|
||||
"type": "Angle",
|
||||
@ -2677,7 +2669,7 @@ description: Operations executed import_async.kcl
|
||||
"name": "x",
|
||||
"value": {
|
||||
"type": "Number",
|
||||
"value": -1.6644342460226098,
|
||||
"value": -1.664434246022614,
|
||||
"ty": {
|
||||
"type": "Default",
|
||||
"len": {
|
||||
|
@ -34,8 +34,8 @@ fn helicalGear(nTeeth, module, pressureAngle, helixAngle, gearHeight) {
|
||||
|> xLine(length = keywayDepth)
|
||||
|> yLine(length = -keywayWidth)
|
||||
|> xLine(length = -keywayDepth)
|
||||
|> arc(angleStart = -1 * startAngle + 360, angleEnd = 180, radius = holeRadius)
|
||||
|> arc(angleStart = 180, angleEnd = startAngle, radius = holeRadius)
|
||||
|> arc(angleStart = -1 * startAngle + 360deg, angleEnd = 180deg, radius = holeRadius)
|
||||
|> arc(angleStart = 180deg, angleEnd = startAngle, radius = holeRadius)
|
||||
|> close()
|
||||
|
||||
// Define a function to create a rotated gear sketch on an offset plane
|
||||
@ -61,14 +61,14 @@ fn helicalGear(nTeeth, module, pressureAngle, helixAngle, gearHeight) {
|
||||
)
|
||||
|
||||
// Position the end line of the sketch at the start of the next tooth
|
||||
|> line(endAbsolute = polar(angle = 360 / nTeeth + helixCalc, length = baseDiameter / 2))
|
||||
|> line(endAbsolute = polar(angle = 360deg / nTeeth + helixCalc, length = baseDiameter / 2))
|
||||
|
||||
// Pattern the sketch about the center by the specified number of teeth, then close the sketch
|
||||
|> patternCircular2d(
|
||||
%,
|
||||
instances = nTeeth,
|
||||
center = [0, 0],
|
||||
arcDegrees = 360,
|
||||
arcDegrees = 360deg,
|
||||
rotateDuplicates = true,
|
||||
)
|
||||
|> close()
|
||||
@ -98,8 +98,8 @@ fn helicalGear(nTeeth, module, pressureAngle, helixAngle, gearHeight) {
|
||||
helicalGear(
|
||||
nTeeth = 21,
|
||||
module = 2,
|
||||
pressureAngle = 20,
|
||||
helixAngle = 35,
|
||||
pressureAngle = 20deg,
|
||||
helixAngle = 35deg,
|
||||
gearHeight = 7,
|
||||
)
|
||||
|
||||
|
@ -1,34 +1,34 @@
|
||||
```mermaid
|
||||
flowchart LR
|
||||
subgraph path2 [Path]
|
||||
2["Path<br>[335, 375, 0]"]
|
||||
2["Path<br>[338, 378, 0]"]
|
||||
%% [ProgramBodyItem { index: 10 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 1 }]
|
||||
3["Segment<br>[381, 519, 0]"]
|
||||
3["Segment<br>[384, 522, 0]"]
|
||||
%% [ProgramBodyItem { index: 10 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 2 }]
|
||||
4["Segment<br>[525, 571, 0]"]
|
||||
4["Segment<br>[528, 574, 0]"]
|
||||
%% [ProgramBodyItem { index: 10 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 3 }]
|
||||
5["Segment<br>[577, 722, 0]"]
|
||||
5["Segment<br>[580, 728, 0]"]
|
||||
%% [ProgramBodyItem { index: 10 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 4 }]
|
||||
6["Segment<br>[728, 870, 0]"]
|
||||
6["Segment<br>[734, 879, 0]"]
|
||||
%% [ProgramBodyItem { index: 10 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 5 }]
|
||||
7["Segment<br>[876, 922, 0]"]
|
||||
7["Segment<br>[885, 931, 0]"]
|
||||
%% [ProgramBodyItem { index: 10 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 6 }]
|
||||
8["Segment<br>[928, 1002, 0]"]
|
||||
8["Segment<br>[937, 1014, 0]"]
|
||||
%% [ProgramBodyItem { index: 10 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 7 }]
|
||||
9["Segment<br>[1157, 1164, 0]"]
|
||||
9["Segment<br>[1172, 1179, 0]"]
|
||||
%% [ProgramBodyItem { index: 10 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 9 }]
|
||||
10[Solid2d]
|
||||
end
|
||||
subgraph path11 [Path]
|
||||
11["Path<br>[1188, 1223, 0]"]
|
||||
11["Path<br>[1203, 1238, 0]"]
|
||||
%% [ProgramBodyItem { index: 10 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 10 }, CallKwArg { index: 0 }]
|
||||
12["Segment<br>[1188, 1223, 0]"]
|
||||
12["Segment<br>[1203, 1238, 0]"]
|
||||
%% [ProgramBodyItem { index: 10 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 10 }, CallKwArg { index: 0 }]
|
||||
13[Solid2d]
|
||||
end
|
||||
1["Plane<br>[312, 329, 0]"]
|
||||
1["Plane<br>[315, 332, 0]"]
|
||||
%% [ProgramBodyItem { index: 10 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 0 }]
|
||||
14["Sweep Extrusion<br>[1230, 1258, 0]"]
|
||||
14["Sweep Extrusion<br>[1245, 1273, 0]"]
|
||||
%% [ProgramBodyItem { index: 10 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 11 }]
|
||||
15[Wall]
|
||||
%% face_code_ref=Missing NodePath
|
||||
|
@ -1,6 +1,5 @@
|
||||
---
|
||||
source: kcl-lib/src/simulation_tests.rs
|
||||
assertion_line: 87
|
||||
description: Result of parsing involute_circular_units.kcl
|
||||
---
|
||||
{
|
||||
@ -475,13 +474,13 @@ description: Result of parsing involute_circular_units.kcl
|
||||
"init": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"raw": "6",
|
||||
"raw": "6deg",
|
||||
"start": 0,
|
||||
"type": "Literal",
|
||||
"type": "Literal",
|
||||
"value": {
|
||||
"value": 6.0,
|
||||
"suffix": "None"
|
||||
"suffix": "Deg"
|
||||
}
|
||||
},
|
||||
"start": 0,
|
||||
@ -1026,13 +1025,13 @@ description: Result of parsing involute_circular_units.kcl
|
||||
"arg": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"raw": "9",
|
||||
"raw": "9deg",
|
||||
"start": 0,
|
||||
"type": "Literal",
|
||||
"type": "Literal",
|
||||
"value": {
|
||||
"value": 9.0,
|
||||
"suffix": "None"
|
||||
"suffix": "Deg"
|
||||
}
|
||||
}
|
||||
},
|
||||
@ -1230,13 +1229,13 @@ description: Result of parsing involute_circular_units.kcl
|
||||
"argument": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"raw": "12",
|
||||
"raw": "12deg",
|
||||
"start": 0,
|
||||
"type": "Literal",
|
||||
"type": "Literal",
|
||||
"value": {
|
||||
"value": 12.0,
|
||||
"suffix": "None"
|
||||
"suffix": "Deg"
|
||||
}
|
||||
},
|
||||
"commentStart": 0,
|
||||
@ -1419,13 +1418,13 @@ description: Result of parsing involute_circular_units.kcl
|
||||
"left": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"raw": "360",
|
||||
"raw": "360deg",
|
||||
"start": 0,
|
||||
"type": "Literal",
|
||||
"type": "Literal",
|
||||
"value": {
|
||||
"value": 360.0,
|
||||
"suffix": "None"
|
||||
"suffix": "Deg"
|
||||
}
|
||||
},
|
||||
"operator": "/",
|
||||
@ -1626,13 +1625,13 @@ description: Result of parsing involute_circular_units.kcl
|
||||
"arg": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"raw": "360",
|
||||
"raw": "360deg",
|
||||
"start": 0,
|
||||
"type": "Literal",
|
||||
"type": "Literal",
|
||||
"value": {
|
||||
"value": 360.0,
|
||||
"suffix": "None"
|
||||
"suffix": "Deg"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
@ -11,7 +11,7 @@ baseDiameter = pitchDiameter * cos(pressureAngle)
|
||||
tipDiameter = pitchDiameter + 2 * module
|
||||
gearHeight = .3
|
||||
|
||||
angle001 = 6
|
||||
angle001 = 6deg
|
||||
sketch001 = startSketchOn(XY)
|
||||
|> startProfile(at = [baseDiameter / 2, 0])
|
||||
|> involuteCircular(
|
||||
@ -23,23 +23,23 @@ sketch001 = startSketchOn(XY)
|
||||
|> line(endAbsolute = [lastSegX(%), lastSegY(%)])
|
||||
|> arc(
|
||||
angleStart = asin(segEndY(seg01) / segEndX(seg01)),
|
||||
angleEnd = 9,
|
||||
angleEnd = 9deg,
|
||||
radius = tipDiameter / 2,
|
||||
tag = $seg02,
|
||||
)
|
||||
|> involuteCircular(
|
||||
startRadius = baseDiameter / 2,
|
||||
endRadius = tipDiameter / 2,
|
||||
angle = -12,
|
||||
angle = -12deg,
|
||||
reverse = true,
|
||||
)
|
||||
|> line(endAbsolute = [lastSegX(%), lastSegY(%)])
|
||||
|> line(endAbsolute = polar(angle = 360 / nTeeth, length = baseDiameter / 2))
|
||||
|> line(endAbsolute = polar(angle = 360deg / nTeeth, length = baseDiameter / 2))
|
||||
|> patternCircular2d(
|
||||
%,
|
||||
instances = nTeeth,
|
||||
center = [0, 0],
|
||||
arcDegrees = 360,
|
||||
arcDegrees = 360deg,
|
||||
rotateDuplicates = true,
|
||||
)
|
||||
|> close()
|
||||
|
@ -304,13 +304,9 @@ description: Operations executed involute_circular_units.kcl
|
||||
"type": "Number",
|
||||
"value": 6.0,
|
||||
"ty": {
|
||||
"type": "Default",
|
||||
"len": {
|
||||
"type": "Cm"
|
||||
},
|
||||
"angle": {
|
||||
"type": "Degrees"
|
||||
}
|
||||
"type": "Known",
|
||||
"type": "Angle",
|
||||
"type": "Degrees"
|
||||
}
|
||||
},
|
||||
"visibility": "default",
|
||||
|
@ -20,13 +20,9 @@ description: Variables in memory after executing involute_circular_units.kcl
|
||||
"type": "Number",
|
||||
"value": 6.0,
|
||||
"ty": {
|
||||
"type": "Default",
|
||||
"len": {
|
||||
"type": "Cm"
|
||||
},
|
||||
"angle": {
|
||||
"type": "Degrees"
|
||||
}
|
||||
"type": "Known",
|
||||
"type": "Angle",
|
||||
"type": "Degrees"
|
||||
}
|
||||
},
|
||||
"baseDiameter": {
|
||||
@ -138,9 +134,9 @@ description: Variables in memory after executing involute_circular_units.kcl
|
||||
"id": "[uuid]",
|
||||
"sourceRange": [],
|
||||
"tag": {
|
||||
"commentStart": 505,
|
||||
"end": 511,
|
||||
"start": 505,
|
||||
"commentStart": 508,
|
||||
"end": 514,
|
||||
"start": 508,
|
||||
"type": "TagDeclarator",
|
||||
"value": "seg01"
|
||||
},
|
||||
@ -158,9 +154,9 @@ description: Variables in memory after executing involute_circular_units.kcl
|
||||
"id": "[uuid]",
|
||||
"sourceRange": [],
|
||||
"tag": {
|
||||
"commentStart": 708,
|
||||
"end": 714,
|
||||
"start": 708,
|
||||
"commentStart": 714,
|
||||
"end": 720,
|
||||
"start": 714,
|
||||
"type": "TagDeclarator",
|
||||
"value": "seg02"
|
||||
},
|
||||
@ -202,9 +198,9 @@ description: Variables in memory after executing involute_circular_units.kcl
|
||||
0.0
|
||||
],
|
||||
"tag": {
|
||||
"commentStart": 505,
|
||||
"end": 511,
|
||||
"start": 505,
|
||||
"commentStart": 508,
|
||||
"end": 514,
|
||||
"start": 508,
|
||||
"type": "TagDeclarator",
|
||||
"value": "seg01"
|
||||
},
|
||||
@ -252,9 +248,9 @@ description: Variables in memory after executing involute_circular_units.kcl
|
||||
],
|
||||
"radius": 5.75,
|
||||
"tag": {
|
||||
"commentStart": 708,
|
||||
"end": 714,
|
||||
"start": 708,
|
||||
"commentStart": 714,
|
||||
"end": 720,
|
||||
"start": 714,
|
||||
"type": "TagDeclarator",
|
||||
"value": "seg02"
|
||||
},
|
||||
|
@ -1,6 +1,5 @@
|
||||
---
|
||||
source: kcl-lib/src/simulation_tests.rs
|
||||
assertion_line: 109
|
||||
description: Result of unparsing involute_circular_units.kcl
|
||||
---
|
||||
@settings(defaultLengthUnit = cm)
|
||||
@ -16,7 +15,7 @@ baseDiameter = pitchDiameter * cos(pressureAngle)
|
||||
tipDiameter = pitchDiameter + 2 * module
|
||||
gearHeight = .3
|
||||
|
||||
angle001 = 6
|
||||
angle001 = 6deg
|
||||
sketch001 = startSketchOn(XY)
|
||||
|> startProfile(at = [baseDiameter / 2, 0])
|
||||
|> involuteCircular(
|
||||
@ -28,23 +27,23 @@ sketch001 = startSketchOn(XY)
|
||||
|> line(endAbsolute = [lastSegX(%), lastSegY(%)])
|
||||
|> arc(
|
||||
angleStart = asin(segEndY(seg01) / segEndX(seg01)),
|
||||
angleEnd = 9,
|
||||
angleEnd = 9deg,
|
||||
radius = tipDiameter / 2,
|
||||
tag = $seg02,
|
||||
)
|
||||
|> involuteCircular(
|
||||
startRadius = baseDiameter / 2,
|
||||
endRadius = tipDiameter / 2,
|
||||
angle = -12,
|
||||
angle = -12deg,
|
||||
reverse = true,
|
||||
)
|
||||
|> line(endAbsolute = [lastSegX(%), lastSegY(%)])
|
||||
|> line(endAbsolute = polar(angle = 360 / nTeeth, length = baseDiameter / 2))
|
||||
|> line(endAbsolute = polar(angle = 360deg / nTeeth, length = baseDiameter / 2))
|
||||
|> patternCircular2d(
|
||||
%,
|
||||
instances = nTeeth,
|
||||
center = [0, 0],
|
||||
arcDegrees = 360,
|
||||
arcDegrees = 360deg,
|
||||
rotateDuplicates = true,
|
||||
)
|
||||
|> close()
|
||||
|
@ -1135,13 +1135,13 @@ description: Result of parsing ball-bearing.kcl
|
||||
"arg": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"raw": "180",
|
||||
"raw": "180deg",
|
||||
"start": 0,
|
||||
"type": "Literal",
|
||||
"type": "Literal",
|
||||
"value": {
|
||||
"value": 180.0,
|
||||
"suffix": "None"
|
||||
"suffix": "Deg"
|
||||
}
|
||||
}
|
||||
},
|
||||
@ -1868,13 +1868,13 @@ description: Result of parsing ball-bearing.kcl
|
||||
"unlabeled": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"raw": "60",
|
||||
"raw": "60deg",
|
||||
"start": 0,
|
||||
"type": "Literal",
|
||||
"type": "Literal",
|
||||
"value": {
|
||||
"value": 60.0,
|
||||
"suffix": "None"
|
||||
"suffix": "Deg"
|
||||
}
|
||||
}
|
||||
},
|
||||
@ -1926,13 +1926,13 @@ description: Result of parsing ball-bearing.kcl
|
||||
"arg": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"raw": "120",
|
||||
"raw": "120deg",
|
||||
"start": 0,
|
||||
"type": "Literal",
|
||||
"type": "Literal",
|
||||
"value": {
|
||||
"value": 120.0,
|
||||
"suffix": "None"
|
||||
"suffix": "Deg"
|
||||
}
|
||||
}
|
||||
},
|
||||
@ -1948,13 +1948,13 @@ description: Result of parsing ball-bearing.kcl
|
||||
"arg": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"raw": "60",
|
||||
"raw": "60deg",
|
||||
"start": 0,
|
||||
"type": "Literal",
|
||||
"type": "Literal",
|
||||
"value": {
|
||||
"value": 60.0,
|
||||
"suffix": "None"
|
||||
"suffix": "Deg"
|
||||
}
|
||||
}
|
||||
},
|
||||
@ -2330,13 +2330,13 @@ description: Result of parsing ball-bearing.kcl
|
||||
"arg": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"raw": "360",
|
||||
"raw": "360deg",
|
||||
"start": 0,
|
||||
"type": "Literal",
|
||||
"type": "Literal",
|
||||
"value": {
|
||||
"value": 360.0,
|
||||
"suffix": "None"
|
||||
"suffix": "Deg"
|
||||
}
|
||||
}
|
||||
},
|
||||
@ -2901,13 +2901,13 @@ description: Result of parsing ball-bearing.kcl
|
||||
"left": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"raw": "360",
|
||||
"raw": "360deg",
|
||||
"start": 0,
|
||||
"type": "Literal",
|
||||
"type": "Literal",
|
||||
"value": {
|
||||
"value": 360.0,
|
||||
"suffix": "None"
|
||||
"suffix": "Deg"
|
||||
}
|
||||
},
|
||||
"operator": "/",
|
||||
@ -2984,13 +2984,13 @@ description: Result of parsing ball-bearing.kcl
|
||||
"arg": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"raw": "360",
|
||||
"raw": "360deg",
|
||||
"start": 0,
|
||||
"type": "Literal",
|
||||
"type": "Literal",
|
||||
"value": {
|
||||
"value": 360.0,
|
||||
"suffix": "None"
|
||||
"suffix": "Deg"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
@ -1140,13 +1140,9 @@ description: Operations executed ball-bearing.kcl
|
||||
"type": "Number",
|
||||
"value": 36.0,
|
||||
"ty": {
|
||||
"type": "Default",
|
||||
"len": {
|
||||
"type": "Inches"
|
||||
},
|
||||
"angle": {
|
||||
"type": "Degrees"
|
||||
}
|
||||
"type": "Known",
|
||||
"type": "Angle",
|
||||
"type": "Degrees"
|
||||
}
|
||||
},
|
||||
"sourceRange": []
|
||||
|
@ -429,13 +429,13 @@ description: Result of parsing brake-rotor.kcl
|
||||
"init": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"raw": "90",
|
||||
"raw": "90deg",
|
||||
"start": 0,
|
||||
"type": "Literal",
|
||||
"type": "Literal",
|
||||
"value": {
|
||||
"value": 90.0,
|
||||
"suffix": "None"
|
||||
"suffix": "Deg"
|
||||
}
|
||||
},
|
||||
"start": 0,
|
||||
@ -462,13 +462,13 @@ description: Result of parsing brake-rotor.kcl
|
||||
"init": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"raw": "30",
|
||||
"raw": "30deg",
|
||||
"start": 0,
|
||||
"type": "Literal",
|
||||
"type": "Literal",
|
||||
"value": {
|
||||
"value": 30.0,
|
||||
"suffix": "None"
|
||||
"suffix": "Deg"
|
||||
}
|
||||
},
|
||||
"start": 0,
|
||||
@ -528,13 +528,13 @@ description: Result of parsing brake-rotor.kcl
|
||||
"init": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"raw": "5",
|
||||
"raw": "5deg",
|
||||
"start": 0,
|
||||
"type": "Literal",
|
||||
"type": "Literal",
|
||||
"value": {
|
||||
"value": 5.0,
|
||||
"suffix": "None"
|
||||
"suffix": "Deg"
|
||||
}
|
||||
},
|
||||
"start": 0,
|
||||
@ -3374,13 +3374,13 @@ description: Result of parsing brake-rotor.kcl
|
||||
"right": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"raw": "90",
|
||||
"raw": "90deg",
|
||||
"start": 0,
|
||||
"type": "Literal",
|
||||
"type": "Literal",
|
||||
"value": {
|
||||
"value": 90.0,
|
||||
"suffix": "None"
|
||||
"suffix": "Deg"
|
||||
}
|
||||
},
|
||||
"start": 0,
|
||||
@ -4397,13 +4397,13 @@ description: Result of parsing brake-rotor.kcl
|
||||
"arg": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"raw": "360",
|
||||
"raw": "360deg",
|
||||
"start": 0,
|
||||
"type": "Literal",
|
||||
"type": "Literal",
|
||||
"value": {
|
||||
"value": 360.0,
|
||||
"suffix": "None"
|
||||
"suffix": "Deg"
|
||||
}
|
||||
}
|
||||
},
|
||||
@ -4965,13 +4965,13 @@ description: Result of parsing brake-rotor.kcl
|
||||
"left": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"raw": "90",
|
||||
"raw": "90deg",
|
||||
"start": 0,
|
||||
"type": "Literal",
|
||||
"type": "Literal",
|
||||
"value": {
|
||||
"value": 90.0,
|
||||
"suffix": "None"
|
||||
"suffix": "Deg"
|
||||
}
|
||||
},
|
||||
"operator": "-",
|
||||
@ -5092,13 +5092,13 @@ description: Result of parsing brake-rotor.kcl
|
||||
"left": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"raw": "90",
|
||||
"raw": "90deg",
|
||||
"start": 0,
|
||||
"type": "Literal",
|
||||
"type": "Literal",
|
||||
"value": {
|
||||
"value": 90.0,
|
||||
"suffix": "None"
|
||||
"suffix": "Deg"
|
||||
}
|
||||
},
|
||||
"operator": "-",
|
||||
@ -5618,13 +5618,13 @@ description: Result of parsing brake-rotor.kcl
|
||||
"argument": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"raw": "180",
|
||||
"raw": "180deg",
|
||||
"start": 0,
|
||||
"type": "Literal",
|
||||
"type": "Literal",
|
||||
"value": {
|
||||
"value": 180.0,
|
||||
"suffix": "None"
|
||||
"suffix": "Deg"
|
||||
}
|
||||
},
|
||||
"commentStart": 0,
|
||||
@ -6730,13 +6730,13 @@ description: Result of parsing brake-rotor.kcl
|
||||
"arg": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"raw": "360",
|
||||
"raw": "360deg",
|
||||
"start": 0,
|
||||
"type": "Literal",
|
||||
"type": "Literal",
|
||||
"value": {
|
||||
"value": 360.0,
|
||||
"suffix": "None"
|
||||
"suffix": "Deg"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
@ -407,13 +407,9 @@ description: Operations executed brake-rotor.kcl
|
||||
"type": "Number",
|
||||
"value": 90.0,
|
||||
"ty": {
|
||||
"type": "Default",
|
||||
"len": {
|
||||
"type": "Mm"
|
||||
},
|
||||
"angle": {
|
||||
"type": "Degrees"
|
||||
}
|
||||
"type": "Known",
|
||||
"type": "Angle",
|
||||
"type": "Degrees"
|
||||
}
|
||||
},
|
||||
"visibility": "default",
|
||||
@ -440,13 +436,9 @@ description: Operations executed brake-rotor.kcl
|
||||
"type": "Number",
|
||||
"value": 30.0,
|
||||
"ty": {
|
||||
"type": "Default",
|
||||
"len": {
|
||||
"type": "Mm"
|
||||
},
|
||||
"angle": {
|
||||
"type": "Degrees"
|
||||
}
|
||||
"type": "Known",
|
||||
"type": "Angle",
|
||||
"type": "Degrees"
|
||||
}
|
||||
},
|
||||
"visibility": "default",
|
||||
@ -506,13 +498,9 @@ description: Operations executed brake-rotor.kcl
|
||||
"type": "Number",
|
||||
"value": 5.0,
|
||||
"ty": {
|
||||
"type": "Default",
|
||||
"len": {
|
||||
"type": "Mm"
|
||||
},
|
||||
"angle": {
|
||||
"type": "Degrees"
|
||||
}
|
||||
"type": "Known",
|
||||
"type": "Angle",
|
||||
"type": "Degrees"
|
||||
}
|
||||
},
|
||||
"visibility": "default",
|
||||
@ -1002,13 +990,9 @@ description: Operations executed brake-rotor.kcl
|
||||
"type": "Number",
|
||||
"value": 90.0,
|
||||
"ty": {
|
||||
"type": "Default",
|
||||
"len": {
|
||||
"type": "Mm"
|
||||
},
|
||||
"angle": {
|
||||
"type": "Degrees"
|
||||
}
|
||||
"type": "Known",
|
||||
"type": "Angle",
|
||||
"type": "Degrees"
|
||||
}
|
||||
},
|
||||
"visibility": "default",
|
||||
@ -1048,13 +1032,9 @@ description: Operations executed brake-rotor.kcl
|
||||
"type": "Number",
|
||||
"value": 60.0,
|
||||
"ty": {
|
||||
"type": "Default",
|
||||
"len": {
|
||||
"type": "Mm"
|
||||
},
|
||||
"angle": {
|
||||
"type": "Degrees"
|
||||
}
|
||||
"type": "Known",
|
||||
"type": "Angle",
|
||||
"type": "Degrees"
|
||||
}
|
||||
},
|
||||
"visibility": "default",
|
||||
@ -1140,13 +1120,9 @@ description: Operations executed brake-rotor.kcl
|
||||
"type": "Number",
|
||||
"value": 84.0,
|
||||
"ty": {
|
||||
"type": "Default",
|
||||
"len": {
|
||||
"type": "Mm"
|
||||
},
|
||||
"angle": {
|
||||
"type": "Degrees"
|
||||
}
|
||||
"type": "Known",
|
||||
"type": "Angle",
|
||||
"type": "Degrees"
|
||||
}
|
||||
},
|
||||
"visibility": "default",
|
||||
@ -1435,13 +1411,9 @@ description: Operations executed brake-rotor.kcl
|
||||
"type": "Number",
|
||||
"value": 90.0,
|
||||
"ty": {
|
||||
"type": "Default",
|
||||
"len": {
|
||||
"type": "Mm"
|
||||
},
|
||||
"angle": {
|
||||
"type": "Degrees"
|
||||
}
|
||||
"type": "Known",
|
||||
"type": "Angle",
|
||||
"type": "Degrees"
|
||||
}
|
||||
},
|
||||
"visibility": "default",
|
||||
@ -1481,13 +1453,9 @@ description: Operations executed brake-rotor.kcl
|
||||
"type": "Number",
|
||||
"value": 60.0,
|
||||
"ty": {
|
||||
"type": "Default",
|
||||
"len": {
|
||||
"type": "Mm"
|
||||
},
|
||||
"angle": {
|
||||
"type": "Degrees"
|
||||
}
|
||||
"type": "Known",
|
||||
"type": "Angle",
|
||||
"type": "Degrees"
|
||||
}
|
||||
},
|
||||
"visibility": "default",
|
||||
@ -1573,13 +1541,9 @@ description: Operations executed brake-rotor.kcl
|
||||
"type": "Number",
|
||||
"value": 75.0,
|
||||
"ty": {
|
||||
"type": "Default",
|
||||
"len": {
|
||||
"type": "Mm"
|
||||
},
|
||||
"angle": {
|
||||
"type": "Degrees"
|
||||
}
|
||||
"type": "Known",
|
||||
"type": "Angle",
|
||||
"type": "Degrees"
|
||||
}
|
||||
},
|
||||
"visibility": "default",
|
||||
@ -1868,13 +1832,9 @@ description: Operations executed brake-rotor.kcl
|
||||
"type": "Number",
|
||||
"value": 90.0,
|
||||
"ty": {
|
||||
"type": "Default",
|
||||
"len": {
|
||||
"type": "Mm"
|
||||
},
|
||||
"angle": {
|
||||
"type": "Degrees"
|
||||
}
|
||||
"type": "Known",
|
||||
"type": "Angle",
|
||||
"type": "Degrees"
|
||||
}
|
||||
},
|
||||
"visibility": "default",
|
||||
@ -1914,13 +1874,9 @@ description: Operations executed brake-rotor.kcl
|
||||
"type": "Number",
|
||||
"value": 60.0,
|
||||
"ty": {
|
||||
"type": "Default",
|
||||
"len": {
|
||||
"type": "Mm"
|
||||
},
|
||||
"angle": {
|
||||
"type": "Degrees"
|
||||
}
|
||||
"type": "Known",
|
||||
"type": "Angle",
|
||||
"type": "Degrees"
|
||||
}
|
||||
},
|
||||
"visibility": "default",
|
||||
@ -2006,13 +1962,9 @@ description: Operations executed brake-rotor.kcl
|
||||
"type": "Number",
|
||||
"value": 66.0,
|
||||
"ty": {
|
||||
"type": "Default",
|
||||
"len": {
|
||||
"type": "Mm"
|
||||
},
|
||||
"angle": {
|
||||
"type": "Degrees"
|
||||
}
|
||||
"type": "Known",
|
||||
"type": "Angle",
|
||||
"type": "Degrees"
|
||||
}
|
||||
},
|
||||
"visibility": "default",
|
||||
@ -3200,13 +3152,9 @@ description: Operations executed brake-rotor.kcl
|
||||
"type": "Number",
|
||||
"value": 90.0,
|
||||
"ty": {
|
||||
"type": "Default",
|
||||
"len": {
|
||||
"type": "Mm"
|
||||
},
|
||||
"angle": {
|
||||
"type": "Degrees"
|
||||
}
|
||||
"type": "Known",
|
||||
"type": "Angle",
|
||||
"type": "Degrees"
|
||||
}
|
||||
},
|
||||
"visibility": "default",
|
||||
@ -3246,13 +3194,9 @@ description: Operations executed brake-rotor.kcl
|
||||
"type": "Number",
|
||||
"value": 60.0,
|
||||
"ty": {
|
||||
"type": "Default",
|
||||
"len": {
|
||||
"type": "Mm"
|
||||
},
|
||||
"angle": {
|
||||
"type": "Degrees"
|
||||
}
|
||||
"type": "Known",
|
||||
"type": "Angle",
|
||||
"type": "Degrees"
|
||||
}
|
||||
},
|
||||
"visibility": "default",
|
||||
@ -3338,13 +3282,9 @@ description: Operations executed brake-rotor.kcl
|
||||
"type": "Number",
|
||||
"value": 84.0,
|
||||
"ty": {
|
||||
"type": "Default",
|
||||
"len": {
|
||||
"type": "Mm"
|
||||
},
|
||||
"angle": {
|
||||
"type": "Degrees"
|
||||
}
|
||||
"type": "Known",
|
||||
"type": "Angle",
|
||||
"type": "Degrees"
|
||||
}
|
||||
},
|
||||
"visibility": "default",
|
||||
@ -3633,13 +3573,9 @@ description: Operations executed brake-rotor.kcl
|
||||
"type": "Number",
|
||||
"value": 90.0,
|
||||
"ty": {
|
||||
"type": "Default",
|
||||
"len": {
|
||||
"type": "Mm"
|
||||
},
|
||||
"angle": {
|
||||
"type": "Degrees"
|
||||
}
|
||||
"type": "Known",
|
||||
"type": "Angle",
|
||||
"type": "Degrees"
|
||||
}
|
||||
},
|
||||
"visibility": "default",
|
||||
@ -3679,13 +3615,9 @@ description: Operations executed brake-rotor.kcl
|
||||
"type": "Number",
|
||||
"value": 60.0,
|
||||
"ty": {
|
||||
"type": "Default",
|
||||
"len": {
|
||||
"type": "Mm"
|
||||
},
|
||||
"angle": {
|
||||
"type": "Degrees"
|
||||
}
|
||||
"type": "Known",
|
||||
"type": "Angle",
|
||||
"type": "Degrees"
|
||||
}
|
||||
},
|
||||
"visibility": "default",
|
||||
@ -3771,13 +3703,9 @@ description: Operations executed brake-rotor.kcl
|
||||
"type": "Number",
|
||||
"value": 75.0,
|
||||
"ty": {
|
||||
"type": "Default",
|
||||
"len": {
|
||||
"type": "Mm"
|
||||
},
|
||||
"angle": {
|
||||
"type": "Degrees"
|
||||
}
|
||||
"type": "Known",
|
||||
"type": "Angle",
|
||||
"type": "Degrees"
|
||||
}
|
||||
},
|
||||
"visibility": "default",
|
||||
@ -4066,13 +3994,9 @@ description: Operations executed brake-rotor.kcl
|
||||
"type": "Number",
|
||||
"value": 90.0,
|
||||
"ty": {
|
||||
"type": "Default",
|
||||
"len": {
|
||||
"type": "Mm"
|
||||
},
|
||||
"angle": {
|
||||
"type": "Degrees"
|
||||
}
|
||||
"type": "Known",
|
||||
"type": "Angle",
|
||||
"type": "Degrees"
|
||||
}
|
||||
},
|
||||
"visibility": "default",
|
||||
@ -4112,13 +4036,9 @@ description: Operations executed brake-rotor.kcl
|
||||
"type": "Number",
|
||||
"value": 60.0,
|
||||
"ty": {
|
||||
"type": "Default",
|
||||
"len": {
|
||||
"type": "Mm"
|
||||
},
|
||||
"angle": {
|
||||
"type": "Degrees"
|
||||
}
|
||||
"type": "Known",
|
||||
"type": "Angle",
|
||||
"type": "Degrees"
|
||||
}
|
||||
},
|
||||
"visibility": "default",
|
||||
@ -4204,13 +4124,9 @@ description: Operations executed brake-rotor.kcl
|
||||
"type": "Number",
|
||||
"value": 66.0,
|
||||
"ty": {
|
||||
"type": "Default",
|
||||
"len": {
|
||||
"type": "Mm"
|
||||
},
|
||||
"angle": {
|
||||
"type": "Degrees"
|
||||
}
|
||||
"type": "Known",
|
||||
"type": "Angle",
|
||||
"type": "Degrees"
|
||||
}
|
||||
},
|
||||
"visibility": "default",
|
||||
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -572,13 +572,9 @@ description: Operations executed clock.kcl
|
||||
"type": "Number",
|
||||
"value": -180.0,
|
||||
"ty": {
|
||||
"type": "Default",
|
||||
"len": {
|
||||
"type": "Mm"
|
||||
},
|
||||
"angle": {
|
||||
"type": "Degrees"
|
||||
}
|
||||
"type": "Known",
|
||||
"type": "Angle",
|
||||
"type": "Degrees"
|
||||
}
|
||||
},
|
||||
"visibility": "default",
|
||||
@ -605,13 +601,9 @@ description: Operations executed clock.kcl
|
||||
"type": "Number",
|
||||
"value": -84.0,
|
||||
"ty": {
|
||||
"type": "Default",
|
||||
"len": {
|
||||
"type": "Mm"
|
||||
},
|
||||
"angle": {
|
||||
"type": "Degrees"
|
||||
}
|
||||
"type": "Known",
|
||||
"type": "Angle",
|
||||
"type": "Degrees"
|
||||
}
|
||||
},
|
||||
"visibility": "default",
|
||||
|
@ -25,9 +25,9 @@ description: Variables in memory after executing clock.kcl
|
||||
"id": "[uuid]",
|
||||
"sourceRange": [],
|
||||
"tag": {
|
||||
"commentStart": 889,
|
||||
"end": 895,
|
||||
"start": 889,
|
||||
"commentStart": 901,
|
||||
"end": 907,
|
||||
"start": 901,
|
||||
"type": "TagDeclarator",
|
||||
"value": "seg02"
|
||||
},
|
||||
@ -38,9 +38,9 @@ description: Variables in memory after executing clock.kcl
|
||||
"id": "[uuid]",
|
||||
"sourceRange": [],
|
||||
"tag": {
|
||||
"commentStart": 968,
|
||||
"end": 980,
|
||||
"start": 968,
|
||||
"commentStart": 980,
|
||||
"end": 992,
|
||||
"start": 980,
|
||||
"type": "TagDeclarator",
|
||||
"value": "capStart001"
|
||||
},
|
||||
@ -67,9 +67,9 @@ description: Variables in memory after executing clock.kcl
|
||||
],
|
||||
"radius": 250.0,
|
||||
"tag": {
|
||||
"commentStart": 889,
|
||||
"end": 895,
|
||||
"start": 889,
|
||||
"commentStart": 901,
|
||||
"end": 907,
|
||||
"start": 901,
|
||||
"type": "TagDeclarator",
|
||||
"value": "seg02"
|
||||
},
|
||||
@ -233,9 +233,9 @@ description: Variables in memory after executing clock.kcl
|
||||
"id": "[uuid]",
|
||||
"sourceRange": [],
|
||||
"tag": {
|
||||
"commentStart": 1312,
|
||||
"end": 1318,
|
||||
"start": 1312,
|
||||
"commentStart": 1324,
|
||||
"end": 1330,
|
||||
"start": 1324,
|
||||
"type": "TagDeclarator",
|
||||
"value": "seg01"
|
||||
},
|
||||
@ -246,9 +246,9 @@ description: Variables in memory after executing clock.kcl
|
||||
"id": "[uuid]",
|
||||
"sourceRange": [],
|
||||
"tag": {
|
||||
"commentStart": 1512,
|
||||
"end": 1522,
|
||||
"start": 1512,
|
||||
"commentStart": 1524,
|
||||
"end": 1534,
|
||||
"start": 1524,
|
||||
"type": "TagDeclarator",
|
||||
"value": "capEnd001"
|
||||
},
|
||||
@ -275,9 +275,9 @@ description: Variables in memory after executing clock.kcl
|
||||
],
|
||||
"radius": 250.0,
|
||||
"tag": {
|
||||
"commentStart": 1312,
|
||||
"end": 1318,
|
||||
"start": 1312,
|
||||
"commentStart": 1324,
|
||||
"end": 1330,
|
||||
"start": 1324,
|
||||
"type": "TagDeclarator",
|
||||
"value": "seg01"
|
||||
},
|
||||
@ -322,9 +322,9 @@ description: Variables in memory after executing clock.kcl
|
||||
"id": "[uuid]",
|
||||
"sourceRange": [],
|
||||
"tag": {
|
||||
"commentStart": 889,
|
||||
"end": 895,
|
||||
"start": 889,
|
||||
"commentStart": 901,
|
||||
"end": 907,
|
||||
"start": 901,
|
||||
"type": "TagDeclarator",
|
||||
"value": "seg02"
|
||||
},
|
||||
@ -335,9 +335,9 @@ description: Variables in memory after executing clock.kcl
|
||||
"id": "[uuid]",
|
||||
"sourceRange": [],
|
||||
"tag": {
|
||||
"commentStart": 968,
|
||||
"end": 980,
|
||||
"start": 968,
|
||||
"commentStart": 980,
|
||||
"end": 992,
|
||||
"start": 980,
|
||||
"type": "TagDeclarator",
|
||||
"value": "capStart001"
|
||||
},
|
||||
@ -364,9 +364,9 @@ description: Variables in memory after executing clock.kcl
|
||||
],
|
||||
"radius": 250.0,
|
||||
"tag": {
|
||||
"commentStart": 889,
|
||||
"end": 895,
|
||||
"start": 889,
|
||||
"commentStart": 901,
|
||||
"end": 907,
|
||||
"start": 901,
|
||||
"type": "TagDeclarator",
|
||||
"value": "seg02"
|
||||
},
|
||||
@ -571,9 +571,9 @@ description: Variables in memory after executing clock.kcl
|
||||
"id": "[uuid]",
|
||||
"sourceRange": [],
|
||||
"tag": {
|
||||
"commentStart": 889,
|
||||
"end": 895,
|
||||
"start": 889,
|
||||
"commentStart": 901,
|
||||
"end": 907,
|
||||
"start": 901,
|
||||
"type": "TagDeclarator",
|
||||
"value": "seg02"
|
||||
},
|
||||
@ -584,9 +584,9 @@ description: Variables in memory after executing clock.kcl
|
||||
"id": "[uuid]",
|
||||
"sourceRange": [],
|
||||
"tag": {
|
||||
"commentStart": 968,
|
||||
"end": 980,
|
||||
"start": 968,
|
||||
"commentStart": 980,
|
||||
"end": 992,
|
||||
"start": 980,
|
||||
"type": "TagDeclarator",
|
||||
"value": "capStart001"
|
||||
},
|
||||
@ -613,9 +613,9 @@ description: Variables in memory after executing clock.kcl
|
||||
],
|
||||
"radius": 250.0,
|
||||
"tag": {
|
||||
"commentStart": 889,
|
||||
"end": 895,
|
||||
"start": 889,
|
||||
"commentStart": 901,
|
||||
"end": 907,
|
||||
"start": 901,
|
||||
"type": "TagDeclarator",
|
||||
"value": "seg02"
|
||||
},
|
||||
@ -769,13 +769,9 @@ description: Variables in memory after executing clock.kcl
|
||||
"type": "Number",
|
||||
"value": -180.0,
|
||||
"ty": {
|
||||
"type": "Default",
|
||||
"len": {
|
||||
"type": "Mm"
|
||||
},
|
||||
"angle": {
|
||||
"type": "Degrees"
|
||||
}
|
||||
"type": "Known",
|
||||
"type": "Angle",
|
||||
"type": "Degrees"
|
||||
}
|
||||
},
|
||||
"hourHandArmLength": {
|
||||
@ -846,13 +842,9 @@ description: Variables in memory after executing clock.kcl
|
||||
"type": "Number",
|
||||
"value": -84.0,
|
||||
"ty": {
|
||||
"type": "Default",
|
||||
"len": {
|
||||
"type": "Mm"
|
||||
},
|
||||
"angle": {
|
||||
"type": "Degrees"
|
||||
}
|
||||
"type": "Known",
|
||||
"type": "Angle",
|
||||
"type": "Degrees"
|
||||
}
|
||||
},
|
||||
"minuteHandArmLength": {
|
||||
@ -1839,9 +1831,9 @@ description: Variables in memory after executing clock.kcl
|
||||
],
|
||||
"radius": 250.0,
|
||||
"tag": {
|
||||
"commentStart": 889,
|
||||
"end": 895,
|
||||
"start": 889,
|
||||
"commentStart": 901,
|
||||
"end": 907,
|
||||
"start": 901,
|
||||
"type": "TagDeclarator",
|
||||
"value": "seg02"
|
||||
},
|
||||
@ -1942,9 +1934,9 @@ description: Variables in memory after executing clock.kcl
|
||||
],
|
||||
"radius": 250.0,
|
||||
"tag": {
|
||||
"commentStart": 1312,
|
||||
"end": 1318,
|
||||
"start": 1312,
|
||||
"commentStart": 1324,
|
||||
"end": 1330,
|
||||
"start": 1324,
|
||||
"type": "TagDeclarator",
|
||||
"value": "seg01"
|
||||
},
|
||||
@ -1989,9 +1981,9 @@ description: Variables in memory after executing clock.kcl
|
||||
"id": "[uuid]",
|
||||
"sourceRange": [],
|
||||
"tag": {
|
||||
"commentStart": 889,
|
||||
"end": 895,
|
||||
"start": 889,
|
||||
"commentStart": 901,
|
||||
"end": 907,
|
||||
"start": 901,
|
||||
"type": "TagDeclarator",
|
||||
"value": "seg02"
|
||||
},
|
||||
@ -2002,9 +1994,9 @@ description: Variables in memory after executing clock.kcl
|
||||
"id": "[uuid]",
|
||||
"sourceRange": [],
|
||||
"tag": {
|
||||
"commentStart": 968,
|
||||
"end": 980,
|
||||
"start": 968,
|
||||
"commentStart": 980,
|
||||
"end": 992,
|
||||
"start": 980,
|
||||
"type": "TagDeclarator",
|
||||
"value": "capStart001"
|
||||
},
|
||||
@ -2031,9 +2023,9 @@ description: Variables in memory after executing clock.kcl
|
||||
],
|
||||
"radius": 250.0,
|
||||
"tag": {
|
||||
"commentStart": 889,
|
||||
"end": 895,
|
||||
"start": 889,
|
||||
"commentStart": 901,
|
||||
"end": 907,
|
||||
"start": 901,
|
||||
"type": "TagDeclarator",
|
||||
"value": "seg02"
|
||||
},
|
||||
@ -2241,9 +2233,9 @@ description: Variables in memory after executing clock.kcl
|
||||
"id": "[uuid]",
|
||||
"sourceRange": [],
|
||||
"tag": {
|
||||
"commentStart": 889,
|
||||
"end": 895,
|
||||
"start": 889,
|
||||
"commentStart": 901,
|
||||
"end": 907,
|
||||
"start": 901,
|
||||
"type": "TagDeclarator",
|
||||
"value": "seg02"
|
||||
},
|
||||
@ -2254,9 +2246,9 @@ description: Variables in memory after executing clock.kcl
|
||||
"id": "[uuid]",
|
||||
"sourceRange": [],
|
||||
"tag": {
|
||||
"commentStart": 968,
|
||||
"end": 980,
|
||||
"start": 968,
|
||||
"commentStart": 980,
|
||||
"end": 992,
|
||||
"start": 980,
|
||||
"type": "TagDeclarator",
|
||||
"value": "capStart001"
|
||||
},
|
||||
@ -2283,9 +2275,9 @@ description: Variables in memory after executing clock.kcl
|
||||
],
|
||||
"radius": 250.0,
|
||||
"tag": {
|
||||
"commentStart": 889,
|
||||
"end": 895,
|
||||
"start": 889,
|
||||
"commentStart": 901,
|
||||
"end": 907,
|
||||
"start": 901,
|
||||
"type": "TagDeclarator",
|
||||
"value": "seg02"
|
||||
},
|
||||
@ -2598,9 +2590,9 @@ description: Variables in memory after executing clock.kcl
|
||||
"id": "[uuid]",
|
||||
"sourceRange": [],
|
||||
"tag": {
|
||||
"commentStart": 889,
|
||||
"end": 895,
|
||||
"start": 889,
|
||||
"commentStart": 901,
|
||||
"end": 907,
|
||||
"start": 901,
|
||||
"type": "TagDeclarator",
|
||||
"value": "seg02"
|
||||
},
|
||||
@ -2611,9 +2603,9 @@ description: Variables in memory after executing clock.kcl
|
||||
"id": "[uuid]",
|
||||
"sourceRange": [],
|
||||
"tag": {
|
||||
"commentStart": 968,
|
||||
"end": 980,
|
||||
"start": 968,
|
||||
"commentStart": 980,
|
||||
"end": 992,
|
||||
"start": 980,
|
||||
"type": "TagDeclarator",
|
||||
"value": "capStart001"
|
||||
},
|
||||
@ -2640,9 +2632,9 @@ description: Variables in memory after executing clock.kcl
|
||||
],
|
||||
"radius": 250.0,
|
||||
"tag": {
|
||||
"commentStart": 889,
|
||||
"end": 895,
|
||||
"start": 889,
|
||||
"commentStart": 901,
|
||||
"end": 907,
|
||||
"start": 901,
|
||||
"type": "TagDeclarator",
|
||||
"value": "seg02"
|
||||
},
|
||||
@ -2851,9 +2843,9 @@ description: Variables in memory after executing clock.kcl
|
||||
7.054165456091913
|
||||
],
|
||||
"tag": {
|
||||
"commentStart": 9962,
|
||||
"end": 9969,
|
||||
"start": 9962,
|
||||
"commentStart": 10163,
|
||||
"end": 10170,
|
||||
"start": 10163,
|
||||
"type": "TagDeclarator",
|
||||
"value": "seg004"
|
||||
},
|
||||
@ -2876,9 +2868,9 @@ description: Variables in memory after executing clock.kcl
|
||||
19.554165456091912
|
||||
],
|
||||
"tag": {
|
||||
"commentStart": 10158,
|
||||
"end": 10165,
|
||||
"start": 10158,
|
||||
"commentStart": 10359,
|
||||
"end": 10366,
|
||||
"start": 10359,
|
||||
"type": "TagDeclarator",
|
||||
"value": "seg002"
|
||||
},
|
||||
@ -3186,9 +3178,9 @@ description: Variables in memory after executing clock.kcl
|
||||
-119.46453889126977
|
||||
],
|
||||
"tag": {
|
||||
"commentStart": 11501,
|
||||
"end": 11508,
|
||||
"start": 11501,
|
||||
"commentStart": 11732,
|
||||
"end": 11739,
|
||||
"start": 11732,
|
||||
"type": "TagDeclarator",
|
||||
"value": "seg003"
|
||||
},
|
||||
@ -3211,9 +3203,9 @@ description: Variables in memory after executing clock.kcl
|
||||
-120.77114468211543
|
||||
],
|
||||
"tag": {
|
||||
"commentStart": 11705,
|
||||
"end": 11712,
|
||||
"start": 11705,
|
||||
"commentStart": 11936,
|
||||
"end": 11943,
|
||||
"start": 11936,
|
||||
"type": "TagDeclarator",
|
||||
"value": "seg005"
|
||||
},
|
||||
@ -3569,9 +3561,9 @@ description: Variables in memory after executing clock.kcl
|
||||
"id": "[uuid]",
|
||||
"sourceRange": [],
|
||||
"tag": {
|
||||
"commentStart": 889,
|
||||
"end": 895,
|
||||
"start": 889,
|
||||
"commentStart": 901,
|
||||
"end": 907,
|
||||
"start": 901,
|
||||
"type": "TagDeclarator",
|
||||
"value": "seg02"
|
||||
},
|
||||
@ -3582,9 +3574,9 @@ description: Variables in memory after executing clock.kcl
|
||||
"id": "[uuid]",
|
||||
"sourceRange": [],
|
||||
"tag": {
|
||||
"commentStart": 968,
|
||||
"end": 980,
|
||||
"start": 968,
|
||||
"commentStart": 980,
|
||||
"end": 992,
|
||||
"start": 980,
|
||||
"type": "TagDeclarator",
|
||||
"value": "capStart001"
|
||||
},
|
||||
@ -3611,9 +3603,9 @@ description: Variables in memory after executing clock.kcl
|
||||
],
|
||||
"radius": 250.0,
|
||||
"tag": {
|
||||
"commentStart": 889,
|
||||
"end": 895,
|
||||
"start": 889,
|
||||
"commentStart": 901,
|
||||
"end": 907,
|
||||
"start": 901,
|
||||
"type": "TagDeclarator",
|
||||
"value": "seg02"
|
||||
},
|
||||
|
@ -439,13 +439,13 @@ description: Result of parsing cold-plate.kcl
|
||||
"arg": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"raw": "180",
|
||||
"raw": "180deg",
|
||||
"start": 0,
|
||||
"type": "Literal",
|
||||
"type": "Literal",
|
||||
"value": {
|
||||
"value": 180.0,
|
||||
"suffix": "None"
|
||||
"suffix": "Deg"
|
||||
}
|
||||
}
|
||||
},
|
||||
@ -773,13 +773,13 @@ description: Result of parsing cold-plate.kcl
|
||||
"arg": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"raw": "180",
|
||||
"raw": "180deg",
|
||||
"start": 0,
|
||||
"type": "Literal",
|
||||
"type": "Literal",
|
||||
"value": {
|
||||
"value": 180.0,
|
||||
"suffix": "None"
|
||||
"suffix": "Deg"
|
||||
}
|
||||
}
|
||||
},
|
||||
@ -1031,13 +1031,13 @@ description: Result of parsing cold-plate.kcl
|
||||
"argument": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"raw": "77",
|
||||
"raw": "77deg",
|
||||
"start": 0,
|
||||
"type": "Literal",
|
||||
"type": "Literal",
|
||||
"value": {
|
||||
"value": 77.0,
|
||||
"suffix": "None"
|
||||
"suffix": "Deg"
|
||||
}
|
||||
},
|
||||
"commentStart": 0,
|
||||
@ -1131,13 +1131,13 @@ description: Result of parsing cold-plate.kcl
|
||||
"arg": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"raw": "77",
|
||||
"raw": "77deg",
|
||||
"start": 0,
|
||||
"type": "Literal",
|
||||
"type": "Literal",
|
||||
"value": {
|
||||
"value": 77.0,
|
||||
"suffix": "None"
|
||||
"suffix": "Deg"
|
||||
}
|
||||
}
|
||||
},
|
||||
@ -1865,13 +1865,13 @@ description: Result of parsing cold-plate.kcl
|
||||
"arg": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"raw": "180",
|
||||
"raw": "180deg",
|
||||
"start": 0,
|
||||
"type": "Literal",
|
||||
"type": "Literal",
|
||||
"value": {
|
||||
"value": 180.0,
|
||||
"suffix": "None"
|
||||
"suffix": "Deg"
|
||||
}
|
||||
}
|
||||
},
|
||||
@ -2070,13 +2070,13 @@ description: Result of parsing cold-plate.kcl
|
||||
"argument": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"raw": "180",
|
||||
"raw": "180deg",
|
||||
"start": 0,
|
||||
"type": "Literal",
|
||||
"type": "Literal",
|
||||
"value": {
|
||||
"value": 180.0,
|
||||
"suffix": "None"
|
||||
"suffix": "Deg"
|
||||
}
|
||||
},
|
||||
"commentStart": 0,
|
||||
@ -2289,13 +2289,13 @@ description: Result of parsing cold-plate.kcl
|
||||
"arg": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"raw": "180",
|
||||
"raw": "180deg",
|
||||
"start": 0,
|
||||
"type": "Literal",
|
||||
"type": "Literal",
|
||||
"value": {
|
||||
"value": 180.0,
|
||||
"suffix": "None"
|
||||
"suffix": "Deg"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
@ -1015,9 +1015,9 @@ description: Variables in memory after executing cold-plate.kcl
|
||||
1.25
|
||||
],
|
||||
"tag": {
|
||||
"commentStart": 856,
|
||||
"end": 862,
|
||||
"start": 856,
|
||||
"commentStart": 859,
|
||||
"end": 865,
|
||||
"start": 859,
|
||||
"type": "TagDeclarator",
|
||||
"value": "seg07"
|
||||
},
|
||||
@ -1040,9 +1040,9 @@ description: Variables in memory after executing cold-plate.kcl
|
||||
1.25
|
||||
],
|
||||
"tag": {
|
||||
"commentStart": 905,
|
||||
"end": 911,
|
||||
"start": 905,
|
||||
"commentStart": 908,
|
||||
"end": 914,
|
||||
"start": 908,
|
||||
"type": "TagDeclarator",
|
||||
"value": "seg09"
|
||||
},
|
||||
@ -1089,9 +1089,9 @@ description: Variables in memory after executing cold-plate.kcl
|
||||
0.625
|
||||
],
|
||||
"tag": {
|
||||
"commentStart": 1012,
|
||||
"end": 1018,
|
||||
"start": 1012,
|
||||
"commentStart": 1018,
|
||||
"end": 1024,
|
||||
"start": 1018,
|
||||
"type": "TagDeclarator",
|
||||
"value": "seg08"
|
||||
},
|
||||
@ -1157,9 +1157,9 @@ description: Variables in memory after executing cold-plate.kcl
|
||||
1.047006236503076
|
||||
],
|
||||
"tag": {
|
||||
"commentStart": 1189,
|
||||
"end": 1195,
|
||||
"start": 1189,
|
||||
"commentStart": 1201,
|
||||
"end": 1207,
|
||||
"start": 1201,
|
||||
"type": "TagDeclarator",
|
||||
"value": "seg01"
|
||||
},
|
||||
@ -1346,9 +1346,9 @@ description: Variables in memory after executing cold-plate.kcl
|
||||
-3.0
|
||||
],
|
||||
"tag": {
|
||||
"commentStart": 1594,
|
||||
"end": 1600,
|
||||
"start": 1594,
|
||||
"commentStart": 1606,
|
||||
"end": 1612,
|
||||
"start": 1606,
|
||||
"type": "TagDeclarator",
|
||||
"value": "seg05"
|
||||
},
|
||||
@ -1376,9 +1376,9 @@ description: Variables in memory after executing cold-plate.kcl
|
||||
-3.0
|
||||
],
|
||||
"tag": {
|
||||
"commentStart": 1661,
|
||||
"end": 1667,
|
||||
"start": 1661,
|
||||
"commentStart": 1676,
|
||||
"end": 1682,
|
||||
"start": 1676,
|
||||
"type": "TagDeclarator",
|
||||
"value": "seg02"
|
||||
},
|
||||
@ -1401,9 +1401,9 @@ description: Variables in memory after executing cold-plate.kcl
|
||||
-1.0
|
||||
],
|
||||
"tag": {
|
||||
"commentStart": 1736,
|
||||
"end": 1742,
|
||||
"start": 1736,
|
||||
"commentStart": 1751,
|
||||
"end": 1757,
|
||||
"start": 1751,
|
||||
"type": "TagDeclarator",
|
||||
"value": "seg06"
|
||||
},
|
||||
@ -1431,9 +1431,9 @@ description: Variables in memory after executing cold-plate.kcl
|
||||
-0.9999999999999984
|
||||
],
|
||||
"tag": {
|
||||
"commentStart": 1804,
|
||||
"end": 1810,
|
||||
"start": 1804,
|
||||
"commentStart": 1822,
|
||||
"end": 1828,
|
||||
"start": 1822,
|
||||
"type": "TagDeclarator",
|
||||
"value": "seg03"
|
||||
},
|
||||
@ -1480,9 +1480,9 @@ description: Variables in memory after executing cold-plate.kcl
|
||||
0.9999999999999998
|
||||
],
|
||||
"tag": {
|
||||
"commentStart": 1940,
|
||||
"end": 1946,
|
||||
"start": 1940,
|
||||
"commentStart": 1961,
|
||||
"end": 1967,
|
||||
"start": 1961,
|
||||
"type": "TagDeclarator",
|
||||
"value": "seg04"
|
||||
},
|
||||
|
@ -734,13 +734,13 @@ description: Result of parsing countersunk-plate.kcl
|
||||
"left": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"raw": "90",
|
||||
"raw": "90deg",
|
||||
"start": 0,
|
||||
"type": "Literal",
|
||||
"type": "Literal",
|
||||
"value": {
|
||||
"value": 90.0,
|
||||
"suffix": "None"
|
||||
"suffix": "Deg"
|
||||
}
|
||||
},
|
||||
"operator": "-",
|
||||
@ -986,13 +986,13 @@ description: Result of parsing countersunk-plate.kcl
|
||||
"right": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"raw": "90",
|
||||
"raw": "90deg",
|
||||
"start": 0,
|
||||
"type": "Literal",
|
||||
"type": "Literal",
|
||||
"value": {
|
||||
"value": 90.0,
|
||||
"suffix": "None"
|
||||
"suffix": "Deg"
|
||||
}
|
||||
},
|
||||
"start": 0,
|
||||
@ -1386,13 +1386,13 @@ description: Result of parsing countersunk-plate.kcl
|
||||
"right": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"raw": "90",
|
||||
"raw": "90deg",
|
||||
"start": 0,
|
||||
"type": "Literal",
|
||||
"type": "Literal",
|
||||
"value": {
|
||||
"value": 90.0,
|
||||
"suffix": "None"
|
||||
"suffix": "Deg"
|
||||
}
|
||||
},
|
||||
"start": 0,
|
||||
|
@ -961,13 +961,13 @@ description: Result of parsing cpu-cooler.kcl
|
||||
"arg": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"raw": "360",
|
||||
"raw": "360deg",
|
||||
"start": 0,
|
||||
"type": "Literal",
|
||||
"type": "Literal",
|
||||
"value": {
|
||||
"value": 360.0,
|
||||
"suffix": "None"
|
||||
"suffix": "Deg"
|
||||
}
|
||||
}
|
||||
},
|
||||
@ -1165,13 +1165,13 @@ description: Result of parsing cpu-cooler.kcl
|
||||
"arg": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"raw": "360",
|
||||
"raw": "360deg",
|
||||
"start": 0,
|
||||
"type": "Literal",
|
||||
"type": "Literal",
|
||||
"value": {
|
||||
"value": 360.0,
|
||||
"suffix": "None"
|
||||
"suffix": "Deg"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
@ -972,13 +972,9 @@ description: Operations executed cpu-cooler.kcl
|
||||
"type": "Number",
|
||||
"value": 50.0,
|
||||
"ty": {
|
||||
"type": "Default",
|
||||
"len": {
|
||||
"type": "Mm"
|
||||
},
|
||||
"angle": {
|
||||
"type": "Degrees"
|
||||
}
|
||||
"type": "Known",
|
||||
"type": "Angle",
|
||||
"type": "Degrees"
|
||||
}
|
||||
},
|
||||
"sourceRange": []
|
||||
@ -1071,13 +1067,9 @@ description: Operations executed cpu-cooler.kcl
|
||||
"type": "Number",
|
||||
"value": 30.0,
|
||||
"ty": {
|
||||
"type": "Default",
|
||||
"len": {
|
||||
"type": "Mm"
|
||||
},
|
||||
"angle": {
|
||||
"type": "Degrees"
|
||||
}
|
||||
"type": "Known",
|
||||
"type": "Angle",
|
||||
"type": "Degrees"
|
||||
}
|
||||
},
|
||||
"sourceRange": []
|
||||
|
@ -603,13 +603,13 @@ description: Result of parsing cycloidal-gear.kcl
|
||||
"left": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"raw": "90",
|
||||
"raw": "90deg",
|
||||
"start": 0,
|
||||
"type": "Literal",
|
||||
"type": "Literal",
|
||||
"value": {
|
||||
"value": 90.0,
|
||||
"suffix": "None"
|
||||
"suffix": "Deg"
|
||||
}
|
||||
},
|
||||
"operator": "+",
|
||||
@ -650,13 +650,13 @@ description: Result of parsing cycloidal-gear.kcl
|
||||
"argument": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"raw": "90",
|
||||
"raw": "90deg",
|
||||
"start": 0,
|
||||
"type": "Literal",
|
||||
"type": "Literal",
|
||||
"value": {
|
||||
"value": 90.0,
|
||||
"suffix": "None"
|
||||
"suffix": "Deg"
|
||||
}
|
||||
},
|
||||
"commentStart": 0,
|
||||
@ -797,13 +797,13 @@ description: Result of parsing cycloidal-gear.kcl
|
||||
"arg": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"raw": "60",
|
||||
"raw": "60deg",
|
||||
"start": 0,
|
||||
"type": "Literal",
|
||||
"type": "Literal",
|
||||
"value": {
|
||||
"value": 60.0,
|
||||
"suffix": "None"
|
||||
"suffix": "Deg"
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -871,13 +871,13 @@ description: Result of parsing cycloidal-gear.kcl
|
||||
"argument": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"raw": "180",
|
||||
"raw": "180deg",
|
||||
"start": 0,
|
||||
"type": "Literal",
|
||||
"type": "Literal",
|
||||
"value": {
|
||||
"value": 180.0,
|
||||
"suffix": "None"
|
||||
"suffix": "Deg"
|
||||
}
|
||||
},
|
||||
"commentStart": 0,
|
||||
@ -971,13 +971,13 @@ description: Result of parsing cycloidal-gear.kcl
|
||||
"arg": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"raw": "60",
|
||||
"raw": "60deg",
|
||||
"start": 0,
|
||||
"type": "Literal",
|
||||
"type": "Literal",
|
||||
"value": {
|
||||
"value": 60.0,
|
||||
"suffix": "None"
|
||||
"suffix": "Deg"
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -1045,13 +1045,13 @@ description: Result of parsing cycloidal-gear.kcl
|
||||
"argument": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"raw": "180",
|
||||
"raw": "180deg",
|
||||
"start": 0,
|
||||
"type": "Literal",
|
||||
"type": "Literal",
|
||||
"value": {
|
||||
"value": 180.0,
|
||||
"suffix": "None"
|
||||
"suffix": "Deg"
|
||||
}
|
||||
},
|
||||
"commentStart": 0,
|
||||
@ -1815,13 +1815,13 @@ description: Result of parsing cycloidal-gear.kcl
|
||||
"argument": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"raw": "80",
|
||||
"raw": "80deg",
|
||||
"start": 0,
|
||||
"type": "Literal",
|
||||
"type": "Literal",
|
||||
"value": {
|
||||
"value": 80.0,
|
||||
"suffix": "None"
|
||||
"suffix": "Deg"
|
||||
}
|
||||
},
|
||||
"commentStart": 0,
|
||||
|
@ -765,13 +765,13 @@ description: Result of parsing exhaust-manifold.kcl
|
||||
"argument": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"raw": "80",
|
||||
"raw": "80deg",
|
||||
"start": 0,
|
||||
"type": "Literal",
|
||||
"type": "Literal",
|
||||
"value": {
|
||||
"value": 80.0,
|
||||
"suffix": "None"
|
||||
"suffix": "Deg"
|
||||
}
|
||||
},
|
||||
"commentStart": 0,
|
||||
@ -962,13 +962,13 @@ description: Result of parsing exhaust-manifold.kcl
|
||||
"arg": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"raw": "85",
|
||||
"raw": "85deg",
|
||||
"start": 0,
|
||||
"type": "Literal",
|
||||
"type": "Literal",
|
||||
"value": {
|
||||
"value": 85.0,
|
||||
"suffix": "None"
|
||||
"suffix": "Deg"
|
||||
}
|
||||
}
|
||||
},
|
||||
@ -1885,13 +1885,13 @@ description: Result of parsing exhaust-manifold.kcl
|
||||
"arg": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"raw": "1",
|
||||
"raw": "1deg",
|
||||
"start": 0,
|
||||
"type": "Literal",
|
||||
"type": "Literal",
|
||||
"value": {
|
||||
"value": 1.0,
|
||||
"suffix": "None"
|
||||
"suffix": "Deg"
|
||||
}
|
||||
}
|
||||
},
|
||||
@ -2027,13 +2027,13 @@ description: Result of parsing exhaust-manifold.kcl
|
||||
"arg": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"raw": "24.3",
|
||||
"raw": "24.3deg",
|
||||
"start": 0,
|
||||
"type": "Literal",
|
||||
"type": "Literal",
|
||||
"value": {
|
||||
"value": 24.3,
|
||||
"suffix": "None"
|
||||
"suffix": "Deg"
|
||||
}
|
||||
}
|
||||
},
|
||||
@ -2169,13 +2169,13 @@ description: Result of parsing exhaust-manifold.kcl
|
||||
"arg": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"raw": "25.2",
|
||||
"raw": "25.2deg",
|
||||
"start": 0,
|
||||
"type": "Literal",
|
||||
"type": "Literal",
|
||||
"value": {
|
||||
"value": 25.2,
|
||||
"suffix": "None"
|
||||
"suffix": "Deg"
|
||||
}
|
||||
}
|
||||
},
|
||||
@ -2530,13 +2530,13 @@ description: Result of parsing exhaust-manifold.kcl
|
||||
"argument": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"raw": "40",
|
||||
"raw": "40deg",
|
||||
"start": 0,
|
||||
"type": "Literal",
|
||||
"type": "Literal",
|
||||
"value": {
|
||||
"value": 40.0,
|
||||
"suffix": "None"
|
||||
"suffix": "Deg"
|
||||
}
|
||||
},
|
||||
"commentStart": 0,
|
||||
@ -2606,13 +2606,13 @@ description: Result of parsing exhaust-manifold.kcl
|
||||
"arg": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"raw": "80",
|
||||
"raw": "80deg",
|
||||
"start": 0,
|
||||
"type": "Literal",
|
||||
"type": "Literal",
|
||||
"value": {
|
||||
"value": 80.0,
|
||||
"suffix": "None"
|
||||
"suffix": "Deg"
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -2676,13 +2676,13 @@ description: Result of parsing exhaust-manifold.kcl
|
||||
"argument": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"raw": "40",
|
||||
"raw": "40deg",
|
||||
"start": 0,
|
||||
"type": "Literal",
|
||||
"type": "Literal",
|
||||
"value": {
|
||||
"value": 40.0,
|
||||
"suffix": "None"
|
||||
"suffix": "Deg"
|
||||
}
|
||||
},
|
||||
"commentStart": 0,
|
||||
@ -2982,13 +2982,13 @@ description: Result of parsing exhaust-manifold.kcl
|
||||
"argument": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"raw": "40",
|
||||
"raw": "40deg",
|
||||
"start": 0,
|
||||
"type": "Literal",
|
||||
"type": "Literal",
|
||||
"value": {
|
||||
"value": 40.0,
|
||||
"suffix": "None"
|
||||
"suffix": "Deg"
|
||||
}
|
||||
},
|
||||
"commentStart": 0,
|
||||
@ -3058,13 +3058,13 @@ description: Result of parsing exhaust-manifold.kcl
|
||||
"arg": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"raw": "80",
|
||||
"raw": "80deg",
|
||||
"start": 0,
|
||||
"type": "Literal",
|
||||
"type": "Literal",
|
||||
"value": {
|
||||
"value": 80.0,
|
||||
"suffix": "None"
|
||||
"suffix": "Deg"
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -3128,13 +3128,13 @@ description: Result of parsing exhaust-manifold.kcl
|
||||
"argument": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"raw": "40",
|
||||
"raw": "40deg",
|
||||
"start": 0,
|
||||
"type": "Literal",
|
||||
"type": "Literal",
|
||||
"value": {
|
||||
"value": 40.0,
|
||||
"suffix": "None"
|
||||
"suffix": "Deg"
|
||||
}
|
||||
},
|
||||
"commentStart": 0,
|
||||
@ -3477,13 +3477,13 @@ description: Result of parsing exhaust-manifold.kcl
|
||||
"argument": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"raw": "40",
|
||||
"raw": "40deg",
|
||||
"start": 0,
|
||||
"type": "Literal",
|
||||
"type": "Literal",
|
||||
"value": {
|
||||
"value": 40.0,
|
||||
"suffix": "None"
|
||||
"suffix": "Deg"
|
||||
}
|
||||
},
|
||||
"commentStart": 0,
|
||||
@ -3553,13 +3553,13 @@ description: Result of parsing exhaust-manifold.kcl
|
||||
"arg": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"raw": "80",
|
||||
"raw": "80deg",
|
||||
"start": 0,
|
||||
"type": "Literal",
|
||||
"type": "Literal",
|
||||
"value": {
|
||||
"value": 80.0,
|
||||
"suffix": "None"
|
||||
"suffix": "Deg"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -501,13 +501,9 @@ description: Operations executed exhaust-manifold.kcl
|
||||
"type": "Number",
|
||||
"value": 1.0,
|
||||
"ty": {
|
||||
"type": "Default",
|
||||
"len": {
|
||||
"type": "Inches"
|
||||
},
|
||||
"angle": {
|
||||
"type": "Degrees"
|
||||
}
|
||||
"type": "Known",
|
||||
"type": "Angle",
|
||||
"type": "Degrees"
|
||||
}
|
||||
},
|
||||
"sourceRange": []
|
||||
@ -853,13 +849,9 @@ description: Operations executed exhaust-manifold.kcl
|
||||
"type": "Number",
|
||||
"value": 24.3,
|
||||
"ty": {
|
||||
"type": "Default",
|
||||
"len": {
|
||||
"type": "Inches"
|
||||
},
|
||||
"angle": {
|
||||
"type": "Degrees"
|
||||
}
|
||||
"type": "Known",
|
||||
"type": "Angle",
|
||||
"type": "Degrees"
|
||||
}
|
||||
},
|
||||
"sourceRange": []
|
||||
@ -1205,13 +1197,9 @@ description: Operations executed exhaust-manifold.kcl
|
||||
"type": "Number",
|
||||
"value": 25.2,
|
||||
"ty": {
|
||||
"type": "Default",
|
||||
"len": {
|
||||
"type": "Inches"
|
||||
},
|
||||
"angle": {
|
||||
"type": "Degrees"
|
||||
}
|
||||
"type": "Known",
|
||||
"type": "Angle",
|
||||
"type": "Degrees"
|
||||
}
|
||||
},
|
||||
"sourceRange": []
|
||||
|
@ -28,9 +28,9 @@ description: Variables in memory after executing exhaust-manifold.kcl
|
||||
"id": "[uuid]",
|
||||
"sourceRange": [],
|
||||
"tag": {
|
||||
"commentStart": 2009,
|
||||
"end": 2015,
|
||||
"start": 2009,
|
||||
"commentStart": 2024,
|
||||
"end": 2030,
|
||||
"start": 2024,
|
||||
"type": "TagDeclarator",
|
||||
"value": "seg01"
|
||||
},
|
||||
@ -62,9 +62,9 @@ description: Variables in memory after executing exhaust-manifold.kcl
|
||||
"id": "[uuid]",
|
||||
"sourceRange": [],
|
||||
"tag": {
|
||||
"commentStart": 2183,
|
||||
"end": 2189,
|
||||
"start": 2183,
|
||||
"commentStart": 2207,
|
||||
"end": 2213,
|
||||
"start": 2207,
|
||||
"type": "TagDeclarator",
|
||||
"value": "seg03"
|
||||
},
|
||||
@ -75,9 +75,9 @@ description: Variables in memory after executing exhaust-manifold.kcl
|
||||
"id": "[uuid]",
|
||||
"sourceRange": [],
|
||||
"tag": {
|
||||
"commentStart": 2232,
|
||||
"end": 2238,
|
||||
"start": 2232,
|
||||
"commentStart": 2256,
|
||||
"end": 2262,
|
||||
"start": 2256,
|
||||
"type": "TagDeclarator",
|
||||
"value": "seg04"
|
||||
},
|
||||
@ -88,9 +88,9 @@ description: Variables in memory after executing exhaust-manifold.kcl
|
||||
"id": "[uuid]",
|
||||
"sourceRange": [],
|
||||
"tag": {
|
||||
"commentStart": 2271,
|
||||
"end": 2277,
|
||||
"start": 2271,
|
||||
"commentStart": 2295,
|
||||
"end": 2301,
|
||||
"start": 2295,
|
||||
"type": "TagDeclarator",
|
||||
"value": "seg05"
|
||||
},
|
||||
@ -122,9 +122,9 @@ description: Variables in memory after executing exhaust-manifold.kcl
|
||||
"id": "[uuid]",
|
||||
"sourceRange": [],
|
||||
"tag": {
|
||||
"commentStart": 2455,
|
||||
"end": 2461,
|
||||
"start": 2455,
|
||||
"commentStart": 2488,
|
||||
"end": 2494,
|
||||
"start": 2488,
|
||||
"type": "TagDeclarator",
|
||||
"value": "seg07"
|
||||
},
|
||||
@ -135,9 +135,9 @@ description: Variables in memory after executing exhaust-manifold.kcl
|
||||
"id": "[uuid]",
|
||||
"sourceRange": [],
|
||||
"tag": {
|
||||
"commentStart": 2512,
|
||||
"end": 2518,
|
||||
"start": 2512,
|
||||
"commentStart": 2545,
|
||||
"end": 2551,
|
||||
"start": 2545,
|
||||
"type": "TagDeclarator",
|
||||
"value": "seg08"
|
||||
},
|
||||
@ -148,9 +148,9 @@ description: Variables in memory after executing exhaust-manifold.kcl
|
||||
"id": "[uuid]",
|
||||
"sourceRange": [],
|
||||
"tag": {
|
||||
"commentStart": 2562,
|
||||
"end": 2568,
|
||||
"start": 2562,
|
||||
"commentStart": 2595,
|
||||
"end": 2601,
|
||||
"start": 2595,
|
||||
"type": "TagDeclarator",
|
||||
"value": "seg09"
|
||||
},
|
||||
@ -192,9 +192,9 @@ description: Variables in memory after executing exhaust-manifold.kcl
|
||||
-1.25
|
||||
],
|
||||
"tag": {
|
||||
"commentStart": 2009,
|
||||
"end": 2015,
|
||||
"start": 2009,
|
||||
"commentStart": 2024,
|
||||
"end": 2030,
|
||||
"start": 2024,
|
||||
"type": "TagDeclarator",
|
||||
"value": "seg01"
|
||||
},
|
||||
@ -289,9 +289,9 @@ description: Variables in memory after executing exhaust-manifold.kcl
|
||||
-1.2499999999999996
|
||||
],
|
||||
"tag": {
|
||||
"commentStart": 2183,
|
||||
"end": 2189,
|
||||
"start": 2183,
|
||||
"commentStart": 2207,
|
||||
"end": 2213,
|
||||
"start": 2207,
|
||||
"type": "TagDeclarator",
|
||||
"value": "seg03"
|
||||
},
|
||||
@ -314,9 +314,9 @@ description: Variables in memory after executing exhaust-manifold.kcl
|
||||
-1.2499999999999996
|
||||
],
|
||||
"tag": {
|
||||
"commentStart": 2232,
|
||||
"end": 2238,
|
||||
"start": 2232,
|
||||
"commentStart": 2256,
|
||||
"end": 2262,
|
||||
"start": 2256,
|
||||
"type": "TagDeclarator",
|
||||
"value": "seg04"
|
||||
},
|
||||
@ -339,9 +339,9 @@ description: Variables in memory after executing exhaust-manifold.kcl
|
||||
1.3500000000000005
|
||||
],
|
||||
"tag": {
|
||||
"commentStart": 2271,
|
||||
"end": 2277,
|
||||
"start": 2271,
|
||||
"commentStart": 2295,
|
||||
"end": 2301,
|
||||
"start": 2295,
|
||||
"type": "TagDeclarator",
|
||||
"value": "seg05"
|
||||
},
|
||||
@ -436,9 +436,9 @@ description: Variables in memory after executing exhaust-manifold.kcl
|
||||
1.3500000000000008
|
||||
],
|
||||
"tag": {
|
||||
"commentStart": 2455,
|
||||
"end": 2461,
|
||||
"start": 2455,
|
||||
"commentStart": 2488,
|
||||
"end": 2494,
|
||||
"start": 2488,
|
||||
"type": "TagDeclarator",
|
||||
"value": "seg07"
|
||||
},
|
||||
@ -461,9 +461,9 @@ description: Variables in memory after executing exhaust-manifold.kcl
|
||||
1.3500000000000008
|
||||
],
|
||||
"tag": {
|
||||
"commentStart": 2512,
|
||||
"end": 2518,
|
||||
"start": 2512,
|
||||
"commentStart": 2545,
|
||||
"end": 2551,
|
||||
"start": 2545,
|
||||
"type": "TagDeclarator",
|
||||
"value": "seg08"
|
||||
},
|
||||
@ -486,9 +486,9 @@ description: Variables in memory after executing exhaust-manifold.kcl
|
||||
-1.25
|
||||
],
|
||||
"tag": {
|
||||
"commentStart": 2562,
|
||||
"end": 2568,
|
||||
"start": 2562,
|
||||
"commentStart": 2595,
|
||||
"end": 2601,
|
||||
"start": 2595,
|
||||
"type": "TagDeclarator",
|
||||
"value": "seg09"
|
||||
},
|
||||
|
@ -1007,13 +1007,13 @@ description: Result of parsing food-service-spatula.kcl
|
||||
"right": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"raw": "180",
|
||||
"raw": "180deg",
|
||||
"start": 0,
|
||||
"type": "Literal",
|
||||
"type": "Literal",
|
||||
"value": {
|
||||
"value": 180.0,
|
||||
"suffix": "None"
|
||||
"suffix": "Deg"
|
||||
}
|
||||
},
|
||||
"start": 0,
|
||||
@ -1140,13 +1140,13 @@ description: Result of parsing food-service-spatula.kcl
|
||||
"expression": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"raw": "270",
|
||||
"raw": "270deg",
|
||||
"start": 0,
|
||||
"type": "Literal",
|
||||
"type": "Literal",
|
||||
"value": {
|
||||
"value": 270.0,
|
||||
"suffix": "None"
|
||||
"suffix": "Deg"
|
||||
}
|
||||
},
|
||||
"start": 0,
|
||||
@ -1167,13 +1167,13 @@ description: Result of parsing food-service-spatula.kcl
|
||||
"expression": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"raw": "90",
|
||||
"raw": "90deg",
|
||||
"start": 0,
|
||||
"type": "Literal",
|
||||
"type": "Literal",
|
||||
"value": {
|
||||
"value": 90.0,
|
||||
"suffix": "None"
|
||||
"suffix": "Deg"
|
||||
}
|
||||
},
|
||||
"start": 0,
|
||||
@ -1611,13 +1611,13 @@ description: Result of parsing food-service-spatula.kcl
|
||||
"right": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"raw": "90",
|
||||
"raw": "90deg",
|
||||
"start": 0,
|
||||
"type": "Literal",
|
||||
"type": "Literal",
|
||||
"value": {
|
||||
"value": 90.0,
|
||||
"suffix": "None"
|
||||
"suffix": "Deg"
|
||||
}
|
||||
},
|
||||
"start": 0,
|
||||
@ -1778,13 +1778,13 @@ description: Result of parsing food-service-spatula.kcl
|
||||
"right": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"raw": "90",
|
||||
"raw": "90deg",
|
||||
"start": 0,
|
||||
"type": "Literal",
|
||||
"type": "Literal",
|
||||
"value": {
|
||||
"value": 90.0,
|
||||
"suffix": "None"
|
||||
"suffix": "Deg"
|
||||
}
|
||||
},
|
||||
"start": 0,
|
||||
@ -1953,32 +1953,6 @@ description: Result of parsing food-service-spatula.kcl
|
||||
},
|
||||
{
|
||||
"arguments": [
|
||||
{
|
||||
"type": "LabeledArg",
|
||||
"label": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"name": "angle",
|
||||
"start": 0,
|
||||
"type": "Identifier"
|
||||
},
|
||||
"arg": {
|
||||
"abs_path": false,
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"name": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"name": "angle",
|
||||
"start": 0,
|
||||
"type": "Identifier"
|
||||
},
|
||||
"path": [],
|
||||
"start": 0,
|
||||
"type": "Name",
|
||||
"type": "Name"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "LabeledArg",
|
||||
"label": {
|
||||
@ -2026,7 +2000,22 @@ description: Result of parsing food-service-spatula.kcl
|
||||
"start": 0,
|
||||
"type": "CallExpressionKw",
|
||||
"type": "CallExpressionKw",
|
||||
"unlabeled": null
|
||||
"unlabeled": {
|
||||
"abs_path": false,
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"name": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"name": "angle",
|
||||
"start": 0,
|
||||
"type": "Identifier"
|
||||
},
|
||||
"path": [],
|
||||
"start": 0,
|
||||
"type": "Name",
|
||||
"type": "Name"
|
||||
}
|
||||
},
|
||||
{
|
||||
"arguments": [
|
||||
@ -2088,13 +2077,13 @@ description: Result of parsing food-service-spatula.kcl
|
||||
"arg": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"raw": "180",
|
||||
"raw": "180deg",
|
||||
"start": 0,
|
||||
"type": "Literal",
|
||||
"type": "Literal",
|
||||
"value": {
|
||||
"value": 180.0,
|
||||
"suffix": "None"
|
||||
"suffix": "Deg"
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -2123,32 +2112,6 @@ description: Result of parsing food-service-spatula.kcl
|
||||
},
|
||||
{
|
||||
"arguments": [
|
||||
{
|
||||
"type": "LabeledArg",
|
||||
"label": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"name": "angle",
|
||||
"start": 0,
|
||||
"type": "Identifier"
|
||||
},
|
||||
"arg": {
|
||||
"abs_path": false,
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"name": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"name": "angle",
|
||||
"start": 0,
|
||||
"type": "Identifier"
|
||||
},
|
||||
"path": [],
|
||||
"start": 0,
|
||||
"type": "Name",
|
||||
"type": "Name"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "LabeledArg",
|
||||
"label": {
|
||||
@ -2204,7 +2167,22 @@ description: Result of parsing food-service-spatula.kcl
|
||||
"start": 0,
|
||||
"type": "CallExpressionKw",
|
||||
"type": "CallExpressionKw",
|
||||
"unlabeled": null
|
||||
"unlabeled": {
|
||||
"abs_path": false,
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"name": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"name": "angle",
|
||||
"start": 0,
|
||||
"type": "Identifier"
|
||||
},
|
||||
"path": [],
|
||||
"start": 0,
|
||||
"type": "Name",
|
||||
"type": "Name"
|
||||
}
|
||||
},
|
||||
{
|
||||
"arguments": [
|
||||
@ -2849,13 +2827,13 @@ description: Result of parsing food-service-spatula.kcl
|
||||
"arg": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"raw": "163.087610",
|
||||
"raw": "163.087610deg",
|
||||
"start": 0,
|
||||
"type": "Literal",
|
||||
"type": "Literal",
|
||||
"value": {
|
||||
"value": 163.08761,
|
||||
"suffix": "None"
|
||||
"suffix": "Deg"
|
||||
}
|
||||
}
|
||||
},
|
||||
@ -2871,13 +2849,13 @@ description: Result of parsing food-service-spatula.kcl
|
||||
"arg": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"raw": "196.912390",
|
||||
"raw": "196.912390deg",
|
||||
"start": 0,
|
||||
"type": "Literal",
|
||||
"type": "Literal",
|
||||
"value": {
|
||||
"value": 196.91239,
|
||||
"suffix": "None"
|
||||
"suffix": "Deg"
|
||||
}
|
||||
}
|
||||
},
|
||||
@ -5698,13 +5676,13 @@ description: Result of parsing food-service-spatula.kcl
|
||||
"argument": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"raw": "90.0",
|
||||
"raw": "90.0deg",
|
||||
"start": 0,
|
||||
"type": "Literal",
|
||||
"type": "Literal",
|
||||
"value": {
|
||||
"value": 90.0,
|
||||
"suffix": "None"
|
||||
"suffix": "Deg"
|
||||
}
|
||||
},
|
||||
"commentStart": 0,
|
||||
@ -5917,13 +5895,13 @@ description: Result of parsing food-service-spatula.kcl
|
||||
"arg": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"raw": "90.0",
|
||||
"raw": "90.0deg",
|
||||
"start": 0,
|
||||
"type": "Literal",
|
||||
"type": "Literal",
|
||||
"value": {
|
||||
"value": 90.0,
|
||||
"suffix": "None"
|
||||
"suffix": "Deg"
|
||||
}
|
||||
}
|
||||
},
|
||||
@ -6093,13 +6071,13 @@ description: Result of parsing food-service-spatula.kcl
|
||||
"arg": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"raw": "90.0",
|
||||
"raw": "90.0deg",
|
||||
"start": 0,
|
||||
"type": "Literal",
|
||||
"type": "Literal",
|
||||
"value": {
|
||||
"value": 90.0,
|
||||
"suffix": "None"
|
||||
"suffix": "Deg"
|
||||
}
|
||||
}
|
||||
},
|
||||
@ -6115,13 +6093,13 @@ description: Result of parsing food-service-spatula.kcl
|
||||
"arg": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"raw": "180.0",
|
||||
"raw": "180.0deg",
|
||||
"start": 0,
|
||||
"type": "Literal",
|
||||
"type": "Literal",
|
||||
"value": {
|
||||
"value": 180.0,
|
||||
"suffix": "None"
|
||||
"suffix": "Deg"
|
||||
}
|
||||
}
|
||||
},
|
||||
@ -6309,13 +6287,13 @@ description: Result of parsing food-service-spatula.kcl
|
||||
"arg": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"raw": "180.0",
|
||||
"raw": "180.0deg",
|
||||
"start": 0,
|
||||
"type": "Literal",
|
||||
"type": "Literal",
|
||||
"value": {
|
||||
"value": 180.0,
|
||||
"suffix": "None"
|
||||
"suffix": "Deg"
|
||||
}
|
||||
}
|
||||
},
|
||||
@ -6331,13 +6309,13 @@ description: Result of parsing food-service-spatula.kcl
|
||||
"arg": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"raw": "270.0",
|
||||
"raw": "270.0deg",
|
||||
"start": 0,
|
||||
"type": "Literal",
|
||||
"type": "Literal",
|
||||
"value": {
|
||||
"value": 270.0,
|
||||
"suffix": "None"
|
||||
"suffix": "Deg"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
@ -2134,13 +2134,9 @@ description: Operations executed food-service-spatula.kcl
|
||||
"type": "Number",
|
||||
"value": 90.0,
|
||||
"ty": {
|
||||
"type": "Default",
|
||||
"len": {
|
||||
"type": "Mm"
|
||||
},
|
||||
"angle": {
|
||||
"type": "Degrees"
|
||||
}
|
||||
"type": "Known",
|
||||
"type": "Angle",
|
||||
"type": "Degrees"
|
||||
}
|
||||
},
|
||||
"visibility": "default",
|
||||
|
@ -27,9 +27,9 @@ description: Variables in memory after executing food-service-spatula.kcl
|
||||
"id": "[uuid]",
|
||||
"sourceRange": [],
|
||||
"tag": {
|
||||
"commentStart": 1590,
|
||||
"end": 1599,
|
||||
"start": 1590,
|
||||
"commentStart": 1592,
|
||||
"end": 1601,
|
||||
"start": 1592,
|
||||
"type": "TagDeclarator",
|
||||
"value": "backEdge"
|
||||
},
|
||||
@ -90,9 +90,9 @@ description: Variables in memory after executing food-service-spatula.kcl
|
||||
-30.0
|
||||
],
|
||||
"tag": {
|
||||
"commentStart": 1590,
|
||||
"end": 1599,
|
||||
"start": 1590,
|
||||
"commentStart": 1592,
|
||||
"end": 1601,
|
||||
"start": 1592,
|
||||
"type": "TagDeclarator",
|
||||
"value": "backEdge"
|
||||
},
|
||||
@ -299,9 +299,9 @@ description: Variables in memory after executing food-service-spatula.kcl
|
||||
-30.0
|
||||
],
|
||||
"tag": {
|
||||
"commentStart": 1590,
|
||||
"end": 1599,
|
||||
"start": 1590,
|
||||
"commentStart": 1592,
|
||||
"end": 1601,
|
||||
"start": 1592,
|
||||
"type": "TagDeclarator",
|
||||
"value": "backEdge"
|
||||
},
|
||||
@ -551,9 +551,9 @@ description: Variables in memory after executing food-service-spatula.kcl
|
||||
"id": "[uuid]",
|
||||
"sourceRange": [],
|
||||
"tag": {
|
||||
"commentStart": 4336,
|
||||
"end": 4348,
|
||||
"start": 4336,
|
||||
"commentStart": 4356,
|
||||
"end": 4368,
|
||||
"start": 4356,
|
||||
"type": "TagDeclarator",
|
||||
"value": "gripEdgeTop"
|
||||
},
|
||||
@ -713,9 +713,9 @@ description: Variables in memory after executing food-service-spatula.kcl
|
||||
7.0
|
||||
],
|
||||
"tag": {
|
||||
"commentStart": 4336,
|
||||
"end": 4348,
|
||||
"start": 4336,
|
||||
"commentStart": 4356,
|
||||
"end": 4368,
|
||||
"start": 4356,
|
||||
"type": "TagDeclarator",
|
||||
"value": "gripEdgeTop"
|
||||
},
|
||||
@ -1058,9 +1058,9 @@ description: Variables in memory after executing food-service-spatula.kcl
|
||||
"id": "[uuid]",
|
||||
"sourceRange": [],
|
||||
"tag": {
|
||||
"commentStart": 4336,
|
||||
"end": 4348,
|
||||
"start": 4336,
|
||||
"commentStart": 4356,
|
||||
"end": 4368,
|
||||
"start": 4356,
|
||||
"type": "TagDeclarator",
|
||||
"value": "gripEdgeTop"
|
||||
},
|
||||
@ -1220,9 +1220,9 @@ description: Variables in memory after executing food-service-spatula.kcl
|
||||
7.0
|
||||
],
|
||||
"tag": {
|
||||
"commentStart": 4336,
|
||||
"end": 4348,
|
||||
"start": 4336,
|
||||
"commentStart": 4356,
|
||||
"end": 4368,
|
||||
"start": 4356,
|
||||
"type": "TagDeclarator",
|
||||
"value": "gripEdgeTop"
|
||||
},
|
||||
@ -1538,9 +1538,9 @@ description: Variables in memory after executing food-service-spatula.kcl
|
||||
7.0
|
||||
],
|
||||
"tag": {
|
||||
"commentStart": 4336,
|
||||
"end": 4348,
|
||||
"start": 4336,
|
||||
"commentStart": 4356,
|
||||
"end": 4368,
|
||||
"start": 4356,
|
||||
"type": "TagDeclarator",
|
||||
"value": "gripEdgeTop"
|
||||
},
|
||||
@ -1729,9 +1729,9 @@ description: Variables in memory after executing food-service-spatula.kcl
|
||||
"id": "[uuid]",
|
||||
"sourceRange": [],
|
||||
"tag": {
|
||||
"commentStart": 2988,
|
||||
"end": 3005,
|
||||
"start": 2988,
|
||||
"commentStart": 2996,
|
||||
"end": 3013,
|
||||
"start": 2996,
|
||||
"type": "TagDeclarator",
|
||||
"value": "handleBottomEdge"
|
||||
},
|
||||
@ -1756,9 +1756,9 @@ description: Variables in memory after executing food-service-spatula.kcl
|
||||
"id": "[uuid]",
|
||||
"sourceRange": [],
|
||||
"tag": {
|
||||
"commentStart": 3136,
|
||||
"end": 3150,
|
||||
"start": 3136,
|
||||
"commentStart": 3144,
|
||||
"end": 3158,
|
||||
"start": 3144,
|
||||
"type": "TagDeclarator",
|
||||
"value": "handleTopEdge"
|
||||
},
|
||||
@ -1800,9 +1800,9 @@ description: Variables in memory after executing food-service-spatula.kcl
|
||||
3.5
|
||||
],
|
||||
"tag": {
|
||||
"commentStart": 2988,
|
||||
"end": 3005,
|
||||
"start": 2988,
|
||||
"commentStart": 2996,
|
||||
"end": 3013,
|
||||
"start": 2996,
|
||||
"type": "TagDeclarator",
|
||||
"value": "handleBottomEdge"
|
||||
},
|
||||
@ -1863,9 +1863,9 @@ description: Variables in memory after executing food-service-spatula.kcl
|
||||
91.32128900000001
|
||||
],
|
||||
"tag": {
|
||||
"commentStart": 3136,
|
||||
"end": 3150,
|
||||
"start": 3136,
|
||||
"commentStart": 3144,
|
||||
"end": 3158,
|
||||
"start": 3144,
|
||||
"type": "TagDeclarator",
|
||||
"value": "handleTopEdge"
|
||||
},
|
||||
@ -2211,9 +2211,9 @@ description: Variables in memory after executing food-service-spatula.kcl
|
||||
3.5
|
||||
],
|
||||
"tag": {
|
||||
"commentStart": 2988,
|
||||
"end": 3005,
|
||||
"start": 2988,
|
||||
"commentStart": 2996,
|
||||
"end": 3013,
|
||||
"start": 2996,
|
||||
"type": "TagDeclarator",
|
||||
"value": "handleBottomEdge"
|
||||
},
|
||||
@ -2274,9 +2274,9 @@ description: Variables in memory after executing food-service-spatula.kcl
|
||||
91.32128900000001
|
||||
],
|
||||
"tag": {
|
||||
"commentStart": 3136,
|
||||
"end": 3150,
|
||||
"start": 3136,
|
||||
"commentStart": 3144,
|
||||
"end": 3158,
|
||||
"start": 3144,
|
||||
"type": "TagDeclarator",
|
||||
"value": "handleTopEdge"
|
||||
},
|
||||
@ -2536,9 +2536,9 @@ description: Variables in memory after executing food-service-spatula.kcl
|
||||
"id": "[uuid]",
|
||||
"sourceRange": [],
|
||||
"tag": {
|
||||
"commentStart": 4336,
|
||||
"end": 4348,
|
||||
"start": 4336,
|
||||
"commentStart": 4356,
|
||||
"end": 4368,
|
||||
"start": 4356,
|
||||
"type": "TagDeclarator",
|
||||
"value": "gripEdgeTop"
|
||||
},
|
||||
@ -2698,9 +2698,9 @@ description: Variables in memory after executing food-service-spatula.kcl
|
||||
7.0
|
||||
],
|
||||
"tag": {
|
||||
"commentStart": 4336,
|
||||
"end": 4348,
|
||||
"start": 4336,
|
||||
"commentStart": 4356,
|
||||
"end": 4368,
|
||||
"start": 4356,
|
||||
"type": "TagDeclarator",
|
||||
"value": "gripEdgeTop"
|
||||
},
|
||||
@ -3371,9 +3371,9 @@ description: Variables in memory after executing food-service-spatula.kcl
|
||||
-30.0
|
||||
],
|
||||
"tag": {
|
||||
"commentStart": 1590,
|
||||
"end": 1599,
|
||||
"start": 1590,
|
||||
"commentStart": 1592,
|
||||
"end": 1601,
|
||||
"start": 1592,
|
||||
"type": "TagDeclarator",
|
||||
"value": "backEdge"
|
||||
},
|
||||
|
@ -394,13 +394,13 @@ description: Result of parsing french-press.kcl
|
||||
"right": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"raw": "90",
|
||||
"raw": "90deg",
|
||||
"start": 0,
|
||||
"type": "Literal",
|
||||
"type": "Literal",
|
||||
"value": {
|
||||
"value": 90.0,
|
||||
"suffix": "None"
|
||||
"suffix": "Deg"
|
||||
}
|
||||
},
|
||||
"start": 0,
|
||||
@ -765,13 +765,13 @@ description: Result of parsing french-press.kcl
|
||||
"arg": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"raw": "360",
|
||||
"raw": "360deg",
|
||||
"start": 0,
|
||||
"type": "Literal",
|
||||
"type": "Literal",
|
||||
"value": {
|
||||
"value": 360.0,
|
||||
"suffix": "None"
|
||||
"suffix": "Deg"
|
||||
}
|
||||
}
|
||||
},
|
||||
@ -1411,13 +1411,13 @@ description: Result of parsing french-press.kcl
|
||||
"arg": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"raw": "180",
|
||||
"raw": "180deg",
|
||||
"start": 0,
|
||||
"type": "Literal",
|
||||
"type": "Literal",
|
||||
"value": {
|
||||
"value": 180.0,
|
||||
"suffix": "None"
|
||||
"suffix": "Deg"
|
||||
}
|
||||
}
|
||||
},
|
||||
@ -1433,13 +1433,13 @@ description: Result of parsing french-press.kcl
|
||||
"arg": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"raw": "205",
|
||||
"raw": "205deg",
|
||||
"start": 0,
|
||||
"type": "Literal",
|
||||
"type": "Literal",
|
||||
"value": {
|
||||
"value": 205.0,
|
||||
"suffix": "None"
|
||||
"suffix": "Deg"
|
||||
}
|
||||
}
|
||||
},
|
||||
@ -1503,13 +1503,13 @@ description: Result of parsing french-press.kcl
|
||||
"argument": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"raw": "60",
|
||||
"raw": "60deg",
|
||||
"start": 0,
|
||||
"type": "Literal",
|
||||
"type": "Literal",
|
||||
"value": {
|
||||
"value": 60.0,
|
||||
"suffix": "None"
|
||||
"suffix": "Deg"
|
||||
}
|
||||
},
|
||||
"commentStart": 0,
|
||||
@ -1597,13 +1597,13 @@ description: Result of parsing french-press.kcl
|
||||
"arg": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"raw": "30",
|
||||
"raw": "30deg",
|
||||
"start": 0,
|
||||
"type": "Literal",
|
||||
"type": "Literal",
|
||||
"value": {
|
||||
"value": 30.0,
|
||||
"suffix": "None"
|
||||
"suffix": "Deg"
|
||||
}
|
||||
}
|
||||
},
|
||||
@ -1620,13 +1620,13 @@ description: Result of parsing french-press.kcl
|
||||
"argument": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"raw": "120",
|
||||
"raw": "120deg",
|
||||
"start": 0,
|
||||
"type": "Literal",
|
||||
"type": "Literal",
|
||||
"value": {
|
||||
"value": 120.0,
|
||||
"suffix": "None"
|
||||
"suffix": "Deg"
|
||||
}
|
||||
},
|
||||
"commentStart": 0,
|
||||
@ -1696,13 +1696,13 @@ description: Result of parsing french-press.kcl
|
||||
"arg": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"raw": "150",
|
||||
"raw": "150deg",
|
||||
"start": 0,
|
||||
"type": "Literal",
|
||||
"type": "Literal",
|
||||
"value": {
|
||||
"value": 150.0,
|
||||
"suffix": "None"
|
||||
"suffix": "Deg"
|
||||
}
|
||||
}
|
||||
},
|
||||
@ -1791,13 +1791,13 @@ description: Result of parsing french-press.kcl
|
||||
"arg": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"raw": "60",
|
||||
"raw": "60deg",
|
||||
"start": 0,
|
||||
"type": "Literal",
|
||||
"type": "Literal",
|
||||
"value": {
|
||||
"value": 60.0,
|
||||
"suffix": "None"
|
||||
"suffix": "Deg"
|
||||
}
|
||||
}
|
||||
},
|
||||
@ -1813,13 +1813,13 @@ description: Result of parsing french-press.kcl
|
||||
"arg": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"raw": "90",
|
||||
"raw": "90deg",
|
||||
"start": 0,
|
||||
"type": "Literal",
|
||||
"type": "Literal",
|
||||
"value": {
|
||||
"value": 90.0,
|
||||
"suffix": "None"
|
||||
"suffix": "Deg"
|
||||
}
|
||||
}
|
||||
},
|
||||
@ -2105,13 +2105,13 @@ description: Result of parsing french-press.kcl
|
||||
"arg": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"raw": "90",
|
||||
"raw": "90deg",
|
||||
"start": 0,
|
||||
"type": "Literal",
|
||||
"type": "Literal",
|
||||
"value": {
|
||||
"value": 90.0,
|
||||
"suffix": "None"
|
||||
"suffix": "Deg"
|
||||
}
|
||||
}
|
||||
},
|
||||
@ -2127,13 +2127,13 @@ description: Result of parsing french-press.kcl
|
||||
"arg": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"raw": "60",
|
||||
"raw": "60deg",
|
||||
"start": 0,
|
||||
"type": "Literal",
|
||||
"type": "Literal",
|
||||
"value": {
|
||||
"value": 60.0,
|
||||
"suffix": "None"
|
||||
"suffix": "Deg"
|
||||
}
|
||||
}
|
||||
},
|
||||
@ -2196,13 +2196,13 @@ description: Result of parsing french-press.kcl
|
||||
"arg": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"raw": "150",
|
||||
"raw": "150deg",
|
||||
"start": 0,
|
||||
"type": "Literal",
|
||||
"type": "Literal",
|
||||
"value": {
|
||||
"value": 150.0,
|
||||
"suffix": "None"
|
||||
"suffix": "Deg"
|
||||
}
|
||||
}
|
||||
},
|
||||
@ -2338,13 +2338,13 @@ description: Result of parsing french-press.kcl
|
||||
"argument": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"raw": "120",
|
||||
"raw": "120deg",
|
||||
"start": 0,
|
||||
"type": "Literal",
|
||||
"type": "Literal",
|
||||
"value": {
|
||||
"value": 120.0,
|
||||
"suffix": "None"
|
||||
"suffix": "Deg"
|
||||
}
|
||||
},
|
||||
"commentStart": 0,
|
||||
@ -2367,13 +2367,13 @@ description: Result of parsing french-press.kcl
|
||||
"arg": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"raw": "30",
|
||||
"raw": "30deg",
|
||||
"start": 0,
|
||||
"type": "Literal",
|
||||
"type": "Literal",
|
||||
"value": {
|
||||
"value": 30.0,
|
||||
"suffix": "None"
|
||||
"suffix": "Deg"
|
||||
}
|
||||
}
|
||||
},
|
||||
@ -2437,13 +2437,13 @@ description: Result of parsing french-press.kcl
|
||||
"argument": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"raw": "60",
|
||||
"raw": "60deg",
|
||||
"start": 0,
|
||||
"type": "Literal",
|
||||
"type": "Literal",
|
||||
"value": {
|
||||
"value": 60.0,
|
||||
"suffix": "None"
|
||||
"suffix": "Deg"
|
||||
}
|
||||
},
|
||||
"commentStart": 0,
|
||||
@ -2585,13 +2585,13 @@ description: Result of parsing french-press.kcl
|
||||
"arg": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"raw": "205",
|
||||
"raw": "205deg",
|
||||
"start": 0,
|
||||
"type": "Literal",
|
||||
"type": "Literal",
|
||||
"value": {
|
||||
"value": 205.0,
|
||||
"suffix": "None"
|
||||
"suffix": "Deg"
|
||||
}
|
||||
}
|
||||
},
|
||||
@ -2607,13 +2607,13 @@ description: Result of parsing french-press.kcl
|
||||
"arg": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"raw": "180",
|
||||
"raw": "180deg",
|
||||
"start": 0,
|
||||
"type": "Literal",
|
||||
"type": "Literal",
|
||||
"value": {
|
||||
"value": 180.0,
|
||||
"suffix": "None"
|
||||
"suffix": "Deg"
|
||||
}
|
||||
}
|
||||
},
|
||||
@ -2980,13 +2980,13 @@ description: Result of parsing french-press.kcl
|
||||
"arg": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"raw": "360",
|
||||
"raw": "360deg",
|
||||
"start": 0,
|
||||
"type": "Literal",
|
||||
"type": "Literal",
|
||||
"value": {
|
||||
"value": 360.0,
|
||||
"suffix": "None"
|
||||
"suffix": "Deg"
|
||||
}
|
||||
}
|
||||
},
|
||||
@ -3611,13 +3611,13 @@ description: Result of parsing french-press.kcl
|
||||
"arg": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"raw": "90",
|
||||
"raw": "90deg",
|
||||
"start": 0,
|
||||
"type": "Literal",
|
||||
"type": "Literal",
|
||||
"value": {
|
||||
"value": 90.0,
|
||||
"suffix": "None"
|
||||
"suffix": "Deg"
|
||||
}
|
||||
}
|
||||
},
|
||||
@ -3634,13 +3634,13 @@ description: Result of parsing french-press.kcl
|
||||
"argument": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"raw": "30",
|
||||
"raw": "30deg",
|
||||
"start": 0,
|
||||
"type": "Literal",
|
||||
"type": "Literal",
|
||||
"value": {
|
||||
"value": 30.0,
|
||||
"suffix": "None"
|
||||
"suffix": "Deg"
|
||||
}
|
||||
},
|
||||
"commentStart": 0,
|
||||
@ -4284,13 +4284,13 @@ description: Result of parsing french-press.kcl
|
||||
"arg": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"raw": "30",
|
||||
"raw": "30deg",
|
||||
"start": 0,
|
||||
"type": "Literal",
|
||||
"type": "Literal",
|
||||
"value": {
|
||||
"value": 30.0,
|
||||
"suffix": "None"
|
||||
"suffix": "Deg"
|
||||
}
|
||||
}
|
||||
},
|
||||
@ -4416,13 +4416,13 @@ description: Result of parsing french-press.kcl
|
||||
"argument": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"raw": "60",
|
||||
"raw": "60deg",
|
||||
"start": 0,
|
||||
"type": "Literal",
|
||||
"type": "Literal",
|
||||
"value": {
|
||||
"value": 60.0,
|
||||
"suffix": "None"
|
||||
"suffix": "Deg"
|
||||
}
|
||||
},
|
||||
"commentStart": 0,
|
||||
@ -4492,13 +4492,13 @@ description: Result of parsing french-press.kcl
|
||||
"arg": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"raw": "30",
|
||||
"raw": "30deg",
|
||||
"start": 0,
|
||||
"type": "Literal",
|
||||
"type": "Literal",
|
||||
"value": {
|
||||
"value": 30.0,
|
||||
"suffix": "None"
|
||||
"suffix": "Deg"
|
||||
}
|
||||
}
|
||||
},
|
||||
@ -5045,13 +5045,13 @@ description: Result of parsing french-press.kcl
|
||||
"arg": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"raw": "10",
|
||||
"raw": "10deg",
|
||||
"start": 0,
|
||||
"type": "Literal",
|
||||
"type": "Literal",
|
||||
"value": {
|
||||
"value": 10.0,
|
||||
"suffix": "None"
|
||||
"suffix": "Deg"
|
||||
}
|
||||
}
|
||||
},
|
||||
@ -5307,13 +5307,13 @@ description: Result of parsing french-press.kcl
|
||||
"argument": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"raw": "90",
|
||||
"raw": "90deg",
|
||||
"start": 0,
|
||||
"type": "Literal",
|
||||
"type": "Literal",
|
||||
"value": {
|
||||
"value": 90.0,
|
||||
"suffix": "None"
|
||||
"suffix": "Deg"
|
||||
}
|
||||
},
|
||||
"commentStart": 0,
|
||||
@ -6262,13 +6262,13 @@ description: Result of parsing french-press.kcl
|
||||
"arg": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"raw": "360",
|
||||
"raw": "360deg",
|
||||
"start": 0,
|
||||
"type": "Literal",
|
||||
"type": "Literal",
|
||||
"value": {
|
||||
"value": 360.0,
|
||||
"suffix": "None"
|
||||
"suffix": "Deg"
|
||||
}
|
||||
}
|
||||
},
|
||||
@ -6675,13 +6675,13 @@ description: Result of parsing french-press.kcl
|
||||
"arg": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"raw": "360",
|
||||
"raw": "360deg",
|
||||
"start": 0,
|
||||
"type": "Literal",
|
||||
"type": "Literal",
|
||||
"value": {
|
||||
"value": 360.0,
|
||||
"suffix": "None"
|
||||
"suffix": "Deg"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
@ -152,13 +152,9 @@ description: Operations executed french-press.kcl
|
||||
"type": "Number",
|
||||
"value": 360.0,
|
||||
"ty": {
|
||||
"type": "Default",
|
||||
"len": {
|
||||
"type": "Inches"
|
||||
},
|
||||
"angle": {
|
||||
"type": "Degrees"
|
||||
}
|
||||
"type": "Known",
|
||||
"type": "Angle",
|
||||
"type": "Degrees"
|
||||
}
|
||||
},
|
||||
"sourceRange": []
|
||||
|
@ -4412,9 +4412,9 @@ description: Variables in memory after executing french-press.kcl
|
||||
"id": "[uuid]",
|
||||
"sourceRange": [],
|
||||
"tag": {
|
||||
"commentStart": 479,
|
||||
"end": 500,
|
||||
"start": 479,
|
||||
"commentStart": 482,
|
||||
"end": 503,
|
||||
"start": 482,
|
||||
"type": "TagDeclarator",
|
||||
"value": "rectangleSegmentB001"
|
||||
},
|
||||
@ -4425,9 +4425,9 @@ description: Variables in memory after executing french-press.kcl
|
||||
"id": "[uuid]",
|
||||
"sourceRange": [],
|
||||
"tag": {
|
||||
"commentStart": 602,
|
||||
"end": 623,
|
||||
"start": 602,
|
||||
"commentStart": 605,
|
||||
"end": 626,
|
||||
"start": 605,
|
||||
"type": "TagDeclarator",
|
||||
"value": "rectangleSegmentC001"
|
||||
},
|
||||
@ -4480,9 +4480,9 @@ description: Variables in memory after executing french-press.kcl
|
||||
5.7
|
||||
],
|
||||
"tag": {
|
||||
"commentStart": 479,
|
||||
"end": 500,
|
||||
"start": 479,
|
||||
"commentStart": 482,
|
||||
"end": 503,
|
||||
"start": 482,
|
||||
"type": "TagDeclarator",
|
||||
"value": "rectangleSegmentB001"
|
||||
},
|
||||
@ -4505,9 +4505,9 @@ description: Variables in memory after executing french-press.kcl
|
||||
6.45
|
||||
],
|
||||
"tag": {
|
||||
"commentStart": 602,
|
||||
"end": 623,
|
||||
"start": 602,
|
||||
"commentStart": 605,
|
||||
"end": 626,
|
||||
"start": 605,
|
||||
"type": "TagDeclarator",
|
||||
"value": "rectangleSegmentC001"
|
||||
},
|
||||
@ -4658,9 +4658,9 @@ description: Variables in memory after executing french-press.kcl
|
||||
"id": "[uuid]",
|
||||
"sourceRange": [],
|
||||
"tag": {
|
||||
"commentStart": 1091,
|
||||
"end": 1097,
|
||||
"start": 1091,
|
||||
"commentStart": 1097,
|
||||
"end": 1103,
|
||||
"start": 1097,
|
||||
"type": "TagDeclarator",
|
||||
"value": "edge1"
|
||||
},
|
||||
@ -4678,9 +4678,9 @@ description: Variables in memory after executing french-press.kcl
|
||||
"id": "[uuid]",
|
||||
"sourceRange": [],
|
||||
"tag": {
|
||||
"commentStart": 1205,
|
||||
"end": 1211,
|
||||
"start": 1205,
|
||||
"commentStart": 1220,
|
||||
"end": 1226,
|
||||
"start": 1220,
|
||||
"type": "TagDeclarator",
|
||||
"value": "edge2"
|
||||
},
|
||||
@ -4698,9 +4698,9 @@ description: Variables in memory after executing french-press.kcl
|
||||
"id": "[uuid]",
|
||||
"sourceRange": [],
|
||||
"tag": {
|
||||
"commentStart": 1326,
|
||||
"end": 1332,
|
||||
"start": 1326,
|
||||
"commentStart": 1350,
|
||||
"end": 1356,
|
||||
"start": 1350,
|
||||
"type": "TagDeclarator",
|
||||
"value": "edge3"
|
||||
},
|
||||
@ -4718,9 +4718,9 @@ description: Variables in memory after executing french-press.kcl
|
||||
"id": "[uuid]",
|
||||
"sourceRange": [],
|
||||
"tag": {
|
||||
"commentStart": 1425,
|
||||
"end": 1433,
|
||||
"start": 1425,
|
||||
"commentStart": 1455,
|
||||
"end": 1463,
|
||||
"start": 1455,
|
||||
"type": "TagDeclarator",
|
||||
"value": "edgeLen"
|
||||
},
|
||||
@ -4738,9 +4738,9 @@ description: Variables in memory after executing french-press.kcl
|
||||
"id": "[uuid]",
|
||||
"sourceRange": [],
|
||||
"tag": {
|
||||
"commentStart": 1511,
|
||||
"end": 1517,
|
||||
"start": 1511,
|
||||
"commentStart": 1541,
|
||||
"end": 1547,
|
||||
"start": 1541,
|
||||
"type": "TagDeclarator",
|
||||
"value": "edge4"
|
||||
},
|
||||
@ -4758,9 +4758,9 @@ description: Variables in memory after executing french-press.kcl
|
||||
"id": "[uuid]",
|
||||
"sourceRange": [],
|
||||
"tag": {
|
||||
"commentStart": 1642,
|
||||
"end": 1648,
|
||||
"start": 1642,
|
||||
"commentStart": 1681,
|
||||
"end": 1687,
|
||||
"start": 1681,
|
||||
"type": "TagDeclarator",
|
||||
"value": "edge5"
|
||||
},
|
||||
@ -4778,9 +4778,9 @@ description: Variables in memory after executing french-press.kcl
|
||||
"id": "[uuid]",
|
||||
"sourceRange": [],
|
||||
"tag": {
|
||||
"commentStart": 1775,
|
||||
"end": 1781,
|
||||
"start": 1775,
|
||||
"commentStart": 1823,
|
||||
"end": 1829,
|
||||
"start": 1823,
|
||||
"type": "TagDeclarator",
|
||||
"value": "edge6"
|
||||
},
|
||||
@ -4834,9 +4834,9 @@ description: Variables in memory after executing french-press.kcl
|
||||
5.7
|
||||
],
|
||||
"tag": {
|
||||
"commentStart": 1091,
|
||||
"end": 1097,
|
||||
"start": 1091,
|
||||
"commentStart": 1097,
|
||||
"end": 1103,
|
||||
"start": 1097,
|
||||
"type": "TagDeclarator",
|
||||
"value": "edge1"
|
||||
},
|
||||
@ -4884,9 +4884,9 @@ description: Variables in memory after executing french-press.kcl
|
||||
0.37321452147779016
|
||||
],
|
||||
"tag": {
|
||||
"commentStart": 1205,
|
||||
"end": 1211,
|
||||
"start": 1205,
|
||||
"commentStart": 1220,
|
||||
"end": 1226,
|
||||
"start": 1220,
|
||||
"type": "TagDeclarator",
|
||||
"value": "edge2"
|
||||
},
|
||||
@ -4934,9 +4934,9 @@ description: Variables in memory after executing french-press.kcl
|
||||
-0.9660159630635361
|
||||
],
|
||||
"tag": {
|
||||
"commentStart": 1326,
|
||||
"end": 1332,
|
||||
"start": 1326,
|
||||
"commentStart": 1350,
|
||||
"end": 1356,
|
||||
"start": 1350,
|
||||
"type": "TagDeclarator",
|
||||
"value": "edge3"
|
||||
},
|
||||
@ -4984,9 +4984,9 @@ description: Variables in memory after executing french-press.kcl
|
||||
-0.13301270189221936
|
||||
],
|
||||
"tag": {
|
||||
"commentStart": 1425,
|
||||
"end": 1433,
|
||||
"start": 1425,
|
||||
"commentStart": 1455,
|
||||
"end": 1463,
|
||||
"start": 1455,
|
||||
"type": "TagDeclarator",
|
||||
"value": "edgeLen"
|
||||
},
|
||||
@ -5028,9 +5028,9 @@ description: Variables in memory after executing french-press.kcl
|
||||
-0.03301270189221936
|
||||
],
|
||||
"tag": {
|
||||
"commentStart": 1511,
|
||||
"end": 1517,
|
||||
"start": 1511,
|
||||
"commentStart": 1541,
|
||||
"end": 1547,
|
||||
"start": 1541,
|
||||
"type": "TagDeclarator",
|
||||
"value": "edge4"
|
||||
},
|
||||
@ -5078,9 +5078,9 @@ description: Variables in memory after executing french-press.kcl
|
||||
-0.11339745962155623
|
||||
],
|
||||
"tag": {
|
||||
"commentStart": 1642,
|
||||
"end": 1648,
|
||||
"start": 1642,
|
||||
"commentStart": 1681,
|
||||
"end": 1687,
|
||||
"start": 1681,
|
||||
"type": "TagDeclarator",
|
||||
"value": "edge5"
|
||||
},
|
||||
@ -5128,9 +5128,9 @@ description: Variables in memory after executing french-press.kcl
|
||||
-0.17890072079287297
|
||||
],
|
||||
"tag": {
|
||||
"commentStart": 1775,
|
||||
"end": 1781,
|
||||
"start": 1775,
|
||||
"commentStart": 1823,
|
||||
"end": 1829,
|
||||
"start": 1823,
|
||||
"type": "TagDeclarator",
|
||||
"value": "edge6"
|
||||
},
|
||||
@ -5319,9 +5319,9 @@ description: Variables in memory after executing french-press.kcl
|
||||
"id": "[uuid]",
|
||||
"sourceRange": [],
|
||||
"tag": {
|
||||
"commentStart": 1091,
|
||||
"end": 1097,
|
||||
"start": 1091,
|
||||
"commentStart": 1097,
|
||||
"end": 1103,
|
||||
"start": 1097,
|
||||
"type": "TagDeclarator",
|
||||
"value": "edge1"
|
||||
},
|
||||
@ -5339,9 +5339,9 @@ description: Variables in memory after executing french-press.kcl
|
||||
"id": "[uuid]",
|
||||
"sourceRange": [],
|
||||
"tag": {
|
||||
"commentStart": 1205,
|
||||
"end": 1211,
|
||||
"start": 1205,
|
||||
"commentStart": 1220,
|
||||
"end": 1226,
|
||||
"start": 1220,
|
||||
"type": "TagDeclarator",
|
||||
"value": "edge2"
|
||||
},
|
||||
@ -5359,9 +5359,9 @@ description: Variables in memory after executing french-press.kcl
|
||||
"id": "[uuid]",
|
||||
"sourceRange": [],
|
||||
"tag": {
|
||||
"commentStart": 1326,
|
||||
"end": 1332,
|
||||
"start": 1326,
|
||||
"commentStart": 1350,
|
||||
"end": 1356,
|
||||
"start": 1350,
|
||||
"type": "TagDeclarator",
|
||||
"value": "edge3"
|
||||
},
|
||||
@ -5379,9 +5379,9 @@ description: Variables in memory after executing french-press.kcl
|
||||
"id": "[uuid]",
|
||||
"sourceRange": [],
|
||||
"tag": {
|
||||
"commentStart": 1425,
|
||||
"end": 1433,
|
||||
"start": 1425,
|
||||
"commentStart": 1455,
|
||||
"end": 1463,
|
||||
"start": 1455,
|
||||
"type": "TagDeclarator",
|
||||
"value": "edgeLen"
|
||||
},
|
||||
@ -5399,9 +5399,9 @@ description: Variables in memory after executing french-press.kcl
|
||||
"id": "[uuid]",
|
||||
"sourceRange": [],
|
||||
"tag": {
|
||||
"commentStart": 1511,
|
||||
"end": 1517,
|
||||
"start": 1511,
|
||||
"commentStart": 1541,
|
||||
"end": 1547,
|
||||
"start": 1541,
|
||||
"type": "TagDeclarator",
|
||||
"value": "edge4"
|
||||
},
|
||||
@ -5419,9 +5419,9 @@ description: Variables in memory after executing french-press.kcl
|
||||
"id": "[uuid]",
|
||||
"sourceRange": [],
|
||||
"tag": {
|
||||
"commentStart": 1642,
|
||||
"end": 1648,
|
||||
"start": 1642,
|
||||
"commentStart": 1681,
|
||||
"end": 1687,
|
||||
"start": 1681,
|
||||
"type": "TagDeclarator",
|
||||
"value": "edge5"
|
||||
},
|
||||
@ -5439,9 +5439,9 @@ description: Variables in memory after executing french-press.kcl
|
||||
"id": "[uuid]",
|
||||
"sourceRange": [],
|
||||
"tag": {
|
||||
"commentStart": 1775,
|
||||
"end": 1781,
|
||||
"start": 1775,
|
||||
"commentStart": 1823,
|
||||
"end": 1829,
|
||||
"start": 1823,
|
||||
"type": "TagDeclarator",
|
||||
"value": "edge6"
|
||||
},
|
||||
@ -5495,9 +5495,9 @@ description: Variables in memory after executing french-press.kcl
|
||||
5.7
|
||||
],
|
||||
"tag": {
|
||||
"commentStart": 1091,
|
||||
"end": 1097,
|
||||
"start": 1091,
|
||||
"commentStart": 1097,
|
||||
"end": 1103,
|
||||
"start": 1097,
|
||||
"type": "TagDeclarator",
|
||||
"value": "edge1"
|
||||
},
|
||||
@ -5545,9 +5545,9 @@ description: Variables in memory after executing french-press.kcl
|
||||
0.37321452147779016
|
||||
],
|
||||
"tag": {
|
||||
"commentStart": 1205,
|
||||
"end": 1211,
|
||||
"start": 1205,
|
||||
"commentStart": 1220,
|
||||
"end": 1226,
|
||||
"start": 1220,
|
||||
"type": "TagDeclarator",
|
||||
"value": "edge2"
|
||||
},
|
||||
@ -5595,9 +5595,9 @@ description: Variables in memory after executing french-press.kcl
|
||||
-0.9660159630635361
|
||||
],
|
||||
"tag": {
|
||||
"commentStart": 1326,
|
||||
"end": 1332,
|
||||
"start": 1326,
|
||||
"commentStart": 1350,
|
||||
"end": 1356,
|
||||
"start": 1350,
|
||||
"type": "TagDeclarator",
|
||||
"value": "edge3"
|
||||
},
|
||||
@ -5645,9 +5645,9 @@ description: Variables in memory after executing french-press.kcl
|
||||
-0.13301270189221936
|
||||
],
|
||||
"tag": {
|
||||
"commentStart": 1425,
|
||||
"end": 1433,
|
||||
"start": 1425,
|
||||
"commentStart": 1455,
|
||||
"end": 1463,
|
||||
"start": 1455,
|
||||
"type": "TagDeclarator",
|
||||
"value": "edgeLen"
|
||||
},
|
||||
@ -5689,9 +5689,9 @@ description: Variables in memory after executing french-press.kcl
|
||||
-0.03301270189221936
|
||||
],
|
||||
"tag": {
|
||||
"commentStart": 1511,
|
||||
"end": 1517,
|
||||
"start": 1511,
|
||||
"commentStart": 1541,
|
||||
"end": 1547,
|
||||
"start": 1541,
|
||||
"type": "TagDeclarator",
|
||||
"value": "edge4"
|
||||
},
|
||||
@ -5739,9 +5739,9 @@ description: Variables in memory after executing french-press.kcl
|
||||
-0.11339745962155623
|
||||
],
|
||||
"tag": {
|
||||
"commentStart": 1642,
|
||||
"end": 1648,
|
||||
"start": 1642,
|
||||
"commentStart": 1681,
|
||||
"end": 1687,
|
||||
"start": 1681,
|
||||
"type": "TagDeclarator",
|
||||
"value": "edge5"
|
||||
},
|
||||
@ -5789,9 +5789,9 @@ description: Variables in memory after executing french-press.kcl
|
||||
-0.17890072079287297
|
||||
],
|
||||
"tag": {
|
||||
"commentStart": 1775,
|
||||
"end": 1781,
|
||||
"start": 1775,
|
||||
"commentStart": 1823,
|
||||
"end": 1829,
|
||||
"start": 1823,
|
||||
"type": "TagDeclarator",
|
||||
"value": "edge6"
|
||||
},
|
||||
@ -5980,9 +5980,9 @@ description: Variables in memory after executing french-press.kcl
|
||||
"id": "[uuid]",
|
||||
"sourceRange": [],
|
||||
"tag": {
|
||||
"commentStart": 1091,
|
||||
"end": 1097,
|
||||
"start": 1091,
|
||||
"commentStart": 1097,
|
||||
"end": 1103,
|
||||
"start": 1097,
|
||||
"type": "TagDeclarator",
|
||||
"value": "edge1"
|
||||
},
|
||||
@ -6000,9 +6000,9 @@ description: Variables in memory after executing french-press.kcl
|
||||
"id": "[uuid]",
|
||||
"sourceRange": [],
|
||||
"tag": {
|
||||
"commentStart": 1205,
|
||||
"end": 1211,
|
||||
"start": 1205,
|
||||
"commentStart": 1220,
|
||||
"end": 1226,
|
||||
"start": 1220,
|
||||
"type": "TagDeclarator",
|
||||
"value": "edge2"
|
||||
},
|
||||
@ -6020,9 +6020,9 @@ description: Variables in memory after executing french-press.kcl
|
||||
"id": "[uuid]",
|
||||
"sourceRange": [],
|
||||
"tag": {
|
||||
"commentStart": 1326,
|
||||
"end": 1332,
|
||||
"start": 1326,
|
||||
"commentStart": 1350,
|
||||
"end": 1356,
|
||||
"start": 1350,
|
||||
"type": "TagDeclarator",
|
||||
"value": "edge3"
|
||||
},
|
||||
@ -6040,9 +6040,9 @@ description: Variables in memory after executing french-press.kcl
|
||||
"id": "[uuid]",
|
||||
"sourceRange": [],
|
||||
"tag": {
|
||||
"commentStart": 1425,
|
||||
"end": 1433,
|
||||
"start": 1425,
|
||||
"commentStart": 1455,
|
||||
"end": 1463,
|
||||
"start": 1455,
|
||||
"type": "TagDeclarator",
|
||||
"value": "edgeLen"
|
||||
},
|
||||
@ -6060,9 +6060,9 @@ description: Variables in memory after executing french-press.kcl
|
||||
"id": "[uuid]",
|
||||
"sourceRange": [],
|
||||
"tag": {
|
||||
"commentStart": 1511,
|
||||
"end": 1517,
|
||||
"start": 1511,
|
||||
"commentStart": 1541,
|
||||
"end": 1547,
|
||||
"start": 1541,
|
||||
"type": "TagDeclarator",
|
||||
"value": "edge4"
|
||||
},
|
||||
@ -6080,9 +6080,9 @@ description: Variables in memory after executing french-press.kcl
|
||||
"id": "[uuid]",
|
||||
"sourceRange": [],
|
||||
"tag": {
|
||||
"commentStart": 1642,
|
||||
"end": 1648,
|
||||
"start": 1642,
|
||||
"commentStart": 1681,
|
||||
"end": 1687,
|
||||
"start": 1681,
|
||||
"type": "TagDeclarator",
|
||||
"value": "edge5"
|
||||
},
|
||||
@ -6100,9 +6100,9 @@ description: Variables in memory after executing french-press.kcl
|
||||
"id": "[uuid]",
|
||||
"sourceRange": [],
|
||||
"tag": {
|
||||
"commentStart": 1775,
|
||||
"end": 1781,
|
||||
"start": 1775,
|
||||
"commentStart": 1823,
|
||||
"end": 1829,
|
||||
"start": 1823,
|
||||
"type": "TagDeclarator",
|
||||
"value": "edge6"
|
||||
},
|
||||
@ -6156,9 +6156,9 @@ description: Variables in memory after executing french-press.kcl
|
||||
5.7
|
||||
],
|
||||
"tag": {
|
||||
"commentStart": 1091,
|
||||
"end": 1097,
|
||||
"start": 1091,
|
||||
"commentStart": 1097,
|
||||
"end": 1103,
|
||||
"start": 1097,
|
||||
"type": "TagDeclarator",
|
||||
"value": "edge1"
|
||||
},
|
||||
@ -6206,9 +6206,9 @@ description: Variables in memory after executing french-press.kcl
|
||||
0.37321452147779016
|
||||
],
|
||||
"tag": {
|
||||
"commentStart": 1205,
|
||||
"end": 1211,
|
||||
"start": 1205,
|
||||
"commentStart": 1220,
|
||||
"end": 1226,
|
||||
"start": 1220,
|
||||
"type": "TagDeclarator",
|
||||
"value": "edge2"
|
||||
},
|
||||
@ -6256,9 +6256,9 @@ description: Variables in memory after executing french-press.kcl
|
||||
-0.9660159630635361
|
||||
],
|
||||
"tag": {
|
||||
"commentStart": 1326,
|
||||
"end": 1332,
|
||||
"start": 1326,
|
||||
"commentStart": 1350,
|
||||
"end": 1356,
|
||||
"start": 1350,
|
||||
"type": "TagDeclarator",
|
||||
"value": "edge3"
|
||||
},
|
||||
@ -6306,9 +6306,9 @@ description: Variables in memory after executing french-press.kcl
|
||||
-0.13301270189221936
|
||||
],
|
||||
"tag": {
|
||||
"commentStart": 1425,
|
||||
"end": 1433,
|
||||
"start": 1425,
|
||||
"commentStart": 1455,
|
||||
"end": 1463,
|
||||
"start": 1455,
|
||||
"type": "TagDeclarator",
|
||||
"value": "edgeLen"
|
||||
},
|
||||
@ -6350,9 +6350,9 @@ description: Variables in memory after executing french-press.kcl
|
||||
-0.03301270189221936
|
||||
],
|
||||
"tag": {
|
||||
"commentStart": 1511,
|
||||
"end": 1517,
|
||||
"start": 1511,
|
||||
"commentStart": 1541,
|
||||
"end": 1547,
|
||||
"start": 1541,
|
||||
"type": "TagDeclarator",
|
||||
"value": "edge4"
|
||||
},
|
||||
@ -6400,9 +6400,9 @@ description: Variables in memory after executing french-press.kcl
|
||||
-0.11339745962155623
|
||||
],
|
||||
"tag": {
|
||||
"commentStart": 1642,
|
||||
"end": 1648,
|
||||
"start": 1642,
|
||||
"commentStart": 1681,
|
||||
"end": 1687,
|
||||
"start": 1681,
|
||||
"type": "TagDeclarator",
|
||||
"value": "edge5"
|
||||
},
|
||||
@ -6450,9 +6450,9 @@ description: Variables in memory after executing french-press.kcl
|
||||
-0.17890072079287297
|
||||
],
|
||||
"tag": {
|
||||
"commentStart": 1775,
|
||||
"end": 1781,
|
||||
"start": 1775,
|
||||
"commentStart": 1823,
|
||||
"end": 1829,
|
||||
"start": 1823,
|
||||
"type": "TagDeclarator",
|
||||
"value": "edge6"
|
||||
},
|
||||
@ -6641,9 +6641,9 @@ description: Variables in memory after executing french-press.kcl
|
||||
"id": "[uuid]",
|
||||
"sourceRange": [],
|
||||
"tag": {
|
||||
"commentStart": 1091,
|
||||
"end": 1097,
|
||||
"start": 1091,
|
||||
"commentStart": 1097,
|
||||
"end": 1103,
|
||||
"start": 1097,
|
||||
"type": "TagDeclarator",
|
||||
"value": "edge1"
|
||||
},
|
||||
@ -6661,9 +6661,9 @@ description: Variables in memory after executing french-press.kcl
|
||||
"id": "[uuid]",
|
||||
"sourceRange": [],
|
||||
"tag": {
|
||||
"commentStart": 1205,
|
||||
"end": 1211,
|
||||
"start": 1205,
|
||||
"commentStart": 1220,
|
||||
"end": 1226,
|
||||
"start": 1220,
|
||||
"type": "TagDeclarator",
|
||||
"value": "edge2"
|
||||
},
|
||||
@ -6681,9 +6681,9 @@ description: Variables in memory after executing french-press.kcl
|
||||
"id": "[uuid]",
|
||||
"sourceRange": [],
|
||||
"tag": {
|
||||
"commentStart": 1326,
|
||||
"end": 1332,
|
||||
"start": 1326,
|
||||
"commentStart": 1350,
|
||||
"end": 1356,
|
||||
"start": 1350,
|
||||
"type": "TagDeclarator",
|
||||
"value": "edge3"
|
||||
},
|
||||
@ -6701,9 +6701,9 @@ description: Variables in memory after executing french-press.kcl
|
||||
"id": "[uuid]",
|
||||
"sourceRange": [],
|
||||
"tag": {
|
||||
"commentStart": 1425,
|
||||
"end": 1433,
|
||||
"start": 1425,
|
||||
"commentStart": 1455,
|
||||
"end": 1463,
|
||||
"start": 1455,
|
||||
"type": "TagDeclarator",
|
||||
"value": "edgeLen"
|
||||
},
|
||||
@ -6721,9 +6721,9 @@ description: Variables in memory after executing french-press.kcl
|
||||
"id": "[uuid]",
|
||||
"sourceRange": [],
|
||||
"tag": {
|
||||
"commentStart": 1511,
|
||||
"end": 1517,
|
||||
"start": 1511,
|
||||
"commentStart": 1541,
|
||||
"end": 1547,
|
||||
"start": 1541,
|
||||
"type": "TagDeclarator",
|
||||
"value": "edge4"
|
||||
},
|
||||
@ -6741,9 +6741,9 @@ description: Variables in memory after executing french-press.kcl
|
||||
"id": "[uuid]",
|
||||
"sourceRange": [],
|
||||
"tag": {
|
||||
"commentStart": 1642,
|
||||
"end": 1648,
|
||||
"start": 1642,
|
||||
"commentStart": 1681,
|
||||
"end": 1687,
|
||||
"start": 1681,
|
||||
"type": "TagDeclarator",
|
||||
"value": "edge5"
|
||||
},
|
||||
@ -6761,9 +6761,9 @@ description: Variables in memory after executing french-press.kcl
|
||||
"id": "[uuid]",
|
||||
"sourceRange": [],
|
||||
"tag": {
|
||||
"commentStart": 1775,
|
||||
"end": 1781,
|
||||
"start": 1775,
|
||||
"commentStart": 1823,
|
||||
"end": 1829,
|
||||
"start": 1823,
|
||||
"type": "TagDeclarator",
|
||||
"value": "edge6"
|
||||
},
|
||||
@ -6817,9 +6817,9 @@ description: Variables in memory after executing french-press.kcl
|
||||
5.7
|
||||
],
|
||||
"tag": {
|
||||
"commentStart": 1091,
|
||||
"end": 1097,
|
||||
"start": 1091,
|
||||
"commentStart": 1097,
|
||||
"end": 1103,
|
||||
"start": 1097,
|
||||
"type": "TagDeclarator",
|
||||
"value": "edge1"
|
||||
},
|
||||
@ -6867,9 +6867,9 @@ description: Variables in memory after executing french-press.kcl
|
||||
0.37321452147779016
|
||||
],
|
||||
"tag": {
|
||||
"commentStart": 1205,
|
||||
"end": 1211,
|
||||
"start": 1205,
|
||||
"commentStart": 1220,
|
||||
"end": 1226,
|
||||
"start": 1220,
|
||||
"type": "TagDeclarator",
|
||||
"value": "edge2"
|
||||
},
|
||||
@ -6917,9 +6917,9 @@ description: Variables in memory after executing french-press.kcl
|
||||
-0.9660159630635361
|
||||
],
|
||||
"tag": {
|
||||
"commentStart": 1326,
|
||||
"end": 1332,
|
||||
"start": 1326,
|
||||
"commentStart": 1350,
|
||||
"end": 1356,
|
||||
"start": 1350,
|
||||
"type": "TagDeclarator",
|
||||
"value": "edge3"
|
||||
},
|
||||
@ -6967,9 +6967,9 @@ description: Variables in memory after executing french-press.kcl
|
||||
-0.13301270189221936
|
||||
],
|
||||
"tag": {
|
||||
"commentStart": 1425,
|
||||
"end": 1433,
|
||||
"start": 1425,
|
||||
"commentStart": 1455,
|
||||
"end": 1463,
|
||||
"start": 1455,
|
||||
"type": "TagDeclarator",
|
||||
"value": "edgeLen"
|
||||
},
|
||||
@ -7011,9 +7011,9 @@ description: Variables in memory after executing french-press.kcl
|
||||
-0.03301270189221936
|
||||
],
|
||||
"tag": {
|
||||
"commentStart": 1511,
|
||||
"end": 1517,
|
||||
"start": 1511,
|
||||
"commentStart": 1541,
|
||||
"end": 1547,
|
||||
"start": 1541,
|
||||
"type": "TagDeclarator",
|
||||
"value": "edge4"
|
||||
},
|
||||
@ -7061,9 +7061,9 @@ description: Variables in memory after executing french-press.kcl
|
||||
-0.11339745962155623
|
||||
],
|
||||
"tag": {
|
||||
"commentStart": 1642,
|
||||
"end": 1648,
|
||||
"start": 1642,
|
||||
"commentStart": 1681,
|
||||
"end": 1687,
|
||||
"start": 1681,
|
||||
"type": "TagDeclarator",
|
||||
"value": "edge5"
|
||||
},
|
||||
@ -7111,9 +7111,9 @@ description: Variables in memory after executing french-press.kcl
|
||||
-0.17890072079287297
|
||||
],
|
||||
"tag": {
|
||||
"commentStart": 1775,
|
||||
"end": 1781,
|
||||
"start": 1775,
|
||||
"commentStart": 1823,
|
||||
"end": 1829,
|
||||
"start": 1823,
|
||||
"type": "TagDeclarator",
|
||||
"value": "edge6"
|
||||
},
|
||||
@ -8128,9 +8128,9 @@ description: Variables in memory after executing french-press.kcl
|
||||
"id": "[uuid]",
|
||||
"sourceRange": [],
|
||||
"tag": {
|
||||
"commentStart": 2929,
|
||||
"end": 2934,
|
||||
"start": 2929,
|
||||
"commentStart": 2995,
|
||||
"end": 3000,
|
||||
"start": 2995,
|
||||
"type": "TagDeclarator",
|
||||
"value": "seg1"
|
||||
},
|
||||
@ -8198,9 +8198,9 @@ description: Variables in memory after executing french-press.kcl
|
||||
1.11
|
||||
],
|
||||
"tag": {
|
||||
"commentStart": 2929,
|
||||
"end": 2934,
|
||||
"start": 2929,
|
||||
"commentStart": 2995,
|
||||
"end": 3000,
|
||||
"start": 2995,
|
||||
"type": "TagDeclarator",
|
||||
"value": "seg1"
|
||||
},
|
||||
|
@ -382,13 +382,13 @@ description: Result of parsing hammer.kcl
|
||||
"right": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"raw": "90",
|
||||
"raw": "90deg",
|
||||
"start": 0,
|
||||
"type": "Literal",
|
||||
"type": "Literal",
|
||||
"value": {
|
||||
"value": 90.0,
|
||||
"suffix": "None"
|
||||
"suffix": "Deg"
|
||||
}
|
||||
},
|
||||
"start": 0,
|
||||
@ -497,13 +497,13 @@ description: Result of parsing hammer.kcl
|
||||
"right": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"raw": "10",
|
||||
"raw": "10deg",
|
||||
"start": 0,
|
||||
"type": "Literal",
|
||||
"type": "Literal",
|
||||
"value": {
|
||||
"value": 10.0,
|
||||
"suffix": "None"
|
||||
"suffix": "Deg"
|
||||
}
|
||||
},
|
||||
"start": 0,
|
||||
@ -803,13 +803,13 @@ description: Result of parsing hammer.kcl
|
||||
"arg": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"raw": "90",
|
||||
"raw": "90deg",
|
||||
"start": 0,
|
||||
"type": "Literal",
|
||||
"type": "Literal",
|
||||
"value": {
|
||||
"value": 90.0,
|
||||
"suffix": "None"
|
||||
"suffix": "Deg"
|
||||
}
|
||||
}
|
||||
},
|
||||
@ -945,13 +945,13 @@ description: Result of parsing hammer.kcl
|
||||
"arg": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"raw": "90",
|
||||
"raw": "90deg",
|
||||
"start": 0,
|
||||
"type": "Literal",
|
||||
"type": "Literal",
|
||||
"value": {
|
||||
"value": 90.0,
|
||||
"suffix": "None"
|
||||
"suffix": "Deg"
|
||||
}
|
||||
}
|
||||
},
|
||||
@ -1079,13 +1079,13 @@ description: Result of parsing hammer.kcl
|
||||
"arg": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"raw": "23",
|
||||
"raw": "23deg",
|
||||
"start": 0,
|
||||
"type": "Literal",
|
||||
"type": "Literal",
|
||||
"value": {
|
||||
"value": 23.0,
|
||||
"suffix": "None"
|
||||
"suffix": "Deg"
|
||||
}
|
||||
}
|
||||
},
|
||||
@ -1797,13 +1797,13 @@ description: Result of parsing hammer.kcl
|
||||
"arg": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"raw": "180",
|
||||
"raw": "180deg",
|
||||
"start": 0,
|
||||
"type": "Literal",
|
||||
"type": "Literal",
|
||||
"value": {
|
||||
"value": 180.0,
|
||||
"suffix": "None"
|
||||
"suffix": "Deg"
|
||||
}
|
||||
}
|
||||
},
|
||||
@ -1819,13 +1819,13 @@ description: Result of parsing hammer.kcl
|
||||
"arg": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"raw": "270",
|
||||
"raw": "270deg",
|
||||
"start": 0,
|
||||
"type": "Literal",
|
||||
"type": "Literal",
|
||||
"value": {
|
||||
"value": 270.0,
|
||||
"suffix": "None"
|
||||
"suffix": "Deg"
|
||||
}
|
||||
}
|
||||
},
|
||||
@ -2645,13 +2645,13 @@ description: Result of parsing hammer.kcl
|
||||
"arg": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"raw": "177",
|
||||
"raw": "177deg",
|
||||
"start": 0,
|
||||
"type": "Literal",
|
||||
"type": "Literal",
|
||||
"value": {
|
||||
"value": 177.0,
|
||||
"suffix": "None"
|
||||
"suffix": "Deg"
|
||||
}
|
||||
}
|
||||
},
|
||||
@ -3452,13 +3452,13 @@ description: Result of parsing hammer.kcl
|
||||
"argument": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"raw": "180",
|
||||
"raw": "180deg",
|
||||
"start": 0,
|
||||
"type": "Literal",
|
||||
"type": "Literal",
|
||||
"value": {
|
||||
"value": 180.0,
|
||||
"suffix": "None"
|
||||
"suffix": "Deg"
|
||||
}
|
||||
},
|
||||
"commentStart": 0,
|
||||
@ -3482,13 +3482,13 @@ description: Result of parsing hammer.kcl
|
||||
"argument": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"raw": "270",
|
||||
"raw": "270deg",
|
||||
"start": 0,
|
||||
"type": "Literal",
|
||||
"type": "Literal",
|
||||
"value": {
|
||||
"value": 270.0,
|
||||
"suffix": "None"
|
||||
"suffix": "Deg"
|
||||
}
|
||||
},
|
||||
"commentStart": 0,
|
||||
@ -5480,13 +5480,13 @@ description: Result of parsing hammer.kcl
|
||||
"arg": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"raw": "90",
|
||||
"raw": "90deg",
|
||||
"start": 0,
|
||||
"type": "Literal",
|
||||
"type": "Literal",
|
||||
"value": {
|
||||
"value": 90.0,
|
||||
"suffix": "None"
|
||||
"suffix": "Deg"
|
||||
}
|
||||
}
|
||||
},
|
||||
@ -5924,13 +5924,13 @@ description: Result of parsing hammer.kcl
|
||||
"arg": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"raw": "360",
|
||||
"raw": "360deg",
|
||||
"start": 0,
|
||||
"type": "Literal",
|
||||
"type": "Literal",
|
||||
"value": {
|
||||
"value": 360.0,
|
||||
"suffix": "None"
|
||||
"suffix": "Deg"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
@ -891,13 +891,9 @@ description: Operations executed hammer.kcl
|
||||
"type": "Number",
|
||||
"value": 360.0,
|
||||
"ty": {
|
||||
"type": "Default",
|
||||
"len": {
|
||||
"type": "Inches"
|
||||
},
|
||||
"angle": {
|
||||
"type": "Degrees"
|
||||
}
|
||||
"type": "Known",
|
||||
"type": "Angle",
|
||||
"type": "Degrees"
|
||||
}
|
||||
},
|
||||
"sourceRange": []
|
||||
|
@ -15,9 +15,9 @@ description: Variables in memory after executing hammer.kcl
|
||||
"id": "[uuid]",
|
||||
"sourceRange": [],
|
||||
"tag": {
|
||||
"commentStart": 3375,
|
||||
"end": 3381,
|
||||
"start": 3375,
|
||||
"commentStart": 3405,
|
||||
"end": 3411,
|
||||
"start": 3405,
|
||||
"type": "TagDeclarator",
|
||||
"value": "seg05"
|
||||
},
|
||||
@ -28,9 +28,9 @@ description: Variables in memory after executing hammer.kcl
|
||||
"id": "[uuid]",
|
||||
"sourceRange": [],
|
||||
"tag": {
|
||||
"commentStart": 3419,
|
||||
"end": 3431,
|
||||
"start": 3419,
|
||||
"commentStart": 3449,
|
||||
"end": 3461,
|
||||
"start": 3449,
|
||||
"type": "TagDeclarator",
|
||||
"value": "capStart001"
|
||||
},
|
||||
@ -57,9 +57,9 @@ description: Variables in memory after executing hammer.kcl
|
||||
],
|
||||
"radius": 0.45,
|
||||
"tag": {
|
||||
"commentStart": 3375,
|
||||
"end": 3381,
|
||||
"start": 3375,
|
||||
"commentStart": 3405,
|
||||
"end": 3411,
|
||||
"start": 3405,
|
||||
"type": "TagDeclarator",
|
||||
"value": "seg05"
|
||||
},
|
||||
@ -224,9 +224,9 @@ description: Variables in memory after executing hammer.kcl
|
||||
"id": "[uuid]",
|
||||
"sourceRange": [],
|
||||
"tag": {
|
||||
"commentStart": 617,
|
||||
"end": 623,
|
||||
"start": 617,
|
||||
"commentStart": 623,
|
||||
"end": 629,
|
||||
"start": 623,
|
||||
"type": "TagDeclarator",
|
||||
"value": "seg03"
|
||||
},
|
||||
@ -258,9 +258,9 @@ description: Variables in memory after executing hammer.kcl
|
||||
"id": "[uuid]",
|
||||
"sourceRange": [],
|
||||
"tag": {
|
||||
"commentStart": 779,
|
||||
"end": 785,
|
||||
"start": 779,
|
||||
"commentStart": 788,
|
||||
"end": 794,
|
||||
"start": 788,
|
||||
"type": "TagDeclarator",
|
||||
"value": "seg02"
|
||||
},
|
||||
@ -278,9 +278,9 @@ description: Variables in memory after executing hammer.kcl
|
||||
"id": "[uuid]",
|
||||
"sourceRange": [],
|
||||
"tag": {
|
||||
"commentStart": 863,
|
||||
"end": 869,
|
||||
"start": 863,
|
||||
"commentStart": 875,
|
||||
"end": 881,
|
||||
"start": 875,
|
||||
"type": "TagDeclarator",
|
||||
"value": "seg04"
|
||||
},
|
||||
@ -438,9 +438,9 @@ description: Variables in memory after executing hammer.kcl
|
||||
11.77770605137785
|
||||
],
|
||||
"tag": {
|
||||
"commentStart": 617,
|
||||
"end": 623,
|
||||
"start": 617,
|
||||
"commentStart": 623,
|
||||
"end": 629,
|
||||
"start": 623,
|
||||
"type": "TagDeclarator",
|
||||
"value": "seg03"
|
||||
},
|
||||
@ -530,9 +530,9 @@ description: Variables in memory after executing hammer.kcl
|
||||
12.799999999999999
|
||||
],
|
||||
"tag": {
|
||||
"commentStart": 779,
|
||||
"end": 785,
|
||||
"start": 779,
|
||||
"commentStart": 788,
|
||||
"end": 794,
|
||||
"start": 788,
|
||||
"type": "TagDeclarator",
|
||||
"value": "seg02"
|
||||
},
|
||||
@ -579,9 +579,9 @@ description: Variables in memory after executing hammer.kcl
|
||||
11.624999999999998
|
||||
],
|
||||
"tag": {
|
||||
"commentStart": 863,
|
||||
"end": 869,
|
||||
"start": 863,
|
||||
"commentStart": 875,
|
||||
"end": 881,
|
||||
"start": 875,
|
||||
"type": "TagDeclarator",
|
||||
"value": "seg04"
|
||||
},
|
||||
@ -810,9 +810,9 @@ description: Variables in memory after executing hammer.kcl
|
||||
"id": "[uuid]",
|
||||
"sourceRange": [],
|
||||
"tag": {
|
||||
"commentStart": 617,
|
||||
"end": 623,
|
||||
"start": 617,
|
||||
"commentStart": 623,
|
||||
"end": 629,
|
||||
"start": 623,
|
||||
"type": "TagDeclarator",
|
||||
"value": "seg03"
|
||||
},
|
||||
@ -844,9 +844,9 @@ description: Variables in memory after executing hammer.kcl
|
||||
"id": "[uuid]",
|
||||
"sourceRange": [],
|
||||
"tag": {
|
||||
"commentStart": 779,
|
||||
"end": 785,
|
||||
"start": 779,
|
||||
"commentStart": 788,
|
||||
"end": 794,
|
||||
"start": 788,
|
||||
"type": "TagDeclarator",
|
||||
"value": "seg02"
|
||||
},
|
||||
@ -864,9 +864,9 @@ description: Variables in memory after executing hammer.kcl
|
||||
"id": "[uuid]",
|
||||
"sourceRange": [],
|
||||
"tag": {
|
||||
"commentStart": 863,
|
||||
"end": 869,
|
||||
"start": 863,
|
||||
"commentStart": 875,
|
||||
"end": 881,
|
||||
"start": 875,
|
||||
"type": "TagDeclarator",
|
||||
"value": "seg04"
|
||||
},
|
||||
@ -1024,9 +1024,9 @@ description: Variables in memory after executing hammer.kcl
|
||||
11.77770605137785
|
||||
],
|
||||
"tag": {
|
||||
"commentStart": 617,
|
||||
"end": 623,
|
||||
"start": 617,
|
||||
"commentStart": 623,
|
||||
"end": 629,
|
||||
"start": 623,
|
||||
"type": "TagDeclarator",
|
||||
"value": "seg03"
|
||||
},
|
||||
@ -1116,9 +1116,9 @@ description: Variables in memory after executing hammer.kcl
|
||||
12.799999999999999
|
||||
],
|
||||
"tag": {
|
||||
"commentStart": 779,
|
||||
"end": 785,
|
||||
"start": 779,
|
||||
"commentStart": 788,
|
||||
"end": 794,
|
||||
"start": 788,
|
||||
"type": "TagDeclarator",
|
||||
"value": "seg02"
|
||||
},
|
||||
@ -1165,9 +1165,9 @@ description: Variables in memory after executing hammer.kcl
|
||||
11.624999999999998
|
||||
],
|
||||
"tag": {
|
||||
"commentStart": 863,
|
||||
"end": 869,
|
||||
"start": 863,
|
||||
"commentStart": 875,
|
||||
"end": 881,
|
||||
"start": 875,
|
||||
"type": "TagDeclarator",
|
||||
"value": "seg04"
|
||||
},
|
||||
@ -2208,9 +2208,9 @@ description: Variables in memory after executing hammer.kcl
|
||||
"id": "[uuid]",
|
||||
"sourceRange": [],
|
||||
"tag": {
|
||||
"commentStart": 617,
|
||||
"end": 623,
|
||||
"start": 617,
|
||||
"commentStart": 623,
|
||||
"end": 629,
|
||||
"start": 623,
|
||||
"type": "TagDeclarator",
|
||||
"value": "seg03"
|
||||
},
|
||||
@ -2242,9 +2242,9 @@ description: Variables in memory after executing hammer.kcl
|
||||
"id": "[uuid]",
|
||||
"sourceRange": [],
|
||||
"tag": {
|
||||
"commentStart": 779,
|
||||
"end": 785,
|
||||
"start": 779,
|
||||
"commentStart": 788,
|
||||
"end": 794,
|
||||
"start": 788,
|
||||
"type": "TagDeclarator",
|
||||
"value": "seg02"
|
||||
},
|
||||
@ -2262,9 +2262,9 @@ description: Variables in memory after executing hammer.kcl
|
||||
"id": "[uuid]",
|
||||
"sourceRange": [],
|
||||
"tag": {
|
||||
"commentStart": 863,
|
||||
"end": 869,
|
||||
"start": 863,
|
||||
"commentStart": 875,
|
||||
"end": 881,
|
||||
"start": 875,
|
||||
"type": "TagDeclarator",
|
||||
"value": "seg04"
|
||||
},
|
||||
@ -2422,9 +2422,9 @@ description: Variables in memory after executing hammer.kcl
|
||||
11.77770605137785
|
||||
],
|
||||
"tag": {
|
||||
"commentStart": 617,
|
||||
"end": 623,
|
||||
"start": 617,
|
||||
"commentStart": 623,
|
||||
"end": 629,
|
||||
"start": 623,
|
||||
"type": "TagDeclarator",
|
||||
"value": "seg03"
|
||||
},
|
||||
@ -2514,9 +2514,9 @@ description: Variables in memory after executing hammer.kcl
|
||||
12.799999999999999
|
||||
],
|
||||
"tag": {
|
||||
"commentStart": 779,
|
||||
"end": 785,
|
||||
"start": 779,
|
||||
"commentStart": 788,
|
||||
"end": 794,
|
||||
"start": 788,
|
||||
"type": "TagDeclarator",
|
||||
"value": "seg02"
|
||||
},
|
||||
@ -2563,9 +2563,9 @@ description: Variables in memory after executing hammer.kcl
|
||||
11.624999999999998
|
||||
],
|
||||
"tag": {
|
||||
"commentStart": 863,
|
||||
"end": 869,
|
||||
"start": 863,
|
||||
"commentStart": 875,
|
||||
"end": 881,
|
||||
"start": 875,
|
||||
"type": "TagDeclarator",
|
||||
"value": "seg04"
|
||||
},
|
||||
|
@ -334,7 +334,7 @@ description: Artifact commands helical-gear.kcl
|
||||
"segment": {
|
||||
"type": "line",
|
||||
"end": {
|
||||
"x": -5.816564508980187,
|
||||
"x": -5.816564508980192,
|
||||
"y": 18.856838998639372,
|
||||
"z": 0.0
|
||||
},
|
||||
@ -507,7 +507,7 @@ description: Artifact commands helical-gear.kcl
|
||||
"segment": {
|
||||
"type": "line",
|
||||
"end": {
|
||||
"x": -0.603024957692658,
|
||||
"x": -0.6030249576926529,
|
||||
"y": 22.992093443190416,
|
||||
"z": 0.0
|
||||
},
|
||||
@ -715,7 +715,7 @@ description: Artifact commands helical-gear.kcl
|
||||
"segment": {
|
||||
"type": "line",
|
||||
"end": {
|
||||
"x": 1.8787542118590292,
|
||||
"x": 1.8787542118590241,
|
||||
"y": 22.923138585530168,
|
||||
"z": 0.0
|
||||
},
|
||||
@ -750,7 +750,7 @@ description: Artifact commands helical-gear.kcl
|
||||
"segment": {
|
||||
"type": "line",
|
||||
"end": {
|
||||
"x": -1.6644342460226098,
|
||||
"x": -1.664434246022614,
|
||||
"y": 19.66322604122736,
|
||||
"z": 0.0
|
||||
},
|
||||
|
@ -1081,13 +1081,13 @@ description: Result of parsing helical-gear.kcl
|
||||
"right": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"raw": "360",
|
||||
"raw": "360deg",
|
||||
"start": 0,
|
||||
"type": "Literal",
|
||||
"type": "Literal",
|
||||
"value": {
|
||||
"value": 360.0,
|
||||
"suffix": "None"
|
||||
"suffix": "Deg"
|
||||
}
|
||||
},
|
||||
"start": 0,
|
||||
@ -1107,13 +1107,13 @@ description: Result of parsing helical-gear.kcl
|
||||
"arg": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"raw": "180",
|
||||
"raw": "180deg",
|
||||
"start": 0,
|
||||
"type": "Literal",
|
||||
"type": "Literal",
|
||||
"value": {
|
||||
"value": 180.0,
|
||||
"suffix": "None"
|
||||
"suffix": "Deg"
|
||||
}
|
||||
}
|
||||
},
|
||||
@ -1180,13 +1180,13 @@ description: Result of parsing helical-gear.kcl
|
||||
"arg": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"raw": "180",
|
||||
"raw": "180deg",
|
||||
"start": 0,
|
||||
"type": "Literal",
|
||||
"type": "Literal",
|
||||
"value": {
|
||||
"value": 180.0,
|
||||
"suffix": "None"
|
||||
"suffix": "Deg"
|
||||
}
|
||||
}
|
||||
},
|
||||
@ -1920,13 +1920,13 @@ description: Result of parsing helical-gear.kcl
|
||||
"left": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"raw": "160",
|
||||
"raw": "160deg",
|
||||
"start": 0,
|
||||
"type": "Literal",
|
||||
"type": "Literal",
|
||||
"value": {
|
||||
"value": 160.0,
|
||||
"suffix": "None"
|
||||
"suffix": "Deg"
|
||||
}
|
||||
},
|
||||
"operator": "/",
|
||||
@ -2420,13 +2420,13 @@ description: Result of parsing helical-gear.kcl
|
||||
"left": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"raw": "360",
|
||||
"raw": "360deg",
|
||||
"start": 0,
|
||||
"type": "Literal",
|
||||
"type": "Literal",
|
||||
"value": {
|
||||
"value": 360.0,
|
||||
"suffix": "None"
|
||||
"suffix": "Deg"
|
||||
}
|
||||
},
|
||||
"operator": "/",
|
||||
@ -2648,13 +2648,13 @@ description: Result of parsing helical-gear.kcl
|
||||
"arg": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"raw": "360",
|
||||
"raw": "360deg",
|
||||
"start": 0,
|
||||
"type": "Literal",
|
||||
"type": "Literal",
|
||||
"value": {
|
||||
"value": 360.0,
|
||||
"suffix": "None"
|
||||
"suffix": "Deg"
|
||||
}
|
||||
}
|
||||
},
|
||||
@ -3414,13 +3414,13 @@ description: Result of parsing helical-gear.kcl
|
||||
"arg": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"raw": "20",
|
||||
"raw": "20deg",
|
||||
"start": 0,
|
||||
"type": "Literal",
|
||||
"type": "Literal",
|
||||
"value": {
|
||||
"value": 20.0,
|
||||
"suffix": "None"
|
||||
"suffix": "Deg"
|
||||
}
|
||||
}
|
||||
},
|
||||
@ -3436,13 +3436,13 @@ description: Result of parsing helical-gear.kcl
|
||||
"arg": {
|
||||
"commentStart": 0,
|
||||
"end": 0,
|
||||
"raw": "35",
|
||||
"raw": "35deg",
|
||||
"start": 0,
|
||||
"type": "Literal",
|
||||
"type": "Literal",
|
||||
"value": {
|
||||
"value": 35.0,
|
||||
"suffix": "None"
|
||||
"suffix": "Deg"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user