Fix adding constraint from UI to work
This commit is contained in:
@ -3877,29 +3877,24 @@ export const getCircle = (
|
|||||||
return new Error('expected the arguments to be for a circle')
|
return new Error('expected the arguments to be for a circle')
|
||||||
}
|
}
|
||||||
|
|
||||||
const getAngledLineThatIntersects = (
|
export const getAngledLineThatIntersects = (
|
||||||
callExp: CallExpression
|
callExp: CallExpressionKw
|
||||||
):
|
):
|
||||||
| {
|
| {
|
||||||
val: [Expr, Expr, Expr]
|
val: [Expr, Expr, Expr]
|
||||||
tag?: Expr
|
tag?: Expr
|
||||||
}
|
}
|
||||||
| Error => {
|
| Error => {
|
||||||
const firstArg = callExp.arguments[0]
|
const angle = findKwArg(ARG_ANGLE, callExp)
|
||||||
if (firstArg.type === 'ObjectExpression') {
|
const intersectTag = findKwArg(ARG_INTERSECT_TAG, callExp)
|
||||||
const tag = firstArg.properties.find((p) => p.key.name === 'tag')?.value
|
const offset = findKwArg(ARG_OFFSET, callExp)
|
||||||
const angle = firstArg.properties.find((p) => p.key.name === 'angle')?.value
|
if (!angle || !intersectTag || !offset) {
|
||||||
const offset = firstArg.properties.find(
|
return new Error(
|
||||||
(p) => p.key.name === 'offset'
|
`angledLineThatIntersects call needs angle, intersectTag, and offset args`
|
||||||
)?.value
|
)
|
||||||
const intersectTag = firstArg.properties.find(
|
|
||||||
(p) => p.key.name === 'intersectTag'
|
|
||||||
)?.value
|
|
||||||
if (angle && offset && intersectTag) {
|
|
||||||
return { val: [angle, offset, intersectTag], tag }
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return new Error('expected ArrayExpression or ObjectExpression')
|
const tag = findKwArg(ARG_TAG, callExp)
|
||||||
|
return { val: [angle, intersectTag, offset], tag }
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -3965,6 +3960,8 @@ export function getArgForEnd(lineCall: CallExpressionKw):
|
|||||||
}
|
}
|
||||||
return getValuesForXYFns(arg)
|
return getValuesForXYFns(arg)
|
||||||
}
|
}
|
||||||
|
case 'angledLineThatIntersects':
|
||||||
|
return getAngledLineThatIntersects(lineCall)
|
||||||
case 'yLine':
|
case 'yLine':
|
||||||
case 'xLine': {
|
case 'xLine': {
|
||||||
const arg = findKwArgAny(DETERMINING_ARGS, lineCall)
|
const arg = findKwArgAny(DETERMINING_ARGS, lineCall)
|
||||||
@ -4024,9 +4021,6 @@ export function getFirstArg(callExp: CallExpression):
|
|||||||
if (['xLine', 'yLine', 'xLineTo', 'yLineTo'].includes(name)) {
|
if (['xLine', 'yLine', 'xLineTo', 'yLineTo'].includes(name)) {
|
||||||
return getFirstArgValuesForXYLineFns(callExp)
|
return getFirstArgValuesForXYLineFns(callExp)
|
||||||
}
|
}
|
||||||
if (['angledLineThatIntersects'].includes(name)) {
|
|
||||||
return getAngledLineThatIntersects(callExp)
|
|
||||||
}
|
|
||||||
if (['tangentialArc'].includes(name)) {
|
if (['tangentialArc'].includes(name)) {
|
||||||
// TODO probably needs it's own implementation
|
// TODO probably needs it's own implementation
|
||||||
return getFirstArgValuesForXYFns(callExp)
|
return getFirstArgValuesForXYFns(callExp)
|
||||||
|
|||||||
@ -7,9 +7,11 @@ import {
|
|||||||
ARG_END_ABSOLUTE,
|
ARG_END_ABSOLUTE,
|
||||||
ARG_END_ABSOLUTE_X,
|
ARG_END_ABSOLUTE_X,
|
||||||
ARG_END_ABSOLUTE_Y,
|
ARG_END_ABSOLUTE_Y,
|
||||||
|
ARG_INTERSECT_TAG,
|
||||||
ARG_LENGTH,
|
ARG_LENGTH,
|
||||||
ARG_LENGTH_X,
|
ARG_LENGTH_X,
|
||||||
ARG_LENGTH_Y,
|
ARG_LENGTH_Y,
|
||||||
|
ARG_OFFSET,
|
||||||
ARG_TAG,
|
ARG_TAG,
|
||||||
DETERMINING_ARGS,
|
DETERMINING_ARGS,
|
||||||
} from '@src/lang/constants'
|
} from '@src/lang/constants'
|
||||||
@ -36,6 +38,7 @@ import {
|
|||||||
createFirstArg,
|
createFirstArg,
|
||||||
fnNameToTooltip,
|
fnNameToTooltip,
|
||||||
getAngledLine,
|
getAngledLine,
|
||||||
|
getAngledLineThatIntersects,
|
||||||
getArgForEnd,
|
getArgForEnd,
|
||||||
getCircle,
|
getCircle,
|
||||||
getConstraintInfo,
|
getConstraintInfo,
|
||||||
@ -345,20 +348,16 @@ function intersectCallWrapper({
|
|||||||
tag?: Expr
|
tag?: Expr
|
||||||
valueUsedInTransform?: number
|
valueUsedInTransform?: number
|
||||||
}): CreatedSketchExprResult {
|
}): CreatedSketchExprResult {
|
||||||
const firstArg: any = {
|
const args: LabeledArg[] = [
|
||||||
angle: angleVal,
|
createLabeledArg(ARG_ANGLE, angleVal),
|
||||||
offset: offsetVal,
|
createLabeledArg(ARG_OFFSET, offsetVal),
|
||||||
intersectTag,
|
createLabeledArg(ARG_INTERSECT_TAG, intersectTag),
|
||||||
}
|
|
||||||
const args: Expr[] = [
|
|
||||||
createObjectExpression(firstArg),
|
|
||||||
createPipeSubstitution(),
|
|
||||||
]
|
]
|
||||||
if (tag) {
|
if (tag) {
|
||||||
args.push(tag)
|
args.push(createLabeledArg(ARG_TAG, tag))
|
||||||
}
|
}
|
||||||
return {
|
return {
|
||||||
callExp: createCallExpression(fnName, args),
|
callExp: createCallExpressionStdLibKw(fnName, null, args),
|
||||||
valueUsedInTransform,
|
valueUsedInTransform,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -2335,6 +2334,9 @@ export function getConstraintLevelFromSourceRange(
|
|||||||
) {
|
) {
|
||||||
return getAngledLine(nodeMeta.node)
|
return getAngledLine(nodeMeta.node)
|
||||||
}
|
}
|
||||||
|
if (name === 'angledLineThatIntersects') {
|
||||||
|
return getAngledLineThatIntersects(nodeMeta.node)
|
||||||
|
}
|
||||||
const arg = findKwArgAny(DETERMINING_ARGS, nodeMeta.node)
|
const arg = findKwArgAny(DETERMINING_ARGS, nodeMeta.node)
|
||||||
if (arg === undefined) {
|
if (arg === undefined) {
|
||||||
const argStr = nodeMeta.node.arguments.map((a) => a.label.name)
|
const argStr = nodeMeta.node.arguments.map((a) => a.label.name)
|
||||||
|
|||||||
Reference in New Issue
Block a user