Files
modeling-app/docs/kcl/revolve.md
Paul Tagliamonte c84c0b0fef return errors back to user (#4075)
* Log any Errors to stderr

This isn't perfect -- in fact, this is maybe not even very good at all,
but it's better than what we have today.

Currently, when we get an Erorr back from the WebSocket, we drop it in
kcl-lib. The web-app logs these to the console (I can't find my commit
doing that off the top of my head, but I remember doing it) -- so this
is some degree of partity.

This won't be very useful at all for wasm usage, but it will fix issues
with the zoo cli silently breaking with a "WebSocket Closed" error --
which is the same issue I was solving for in the desktop app too.

In the future perhaps this can be a real Error? I'm not totally sure
yet, since we can't align to the request-id, so we can't really tie it
to a specific call (yet).

* add to responses

Signed-off-by: Jess Frazelle <github@jessfraz.com>

* A snapshot a day keeps the bugs away! 📷🐛 (OS: ubuntu-latest)

* add a test

Signed-off-by: Jess Frazelle <github@jessfraz.com>

* clippy[

Signed-off-by: Jess Frazelle <github@jessfraz.com>

* A snapshot a day keeps the bugs away! 📷🐛 (OS: ubuntu-latest)

* empty

* fix error

Signed-off-by: Jess Frazelle <github@jessfraz.com>

* updates tests

Signed-off-by: Jess Frazelle <github@jessfraz.com>

* docs

Signed-off-by: Jess Frazelle <github@jessfraz.com>

---------

Signed-off-by: Jess Frazelle <github@jessfraz.com>
Co-authored-by: Jess Frazelle <github@jessfraz.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: Jess Frazelle <jessfraz@users.noreply.github.com>
2024-10-02 22:05:12 -07:00

1.1 MiB

title, excerpt, layout
title excerpt layout
revolve Rotate a sketch around some provided axis, creating a solid from its extent. manual

Rotate a sketch around some provided axis, creating a solid from its extent.

This, like extrude, is able to create a 3-dimensional solid from a 2-dimensional sketch. However, unlike extrude, this creates a solid by using the extent of the sketch as its revolved around an axis rather than using the extent of the sketch linearly translated through a third dimension.

Revolve occurs around a local sketch axis rather than a global axis.

revolve(data: RevolveData, sketch: Sketch) -> Solid

Arguments

Name Type Description Required
data RevolveData Data for revolution surfaces. Yes
sketch Sketch A sketch is a collection of paths. Yes

Returns

Solid - An solid is a collection of extrude surfaces.

Examples

part001 = startSketchOn('XY')
  |> startProfileAt([4, 12], %)
  |> line([2, 0], %)
  |> line([0, -6], %)
  |> line([4, -6], %)
  |> line([0, -6], %)
  |> line([-3.75, -4.5], %)
  |> line([0, -5.5], %)
  |> line([-2, 0], %)
  |> close(%)
  |> revolve({ axis: 'y' }, %) // default angle is 360

Rendered example of revolve 0

// A donut shape.
sketch001 = startSketchOn('XY')
  |> circle({ center: [15, 0], radius: 5 }, %)
  |> revolve({ angle: 360, axis: 'y' }, %)

Rendered example of revolve 1

part001 = startSketchOn('XY')
  |> startProfileAt([4, 12], %)
  |> line([2, 0], %)
  |> line([0, -6], %)
  |> line([4, -6], %)
  |> line([0, -6], %)
  |> line([-3.75, -4.5], %)
  |> line([0, -5.5], %)
  |> line([-2, 0], %)
  |> close(%)
  |> revolve({ axis: 'y', angle: 180 }, %)

Rendered example of revolve 2

part001 = startSketchOn('XY')
  |> startProfileAt([4, 12], %)
  |> line([2, 0], %)
  |> line([0, -6], %)
  |> line([4, -6], %)
  |> line([0, -6], %)
  |> line([-3.75, -4.5], %)
  |> line([0, -5.5], %)
  |> line([-2, 0], %)
  |> close(%)
  |> revolve({ axis: 'y', angle: 180 }, %)
part002 = startSketchOn(part001, 'end')
  |> startProfileAt([4.5, -5], %)
  |> line([0, 5], %)
  |> line([5, 0], %)
  |> line([0, -5], %)
  |> close(%)
  |> extrude(5, %)

Rendered example of revolve 3

box = startSketchOn('XY')
  |> startProfileAt([0, 0], %)
  |> line([0, 20], %)
  |> line([20, 0], %)
  |> line([0, -20], %)
  |> close(%)
  |> extrude(20, %)

sketch001 = startSketchOn(box, "END")
  |> circle({ center: [10, 10], radius: 4 }, %)
  |> revolve({ angle: -90, axis: 'y' }, %)

Rendered example of revolve 4

box = startSketchOn('XY')
  |> startProfileAt([0, 0], %)
  |> line([0, 20], %)
  |> line([20, 0], %)
  |> line([0, -20], %, $revolveAxis)
  |> close(%)
  |> extrude(20, %)

sketch001 = startSketchOn(box, "END")
  |> circle({ center: [10, 10], radius: 4 }, %)
  |> revolve({
       angle: 90,
       axis: getOppositeEdge(revolveAxis)
     }, %)

Rendered example of revolve 5

box = startSketchOn('XY')
  |> startProfileAt([0, 0], %)
  |> line([0, 20], %)
  |> line([20, 0], %)
  |> line([0, -20], %, $revolveAxis)
  |> close(%)
  |> extrude(20, %)

sketch001 = startSketchOn(box, "END")
  |> circle({ center: [10, 10], radius: 4 }, %)
  |> revolve({
       angle: 90,
       axis: getOppositeEdge(revolveAxis),
       tolerance: 0.0001
     }, %)

Rendered example of revolve 6

sketch001 = startSketchOn('XY')
  |> startProfileAt([10, 0], %)
  |> line([5, -5], %)
  |> line([5, 5], %)
  |> lineTo([profileStartX(%), profileStartY(%)], %)
  |> close(%)

part001 = revolve({
  axis: {
    custom: { axis: [0.0, 1.0], origin: [0.0, 0.0] }
  }
}, sketch001)

Rendered example of revolve 7