@ -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",
|
||||
|
||||
@ -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,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()
|
||||
|
||||
@ -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";
|
||||
@ -162,7 +162,7 @@ pub(super) fn many_of(
|
||||
vec![source_range],
|
||||
))
|
||||
})
|
||||
.map(|v| *v)
|
||||
.copied()
|
||||
})
|
||||
.collect::<Result<Vec<&str>, KclError>>()
|
||||
}
|
||||
|
||||
@ -1780,6 +1780,7 @@ impl Node<PipeExpression> {
|
||||
#[cfg(test)]
|
||||
mod test {
|
||||
use std::sync::Arc;
|
||||
|
||||
use tokio::io::AsyncWriteExt;
|
||||
|
||||
use super::*;
|
||||
|
||||
@ -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,
|
||||
|
||||
@ -760,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());
|
||||
};
|
||||
@ -832,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,
|
||||
@ -1156,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
|
||||
@ -1172,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()),
|
||||
|
||||
@ -105,7 +105,12 @@ async fn inner_extrude(
|
||||
(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(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));
|
||||
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()),
|
||||
|
||||
@ -31,7 +31,6 @@ import {
|
||||
createCallExpressionStdLibKw,
|
||||
createLabeledArg,
|
||||
createLiteral,
|
||||
createLiteralMaybeSuffix,
|
||||
createLocalName,
|
||||
createPipeExpression,
|
||||
createTagDeclarator,
|
||||
@ -4227,13 +4226,8 @@ const tangentialArcHelpers = {
|
||||
callExpression,
|
||||
createLiteral(roundOff(radius, 2))
|
||||
)
|
||||
const angleValue = createLiteralMaybeSuffix({
|
||||
value: roundOff(angle, 2),
|
||||
suffix: 'Deg',
|
||||
})
|
||||
if (!err(angleValue)) {
|
||||
mutateKwArg(ARG_ANGLE, callExpression, angleValue)
|
||||
}
|
||||
const angleValue = createLiteral(roundOff(angle, 2), 'Deg')
|
||||
mutateKwArg(ARG_ANGLE, callExpression, angleValue)
|
||||
} else {
|
||||
console.debug('Invalid center calculated for tangential arc')
|
||||
}
|
||||
|
||||
@ -376,45 +376,53 @@ p3 = [342.51, 216.38],
|
||||
namedConstantConstraint: [
|
||||
{
|
||||
name: 'should constrain angledLine, angle value',
|
||||
...makeStraightSegmentSnippet('angledLine(angle = 45, length = 100)'),
|
||||
...makeStraightSegmentSnippet(
|
||||
'angledLine(angle = 45deg, length = 100)'
|
||||
),
|
||||
constraintIndex: 0,
|
||||
expectedResult: 'angledLine(angle = test_variable, length = 100)',
|
||||
},
|
||||
{
|
||||
name: 'should constrain angledLine, length value',
|
||||
...makeStraightSegmentSnippet('angledLine(angle = 45, length = 100)'),
|
||||
...makeStraightSegmentSnippet(
|
||||
'angledLine(angle = 45deg, length = 100)'
|
||||
),
|
||||
constraintIndex: 1,
|
||||
expectedResult: 'angledLine(angle = 45, length = test_variable)',
|
||||
expectedResult: 'angledLine(angle = 45deg, length = test_variable)',
|
||||
},
|
||||
{
|
||||
name: 'should constrain angledLine, endAbsoluteY value',
|
||||
...makeStraightSegmentSnippet(
|
||||
'angledLine(angle = 45, endAbsoluteY = 5)'
|
||||
'angledLine(angle = 45deg, endAbsoluteY = 5)'
|
||||
),
|
||||
constraintIndex: 1,
|
||||
expectedResult:
|
||||
'angledLine(angle = 45, endAbsoluteY = test_variable)',
|
||||
'angledLine(angle = 45deg, endAbsoluteY = test_variable)',
|
||||
},
|
||||
{
|
||||
name: 'should constrain angledLine, endAbsoluteX value',
|
||||
...makeStraightSegmentSnippet(
|
||||
'angledLine(angle = 45, endAbsoluteX = 5)'
|
||||
'angledLine(angle = 45deg, endAbsoluteX = 5)'
|
||||
),
|
||||
constraintIndex: 1,
|
||||
expectedResult:
|
||||
'angledLine(angle = 45, endAbsoluteX = test_variable)',
|
||||
'angledLine(angle = 45deg, endAbsoluteX = test_variable)',
|
||||
},
|
||||
{
|
||||
name: 'should constrain angledLine, lengthY value',
|
||||
...makeStraightSegmentSnippet('angledLine(angle = 45, lengthY = 5)'),
|
||||
...makeStraightSegmentSnippet(
|
||||
'angledLine(angle = 45deg, lengthY = 5)'
|
||||
),
|
||||
constraintIndex: 1,
|
||||
expectedResult: 'angledLine(angle = 45, lengthY = test_variable)',
|
||||
expectedResult: 'angledLine(angle = 45deg, lengthY = test_variable)',
|
||||
},
|
||||
{
|
||||
name: 'should constrain angledLine, lengthX value',
|
||||
...makeStraightSegmentSnippet('angledLine(angle = 45, lengthX = 5)'),
|
||||
...makeStraightSegmentSnippet(
|
||||
'angledLine(angle = 45deg, lengthX = 5)'
|
||||
),
|
||||
constraintIndex: 1,
|
||||
expectedResult: 'angledLine(angle = 45, lengthX = test_variable)',
|
||||
expectedResult: 'angledLine(angle = 45deg, lengthX = test_variable)',
|
||||
},
|
||||
],
|
||||
removeAllConstraintsCases: [
|
||||
@ -466,7 +474,7 @@ p3 = [342.51, 216.38],
|
||||
'angledLine(angle = testVar1, length = testVar2)'
|
||||
),
|
||||
constraintIndex: 0,
|
||||
expectedResult: 'angledLine(angle = 55, length = testVar2)',
|
||||
expectedResult: 'angledLine(angle = 55deg, length = testVar2)',
|
||||
},
|
||||
{
|
||||
name: 'should un-constrain angledLine, length value',
|
||||
@ -512,27 +520,33 @@ p3 = [342.51, 216.38],
|
||||
deleteSegment: [
|
||||
{
|
||||
name: 'should delete angledLine, angle length',
|
||||
...makeStraightSegmentSnippet('angledLine(angle = 45, length = 100)'),
|
||||
...makeStraightSegmentSnippet(
|
||||
'angledLine(angle = 45deg, length = 100)'
|
||||
),
|
||||
},
|
||||
{
|
||||
name: 'should delete angledLine, endAbsoluteY',
|
||||
...makeStraightSegmentSnippet(
|
||||
'angledLine(angle = 45, endAbsoluteY = 5)'
|
||||
'angledLine(angle = 45deg, endAbsoluteY = 5)'
|
||||
),
|
||||
},
|
||||
{
|
||||
name: 'should delete angledLine, endAbsoluteX',
|
||||
...makeStraightSegmentSnippet(
|
||||
'angledLine(angle = 45, endAbsoluteX = 5)'
|
||||
'angledLine(angle = 45deg, endAbsoluteX = 5)'
|
||||
),
|
||||
},
|
||||
{
|
||||
name: 'should delete angledLine, lengthY',
|
||||
...makeStraightSegmentSnippet('angledLine(angle = 45, lengthY = 5)'),
|
||||
...makeStraightSegmentSnippet(
|
||||
'angledLine(angle = 45deg, lengthY = 5)'
|
||||
),
|
||||
},
|
||||
{
|
||||
name: 'should delete angledLine, lengthX',
|
||||
...makeStraightSegmentSnippet('angledLine(angle = 45, lengthX = 5)'),
|
||||
...makeStraightSegmentSnippet(
|
||||
'angledLine(angle = 45deg, lengthX = 5)'
|
||||
),
|
||||
},
|
||||
],
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user