Clean up for review
This commit is contained in:
		@ -230,22 +230,15 @@ export const sweepValidator = async ({
 | 
			
		||||
  data,
 | 
			
		||||
}: {
 | 
			
		||||
  context: CommandBarContext
 | 
			
		||||
  data: { trajectory?: Selections; sectional?: boolean }
 | 
			
		||||
  data: { trajectory: Selections }
 | 
			
		||||
}): Promise<boolean | string> => {
 | 
			
		||||
  console.log('sweepValidator', context, data)
 | 
			
		||||
 | 
			
		||||
  // Retrieve the sectional argument if it exists
 | 
			
		||||
  const sectional = data.sectional ?? false
 | 
			
		||||
 | 
			
		||||
  // Retrieve the parent path from the segment selection directly
 | 
			
		||||
  const trajectoryArgument =
 | 
			
		||||
    data.trajectory ?? context.argumentsToSubmit['trajectory']
 | 
			
		||||
  if (!isSelections(trajectoryArgument)) {
 | 
			
		||||
  if (!isSelections(data.trajectory)) {
 | 
			
		||||
    console.log('Unable to sweep, selections are missing')
 | 
			
		||||
    return 'Unable to sweep, selections are missing'
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  const trajectoryArtifact = trajectoryArgument.graphSelections[0].artifact
 | 
			
		||||
  // Retrieve the parent path from the segment selection directly
 | 
			
		||||
  const trajectoryArtifact = data.trajectory.graphSelections[0].artifact
 | 
			
		||||
  if (!trajectoryArtifact) {
 | 
			
		||||
    return "Unable to sweep, couldn't find the trajectory artifact"
 | 
			
		||||
  }
 | 
			
		||||
@ -268,13 +261,13 @@ export const sweepValidator = async ({
 | 
			
		||||
  const command = async () => {
 | 
			
		||||
    // TODO: second look on defaults here
 | 
			
		||||
    const DEFAULT_TOLERANCE: Models['LengthUnit_type'] = 1e-7
 | 
			
		||||
    const DEFAULT_SECTIONAL = false
 | 
			
		||||
    const cmdArgs = {
 | 
			
		||||
      target,
 | 
			
		||||
      trajectory,
 | 
			
		||||
      sectional,
 | 
			
		||||
      sectional: DEFAULT_SECTIONAL,
 | 
			
		||||
      tolerance: DEFAULT_TOLERANCE,
 | 
			
		||||
    }
 | 
			
		||||
    console.log(cmdArgs)
 | 
			
		||||
    return await engineCommandManager.sendSceneCommand({
 | 
			
		||||
      type: 'modeling_cmd_req',
 | 
			
		||||
      cmd_id: uuidv4(),
 | 
			
		||||
 | 
			
		||||
@ -144,13 +144,6 @@ export type CommandArgumentConfig<
 | 
			
		||||
            machineContext?: C
 | 
			
		||||
          ) => OutputType)
 | 
			
		||||
      defaultValueFromContext?: (context: C) => OutputType
 | 
			
		||||
      validation?: ({
 | 
			
		||||
        data,
 | 
			
		||||
        context,
 | 
			
		||||
      }: {
 | 
			
		||||
        data: any
 | 
			
		||||
        context: CommandBarContext
 | 
			
		||||
      }) => Promise<boolean | string>
 | 
			
		||||
    }
 | 
			
		||||
  | {
 | 
			
		||||
      inputType: 'selection'
 | 
			
		||||
@ -264,13 +257,6 @@ export type CommandArgument<
 | 
			
		||||
            commandBarContext: ContextFrom<typeof commandBarMachine>,
 | 
			
		||||
            machineContext?: ContextFrom<T>
 | 
			
		||||
          ) => OutputType)
 | 
			
		||||
      validation?: ({
 | 
			
		||||
        data,
 | 
			
		||||
        context,
 | 
			
		||||
      }: {
 | 
			
		||||
        data: any
 | 
			
		||||
        context: CommandBarContext
 | 
			
		||||
      }) => Promise<boolean | string>
 | 
			
		||||
    }
 | 
			
		||||
  | {
 | 
			
		||||
      inputType: 'selection'
 | 
			
		||||
 | 
			
		||||
@ -178,7 +178,6 @@ export function buildCommandArgument<
 | 
			
		||||
      options: arg.optionsFromContext
 | 
			
		||||
        ? arg.optionsFromContext(context)
 | 
			
		||||
        : arg.options,
 | 
			
		||||
      validation: arg.validation,
 | 
			
		||||
    } satisfies CommandArgument<O, T> & { inputType: 'options' }
 | 
			
		||||
  } else if (arg.inputType === 'selection') {
 | 
			
		||||
    return {
 | 
			
		||||
 | 
			
		||||
@ -213,7 +213,7 @@ const prepareToEditSweep: PrepareToEditCallback = async ({
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  // We have to go a little roundabout to get from the original artifact
 | 
			
		||||
  // to the solid2DId that we need to pass to the Extrude command.
 | 
			
		||||
  // to the solid2DId that we need to pass to the Sweep command, just like Extrude.
 | 
			
		||||
  const pathArtifact = getArtifactOfTypes(
 | 
			
		||||
    {
 | 
			
		||||
      key: artifact.pathId,
 | 
			
		||||
@ -221,12 +221,15 @@ const prepareToEditSweep: PrepareToEditCallback = async ({
 | 
			
		||||
    },
 | 
			
		||||
    engineCommandManager.artifactGraph
 | 
			
		||||
  )
 | 
			
		||||
 | 
			
		||||
  if (
 | 
			
		||||
    err(pathArtifact) ||
 | 
			
		||||
    pathArtifact.type !== 'path' ||
 | 
			
		||||
    !pathArtifact.solid2dId
 | 
			
		||||
  )
 | 
			
		||||
  ) {
 | 
			
		||||
    return baseCommand
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  const targetArtifact = getArtifactOfTypes(
 | 
			
		||||
    {
 | 
			
		||||
      key: pathArtifact.solid2dId,
 | 
			
		||||
@ -234,6 +237,7 @@ const prepareToEditSweep: PrepareToEditCallback = async ({
 | 
			
		||||
    },
 | 
			
		||||
    engineCommandManager.artifactGraph
 | 
			
		||||
  )
 | 
			
		||||
 | 
			
		||||
  if (err(targetArtifact) || targetArtifact.type !== 'solid2d') {
 | 
			
		||||
    return baseCommand
 | 
			
		||||
  }
 | 
			
		||||
@ -249,12 +253,14 @@ const prepareToEditSweep: PrepareToEditCallback = async ({
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  // Same roundabout but twice for 'path' aka trajectory: sketch -> path -> segment
 | 
			
		||||
  if (!('path' in operation.labeledArgs) || !operation.labeledArgs.path)
 | 
			
		||||
  if (!('path' in operation.labeledArgs) || !operation.labeledArgs.path) {
 | 
			
		||||
    return baseCommand
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  if (operation.labeledArgs.path.value.type !== 'Sketch') {
 | 
			
		||||
    return baseCommand
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  const trajectoryPathArtifact = getArtifactOfTypes(
 | 
			
		||||
    {
 | 
			
		||||
      key: operation.labeledArgs.path.value.value.artifactId,
 | 
			
		||||
@ -262,6 +268,7 @@ const prepareToEditSweep: PrepareToEditCallback = async ({
 | 
			
		||||
    },
 | 
			
		||||
    engineCommandManager.artifactGraph
 | 
			
		||||
  )
 | 
			
		||||
 | 
			
		||||
  if (err(trajectoryPathArtifact) || trajectoryPathArtifact.type !== 'path') {
 | 
			
		||||
    return baseCommand
 | 
			
		||||
  }
 | 
			
		||||
@ -273,6 +280,7 @@ const prepareToEditSweep: PrepareToEditCallback = async ({
 | 
			
		||||
    },
 | 
			
		||||
    engineCommandManager.artifactGraph
 | 
			
		||||
  )
 | 
			
		||||
 | 
			
		||||
  if (err(trajectoryArtifact) || trajectoryArtifact.type !== 'segment') {
 | 
			
		||||
    return baseCommand
 | 
			
		||||
  }
 | 
			
		||||
@ -291,8 +299,10 @@ const prepareToEditSweep: PrepareToEditCallback = async ({
 | 
			
		||||
  if (
 | 
			
		||||
    !('sectional' in operation.labeledArgs) ||
 | 
			
		||||
    !operation.labeledArgs.sectional
 | 
			
		||||
  )
 | 
			
		||||
  ) {
 | 
			
		||||
    return baseCommand
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  const sectional =
 | 
			
		||||
    codeManager.code.slice(
 | 
			
		||||
      operation.labeledArgs.sectional.sourceRange[0],
 | 
			
		||||
 | 
			
		||||
@ -296,7 +296,6 @@ export const commandBarMachine = setup({
 | 
			
		||||
            context.currentArgument &&
 | 
			
		||||
            context.selectedCommand &&
 | 
			
		||||
            (argConfig?.inputType === 'selection' ||
 | 
			
		||||
              argConfig?.inputType === 'options' ||
 | 
			
		||||
              argConfig?.inputType === 'selectionMixed') &&
 | 
			
		||||
            argConfig?.validation
 | 
			
		||||
          ) {
 | 
			
		||||
 | 
			
		||||
@ -1899,6 +1899,7 @@ export const modelingMachine = setup({
 | 
			
		||||
            nodeToEdit,
 | 
			
		||||
            'VariableDeclaration'
 | 
			
		||||
          )
 | 
			
		||||
 | 
			
		||||
          if (err(variableNode)) {
 | 
			
		||||
            console.error('Error extracting name')
 | 
			
		||||
          } else {
 | 
			
		||||
@ -1951,6 +1952,7 @@ export const modelingMachine = setup({
 | 
			
		||||
          variableName,
 | 
			
		||||
          insertIndex,
 | 
			
		||||
        })
 | 
			
		||||
 | 
			
		||||
        const updatedAst = await kclManager.updateAst(
 | 
			
		||||
          addResult.modifiedAst,
 | 
			
		||||
          true,
 | 
			
		||||
 | 
			
		||||
		Reference in New Issue
	
	Block a user