Compare commits
7 Commits
codex/fix-
...
wip-multi-
Author | SHA1 | Date | |
---|---|---|---|
0e02e95c55 | |||
a94f0191b5 | |||
99655d623e | |||
4d7cac6c1d | |||
59ed422907 | |||
3b30ac7d39 | |||
41a6ddd769 |
@ -317,7 +317,8 @@ describe('testing sketchOnExtrudedFace', () => {
|
|||||||
|> line([8.62, -9.57], %)
|
|> line([8.62, -9.57], %)
|
||||||
|> close(%)
|
|> close(%)
|
||||||
|> extrude(5 + 7, %)
|
|> extrude(5 + 7, %)
|
||||||
const sketch001 = startSketchOn(part001, 'seg01')`)
|
const surface001 = startSketchOn(part001, 'seg01')
|
||||||
|
const sketch001 = surface001`)
|
||||||
})
|
})
|
||||||
test('it should be able to extrude on close segments', async () => {
|
test('it should be able to extrude on close segments', async () => {
|
||||||
const code = `const part001 = startSketchOn('-XZ')
|
const code = `const part001 = startSketchOn('-XZ')
|
||||||
@ -354,7 +355,8 @@ const sketch001 = startSketchOn(part001, 'seg01')`)
|
|||||||
|> line([8.62, -9.57], %)
|
|> line([8.62, -9.57], %)
|
||||||
|> close(%, 'seg01')
|
|> close(%, 'seg01')
|
||||||
|> extrude(5 + 7, %)
|
|> extrude(5 + 7, %)
|
||||||
const sketch001 = startSketchOn(part001, 'seg01')`)
|
const surface001 = startSketchOn(part001, 'seg01')
|
||||||
|
const sketch001 = surface001`)
|
||||||
})
|
})
|
||||||
test('it should be able to extrude on start-end caps', async () => {
|
test('it should be able to extrude on start-end caps', async () => {
|
||||||
const code = `const part001 = startSketchOn('-XZ')
|
const code = `const part001 = startSketchOn('-XZ')
|
||||||
@ -392,7 +394,8 @@ const sketch001 = startSketchOn(part001, 'seg01')`)
|
|||||||
|> line([8.62, -9.57], %)
|
|> line([8.62, -9.57], %)
|
||||||
|> close(%)
|
|> close(%)
|
||||||
|> extrude(5 + 7, %)
|
|> extrude(5 + 7, %)
|
||||||
const sketch001 = startSketchOn(part001, 'END')`)
|
const surface001 = startSketchOn(part001, 'END')
|
||||||
|
const sketch001 = surface001`)
|
||||||
})
|
})
|
||||||
test('it should ensure that the new sketch is inserted after the extrude', async () => {
|
test('it should ensure that the new sketch is inserted after the extrude', async () => {
|
||||||
const code = `const sketch001 = startSketchOn('-XZ')
|
const code = `const sketch001 = startSketchOn('-XZ')
|
||||||
@ -432,7 +435,8 @@ const sketch001 = startSketchOn(part001, 'END')`)
|
|||||||
)
|
)
|
||||||
const newCode = recast(modifiedAst)
|
const newCode = recast(modifiedAst)
|
||||||
expect(newCode).toContain(`const part001 = extrude(5 + 7, sketch001)
|
expect(newCode).toContain(`const part001 = extrude(5 + 7, sketch001)
|
||||||
const sketch002 = startSketchOn(part001, 'seg01')`)
|
const surface001 = startSketchOn(part001, 'seg01')
|
||||||
|
const sketch002 = surface001`)
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
|
@ -43,15 +43,27 @@ export function startSketchOnDefault(
|
|||||||
name = ''
|
name = ''
|
||||||
): { modifiedAst: Program; id: string; pathToNode: PathToNode } {
|
): { modifiedAst: Program; id: string; pathToNode: PathToNode } {
|
||||||
const _node = { ...node }
|
const _node = { ...node }
|
||||||
const _name =
|
const surfaceName =
|
||||||
name || findUniqueName(node, KCL_DEFAULT_CONSTANT_PREFIXES.SKETCH)
|
name || findUniqueName(node, KCL_DEFAULT_CONSTANT_PREFIXES.SURFACE)
|
||||||
|
|
||||||
const startSketchOn = createCallExpressionStdLib('startSketchOn', [
|
const startSketchOn = createCallExpressionStdLib('startSketchOn', [
|
||||||
createLiteral(axis),
|
createLiteral(axis),
|
||||||
])
|
])
|
||||||
|
|
||||||
const variableDeclaration = createVariableDeclaration(_name, startSketchOn)
|
const surfaceVariableDeclaration = createVariableDeclaration(
|
||||||
_node.body = [...node.body, variableDeclaration]
|
surfaceName,
|
||||||
|
startSketchOn
|
||||||
|
)
|
||||||
|
_node.body = [..._node.body, surfaceVariableDeclaration]
|
||||||
|
|
||||||
|
// Create the variable for the sketch.
|
||||||
|
const sketchName =
|
||||||
|
name || findUniqueName(node, KCL_DEFAULT_CONSTANT_PREFIXES.SKETCH)
|
||||||
|
const sketchVariableDeclaration = createVariableDeclaration(
|
||||||
|
sketchName,
|
||||||
|
createIdentifier(surfaceName)
|
||||||
|
)
|
||||||
|
_node.body = [..._node.body, sketchVariableDeclaration]
|
||||||
const sketchIndex = _node.body.length - 1
|
const sketchIndex = _node.body.length - 1
|
||||||
|
|
||||||
let pathToNode: PathToNode = [
|
let pathToNode: PathToNode = [
|
||||||
@ -64,7 +76,7 @@ export function startSketchOnDefault(
|
|||||||
|
|
||||||
return {
|
return {
|
||||||
modifiedAst: _node,
|
modifiedAst: _node,
|
||||||
id: _name,
|
id: sketchName,
|
||||||
pathToNode,
|
pathToNode,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -333,10 +345,11 @@ export function sketchOnExtrudedFace(
|
|||||||
cap: 'none' | 'start' | 'end' = 'none'
|
cap: 'none' | 'start' | 'end' = 'none'
|
||||||
): { modifiedAst: Program; pathToNode: PathToNode } {
|
): { modifiedAst: Program; pathToNode: PathToNode } {
|
||||||
let _node = { ...node }
|
let _node = { ...node }
|
||||||
const newSketchName = findUniqueName(
|
const newSurfaceName = findUniqueName(
|
||||||
node,
|
node,
|
||||||
KCL_DEFAULT_CONSTANT_PREFIXES.SKETCH
|
KCL_DEFAULT_CONSTANT_PREFIXES.SURFACE
|
||||||
)
|
)
|
||||||
|
|
||||||
const { node: oldSketchNode } = getNodeFromPath<VariableDeclarator>(
|
const { node: oldSketchNode } = getNodeFromPath<VariableDeclarator>(
|
||||||
_node,
|
_node,
|
||||||
sketchPathToNode,
|
sketchPathToNode,
|
||||||
@ -372,8 +385,8 @@ export function sketchOnExtrudedFace(
|
|||||||
_tag = cap.toUpperCase()
|
_tag = cap.toUpperCase()
|
||||||
}
|
}
|
||||||
|
|
||||||
const newSketch = createVariableDeclaration(
|
const newSurface = createVariableDeclaration(
|
||||||
newSketchName,
|
newSurfaceName,
|
||||||
createCallExpressionStdLib('startSketchOn', [
|
createCallExpressionStdLib('startSketchOn', [
|
||||||
createIdentifier(extrudeName ? extrudeName : oldSketchName),
|
createIdentifier(extrudeName ? extrudeName : oldSketchName),
|
||||||
createLiteral(_tag),
|
createLiteral(_tag),
|
||||||
@ -385,18 +398,31 @@ export function sketchOnExtrudedFace(
|
|||||||
sketchPathToNode[1][0] as number,
|
sketchPathToNode[1][0] as number,
|
||||||
extrudePathToNode[1][0] as number
|
extrudePathToNode[1][0] as number
|
||||||
)
|
)
|
||||||
_node.body.splice(expressionIndex + 1, 0, newSketch)
|
_node.body.splice(expressionIndex + 1, 0, newSurface)
|
||||||
const newpathToNode: PathToNode = [
|
|
||||||
|
// Create the variable for the sketch.
|
||||||
|
const newSketchName = findUniqueName(
|
||||||
|
node,
|
||||||
|
KCL_DEFAULT_CONSTANT_PREFIXES.SKETCH
|
||||||
|
)
|
||||||
|
const sketchVariableDeclaration = createVariableDeclaration(
|
||||||
|
newSketchName,
|
||||||
|
createIdentifier(newSurfaceName)
|
||||||
|
)
|
||||||
|
const sketchIndex = expressionIndex + 2
|
||||||
|
_node.body.splice(sketchIndex, 0, sketchVariableDeclaration)
|
||||||
|
|
||||||
|
let newPathToNode: PathToNode = [
|
||||||
['body', ''],
|
['body', ''],
|
||||||
[expressionIndex + 1, 'index'],
|
[sketchIndex, 'index'],
|
||||||
['declarations', 'VariableDeclaration'],
|
['declarations', 'VariableDeclaration'],
|
||||||
[0, 'index'],
|
['0', 'index'],
|
||||||
['init', 'VariableDeclarator'],
|
['init', 'VariableDeclarator'],
|
||||||
]
|
]
|
||||||
|
|
||||||
return {
|
return {
|
||||||
modifiedAst: _node,
|
modifiedAst: _node,
|
||||||
pathToNode: newpathToNode,
|
pathToNode: newPathToNode,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -49,6 +49,8 @@ export const ONBOARDING_PROJECT_NAME = 'Tutorial Project $nn'
|
|||||||
* These are used to generate unique names for new objects.
|
* These are used to generate unique names for new objects.
|
||||||
* */
|
* */
|
||||||
export const KCL_DEFAULT_CONSTANT_PREFIXES = {
|
export const KCL_DEFAULT_CONSTANT_PREFIXES = {
|
||||||
|
SURFACE: 'surface',
|
||||||
|
PROFILE: 'profile',
|
||||||
SKETCH: 'sketch',
|
SKETCH: 'sketch',
|
||||||
EXTRUDE: 'extrude',
|
EXTRUDE: 'extrude',
|
||||||
} as const
|
} as const
|
||||||
|
Reference in New Issue
Block a user