Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add point-and-click workflows for Helix operation #5059

Open
5 of 9 tasks
franknoirot opened this issue Jan 14, 2025 · 6 comments
Open
5 of 9 tasks

Add point-and-click workflows for Helix operation #5059

franknoirot opened this issue Jan 14, 2025 · 6 comments
Assignees
Labels
enhancement New feature or request

Comments

@franknoirot
Copy link
Collaborator

franknoirot commented Jan 14, 2025

@franknoirot franknoirot added the enhancement New feature or request label Jan 14, 2025
@franknoirot
Copy link
Collaborator Author

Probably need to follow @nadr0's example from the Revolve workflow in #4687 for the axis selection or a global axis selection via the command palette.

@nadr0
Copy link
Collaborator

nadr0 commented Jan 16, 2025

@jessfraz @gserena01

helix appears to be the first function we have that accepts global axis values for the keyword axis. My concern is if users will be confused because we have functions that have the same keyword axis but take in global or local axis values.

  • Is there any specific reason why the engine API didn't require the helix to have a startSketchOn or a sketch plane?
  • Do you think we will have more commands that accept global axis?
  • What are some trade offs to have a command be apart of a startSketchOn vs a stand alone command?

Helix Case

// helix case that uses global axis.
helixPath = helix({
  angleStart = 0,
  ccw = true,
  revolutions = 16,
  length = 10,
  radius = 5,
  axis = 'Z'
})

axis is global X, Y or Z

Revolve Case

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

axis is X or Y which is the local sketch plane.

Helix with sketch case

// sketch plane example
sketch001 = startSketchOn('XY')
  |> helix({
    angleStart = 0,
    ccw = true,
    revolutions = 16,
    length = 10,
    radius = 5,
    axis = 'Y'
  })

Image

@jessfraz
Copy link
Contributor

well i kinda like its a very similar frunction to revolve only that its 3d versus 2d, so i think thats nice, ill tag in @jgomez720 for if its an issue that its not pinned to a plane other than that

@jessfraz
Copy link
Contributor

fwiw transform rotate around an axis is also local or global but different since its already operating on a solid

@jgomez720
Copy link
Collaborator

Helix is not a sketch tool. It's a "path tool" so to speak. Helices will always be 3D. This does offer up a great question though, which is how do we define the start of the helix.

The reason we can't do this is because sketches should always be 2D. Once you create a helix, you are turning this into a 3D object.

// sketch plane example
sketch001 = startSketchOn('XY')
  |> helix({
    angleStart = 0,
    ccw = true,
    revolutions = 16,
    length = 10,
    radius = 5,
    axis = 'Y'
  })

However, I would be fine if helix took a plane (which can be a sketch) as a parameter just for initial start point.

helix({
    angleStart = 0,
    ccw true,
    revolutions = 16,
    length = 10,
    radius = 5,
    axis = myDefinedAxis,
    start = plane001 // or sketch001

@pierremtb pierremtb added this to the v1 Modeling App Launch milestone Feb 3, 2025
@nadr0
Copy link
Collaborator

nadr0 commented Feb 3, 2025

Discussion with Pierre about point and click workflow for helix and what we can achieve.

Image

In the command bar workflow we can easily support floats as well as string option selects ("X", or "Counter Clock wise")

Questions:

  • What about directionality? aka surface normal or line direction?

Priority:

  • Axis
  • Line segment / Edge
  • Circle / Arc
  • Circle Solid3D

@pierremtb pierremtb self-assigned this Feb 3, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

5 participants