renaming extrude to sweep to generalize the command (#3773)
* fix: just a one liner? forcing a revolve to be an extrude artifact * fix: first step in renaming ExtrusionArtifact to SweepArtifact * fix: renaming extrusion to sweep for a few things? need to do another pass * fix: cleaning up comments, fixing unit tests for new key names * fix: unit test update * fix: removing TODO comments that are not needed * fix: renaming more extrude/extrusion values to sweep * fix: test:nowatch -u to update the vitests * Look at this (photo)Graph *in the voice of Nickelback* * fix: removing TODOs * fix: forgot to update the extrudeEdge string in other files * chore: adding e2e test to see if users can sketch on revolved face * fix: removing garbage string --------- Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
This commit is contained in:
		@ -40,7 +40,7 @@ test.describe('Sketch tests', () => {
 | 
			
		||||
  const screwRadius = 3
 | 
			
		||||
  const wireRadius = 2
 | 
			
		||||
  const wireOffset = 0.5
 | 
			
		||||
  
 | 
			
		||||
 | 
			
		||||
  const screwHole = startSketchOn('XY')
 | 
			
		||||
    ${startProfileAt1}
 | 
			
		||||
    |> arc({
 | 
			
		||||
@ -48,7 +48,7 @@ test.describe('Sketch tests', () => {
 | 
			
		||||
          angle_start: 0,
 | 
			
		||||
          angle_end: 360
 | 
			
		||||
        }, %)
 | 
			
		||||
  
 | 
			
		||||
 | 
			
		||||
  const part001 = startSketchOn('XY')
 | 
			
		||||
    ${startProfileAt2}
 | 
			
		||||
    |> xLine(width * .5, %)
 | 
			
		||||
@ -57,7 +57,7 @@ test.describe('Sketch tests', () => {
 | 
			
		||||
    |> close(%)
 | 
			
		||||
    |> hole(screwHole, %)
 | 
			
		||||
    |> extrude(thickness, %)
 | 
			
		||||
  
 | 
			
		||||
 | 
			
		||||
  const part002 = startSketchOn('-XZ')
 | 
			
		||||
    ${startProfileAt3}
 | 
			
		||||
    |> xLine(width / 4, %)
 | 
			
		||||
@ -954,4 +954,68 @@ const sketch002 = startSketchOn(extrude001, 'END')
 | 
			
		||||
      await u.getGreatestPixDiff(XYPlanePoint, noPlanesColor)
 | 
			
		||||
    ).toBeLessThan(3)
 | 
			
		||||
  })
 | 
			
		||||
 | 
			
		||||
  test('Can attempt to sketch on revolved face', async ({
 | 
			
		||||
    page,
 | 
			
		||||
    browserName,
 | 
			
		||||
  }) => {
 | 
			
		||||
    test.skip(
 | 
			
		||||
      browserName === 'webkit',
 | 
			
		||||
      'Skip on Safari until `window.tearDown` is working there'
 | 
			
		||||
    )
 | 
			
		||||
    const u = await getUtils(page)
 | 
			
		||||
    await page.setViewportSize({ width: 1200, height: 500 })
 | 
			
		||||
 | 
			
		||||
    await page.addInitScript(async () => {
 | 
			
		||||
      localStorage.setItem(
 | 
			
		||||
        'persistCode',
 | 
			
		||||
        `const lugHeadLength = 0.25
 | 
			
		||||
        const lugDiameter = 0.5
 | 
			
		||||
        const lugLength = 2
 | 
			
		||||
 | 
			
		||||
        fn lug = (origin, length, diameter, plane) => {
 | 
			
		||||
          const lugSketch = startSketchOn(plane)
 | 
			
		||||
            |> startProfileAt([origin[0] + lugDiameter / 2, origin[1]], %)
 | 
			
		||||
            |> angledLineOfYLength({ angle: 60, length: lugHeadLength }, %)
 | 
			
		||||
            |> xLineTo(0 + .001, %)
 | 
			
		||||
            |> yLineTo(0, %)
 | 
			
		||||
            |> close(%)
 | 
			
		||||
            |> revolve({ axis: "Y" }, %)
 | 
			
		||||
 | 
			
		||||
          return lugSketch
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        lug([0, 0], 10, .5, "XY")`
 | 
			
		||||
      )
 | 
			
		||||
    })
 | 
			
		||||
 | 
			
		||||
    await u.waitForAuthSkipAppStart()
 | 
			
		||||
 | 
			
		||||
    await u.openDebugPanel()
 | 
			
		||||
    await u.expectCmdLog('[data-message-type="execution-done"]')
 | 
			
		||||
    await u.closeDebugPanel()
 | 
			
		||||
 | 
			
		||||
    /***
 | 
			
		||||
     * Test Plan
 | 
			
		||||
     * Start the sketch mode
 | 
			
		||||
     * Click the middle of the screen which should click the top face that is revolved
 | 
			
		||||
     * Wait till you see the line tool be enabled
 | 
			
		||||
     * Wait till you see the exit sketch enabled
 | 
			
		||||
     *
 | 
			
		||||
     * This is supposed to test that you are allowed to go into sketch mode to sketch on a revolved face
 | 
			
		||||
     */
 | 
			
		||||
 | 
			
		||||
    await page.getByRole('button', { name: 'Start Sketch' }).click()
 | 
			
		||||
 | 
			
		||||
    await expect(async () => {
 | 
			
		||||
      await page.mouse.click(600, 250)
 | 
			
		||||
      await page.waitForTimeout(1000)
 | 
			
		||||
      await expect(
 | 
			
		||||
        page.getByRole('button', { name: 'Exit Sketch' })
 | 
			
		||||
      ).toBeVisible()
 | 
			
		||||
      await expect(
 | 
			
		||||
        page.getByRole('button', { name: 'line Line', exact: true })
 | 
			
		||||
      ).toHaveAttribute('aria-pressed', 'true')
 | 
			
		||||
    }).toPass({ timeout: 40_000, intervals: [1_000] })
 | 
			
		||||
  })
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
@ -9,8 +9,8 @@ import { useModelingContext } from './useModelingContext'
 | 
			
		||||
import { getEventForSelectWithPoint } from 'lib/selections'
 | 
			
		||||
import {
 | 
			
		||||
  getCapCodeRef,
 | 
			
		||||
  getExtrudeEdgeCodeRef,
 | 
			
		||||
  getExtrusionFromSuspectedExtrudeSurface,
 | 
			
		||||
  getSweepEdgeCodeRef,
 | 
			
		||||
  getSweepFromSuspectedSweepSurface,
 | 
			
		||||
  getSolid2dCodeRef,
 | 
			
		||||
  getWallCodeRef,
 | 
			
		||||
} from 'lang/std/artifactGraph'
 | 
			
		||||
@ -47,7 +47,7 @@ export function useEngineConnectionSubscriptions() {
 | 
			
		||||
            if (err(codeRef)) return
 | 
			
		||||
            editorManager.setHighlightRange([codeRef.range])
 | 
			
		||||
          } else if (artifact?.type === 'wall') {
 | 
			
		||||
            const extrusion = getExtrusionFromSuspectedExtrudeSurface(
 | 
			
		||||
            const extrusion = getSweepFromSuspectedSweepSurface(
 | 
			
		||||
              data.entity_id,
 | 
			
		||||
              engineCommandManager.artifactGraph
 | 
			
		||||
            )
 | 
			
		||||
@ -61,8 +61,8 @@ export function useEngineConnectionSubscriptions() {
 | 
			
		||||
                ? [codeRef.range]
 | 
			
		||||
                : [codeRef.range, extrusion.codeRef.range]
 | 
			
		||||
            )
 | 
			
		||||
          } else if (artifact?.type === 'extrudeEdge') {
 | 
			
		||||
            const codeRef = getExtrudeEdgeCodeRef(
 | 
			
		||||
          } else if (artifact?.type === 'sweepEdge') {
 | 
			
		||||
            const codeRef = getSweepEdgeCodeRef(
 | 
			
		||||
              artifact,
 | 
			
		||||
              engineCommandManager.artifactGraph
 | 
			
		||||
            )
 | 
			
		||||
@ -172,7 +172,7 @@ export function useEngineConnectionSubscriptions() {
 | 
			
		||||
              }
 | 
			
		||||
              const faceId = planeOrFaceId
 | 
			
		||||
              const artifact = engineCommandManager.artifactGraph.get(faceId)
 | 
			
		||||
              const extrusion = getExtrusionFromSuspectedExtrudeSurface(
 | 
			
		||||
              const extrusion = getSweepFromSuspectedSweepSurface(
 | 
			
		||||
                faceId,
 | 
			
		||||
                engineCommandManager.artifactGraph
 | 
			
		||||
              )
 | 
			
		||||
 | 
			
		||||
@ -35,7 +35,7 @@ import { Selections, canFilletSelection } from 'lib/selections'
 | 
			
		||||
import { KclCommandValue } from 'lib/commandTypes'
 | 
			
		||||
import {
 | 
			
		||||
  ArtifactGraph,
 | 
			
		||||
  getExtrusionFromSuspectedPath,
 | 
			
		||||
  getSweepFromSuspectedPath,
 | 
			
		||||
} from 'lang/std/artifactGraph'
 | 
			
		||||
import { kclManager, engineCommandManager, editorManager } from 'lib/singletons'
 | 
			
		||||
 | 
			
		||||
@ -152,7 +152,7 @@ export function getPathToExtrudeForSegmentSelection(
 | 
			
		||||
  )
 | 
			
		||||
  if (trap(sketchGroup)) return sketchGroup
 | 
			
		||||
 | 
			
		||||
  const extrusion = getExtrusionFromSuspectedPath(sketchGroup.id, artifactGraph)
 | 
			
		||||
  const extrusion = getSweepFromSuspectedPath(sketchGroup.id, artifactGraph)
 | 
			
		||||
  if (err(extrusion)) return extrusion
 | 
			
		||||
 | 
			
		||||
  const pathToExtrudeNode = getNodePathFromSourceRange(
 | 
			
		||||
 | 
			
		||||
@ -33,7 +33,6 @@ Map {
 | 
			
		||||
        70,
 | 
			
		||||
      ],
 | 
			
		||||
    },
 | 
			
		||||
    "extrusionId": "UUID",
 | 
			
		||||
    "planeId": "UUID",
 | 
			
		||||
    "segIds": [
 | 
			
		||||
      "UUID",
 | 
			
		||||
@ -43,6 +42,7 @@ Map {
 | 
			
		||||
      "UUID",
 | 
			
		||||
    ],
 | 
			
		||||
    "solid2dId": "UUID",
 | 
			
		||||
    "sweepId": "UUID",
 | 
			
		||||
    "type": "path",
 | 
			
		||||
  },
 | 
			
		||||
  "UUID-2" => {
 | 
			
		||||
@ -175,6 +175,7 @@ Map {
 | 
			
		||||
      "UUID",
 | 
			
		||||
    ],
 | 
			
		||||
    "pathId": "UUID",
 | 
			
		||||
    "subType": "extrusion",
 | 
			
		||||
    "surfaceIds": [
 | 
			
		||||
      "UUID",
 | 
			
		||||
      "UUID",
 | 
			
		||||
@ -183,99 +184,99 @@ Map {
 | 
			
		||||
      "UUID",
 | 
			
		||||
      "UUID",
 | 
			
		||||
    ],
 | 
			
		||||
    "type": "extrusion",
 | 
			
		||||
    "type": "sweep",
 | 
			
		||||
  },
 | 
			
		||||
  "UUID-9" => {
 | 
			
		||||
    "edgeCutEdgeIds": [],
 | 
			
		||||
    "extrusionId": "UUID",
 | 
			
		||||
    "pathIds": [],
 | 
			
		||||
    "segId": "UUID",
 | 
			
		||||
    "sweepId": "UUID",
 | 
			
		||||
    "type": "wall",
 | 
			
		||||
  },
 | 
			
		||||
  "UUID-10" => {
 | 
			
		||||
    "edgeCutEdgeIds": [],
 | 
			
		||||
    "extrusionId": "UUID",
 | 
			
		||||
    "pathIds": [
 | 
			
		||||
      "UUID",
 | 
			
		||||
    ],
 | 
			
		||||
    "segId": "UUID",
 | 
			
		||||
    "sweepId": "UUID",
 | 
			
		||||
    "type": "wall",
 | 
			
		||||
  },
 | 
			
		||||
  "UUID-11" => {
 | 
			
		||||
    "edgeCutEdgeIds": [],
 | 
			
		||||
    "extrusionId": "UUID",
 | 
			
		||||
    "pathIds": [],
 | 
			
		||||
    "segId": "UUID",
 | 
			
		||||
    "sweepId": "UUID",
 | 
			
		||||
    "type": "wall",
 | 
			
		||||
  },
 | 
			
		||||
  "UUID-12" => {
 | 
			
		||||
    "edgeCutEdgeIds": [],
 | 
			
		||||
    "extrusionId": "UUID",
 | 
			
		||||
    "pathIds": [],
 | 
			
		||||
    "segId": "UUID",
 | 
			
		||||
    "sweepId": "UUID",
 | 
			
		||||
    "type": "wall",
 | 
			
		||||
  },
 | 
			
		||||
  "UUID-13" => {
 | 
			
		||||
    "edgeCutEdgeIds": [],
 | 
			
		||||
    "extrusionId": "UUID",
 | 
			
		||||
    "pathIds": [],
 | 
			
		||||
    "subType": "start",
 | 
			
		||||
    "sweepId": "UUID",
 | 
			
		||||
    "type": "cap",
 | 
			
		||||
  },
 | 
			
		||||
  "UUID-14" => {
 | 
			
		||||
    "edgeCutEdgeIds": [],
 | 
			
		||||
    "extrusionId": "UUID",
 | 
			
		||||
    "pathIds": [],
 | 
			
		||||
    "subType": "end",
 | 
			
		||||
    "sweepId": "UUID",
 | 
			
		||||
    "type": "cap",
 | 
			
		||||
  },
 | 
			
		||||
  "UUID-15" => {
 | 
			
		||||
    "extrusionId": "UUID",
 | 
			
		||||
    "segId": "UUID",
 | 
			
		||||
    "subType": "opposite",
 | 
			
		||||
    "type": "extrudeEdge",
 | 
			
		||||
    "sweepId": "UUID",
 | 
			
		||||
    "type": "sweepEdge",
 | 
			
		||||
  },
 | 
			
		||||
  "UUID-16" => {
 | 
			
		||||
    "extrusionId": "UUID",
 | 
			
		||||
    "segId": "UUID",
 | 
			
		||||
    "subType": "adjacent",
 | 
			
		||||
    "type": "extrudeEdge",
 | 
			
		||||
    "sweepId": "UUID",
 | 
			
		||||
    "type": "sweepEdge",
 | 
			
		||||
  },
 | 
			
		||||
  "UUID-17" => {
 | 
			
		||||
    "extrusionId": "UUID",
 | 
			
		||||
    "segId": "UUID",
 | 
			
		||||
    "subType": "opposite",
 | 
			
		||||
    "type": "extrudeEdge",
 | 
			
		||||
    "sweepId": "UUID",
 | 
			
		||||
    "type": "sweepEdge",
 | 
			
		||||
  },
 | 
			
		||||
  "UUID-18" => {
 | 
			
		||||
    "extrusionId": "UUID",
 | 
			
		||||
    "segId": "UUID",
 | 
			
		||||
    "subType": "adjacent",
 | 
			
		||||
    "type": "extrudeEdge",
 | 
			
		||||
    "sweepId": "UUID",
 | 
			
		||||
    "type": "sweepEdge",
 | 
			
		||||
  },
 | 
			
		||||
  "UUID-19" => {
 | 
			
		||||
    "extrusionId": "UUID",
 | 
			
		||||
    "segId": "UUID",
 | 
			
		||||
    "subType": "opposite",
 | 
			
		||||
    "type": "extrudeEdge",
 | 
			
		||||
    "sweepId": "UUID",
 | 
			
		||||
    "type": "sweepEdge",
 | 
			
		||||
  },
 | 
			
		||||
  "UUID-20" => {
 | 
			
		||||
    "extrusionId": "UUID",
 | 
			
		||||
    "segId": "UUID",
 | 
			
		||||
    "subType": "adjacent",
 | 
			
		||||
    "type": "extrudeEdge",
 | 
			
		||||
    "sweepId": "UUID",
 | 
			
		||||
    "type": "sweepEdge",
 | 
			
		||||
  },
 | 
			
		||||
  "UUID-21" => {
 | 
			
		||||
    "extrusionId": "UUID",
 | 
			
		||||
    "segId": "UUID",
 | 
			
		||||
    "subType": "opposite",
 | 
			
		||||
    "type": "extrudeEdge",
 | 
			
		||||
    "sweepId": "UUID",
 | 
			
		||||
    "type": "sweepEdge",
 | 
			
		||||
  },
 | 
			
		||||
  "UUID-22" => {
 | 
			
		||||
    "extrusionId": "UUID",
 | 
			
		||||
    "segId": "UUID",
 | 
			
		||||
    "subType": "adjacent",
 | 
			
		||||
    "type": "extrudeEdge",
 | 
			
		||||
    "sweepId": "UUID",
 | 
			
		||||
    "type": "sweepEdge",
 | 
			
		||||
  },
 | 
			
		||||
  "UUID-23" => {
 | 
			
		||||
    "codeRef": {
 | 
			
		||||
@ -308,7 +309,6 @@ Map {
 | 
			
		||||
        395,
 | 
			
		||||
      ],
 | 
			
		||||
    },
 | 
			
		||||
    "extrusionId": "UUID",
 | 
			
		||||
    "planeId": "UUID",
 | 
			
		||||
    "segIds": [
 | 
			
		||||
      "UUID",
 | 
			
		||||
@ -317,6 +317,7 @@ Map {
 | 
			
		||||
      "UUID",
 | 
			
		||||
    ],
 | 
			
		||||
    "solid2dId": "UUID",
 | 
			
		||||
    "sweepId": "UUID",
 | 
			
		||||
    "type": "path",
 | 
			
		||||
  },
 | 
			
		||||
  "UUID-25" => {
 | 
			
		||||
@ -425,6 +426,7 @@ Map {
 | 
			
		||||
      "UUID",
 | 
			
		||||
    ],
 | 
			
		||||
    "pathId": "UUID",
 | 
			
		||||
    "subType": "extrusion",
 | 
			
		||||
    "surfaceIds": [
 | 
			
		||||
      "UUID",
 | 
			
		||||
      "UUID",
 | 
			
		||||
@ -432,78 +434,78 @@ Map {
 | 
			
		||||
      "UUID",
 | 
			
		||||
      "UUID",
 | 
			
		||||
    ],
 | 
			
		||||
    "type": "extrusion",
 | 
			
		||||
    "type": "sweep",
 | 
			
		||||
  },
 | 
			
		||||
  "UUID-31" => {
 | 
			
		||||
    "edgeCutEdgeIds": [],
 | 
			
		||||
    "extrusionId": "UUID",
 | 
			
		||||
    "pathIds": [],
 | 
			
		||||
    "segId": "UUID",
 | 
			
		||||
    "sweepId": "UUID",
 | 
			
		||||
    "type": "wall",
 | 
			
		||||
  },
 | 
			
		||||
  "UUID-32" => {
 | 
			
		||||
    "edgeCutEdgeIds": [],
 | 
			
		||||
    "extrusionId": "UUID",
 | 
			
		||||
    "pathIds": [],
 | 
			
		||||
    "segId": "UUID",
 | 
			
		||||
    "sweepId": "UUID",
 | 
			
		||||
    "type": "wall",
 | 
			
		||||
  },
 | 
			
		||||
  "UUID-33" => {
 | 
			
		||||
    "edgeCutEdgeIds": [],
 | 
			
		||||
    "extrusionId": "UUID",
 | 
			
		||||
    "pathIds": [],
 | 
			
		||||
    "segId": "UUID",
 | 
			
		||||
    "sweepId": "UUID",
 | 
			
		||||
    "type": "wall",
 | 
			
		||||
  },
 | 
			
		||||
  "UUID-34" => {
 | 
			
		||||
    "edgeCutEdgeIds": [],
 | 
			
		||||
    "extrusionId": "UUID",
 | 
			
		||||
    "pathIds": [],
 | 
			
		||||
    "subType": "start",
 | 
			
		||||
    "sweepId": "UUID",
 | 
			
		||||
    "type": "cap",
 | 
			
		||||
  },
 | 
			
		||||
  "UUID-35" => {
 | 
			
		||||
    "edgeCutEdgeIds": [],
 | 
			
		||||
    "extrusionId": "UUID",
 | 
			
		||||
    "pathIds": [],
 | 
			
		||||
    "subType": "end",
 | 
			
		||||
    "sweepId": "UUID",
 | 
			
		||||
    "type": "cap",
 | 
			
		||||
  },
 | 
			
		||||
  "UUID-36" => {
 | 
			
		||||
    "extrusionId": "UUID",
 | 
			
		||||
    "segId": "UUID",
 | 
			
		||||
    "subType": "opposite",
 | 
			
		||||
    "type": "extrudeEdge",
 | 
			
		||||
    "sweepId": "UUID",
 | 
			
		||||
    "type": "sweepEdge",
 | 
			
		||||
  },
 | 
			
		||||
  "UUID-37" => {
 | 
			
		||||
    "extrusionId": "UUID",
 | 
			
		||||
    "segId": "UUID",
 | 
			
		||||
    "subType": "adjacent",
 | 
			
		||||
    "type": "extrudeEdge",
 | 
			
		||||
    "sweepId": "UUID",
 | 
			
		||||
    "type": "sweepEdge",
 | 
			
		||||
  },
 | 
			
		||||
  "UUID-38" => {
 | 
			
		||||
    "extrusionId": "UUID",
 | 
			
		||||
    "segId": "UUID",
 | 
			
		||||
    "subType": "opposite",
 | 
			
		||||
    "type": "extrudeEdge",
 | 
			
		||||
    "sweepId": "UUID",
 | 
			
		||||
    "type": "sweepEdge",
 | 
			
		||||
  },
 | 
			
		||||
  "UUID-39" => {
 | 
			
		||||
    "extrusionId": "UUID",
 | 
			
		||||
    "segId": "UUID",
 | 
			
		||||
    "subType": "adjacent",
 | 
			
		||||
    "type": "extrudeEdge",
 | 
			
		||||
    "sweepId": "UUID",
 | 
			
		||||
    "type": "sweepEdge",
 | 
			
		||||
  },
 | 
			
		||||
  "UUID-40" => {
 | 
			
		||||
    "extrusionId": "UUID",
 | 
			
		||||
    "segId": "UUID",
 | 
			
		||||
    "subType": "opposite",
 | 
			
		||||
    "type": "extrudeEdge",
 | 
			
		||||
    "sweepId": "UUID",
 | 
			
		||||
    "type": "sweepEdge",
 | 
			
		||||
  },
 | 
			
		||||
  "UUID-41" => {
 | 
			
		||||
    "extrusionId": "UUID",
 | 
			
		||||
    "segId": "UUID",
 | 
			
		||||
    "subType": "adjacent",
 | 
			
		||||
    "type": "extrudeEdge",
 | 
			
		||||
    "sweepId": "UUID",
 | 
			
		||||
    "type": "sweepEdge",
 | 
			
		||||
  },
 | 
			
		||||
}
 | 
			
		||||
`;
 | 
			
		||||
 | 
			
		||||
@ -7,7 +7,7 @@ import {
 | 
			
		||||
  filterArtifacts,
 | 
			
		||||
  expandPlane,
 | 
			
		||||
  expandPath,
 | 
			
		||||
  expandExtrusion,
 | 
			
		||||
  expandSweep,
 | 
			
		||||
  ArtifactGraph,
 | 
			
		||||
  expandSegment,
 | 
			
		||||
  getArtifactsToUpdate,
 | 
			
		||||
@ -194,13 +194,13 @@ describe('testing createArtifactGraph', () => {
 | 
			
		||||
    })
 | 
			
		||||
 | 
			
		||||
    it('there should be two extrusions, for the original and the sketchOnFace, the first extrusion should have 6 sides of the cube', () => {
 | 
			
		||||
      const extrusions = [
 | 
			
		||||
        ...filterArtifacts({ types: ['extrusion'] }, theMap),
 | 
			
		||||
      ].map((extrusion) => expandExtrusion(extrusion[1], theMap))
 | 
			
		||||
      const extrusions = [...filterArtifacts({ types: ['sweep'] }, theMap)].map(
 | 
			
		||||
        (extrusion) => expandSweep(extrusion[1], theMap)
 | 
			
		||||
      )
 | 
			
		||||
      expect(extrusions).toHaveLength(2)
 | 
			
		||||
      extrusions.forEach((extrusion, index) => {
 | 
			
		||||
        if (err(extrusion)) throw extrusion
 | 
			
		||||
        expect(extrusion.type).toBe('extrusion')
 | 
			
		||||
        expect(extrusion.type).toBe('sweep')
 | 
			
		||||
        const firstExtrusionIsACubeIE6Sides = 6
 | 
			
		||||
        const secondExtrusionIsATriangularPrismIE5Sides = 5
 | 
			
		||||
        expect(extrusion.surfaces.length).toBe(
 | 
			
		||||
@ -535,7 +535,7 @@ describe('testing getArtifactsToUpdate', () => {
 | 
			
		||||
        type: 'path',
 | 
			
		||||
        segIds: [],
 | 
			
		||||
        planeId: 'UUID-1',
 | 
			
		||||
        extrusionId: '',
 | 
			
		||||
        sweepId: '',
 | 
			
		||||
        codeRef: {
 | 
			
		||||
          pathToNode: [['body', '']],
 | 
			
		||||
          range: [43, 70],
 | 
			
		||||
@ -544,7 +544,8 @@ describe('testing getArtifactsToUpdate', () => {
 | 
			
		||||
    ])
 | 
			
		||||
    expect(getUpdateObjects('extrude')).toEqual([
 | 
			
		||||
      {
 | 
			
		||||
        type: 'extrusion',
 | 
			
		||||
        type: 'sweep',
 | 
			
		||||
        subType: 'extrusion',
 | 
			
		||||
        pathId: expect.any(String),
 | 
			
		||||
        surfaceIds: [],
 | 
			
		||||
        edgeIds: [],
 | 
			
		||||
@ -557,7 +558,7 @@ describe('testing getArtifactsToUpdate', () => {
 | 
			
		||||
        type: 'path',
 | 
			
		||||
        segIds: expect.any(Array),
 | 
			
		||||
        planeId: expect.any(String),
 | 
			
		||||
        extrusionId: expect.any(String),
 | 
			
		||||
        sweepId: expect.any(String),
 | 
			
		||||
        codeRef: {
 | 
			
		||||
          range: [43, 70],
 | 
			
		||||
          pathToNode: [['body', '']],
 | 
			
		||||
@ -580,7 +581,7 @@ describe('testing getArtifactsToUpdate', () => {
 | 
			
		||||
        type: 'path',
 | 
			
		||||
        segIds: expect.any(Array),
 | 
			
		||||
        planeId: expect.any(String),
 | 
			
		||||
        extrusionId: expect.any(String),
 | 
			
		||||
        sweepId: expect.any(String),
 | 
			
		||||
        codeRef: {
 | 
			
		||||
          range: [43, 70],
 | 
			
		||||
          pathToNode: [['body', '']],
 | 
			
		||||
@ -617,7 +618,7 @@ describe('testing getArtifactsToUpdate', () => {
 | 
			
		||||
        type: 'wall',
 | 
			
		||||
        segId: expect.any(String),
 | 
			
		||||
        edgeCutEdgeIds: [],
 | 
			
		||||
        extrusionId: expect.any(String),
 | 
			
		||||
        sweepId: expect.any(String),
 | 
			
		||||
        pathIds: [],
 | 
			
		||||
      },
 | 
			
		||||
      {
 | 
			
		||||
@ -631,7 +632,8 @@ describe('testing getArtifactsToUpdate', () => {
 | 
			
		||||
        },
 | 
			
		||||
      },
 | 
			
		||||
      {
 | 
			
		||||
        type: 'extrusion',
 | 
			
		||||
        type: 'sweep',
 | 
			
		||||
        subType: 'extrusion',
 | 
			
		||||
        pathId: expect.any(String),
 | 
			
		||||
        surfaceIds: expect.any(Array),
 | 
			
		||||
        edgeIds: expect.any(Array),
 | 
			
		||||
@ -644,7 +646,7 @@ describe('testing getArtifactsToUpdate', () => {
 | 
			
		||||
        type: 'wall',
 | 
			
		||||
        segId: expect.any(String),
 | 
			
		||||
        edgeCutEdgeIds: [],
 | 
			
		||||
        extrusionId: expect.any(String),
 | 
			
		||||
        sweepId: expect.any(String),
 | 
			
		||||
        pathIds: [],
 | 
			
		||||
      },
 | 
			
		||||
      {
 | 
			
		||||
@ -658,7 +660,8 @@ describe('testing getArtifactsToUpdate', () => {
 | 
			
		||||
        },
 | 
			
		||||
      },
 | 
			
		||||
      {
 | 
			
		||||
        type: 'extrusion',
 | 
			
		||||
        type: 'sweep',
 | 
			
		||||
        subType: 'extrusion',
 | 
			
		||||
        pathId: expect.any(String),
 | 
			
		||||
        surfaceIds: expect.any(Array),
 | 
			
		||||
        edgeIds: expect.any(Array),
 | 
			
		||||
@ -671,7 +674,7 @@ describe('testing getArtifactsToUpdate', () => {
 | 
			
		||||
        type: 'wall',
 | 
			
		||||
        segId: expect.any(String),
 | 
			
		||||
        edgeCutEdgeIds: [],
 | 
			
		||||
        extrusionId: expect.any(String),
 | 
			
		||||
        sweepId: expect.any(String),
 | 
			
		||||
        pathIds: [],
 | 
			
		||||
      },
 | 
			
		||||
      {
 | 
			
		||||
@ -686,7 +689,8 @@ describe('testing getArtifactsToUpdate', () => {
 | 
			
		||||
        edgeCutId: expect.any(String),
 | 
			
		||||
      },
 | 
			
		||||
      {
 | 
			
		||||
        type: 'extrusion',
 | 
			
		||||
        type: 'sweep',
 | 
			
		||||
        subType: 'extrusion',
 | 
			
		||||
        pathId: expect.any(String),
 | 
			
		||||
        surfaceIds: expect.any(Array),
 | 
			
		||||
        edgeIds: expect.any(Array),
 | 
			
		||||
@ -699,7 +703,7 @@ describe('testing getArtifactsToUpdate', () => {
 | 
			
		||||
        type: 'wall',
 | 
			
		||||
        segId: expect.any(String),
 | 
			
		||||
        edgeCutEdgeIds: [],
 | 
			
		||||
        extrusionId: expect.any(String),
 | 
			
		||||
        sweepId: expect.any(String),
 | 
			
		||||
        pathIds: [],
 | 
			
		||||
      },
 | 
			
		||||
      {
 | 
			
		||||
@ -713,7 +717,8 @@ describe('testing getArtifactsToUpdate', () => {
 | 
			
		||||
        },
 | 
			
		||||
      },
 | 
			
		||||
      {
 | 
			
		||||
        type: 'extrusion',
 | 
			
		||||
        type: 'sweep',
 | 
			
		||||
        subType: 'extrusion',
 | 
			
		||||
        pathId: expect.any(String),
 | 
			
		||||
        surfaceIds: expect.any(Array),
 | 
			
		||||
        edgeIds: expect.any(Array),
 | 
			
		||||
@ -726,11 +731,12 @@ describe('testing getArtifactsToUpdate', () => {
 | 
			
		||||
        type: 'cap',
 | 
			
		||||
        subType: 'start',
 | 
			
		||||
        edgeCutEdgeIds: [],
 | 
			
		||||
        extrusionId: expect.any(String),
 | 
			
		||||
        sweepId: expect.any(String),
 | 
			
		||||
        pathIds: [],
 | 
			
		||||
      },
 | 
			
		||||
      {
 | 
			
		||||
        type: 'extrusion',
 | 
			
		||||
        type: 'sweep',
 | 
			
		||||
        subType: 'extrusion',
 | 
			
		||||
        pathId: expect.any(String),
 | 
			
		||||
        surfaceIds: expect.any(Array),
 | 
			
		||||
        edgeIds: expect.any(Array),
 | 
			
		||||
@ -743,11 +749,12 @@ describe('testing getArtifactsToUpdate', () => {
 | 
			
		||||
        type: 'cap',
 | 
			
		||||
        subType: 'end',
 | 
			
		||||
        edgeCutEdgeIds: [],
 | 
			
		||||
        extrusionId: expect.any(String),
 | 
			
		||||
        sweepId: expect.any(String),
 | 
			
		||||
        pathIds: [],
 | 
			
		||||
      },
 | 
			
		||||
      {
 | 
			
		||||
        type: 'extrusion',
 | 
			
		||||
        type: 'sweep',
 | 
			
		||||
        subType: 'extrusion',
 | 
			
		||||
        pathId: expect.any(String),
 | 
			
		||||
        surfaceIds: expect.any(Array),
 | 
			
		||||
        edgeIds: expect.any(Array),
 | 
			
		||||
 | 
			
		||||
@ -25,7 +25,7 @@ export interface PathArtifact {
 | 
			
		||||
  type: 'path'
 | 
			
		||||
  planeId: ArtifactId
 | 
			
		||||
  segIds: Array<ArtifactId>
 | 
			
		||||
  extrusionId: ArtifactId
 | 
			
		||||
  sweepId: ArtifactId
 | 
			
		||||
  solid2dId?: ArtifactId
 | 
			
		||||
  codeRef: CommonCommandProperties
 | 
			
		||||
}
 | 
			
		||||
@ -38,7 +38,7 @@ export interface PathArtifactRich {
 | 
			
		||||
  type: 'path'
 | 
			
		||||
  plane: PlaneArtifact | WallArtifact
 | 
			
		||||
  segments: Array<SegmentArtifact>
 | 
			
		||||
  extrusion: ExtrusionArtifact
 | 
			
		||||
  sweep: SweepArtifact
 | 
			
		||||
  codeRef: CommonCommandProperties
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -54,23 +54,26 @@ interface SegmentArtifactRich {
 | 
			
		||||
  type: 'segment'
 | 
			
		||||
  path: PathArtifact
 | 
			
		||||
  surf: WallArtifact
 | 
			
		||||
  edges: Array<ExtrudeEdge>
 | 
			
		||||
  edges: Array<SweepEdge>
 | 
			
		||||
  edgeCut?: EdgeCut
 | 
			
		||||
  codeRef: CommonCommandProperties
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
interface ExtrusionArtifact {
 | 
			
		||||
  type: 'extrusion'
 | 
			
		||||
  pathId: ArtifactId
 | 
			
		||||
  surfaceIds: Array<ArtifactId>
 | 
			
		||||
  edgeIds: Array<ArtifactId>
 | 
			
		||||
/** A Sweep is a more generic term for extrude, revolve, loft and sweep*/
 | 
			
		||||
interface SweepArtifact {
 | 
			
		||||
  type: 'sweep'
 | 
			
		||||
  subType: 'extrusion' | 'revolve'
 | 
			
		||||
  pathId: string
 | 
			
		||||
  surfaceIds: Array<string>
 | 
			
		||||
  edgeIds: Array<string>
 | 
			
		||||
  codeRef: CommonCommandProperties
 | 
			
		||||
}
 | 
			
		||||
interface ExtrusionArtifactRich {
 | 
			
		||||
  type: 'extrusion'
 | 
			
		||||
interface SweepArtifactRich {
 | 
			
		||||
  type: 'sweep'
 | 
			
		||||
  subType: 'extrusion' | 'revolve'
 | 
			
		||||
  path: PathArtifact
 | 
			
		||||
  surfaces: Array<WallArtifact | CapArtifact>
 | 
			
		||||
  edges: Array<ExtrudeEdge>
 | 
			
		||||
  edges: Array<SweepEdge>
 | 
			
		||||
  codeRef: CommonCommandProperties
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -78,21 +81,21 @@ interface WallArtifact {
 | 
			
		||||
  type: 'wall'
 | 
			
		||||
  segId: ArtifactId
 | 
			
		||||
  edgeCutEdgeIds: Array<ArtifactId>
 | 
			
		||||
  extrusionId: ArtifactId
 | 
			
		||||
  sweepId: ArtifactId
 | 
			
		||||
  pathIds: Array<ArtifactId>
 | 
			
		||||
}
 | 
			
		||||
interface CapArtifact {
 | 
			
		||||
  type: 'cap'
 | 
			
		||||
  subType: 'start' | 'end'
 | 
			
		||||
  edgeCutEdgeIds: Array<ArtifactId>
 | 
			
		||||
  extrusionId: ArtifactId
 | 
			
		||||
  sweepId: ArtifactId
 | 
			
		||||
  pathIds: Array<ArtifactId>
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
interface ExtrudeEdge {
 | 
			
		||||
  type: 'extrudeEdge'
 | 
			
		||||
interface SweepEdge {
 | 
			
		||||
  type: 'sweepEdge'
 | 
			
		||||
  segId: ArtifactId
 | 
			
		||||
  extrusionId: ArtifactId
 | 
			
		||||
  sweepId: ArtifactId
 | 
			
		||||
  subType: 'opposite' | 'adjacent'
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -116,10 +119,10 @@ export type Artifact =
 | 
			
		||||
  | PlaneArtifact
 | 
			
		||||
  | PathArtifact
 | 
			
		||||
  | SegmentArtifact
 | 
			
		||||
  | ExtrusionArtifact
 | 
			
		||||
  | SweepArtifact
 | 
			
		||||
  | WallArtifact
 | 
			
		||||
  | CapArtifact
 | 
			
		||||
  | ExtrudeEdge
 | 
			
		||||
  | SweepEdge
 | 
			
		||||
  | EdgeCut
 | 
			
		||||
  | EdgeCutEdge
 | 
			
		||||
  | solid2D
 | 
			
		||||
@ -257,7 +260,7 @@ export function getArtifactsToUpdate({
 | 
			
		||||
            type: 'wall',
 | 
			
		||||
            segId: existingPlane.segId,
 | 
			
		||||
            edgeCutEdgeIds: existingPlane.edgeCutEdgeIds,
 | 
			
		||||
            extrusionId: existingPlane.extrusionId,
 | 
			
		||||
            sweepId: existingPlane.sweepId,
 | 
			
		||||
            pathIds: existingPlane.pathIds,
 | 
			
		||||
          },
 | 
			
		||||
        },
 | 
			
		||||
@ -274,7 +277,7 @@ export function getArtifactsToUpdate({
 | 
			
		||||
        type: 'path',
 | 
			
		||||
        segIds: [],
 | 
			
		||||
        planeId: currentPlaneId,
 | 
			
		||||
        extrusionId: '',
 | 
			
		||||
        sweepId: '',
 | 
			
		||||
        codeRef: { range, pathToNode },
 | 
			
		||||
      },
 | 
			
		||||
    })
 | 
			
		||||
@ -294,7 +297,7 @@ export function getArtifactsToUpdate({
 | 
			
		||||
          type: 'wall',
 | 
			
		||||
          segId: plane.segId,
 | 
			
		||||
          edgeCutEdgeIds: plane.edgeCutEdgeIds,
 | 
			
		||||
          extrusionId: plane.extrusionId,
 | 
			
		||||
          sweepId: plane.sweepId,
 | 
			
		||||
          pathIds: [id],
 | 
			
		||||
        },
 | 
			
		||||
      })
 | 
			
		||||
@ -337,11 +340,13 @@ export function getArtifactsToUpdate({
 | 
			
		||||
        })
 | 
			
		||||
    }
 | 
			
		||||
    return returnArr
 | 
			
		||||
  } else if (cmd.type === 'extrude') {
 | 
			
		||||
  } else if (cmd.type === 'extrude' || cmd.type === 'revolve') {
 | 
			
		||||
    const subType = cmd.type === 'extrude' ? 'extrusion' : cmd.type
 | 
			
		||||
    returnArr.push({
 | 
			
		||||
      id,
 | 
			
		||||
      artifact: {
 | 
			
		||||
        type: 'extrusion',
 | 
			
		||||
        type: 'sweep',
 | 
			
		||||
        subType: subType,
 | 
			
		||||
        pathId: cmd.target,
 | 
			
		||||
        surfaceIds: [],
 | 
			
		||||
        edgeIds: [],
 | 
			
		||||
@ -352,7 +357,7 @@ export function getArtifactsToUpdate({
 | 
			
		||||
    if (path?.type === 'path')
 | 
			
		||||
      returnArr.push({
 | 
			
		||||
        id: cmd.target,
 | 
			
		||||
        artifact: { ...path, extrusionId: id },
 | 
			
		||||
        artifact: { ...path, sweepId: id },
 | 
			
		||||
      })
 | 
			
		||||
    return returnArr
 | 
			
		||||
  } else if (
 | 
			
		||||
@ -375,7 +380,7 @@ export function getArtifactsToUpdate({
 | 
			
		||||
                type: 'wall',
 | 
			
		||||
                segId: curve_id,
 | 
			
		||||
                edgeCutEdgeIds: [],
 | 
			
		||||
                extrusionId: path.extrusionId,
 | 
			
		||||
                sweepId: path.sweepId,
 | 
			
		||||
                pathIds: [],
 | 
			
		||||
              },
 | 
			
		||||
            })
 | 
			
		||||
@ -383,12 +388,12 @@ export function getArtifactsToUpdate({
 | 
			
		||||
              id: curve_id,
 | 
			
		||||
              artifact: { ...seg, surfaceId: face_id },
 | 
			
		||||
            })
 | 
			
		||||
            const extrusion = getArtifact(path.extrusionId)
 | 
			
		||||
            if (extrusion?.type === 'extrusion') {
 | 
			
		||||
            const sweep = getArtifact(path.sweepId)
 | 
			
		||||
            if (sweep?.type === 'sweep') {
 | 
			
		||||
              returnArr.push({
 | 
			
		||||
                id: path.extrusionId,
 | 
			
		||||
                id: path.sweepId,
 | 
			
		||||
                artifact: {
 | 
			
		||||
                  ...extrusion,
 | 
			
		||||
                  ...sweep,
 | 
			
		||||
                  surfaceIds: [face_id],
 | 
			
		||||
                },
 | 
			
		||||
              })
 | 
			
		||||
@ -407,16 +412,16 @@ export function getArtifactsToUpdate({
 | 
			
		||||
              type: 'cap',
 | 
			
		||||
              subType: cap === 'bottom' ? 'start' : 'end',
 | 
			
		||||
              edgeCutEdgeIds: [],
 | 
			
		||||
              extrusionId: path.extrusionId,
 | 
			
		||||
              sweepId: path.sweepId,
 | 
			
		||||
              pathIds: [],
 | 
			
		||||
            },
 | 
			
		||||
          })
 | 
			
		||||
          const extrusion = getArtifact(path.extrusionId)
 | 
			
		||||
          if (extrusion?.type !== 'extrusion') return
 | 
			
		||||
          const sweep = getArtifact(path.sweepId)
 | 
			
		||||
          if (sweep?.type !== 'sweep') return
 | 
			
		||||
          returnArr.push({
 | 
			
		||||
            id: path.extrusionId,
 | 
			
		||||
            id: path.sweepId,
 | 
			
		||||
            artifact: {
 | 
			
		||||
              ...extrusion,
 | 
			
		||||
              ...sweep,
 | 
			
		||||
              surfaceIds: [face_id],
 | 
			
		||||
            },
 | 
			
		||||
          })
 | 
			
		||||
@ -439,9 +444,9 @@ export function getArtifactsToUpdate({
 | 
			
		||||
  ) {
 | 
			
		||||
    const wall = getArtifact(cmd.face_id)
 | 
			
		||||
    if (wall?.type !== 'wall') return returnArr
 | 
			
		||||
    const extrusion = getArtifact(wall.extrusionId)
 | 
			
		||||
    if (extrusion?.type !== 'extrusion') return returnArr
 | 
			
		||||
    const path = getArtifact(extrusion.pathId)
 | 
			
		||||
    const sweep = getArtifact(wall.sweepId)
 | 
			
		||||
    if (sweep?.type !== 'sweep') return returnArr
 | 
			
		||||
    const path = getArtifact(sweep.pathId)
 | 
			
		||||
    if (path?.type !== 'path') return returnArr
 | 
			
		||||
    const segment = getArtifact(cmd.edge_id)
 | 
			
		||||
    if (segment?.type !== 'segment') return returnArr
 | 
			
		||||
@ -450,13 +455,13 @@ export function getArtifactsToUpdate({
 | 
			
		||||
      {
 | 
			
		||||
        id: response.data.modeling_response.data.edge,
 | 
			
		||||
        artifact: {
 | 
			
		||||
          type: 'extrudeEdge',
 | 
			
		||||
          type: 'sweepEdge',
 | 
			
		||||
          subType:
 | 
			
		||||
            cmd.type === 'solid3d_get_prev_adjacent_edge'
 | 
			
		||||
              ? 'adjacent'
 | 
			
		||||
              : 'opposite',
 | 
			
		||||
          segId: cmd.edge_id,
 | 
			
		||||
          extrusionId: path.extrusionId,
 | 
			
		||||
          sweepId: path.sweepId,
 | 
			
		||||
        },
 | 
			
		||||
      },
 | 
			
		||||
      {
 | 
			
		||||
@ -467,9 +472,9 @@ export function getArtifactsToUpdate({
 | 
			
		||||
        },
 | 
			
		||||
      },
 | 
			
		||||
      {
 | 
			
		||||
        id: path.extrusionId,
 | 
			
		||||
        id: path.sweepId,
 | 
			
		||||
        artifact: {
 | 
			
		||||
          ...extrusion,
 | 
			
		||||
          ...sweep,
 | 
			
		||||
          edgeIds: [response.data.modeling_response.data.edge],
 | 
			
		||||
        },
 | 
			
		||||
      },
 | 
			
		||||
@ -582,10 +587,10 @@ export function expandPath(
 | 
			
		||||
    { keys: path.segIds, types: ['segment'] },
 | 
			
		||||
    artifactGraph
 | 
			
		||||
  )
 | 
			
		||||
  const extrusion = getArtifactOfTypes(
 | 
			
		||||
  const sweep = getArtifactOfTypes(
 | 
			
		||||
    {
 | 
			
		||||
      key: path.extrusionId,
 | 
			
		||||
      types: ['extrusion'],
 | 
			
		||||
      key: path.sweepId,
 | 
			
		||||
      types: ['sweep'],
 | 
			
		||||
    },
 | 
			
		||||
    artifactGraph
 | 
			
		||||
  )
 | 
			
		||||
@ -593,40 +598,41 @@ export function expandPath(
 | 
			
		||||
    { key: path.planeId, types: ['plane', 'wall'] },
 | 
			
		||||
    artifactGraph
 | 
			
		||||
  )
 | 
			
		||||
  if (err(extrusion)) return extrusion
 | 
			
		||||
  if (err(sweep)) return sweep
 | 
			
		||||
  if (err(plane)) return plane
 | 
			
		||||
  return {
 | 
			
		||||
    type: 'path',
 | 
			
		||||
    segments: Array.from(segs.values()),
 | 
			
		||||
    extrusion,
 | 
			
		||||
    sweep,
 | 
			
		||||
    plane,
 | 
			
		||||
    codeRef: path.codeRef,
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
export function expandExtrusion(
 | 
			
		||||
  extrusion: ExtrusionArtifact,
 | 
			
		||||
export function expandSweep(
 | 
			
		||||
  sweep: SweepArtifact,
 | 
			
		||||
  artifactGraph: ArtifactGraph
 | 
			
		||||
): ExtrusionArtifactRich | Error {
 | 
			
		||||
): SweepArtifactRich | Error {
 | 
			
		||||
  const surfs = getArtifactsOfTypes(
 | 
			
		||||
    { keys: extrusion.surfaceIds, types: ['wall', 'cap'] },
 | 
			
		||||
    { keys: sweep.surfaceIds, types: ['wall', 'cap'] },
 | 
			
		||||
    artifactGraph
 | 
			
		||||
  )
 | 
			
		||||
  const edges = getArtifactsOfTypes(
 | 
			
		||||
    { keys: extrusion.edgeIds, types: ['extrudeEdge'] },
 | 
			
		||||
    { keys: sweep.edgeIds, types: ['sweepEdge'] },
 | 
			
		||||
    artifactGraph
 | 
			
		||||
  )
 | 
			
		||||
  const path = getArtifactOfTypes(
 | 
			
		||||
    { key: extrusion.pathId, types: ['path'] },
 | 
			
		||||
    { key: sweep.pathId, types: ['path'] },
 | 
			
		||||
    artifactGraph
 | 
			
		||||
  )
 | 
			
		||||
  if (err(path)) return path
 | 
			
		||||
  return {
 | 
			
		||||
    type: 'extrusion',
 | 
			
		||||
    type: 'sweep',
 | 
			
		||||
    subType: 'extrusion',
 | 
			
		||||
    surfaces: Array.from(surfs.values()),
 | 
			
		||||
    edges: Array.from(edges.values()),
 | 
			
		||||
    path,
 | 
			
		||||
    codeRef: extrusion.codeRef,
 | 
			
		||||
    codeRef: sweep.codeRef,
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -643,7 +649,7 @@ export function expandSegment(
 | 
			
		||||
    artifactGraph
 | 
			
		||||
  )
 | 
			
		||||
  const edges = getArtifactsOfTypes(
 | 
			
		||||
    { keys: segment.edgeIds, types: ['extrudeEdge'] },
 | 
			
		||||
    { keys: segment.edgeIds, types: ['sweepEdge'] },
 | 
			
		||||
    artifactGraph
 | 
			
		||||
  )
 | 
			
		||||
  const edgeCut = segment.edgeCutId
 | 
			
		||||
@ -670,13 +676,13 @@ export function getCapCodeRef(
 | 
			
		||||
  cap: CapArtifact,
 | 
			
		||||
  artifactGraph: ArtifactGraph
 | 
			
		||||
): CommonCommandProperties | Error {
 | 
			
		||||
  const extrusion = getArtifactOfTypes(
 | 
			
		||||
    { key: cap.extrusionId, types: ['extrusion'] },
 | 
			
		||||
  const sweep = getArtifactOfTypes(
 | 
			
		||||
    { key: cap.sweepId, types: ['sweep'] },
 | 
			
		||||
    artifactGraph
 | 
			
		||||
  )
 | 
			
		||||
  if (err(extrusion)) return extrusion
 | 
			
		||||
  if (err(sweep)) return sweep
 | 
			
		||||
  const path = getArtifactOfTypes(
 | 
			
		||||
    { key: extrusion.pathId, types: ['path'] },
 | 
			
		||||
    { key: sweep.pathId, types: ['path'] },
 | 
			
		||||
    artifactGraph
 | 
			
		||||
  )
 | 
			
		||||
  if (err(path)) return path
 | 
			
		||||
@ -707,8 +713,8 @@ export function getWallCodeRef(
 | 
			
		||||
  return seg.codeRef
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
export function getExtrudeEdgeCodeRef(
 | 
			
		||||
  edge: ExtrudeEdge,
 | 
			
		||||
export function getSweepEdgeCodeRef(
 | 
			
		||||
  edge: SweepEdge,
 | 
			
		||||
  artifactGraph: ArtifactGraph
 | 
			
		||||
): CommonCommandProperties | Error {
 | 
			
		||||
  const seg = getArtifactOfTypes(
 | 
			
		||||
@ -719,29 +725,29 @@ export function getExtrudeEdgeCodeRef(
 | 
			
		||||
  return seg.codeRef
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
export function getExtrusionFromSuspectedExtrudeSurface(
 | 
			
		||||
export function getSweepFromSuspectedSweepSurface(
 | 
			
		||||
  id: ArtifactId,
 | 
			
		||||
  artifactGraph: ArtifactGraph
 | 
			
		||||
): ExtrusionArtifact | Error {
 | 
			
		||||
): SweepArtifact | Error {
 | 
			
		||||
  const artifact = getArtifactOfTypes(
 | 
			
		||||
    { key: id, types: ['wall', 'cap'] },
 | 
			
		||||
    artifactGraph
 | 
			
		||||
  )
 | 
			
		||||
  if (err(artifact)) return artifact
 | 
			
		||||
  return getArtifactOfTypes(
 | 
			
		||||
    { key: artifact.extrusionId, types: ['extrusion'] },
 | 
			
		||||
    { key: artifact.sweepId, types: ['sweep'] },
 | 
			
		||||
    artifactGraph
 | 
			
		||||
  )
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
export function getExtrusionFromSuspectedPath(
 | 
			
		||||
export function getSweepFromSuspectedPath(
 | 
			
		||||
  id: ArtifactId,
 | 
			
		||||
  artifactGraph: ArtifactGraph
 | 
			
		||||
): ExtrusionArtifact | Error {
 | 
			
		||||
): SweepArtifact | Error {
 | 
			
		||||
  const path = getArtifactOfTypes({ key: id, types: ['path'] }, artifactGraph)
 | 
			
		||||
  if (err(path)) return path
 | 
			
		||||
  return getArtifactOfTypes(
 | 
			
		||||
    { key: path.extrusionId, types: ['extrusion'] },
 | 
			
		||||
    { key: path.sweepId, types: ['sweep'] },
 | 
			
		||||
    artifactGraph
 | 
			
		||||
  )
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
										
											Binary file not shown.
										
									
								
							| 
		 Before Width: | Height: | Size: 380 KiB After Width: | Height: | Size: 378 KiB  | 
										
											Binary file not shown.
										
									
								
							| 
		 Before Width: | Height: | Size: 617 KiB After Width: | Height: | Size: 613 KiB  | 
@ -31,7 +31,7 @@ import {
 | 
			
		||||
  getArtifactOfTypes,
 | 
			
		||||
  getArtifactsOfTypes,
 | 
			
		||||
  getCapCodeRef,
 | 
			
		||||
  getExtrudeEdgeCodeRef,
 | 
			
		||||
  getSweepEdgeCodeRef,
 | 
			
		||||
  getSolid2dCodeRef,
 | 
			
		||||
  getWallCodeRef,
 | 
			
		||||
} from 'lang/std/artifactGraph'
 | 
			
		||||
@ -141,8 +141,8 @@ export async function getEventForSelectWithPoint({
 | 
			
		||||
      },
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
  if (_artifact.type === 'extrudeEdge') {
 | 
			
		||||
    const codeRef = getExtrudeEdgeCodeRef(
 | 
			
		||||
  if (_artifact.type === 'sweepEdge') {
 | 
			
		||||
    const codeRef = getSweepEdgeCodeRef(
 | 
			
		||||
      _artifact,
 | 
			
		||||
      engineCommandManager.artifactGraph
 | 
			
		||||
    )
 | 
			
		||||
@ -575,12 +575,10 @@ function codeToIdSelections(
 | 
			
		||||
        }
 | 
			
		||||
        if (type === 'edge' && entry.artifact.type === 'segment') {
 | 
			
		||||
          const edges = getArtifactsOfTypes(
 | 
			
		||||
            { keys: entry.artifact.edgeIds, types: ['extrudeEdge'] },
 | 
			
		||||
            { keys: entry.artifact.edgeIds, types: ['sweepEdge'] },
 | 
			
		||||
            engineCommandManager.artifactGraph
 | 
			
		||||
          )
 | 
			
		||||
          const edge = [...edges].find(
 | 
			
		||||
            ([_, edge]) => edge.type === 'extrudeEdge'
 | 
			
		||||
          )
 | 
			
		||||
          const edge = [...edges].find(([_, edge]) => edge.type === 'sweepEdge')
 | 
			
		||||
          if (!edge) return
 | 
			
		||||
          bestCandidate = {
 | 
			
		||||
            artifact: edge[1],
 | 
			
		||||
@ -590,12 +588,12 @@ function codeToIdSelections(
 | 
			
		||||
        }
 | 
			
		||||
        if (type === 'adjacent-edge' && entry.artifact.type === 'segment') {
 | 
			
		||||
          const edges = getArtifactsOfTypes(
 | 
			
		||||
            { keys: entry.artifact.edgeIds, types: ['extrudeEdge'] },
 | 
			
		||||
            { keys: entry.artifact.edgeIds, types: ['sweepEdge'] },
 | 
			
		||||
            engineCommandManager.artifactGraph
 | 
			
		||||
          )
 | 
			
		||||
          const edge = [...edges].find(
 | 
			
		||||
            ([_, edge]) =>
 | 
			
		||||
              edge.type === 'extrudeEdge' && edge.subType === 'adjacent'
 | 
			
		||||
              edge.type === 'sweepEdge' && edge.subType === 'adjacent'
 | 
			
		||||
          )
 | 
			
		||||
          if (!edge) return
 | 
			
		||||
          bestCandidate = {
 | 
			
		||||
@ -610,8 +608,8 @@ function codeToIdSelections(
 | 
			
		||||
        ) {
 | 
			
		||||
          const extrusion = getArtifactOfTypes(
 | 
			
		||||
            {
 | 
			
		||||
              key: entry.artifact.extrusionId,
 | 
			
		||||
              types: ['extrusion'],
 | 
			
		||||
              key: entry.artifact.sweepId,
 | 
			
		||||
              types: ['sweep'],
 | 
			
		||||
            },
 | 
			
		||||
            engineCommandManager.artifactGraph
 | 
			
		||||
          )
 | 
			
		||||
 | 
			
		||||
		Reference in New Issue
	
	Block a user