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