From d187a29e55b3de066a8c6636317e4c1a07be893b Mon Sep 17 00:00:00 2001 From: Kurt Hutten Date: Wed, 7 May 2025 08:25:12 +1000 Subject: [PATCH] Fix sketchOnFace point&click for booleans (#6713) * fix bool sketchOnFace * fix chamfer test * add test * Kurt composite attempt (#6722) * composite attempt * Add forward edge to CSG artifacts in artifact graph * Fix comment * Move the doc comments above the attributes * Fix to update the correct field of Path * Update output --------- Co-authored-by: Jonathan Tran * use rust defined composite solid edges instead * Update src/hooks/useEngineConnectionSubscriptions.ts Co-authored-by: graphite-app[bot] <96075541+graphite-app[bot]@users.noreply.github.com> * Revert PNG screenshots * Fix TS formatting --------- Co-authored-by: Jonathan Tran Co-authored-by: graphite-app[bot] <96075541+graphite-app[bot]@users.noreply.github.com> --- e2e/playwright/fixtures/toolbarFixture.ts | 6 ++ e2e/playwright/point-click.spec.ts | 37 +++---- e2e/playwright/sketch-tests.spec.ts | 91 ++++++++++++++++++ rust/kcl-lib/src/execution/artifact.rs | 76 ++++++++++++--- .../src/execution/artifact/mermaid_tests.rs | 11 ++- .../tests/import_transform/rendered_model.png | Bin 68581 -> 69135 bytes .../artifact_graph_flowchart.snap.md | 4 +- .../artifact_graph_flowchart.snap.md | 44 ++++----- .../artifact_graph_flowchart.snap.md | 4 +- .../artifact_graph_flowchart.snap.md | 1 + .../artifact_graph_flowchart.snap.md | 4 +- .../artifact_graph_flowchart.snap.md | 4 +- .../artifact_graph_flowchart.snap.md | 4 +- src/hooks/useEngineConnectionSubscriptions.ts | 27 +++++- src/lang/modifyAst.ts | 3 +- src/lang/modifyAst/boolean.ts | 7 ++ src/machines/modelingMachine.ts | 6 +- 17 files changed, 256 insertions(+), 73 deletions(-) diff --git a/e2e/playwright/fixtures/toolbarFixture.ts b/e2e/playwright/fixtures/toolbarFixture.ts index ae51d659a..f1be93061 100644 --- a/e2e/playwright/fixtures/toolbarFixture.ts +++ b/e2e/playwright/fixtures/toolbarFixture.ts @@ -241,6 +241,12 @@ export class ToolbarFixture { async openFeatureTreePane() { return this.openPane(this.featureTreeId) } + + async waitForFeatureTreeToBeBuilt() { + await this.openFeatureTreePane() + await expect(this.page.getByText('Building feature tree')).not.toBeVisible() + await this.closeFeatureTreePane() + } async closeFeatureTreePane() { await this.closePane(this.featureTreeId) } diff --git a/e2e/playwright/point-click.spec.ts b/e2e/playwright/point-click.spec.ts index 84fcf9bf7..1946f1b10 100644 --- a/e2e/playwright/point-click.spec.ts +++ b/e2e/playwright/point-click.spec.ts @@ -244,6 +244,7 @@ test.describe('Point-and-click tests', () => { await scene.moveCameraTo(cameraPos, cameraTarget) await test.step('check chamfer selection changes cursor position', async () => { + await toolbar.waitForFeatureTreeToBeBuilt() await expect(async () => { // sometimes initial click doesn't register await clickChamfer() @@ -283,6 +284,7 @@ test.describe('Point-and-click tests', () => { highlightedCode: '', diagnostics: [], }) + await toolbar.waitForFeatureTreeToBeBuilt() }) } test('works on all edge selections and can break up multi edges in a chamfer array', async ({ @@ -402,6 +404,7 @@ test.describe('Point-and-click tests', () => { await test.step('verify at the end of the test that final code is what is expected', async () => { await editor.expectEditor.toContain( `@settings(defaultLengthUnit = in) + sketch001 = startSketchOn(XZ) |> startProfile(at = [75.8, 317.2]) // [$startCapTag, $EndCapTag] |> angledLine(angle = 0, length = 268.43, tag = $rectangleSegmentA001) @@ -414,18 +417,11 @@ extrude001 = extrude(sketch001, length = 100) |> chamfer(length = 30, tags = [seg01], tag = $seg04) |> chamfer(length = 30, tags = [getNextAdjacentEdge(seg02)], tag = $seg05) |> chamfer(length = 30, tags = [getNextAdjacentEdge(yo)], tag = $seg06) -sketch005 = startSketchOn(extrude001, face = seg06) -profile004=startProfile(sketch005, at = [-23.43,19.69]) - |> angledLine(angle = 0, length = 9.1, tag = $rectangleSegmentA005) - |> angledLine(angle = segAng(rectangleSegmentA005) - 90, length = 84.07) - |> angledLine(angle = segAng(rectangleSegmentA005), length = -segLen(rectangleSegmentA005)) - |> line(endAbsolute=[profileStartX(%), profileStartY(%)]) - |> close() -sketch004 = startSketchOn(extrude001, face = seg05) -profile003 = startProfile(sketch004, at = [82.57, 322.96]) - |> angledLine(angle = 0, length = 11.16, tag = $rectangleSegmentA004) - |> angledLine(angle = segAng(rectangleSegmentA004) - 90, length = 103.07) - |> angledLine(angle = segAng(rectangleSegmentA004), length = -segLen(rectangleSegmentA004)) +sketch002 = startSketchOn(extrude001, face = seg03) +profile001 = startProfile(sketch002, at = [205.96, 254.59]) + |> angledLine(angle = 0, length = 11.39, tag = $rectangleSegmentA002) + |> angledLine(angle = segAng(rectangleSegmentA002) - 90, length = 105.26) + |> angledLine(angle = segAng(rectangleSegmentA002), length = -segLen(rectangleSegmentA002)) |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) |> close() sketch003 = startSketchOn(extrude001, face = seg04) @@ -435,11 +431,18 @@ profile002 = startProfile(sketch003, at = [-209.64, 255.28]) |> angledLine(angle = segAng(rectangleSegmentA003), length = -segLen(rectangleSegmentA003)) |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) |> close() -sketch002 = startSketchOn(extrude001, face = seg03) -profile001 = startProfile(sketch002, at = [205.96, 254.59]) - |> angledLine(angle = 0, length = 11.39, tag = $rectangleSegmentA002) - |> angledLine(angle = segAng(rectangleSegmentA002) - 90, length = 105.26) - |> angledLine(angle = segAng(rectangleSegmentA002), length = -segLen(rectangleSegmentA002)) +sketch004 = startSketchOn(extrude001, face = seg05) +profile003 = startProfile(sketch004, at = [82.57, 322.96]) + |> angledLine(angle = 0, length = 11.16, tag = $rectangleSegmentA004) + |> angledLine(angle = segAng(rectangleSegmentA004) - 90, length = 103.07) + |> angledLine(angle = segAng(rectangleSegmentA004), length = -segLen(rectangleSegmentA004)) + |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) + |> close() +sketch005 = startSketchOn(extrude001, face = seg06) +profile004 = startProfile(sketch005, at = [-23.43, 19.69]) + |> angledLine(angle = 0, length = 9.1, tag = $rectangleSegmentA005) + |> angledLine(angle = segAng(rectangleSegmentA005) - 90, length = 84.07) + |> angledLine(angle = segAng(rectangleSegmentA005), length = -segLen(rectangleSegmentA005)) |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) |> close() `, diff --git a/e2e/playwright/sketch-tests.spec.ts b/e2e/playwright/sketch-tests.spec.ts index 391887aab..254db97e0 100644 --- a/e2e/playwright/sketch-tests.spec.ts +++ b/e2e/playwright/sketch-tests.spec.ts @@ -1260,6 +1260,97 @@ profile001 = startProfile(sketch001, at = [299.72, 230.82]) }).toPass({ timeout: 40_000, intervals: [1_000] }) }) + test('sketch on face of a boolean works', async ({ + page, + homePage, + scene, + cmdBar, + toolbar, + editor, + }) => { + await page.setBodyDimensions({ width: 1000, height: 500 }) + + await page.addInitScript(async () => { + localStorage.setItem( + 'persistCode', + `@settings(defaultLengthUnit = mm) + +myVar = 50 +sketch001 = startSketchOn(XZ) +profile001 = circle(sketch001, center = [myVar, 43.9], radius = 41.05) +extrude001 = extrude(profile001, length = 200) + |> translate(x = 3.14, y = 3.14, z = -50.154) +sketch002 = startSketchOn(XY) +profile002 = startProfile(sketch002, at = [72.2, -52.05]) + |> angledLine(angle = 0, length = 181.26, tag = $rectangleSegmentA001) + |> angledLine(angle = segAng(rectangleSegmentA001) - 90, length = 21.54) + |> angledLine(angle = segAng(rectangleSegmentA001), length = -segLen(rectangleSegmentA001), tag = $mySeg) + |> line(endAbsolute = [profileStartX(%), profileStartY(%)], tag = $seg01) + |> close() + +extrude002 = extrude(profile002, length = 151) + |> chamfer( + %, + length = 15, + tags = [mySeg], + tag = $seg02, + ) +solid001 = subtract([extrude001], tools = [extrude002]) +` + ) + }) + + const [selectChamferFaceClk] = scene.makeMouseHelpers(671, 283) + const [circleCenterClk] = scene.makeMouseHelpers(700, 272) + const [circleRadiusClk] = scene.makeMouseHelpers(694, 264) + + await test.step('Setup', async () => { + await homePage.goToModelingScene() + await scene.settled(cmdBar) + + await scene.moveCameraTo( + { x: 180, y: -75, z: 116 }, + { x: 67, y: -114, z: -15 } + ) + }) + + await test.step('sketch on chamfer face that is part of a boolean', async () => { + await toolbar.startSketchPlaneSelection() + await selectChamferFaceClk() + + await expect + .poll(async () => { + const lineBtn = page.getByRole('button', { name: 'line Line' }) + return lineBtn.getAttribute('aria-pressed') + }) + .toBe('true') + + await editor.expectEditor.toContain( + 'startSketchOn(solid001, face = seg02)' + ) + }) + + await test.step('verify sketching still works', async () => { + await toolbar.circleBtn.click() + await expect + .poll(async () => { + const circleBtn = page.getByRole('button', { name: 'circle Circle' }) + return circleBtn.getAttribute('aria-pressed') + }) + .toBe('true') + + await circleCenterClk() + await editor.expectEditor.toContain( + 'profile003 = circle(sketch003, center' + ) + + await circleRadiusClk() + await editor.expectEditor.toContain( + 'profile003 = circle(sketch003, center = [119.41, -56.05], radius = 1.82)' + ) + }) + }) + test('Can sketch on face when user defined function was used in the sketch', async ({ page, homePage, diff --git a/rust/kcl-lib/src/execution/artifact.rs b/rust/kcl-lib/src/execution/artifact.rs index 07e26df39..04a416793 100644 --- a/rust/kcl-lib/src/execution/artifact.rs +++ b/rust/kcl-lib/src/execution/artifact.rs @@ -150,6 +150,10 @@ pub struct CompositeSolid { #[serde(default, skip_serializing_if = "Vec::is_empty")] pub tool_ids: Vec, pub code_ref: CodeRef, + /// This is the ID of the composite solid that this is part of, if any, as a + /// composite solid can be used as input for another composite solid. + #[serde(default, skip_serializing_if = "Option::is_none")] + pub composite_solid_id: Option, } #[derive(Debug, Clone, Copy, Serialize, PartialEq, Eq, ts_rs::TS)] @@ -182,6 +186,10 @@ pub struct Path { #[serde(default, skip_serializing_if = "Option::is_none")] pub solid2d_id: Option, pub code_ref: CodeRef, + /// This is the ID of the composite solid that this is part of, if any, as + /// this can be used as input for another composite solid. + #[serde(default, skip_serializing_if = "Option::is_none")] + pub composite_solid_id: Option, } #[derive(Debug, Clone, Serialize, PartialEq, ts_rs::TS)] @@ -585,6 +593,7 @@ impl CompositeSolid { }; merge_ids(&mut self.solid_ids, new.solid_ids); merge_ids(&mut self.tool_ids, new.tool_ids); + merge_opt_id(&mut self.composite_solid_id, new.composite_solid_id); None } @@ -609,6 +618,7 @@ impl Path { merge_opt_id(&mut self.sweep_id, new.sweep_id); merge_ids(&mut self.seg_ids, new.seg_ids); merge_opt_id(&mut self.solid2d_id, new.solid2d_id); + merge_opt_id(&mut self.composite_solid_id, new.composite_solid_id); None } @@ -921,6 +931,7 @@ fn artifacts_to_update( sweep_id: None, solid2d_id: None, code_ref, + composite_solid_id: None, })); let plane = artifacts.get(&ArtifactId::new(*current_plane_id)); if let Some(Artifact::Plane(plane)) = plane { @@ -1359,20 +1370,59 @@ fn artifacts_to_update( .for_each(|id| new_solid_ids.push(id)), _ => {} } - let return_arr = new_solid_ids - .into_iter() - .map(|solid_id| { - Artifact::CompositeSolid(CompositeSolid { - id: solid_id, - sub_type, - solid_ids: solid_ids.clone(), - tool_ids: tool_ids.clone(), - code_ref: code_ref.clone(), - }) - }) - .collect::>(); - // TODO: Should we add the reverse graph edges? + let mut return_arr = Vec::new(); + + // Create the new composite solids and update their linked artifacts + for solid_id in &new_solid_ids { + // Create the composite solid + return_arr.push(Artifact::CompositeSolid(CompositeSolid { + id: *solid_id, + sub_type, + solid_ids: solid_ids.clone(), + tool_ids: tool_ids.clone(), + code_ref: code_ref.clone(), + composite_solid_id: None, + })); + + // Update the artifacts that were used as input for this composite solid + for input_id in &solid_ids { + if let Some(artifact) = artifacts.get(input_id) { + match artifact { + Artifact::CompositeSolid(comp) => { + let mut new_comp = comp.clone(); + new_comp.composite_solid_id = Some(*solid_id); + return_arr.push(Artifact::CompositeSolid(new_comp)); + } + Artifact::Path(path) => { + let mut new_path = path.clone(); + new_path.composite_solid_id = Some(*solid_id); + return_arr.push(Artifact::Path(new_path)); + } + _ => {} + } + } + } + + // Update the tool artifacts if this is a subtract operation + for tool_id in &tool_ids { + if let Some(artifact) = artifacts.get(tool_id) { + match artifact { + Artifact::CompositeSolid(comp) => { + let mut new_comp = comp.clone(); + new_comp.composite_solid_id = Some(*solid_id); + return_arr.push(Artifact::CompositeSolid(new_comp)); + } + Artifact::Path(path) => { + let mut new_path = path.clone(); + new_path.composite_solid_id = Some(*solid_id); + return_arr.push(Artifact::Path(new_path)); + } + _ => {} + } + } + } + } return Ok(return_arr); } diff --git a/rust/kcl-lib/src/execution/artifact/mermaid_tests.rs b/rust/kcl-lib/src/execution/artifact/mermaid_tests.rs index a2af89d71..01d018b8b 100644 --- a/rust/kcl-lib/src/execution/artifact/mermaid_tests.rs +++ b/rust/kcl-lib/src/execution/artifact/mermaid_tests.rs @@ -92,10 +92,14 @@ impl Artifact { /// the graph. pub(crate) fn child_ids(&self) -> Vec { match self { - Artifact::CompositeSolid(_) => { + Artifact::CompositeSolid(a) => { // Note: Don't include these since they're parents: solid_ids, // tool_ids. - Vec::new() + let mut ids = Vec::new(); + if let Some(composite_solid_id) = a.composite_solid_id { + ids.push(composite_solid_id); + } + ids } Artifact::Plane(a) => a.path_ids.clone(), Artifact::Path(a) => { @@ -107,6 +111,9 @@ impl Artifact { if let Some(solid2d_id) = a.solid2d_id { ids.push(solid2d_id); } + if let Some(composite_solid_id) = a.composite_solid_id { + ids.push(composite_solid_id); + } ids } Artifact::Segment(a) => { diff --git a/rust/kcl-lib/tests/import_transform/rendered_model.png b/rust/kcl-lib/tests/import_transform/rendered_model.png index 545b296a2e4080ce1a65f095654e894c332050c1..c6c9dc8b0d8c1d184bb343b35c8ea64af2b76026 100644 GIT binary patch literal 69135 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
    u>H=N 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 26 5 --- 35 diff --git a/rust/kcl-lib/tests/kcl_samples/dodecahedron/artifact_graph_flowchart.snap.md b/rust/kcl-lib/tests/kcl_samples/dodecahedron/artifact_graph_flowchart.snap.md index ddd9123f4..74831cec0 100644 --- a/rust/kcl-lib/tests/kcl_samples/dodecahedron/artifact_graph_flowchart.snap.md +++ b/rust/kcl-lib/tests/kcl_samples/dodecahedron/artifact_graph_flowchart.snap.md @@ -317,84 +317,84 @@ flowchart LR 13 --- 67 13 --- 73 13 ---- 90 - 13 <--x 106 + 13 --- 106 14 --- 27 14 --- 45 14 --- 50 14 --- 65 14 --- 74 14 ---- 92 - 14 <--x 101 + 14 --- 101 15 --- 32 15 --- 48 15 --- 51 15 --- 71 15 --- 75 15 ---- 93 - 15 <--x 99 + 15 --- 99 16 --- 29 16 --- 40 16 --- 56 16 --- 69 16 --- 76 16 ---- 96 - 16 <--x 100 + 16 --- 100 17 --- 26 17 --- 44 17 --- 52 17 --- 63 17 --- 77 17 ---- 95 - 17 <--x 105 + 17 --- 105 18 --- 28 18 --- 47 18 --- 58 18 --- 64 18 --- 78 18 ---- 94 - 18 <--x 102 + 18 --- 102 19 --- 35 19 --- 41 19 --- 57 19 --- 66 19 --- 79 19 ---- 89 - 19 <--x 98 + 19 --- 98 20 --- 34 20 --- 42 20 --- 55 20 --- 68 20 --- 80 20 ---- 87 - 20 <--x 104 + 20 --- 104 21 --- 30 21 --- 39 21 --- 60 21 --- 70 21 --- 81 21 ---- 91 - 21 <--x 103 + 21 --- 103 22 --- 25 22 --- 46 22 --- 54 22 --- 72 22 --- 82 22 ---- 88 - 22 <--x 104 + 22 --- 104 23 --- 36 23 --- 37 23 --- 49 23 --- 62 23 --- 83 23 ---- 86 - 23 <--x 107 + 23 --- 107 24 --- 33 24 --- 43 24 --- 53 24 --- 61 24 --- 84 24 ---- 85 - 24 <--x 97 + 24 --- 97 25 --- 120 25 x--> 158 25 --- 193 @@ -755,16 +755,16 @@ flowchart LR 96 --- 273 96 --- 274 96 --- 275 - 97 <--x 98 - 99 x--> 97 - 98 <--x 103 - 105 x--> 99 - 104 x--> 100 - 100 <--x 107 - 101 <--x 102 - 103 x--> 101 - 106 x--> 105 - 107 x--> 106 + 97 --- 98 + 99 --- 97 + 98 --- 103 + 105 --- 99 + 104 --- 100 + 100 --- 107 + 101 --- 102 + 103 --- 101 + 106 --- 105 + 107 --- 106 182 <--x 108 230 <--x 108 231 <--x 108 diff --git a/rust/kcl-lib/tests/kcl_samples/dual-basin-utility-sink/artifact_graph_flowchart.snap.md b/rust/kcl-lib/tests/kcl_samples/dual-basin-utility-sink/artifact_graph_flowchart.snap.md index a13d6eb9a..f2c5ff52b 100644 --- a/rust/kcl-lib/tests/kcl_samples/dual-basin-utility-sink/artifact_graph_flowchart.snap.md +++ b/rust/kcl-lib/tests/kcl_samples/dual-basin-utility-sink/artifact_graph_flowchart.snap.md @@ -608,7 +608,7 @@ flowchart LR 83 --- 246 83 --- 289 90 --- 159 - 90 x--> 193 + 90 x--> 192 90 --- 226 90 --- 271 104 --- 151 @@ -910,7 +910,7 @@ flowchart LR 211 <--x 191 212 <--x 191 213 <--x 191 - 226 <--x 192 + 226 <--x 193 239 <--x 195 240 <--x 195 241 <--x 195 diff --git a/rust/kcl-lib/tests/kcl_samples/walkie-talkie/artifact_graph_flowchart.snap.md b/rust/kcl-lib/tests/kcl_samples/walkie-talkie/artifact_graph_flowchart.snap.md index 8eab47124..8b8a2e6b9 100644 --- a/rust/kcl-lib/tests/kcl_samples/walkie-talkie/artifact_graph_flowchart.snap.md +++ b/rust/kcl-lib/tests/kcl_samples/walkie-talkie/artifact_graph_flowchart.snap.md @@ -709,6 +709,7 @@ flowchart LR 115 --- 179 115 x--> 228 115 --- 256 + 115 x--> 307 115 --- 308 164 <--x 116 116 --- 184 diff --git a/rust/kcl-lib/tests/subtract_cylinder_from_cube/artifact_graph_flowchart.snap.md b/rust/kcl-lib/tests/subtract_cylinder_from_cube/artifact_graph_flowchart.snap.md index d9deddde4..230592c91 100644 --- a/rust/kcl-lib/tests/subtract_cylinder_from_cube/artifact_graph_flowchart.snap.md +++ b/rust/kcl-lib/tests/subtract_cylinder_from_cube/artifact_graph_flowchart.snap.md @@ -45,11 +45,11 @@ flowchart LR 3 --- 8 3 --- 11 3 ---- 12 - 3 <--x 14 + 3 --- 14 4 --- 9 4 --- 10 4 ---- 13 - 4 <--x 14 + 4 --- 14 5 --- 18 5 x--> 21 5 --- 25 diff --git a/rust/kcl-lib/tests/subtract_doesnt_need_brackets/artifact_graph_flowchart.snap.md b/rust/kcl-lib/tests/subtract_doesnt_need_brackets/artifact_graph_flowchart.snap.md index 15802af18..c111a2f5f 100644 --- a/rust/kcl-lib/tests/subtract_doesnt_need_brackets/artifact_graph_flowchart.snap.md +++ b/rust/kcl-lib/tests/subtract_doesnt_need_brackets/artifact_graph_flowchart.snap.md @@ -57,14 +57,14 @@ flowchart LR 3 --- 11 3 --- 13 3 ---- 16 - 3 <--x 17 + 3 --- 17 4 --- 6 4 --- 7 4 --- 9 4 --- 12 4 --- 14 4 ---- 15 - 4 <--x 17 + 4 --- 17 5 --- 24 5 x--> 26 5 --- 35 diff --git a/rust/kcl-lib/tests/union_cubes/artifact_graph_flowchart.snap.md b/rust/kcl-lib/tests/union_cubes/artifact_graph_flowchart.snap.md index e99ad4c23..979532e7a 100644 --- a/rust/kcl-lib/tests/union_cubes/artifact_graph_flowchart.snap.md +++ b/rust/kcl-lib/tests/union_cubes/artifact_graph_flowchart.snap.md @@ -57,14 +57,14 @@ flowchart LR 3 --- 11 3 --- 13 3 ---- 16 - 3 <--x 17 + 3 --- 17 4 --- 6 4 --- 7 4 --- 9 4 --- 12 4 --- 14 4 ---- 15 - 4 <--x 17 + 4 --- 17 5 --- 24 5 x--> 26 5 --- 35 diff --git a/src/hooks/useEngineConnectionSubscriptions.ts b/src/hooks/useEngineConnectionSubscriptions.ts index a14ec7d10..c2dc95cd6 100644 --- a/src/hooks/useEngineConnectionSubscriptions.ts +++ b/src/hooks/useEngineConnectionSubscriptions.ts @@ -34,6 +34,7 @@ import type { ExtrudeFacePlane, } from '@src/machines/modelingMachine' import toast from 'react-hot-toast' +import { findAllChildrenAndOrderByPlaceInCode } from '@src/lang/modifyAst/boolean' import { localModuleSafePathSplit } from '@src/lib/paths' export function useEngineConnectionSubscriptions() { @@ -148,7 +149,7 @@ export function useEngineConnectionSubscriptions() { } sceneInfra.modelingSend({ - type: 'Select default plane', + type: 'Select sketch plane', data: { type: 'defaultPlane', planeId: planeId, @@ -165,7 +166,7 @@ export function useEngineConnectionSubscriptions() { const planeInfo = await sceneEntitiesManager.getFaceDetails(planeOrFaceId) sceneInfra.modelingSend({ - type: 'Select default plane', + type: 'Select sketch plane', data: { type: 'offsetPlane', zAxis: [ @@ -194,7 +195,7 @@ export function useEngineConnectionSubscriptions() { return } - // Artifact is likely an extrusion face + // Artifact is likely an sweep face const faceId = planeOrFaceId const extrusion = getSweepFromSuspectedSweepSurface( faceId, @@ -318,15 +319,31 @@ export function useEngineConnectionSubscriptions() { } : { type: 'wall' } + if (err(extrusion)) { + return Promise.reject( + new Error(`Extrusion is not a valid artifact: ${extrusion}`) + ) + } + + const lastChild = + findAllChildrenAndOrderByPlaceInCode( + { type: 'sweep', ...extrusion }, + kclManager.artifactGraph + )[0] || null + const lastChildCodeRef = + lastChild?.type === 'compositeSolid' + ? lastChild.codeRef.range + : null + const extrudePathToNode = !err(extrusion) ? getNodePathFromSourceRange( kclManager.ast, - extrusion.codeRef.range + lastChildCodeRef || extrusion.codeRef.range ) : [] sceneInfra.modelingSend({ - type: 'Select default plane', + type: 'Select sketch plane', data: { type: 'extrudeFace', zAxis: [z_axis.x, z_axis.y, z_axis.z], diff --git a/src/lang/modifyAst.ts b/src/lang/modifyAst.ts index ea25b1a39..0c99b9f53 100644 --- a/src/lang/modifyAst.ts +++ b/src/lang/modifyAst.ts @@ -461,7 +461,8 @@ export function sketchOnExtrudedFace( const expressionIndex = Math.max( sketchPathToNode[1][0] as number, - extrudePathToNode[1][0] as number + extrudePathToNode[1][0] as number, + node.body.length - 1 ) _node.body.splice(expressionIndex + 1, 0, newSketch) const newpathToNode: PathToNode = [ diff --git a/src/lang/modifyAst/boolean.ts b/src/lang/modifyAst/boolean.ts index a1f9cca21..07edade79 100644 --- a/src/lang/modifyAst/boolean.ts +++ b/src/lang/modifyAst/boolean.ts @@ -211,6 +211,13 @@ export function findAllChildrenAndOrderByPlaceInCode( pushToSomething(currentId, current?.segIds) } else if (current?.type === 'sweep') { pushToSomething(currentId, current?.surfaceIds) + const path = artifactGraph.get(current.pathId) + if (path && path.type === 'path') { + const compositeSolidId = path.compositeSolidId + if (compositeSolidId) { + result.push(compositeSolidId) + } + } } else if (current?.type === 'wall' || current?.type === 'cap') { pushToSomething(currentId, current?.pathIds) } else if (current?.type === 'segment') { diff --git a/src/machines/modelingMachine.ts b/src/machines/modelingMachine.ts index a09067d87..8d8722f76 100644 --- a/src/machines/modelingMachine.ts +++ b/src/machines/modelingMachine.ts @@ -305,7 +305,7 @@ export type ModelingMachineEvent = } | { type: 'Sketch On Face' } | { - type: 'Select default plane' + type: 'Select sketch plane' data: DefaultPlane | ExtrudeFacePlane | OffsetPlane } | { @@ -4255,7 +4255,7 @@ export const modelingMachine = setup({ exit: ['hide default planes', 'set selection filter to defaults'], on: { - 'Select default plane': { + 'Select sketch plane': { target: 'animating to plane', actions: ['reset sketch metadata'], }, @@ -4268,7 +4268,7 @@ export const modelingMachine = setup({ id: 'animate-to-face', input: ({ event }) => { - if (event.type !== 'Select default plane') return undefined + if (event.type !== 'Select sketch plane') return undefined return event.data },