Welcome to the Onshape forum! Ask questions and join in the discussions about everything Onshape.

First time visiting? Here are some places to start:
  1. Looking for a certain topic? Check out the categories filter or use Search (upper right).
  2. Need support? Ask a question to our Community Support category.
  3. Please submit support tickets for bugs but you can request improvements in the Product Feedback category.
  4. Be respectful, on topic and if you see a problem, Flag it.

If you would like to contact our Community Manager personally, feel free to send a private message or an email.

Options

How do I make a faceted cylinder design?

The_TechyThe_Techy Member Posts: 6
Hi! 

I'm currently trying to make something with a faceted surface. Basically, I want a cylinder with facets on it. This is the kind of design I want, but on a much smaller cylinder, and with the diamonds rotated 90 degrees from this so they run along the cylinder. 

This is the closest I've got so far. However, the diamonds stick out over each other making tons of sharp edges. Any advice on how to achieve an effect closer to the picture above?

Thanks!

Best Answers

  • Options
    joshua_wise822joshua_wise822 Member Posts: 7
    Answer ✓
    You have successfully nerd sniped me!  The thing that I think is a nonobvious gotcha here is that necessarily, each facet that is a quad there cannot be planar (three points define a plane, and the four points of each quad are not coplanar)... so any approach that attempts to call a facet a plane is doomed to failure (as you discovered!).  If you want to have triangular facets, of course, that can be done by simplistic plane-based approaches, but to do this, I think the idea is that you want to stitch together surfaces.

    How about this?  In this case, I chose a linear pattern to make the facets along the cylinder outside in a straight line, but if you wanted them to be along a curve, there's no reason you could not do that.  I also made the edges lines, but you could make them arcs if you had appropriate sketches along the way.  This is probably not the most optimal way to do it, but it sort of gives the idea -- make one set of two rows of facets, then stitch those into a surface, then face-pattern, then boolean merge them, then make a solid.

    Probably you could write some featurescript to do this.  I'm not really cool enough to do that.  If someone wrote a feature to do this I'd like to read how you did it, though.

    Thanks for the challenge!


  • Options
    Evan_ReeseEvan_Reese Member Posts: 2,066 PRO
    Answer ✓
    I noted this one to come back to when I had time. The way @joshua_wise822 did it is very good, and mine is probably overkill, but a fun challenge, and very adaptable once it's set up. Here's a gif of it rebuilding no matter the shape (give it a sec to rebuild). Here's a link to the documentMy Freeform Spline custom feature can make a polygon in 3D space and place the points on the base surface based on UV coordinates. I'm using some more advanced approaches to patterns, variables, and using expressions here, which you can learn about in the Onshape learning center. I'm taking advantage of using a "feature pattern" (in the first Circular Pattern) set to "apply per instance", to iterate through some variables, and create each diamond on the UV space of the base surface.


    Evan Reese / Principal and Industrial Designer with Ovyl
    Website: ovyl.io
  • Options
    Evan_ReeseEvan_Reese Member Posts: 2,066 PRO
    Answer ✓
    @eric_pesty
    It's one of the most brain-hurting workflows I've come up with. I hope to make a video sometime instead of trying to explain it all here. 

    @The_Techy
    I updated it so it makes a solid now using the Enclose feature. I also broke out the uCount and vCount variables as configuration variables to make them easier to tweak. The flexibility of this model makes it easy to solve the "stretched out" diamonds problem.


    Evan Reese / Principal and Industrial Designer with Ovyl
    Website: ovyl.io

Answers

  • Options
    joshua_wise822joshua_wise822 Member Posts: 7
    Answer ✓
    You have successfully nerd sniped me!  The thing that I think is a nonobvious gotcha here is that necessarily, each facet that is a quad there cannot be planar (three points define a plane, and the four points of each quad are not coplanar)... so any approach that attempts to call a facet a plane is doomed to failure (as you discovered!).  If you want to have triangular facets, of course, that can be done by simplistic plane-based approaches, but to do this, I think the idea is that you want to stitch together surfaces.

    How about this?  In this case, I chose a linear pattern to make the facets along the cylinder outside in a straight line, but if you wanted them to be along a curve, there's no reason you could not do that.  I also made the edges lines, but you could make them arcs if you had appropriate sketches along the way.  This is probably not the most optimal way to do it, but it sort of gives the idea -- make one set of two rows of facets, then stitch those into a surface, then face-pattern, then boolean merge them, then make a solid.

    Probably you could write some featurescript to do this.  I'm not really cool enough to do that.  If someone wrote a feature to do this I'd like to read how you did it, though.

    Thanks for the challenge!


  • Options
    Evan_ReeseEvan_Reese Member Posts: 2,066 PRO
    Answer ✓
    I noted this one to come back to when I had time. The way @joshua_wise822 did it is very good, and mine is probably overkill, but a fun challenge, and very adaptable once it's set up. Here's a gif of it rebuilding no matter the shape (give it a sec to rebuild). Here's a link to the documentMy Freeform Spline custom feature can make a polygon in 3D space and place the points on the base surface based on UV coordinates. I'm using some more advanced approaches to patterns, variables, and using expressions here, which you can learn about in the Onshape learning center. I'm taking advantage of using a "feature pattern" (in the first Circular Pattern) set to "apply per instance", to iterate through some variables, and create each diamond on the UV space of the base surface.


    Evan Reese / Principal and Industrial Designer with Ovyl
    Website: ovyl.io
  • Options
    eric_pestyeric_pesty Member Posts: 1,530 PRO
    I noted this one to come back to when I had time. The way @joshua_wise822 did it is very good, and mine is probably overkill, but a fun challenge, and very adaptable once it's set up. Here's a gif of it rebuilding no matter the shape (give it a sec to rebuild). Here's a link to the documentMy Freeform Spline custom feature can make a polygon in 3D space and place the points on the base surface based on UV coordinates. I'm using some more advanced approaches to patterns, variables, and using expressions here, which you can learn about in the Onshape learning center. I'm taking advantage of using a "feature pattern" (in the first Circular Pattern) set to "apply per instance", to iterate through some variables, and create each diamond on the UV space of the base surface.


    @Evan_Reese,  You're a wizard!
    That feature tree hurts my brain but it's really cool to see how that works!
  • Options
    The_TechyThe_Techy Member Posts: 6
    @joshua_wise822 This is awesome, thank you! Pretty complicated and I don't understand it all, but should work perfectly. Just one main question - how best to adjust the sizes? Changing the diameters changes the shape of the facets so it looks kind of odd. Also, I can't figure out how to change the length properly - I assume there's multiple things that need to change?

    Here's how it's looking after I adjusted it to the diameters I need https://cad.onshape.com/documents/8ad3b1b406bf3220a4d1e3d9/w/fc8798c474d92921307a86d9/e/264ad14d5fdd55aad3ad745b , now just need it to be 40mm long without 'stretching' the diamonds out. Thanks!
  • Options
    The_TechyThe_Techy Member Posts: 6
    @Evan_Reese This looks very cool! Gave it a quick try though and I can’t seem to make solid parts, only surfaces. Am I missing something? Thanks 
  • Options
    Evan_ReeseEvan_Reese Member Posts: 2,066 PRO
    Answer ✓
    @eric_pesty
    It's one of the most brain-hurting workflows I've come up with. I hope to make a video sometime instead of trying to explain it all here. 

    @The_Techy
    I updated it so it makes a solid now using the Enclose feature. I also broke out the uCount and vCount variables as configuration variables to make them easier to tweak. The flexibility of this model makes it easy to solve the "stretched out" diamonds problem.


    Evan Reese / Principal and Industrial Designer with Ovyl
    Website: ovyl.io
  • Options
    The_TechyThe_Techy Member Posts: 6
    @Evan_Reese Awesome, thank you! This is basically perfect for what I want, especially with the customisation ability. Thanks
  • Options
    joshua_wise822joshua_wise822 Member Posts: 7
    The_Techy said:
    @joshua_wise822 This is awesome, thank you! Pretty complicated and I don't understand it all, but should work perfectly. Just one main question - how best to adjust the sizes? Changing the diameters changes the shape of the facets so it looks kind of odd. Also, I can't figure out how to change the length properly - I assume there's multiple things that need to change?

    Here's how it's looking after I adjusted it to the diameters I need https://cad.onshape.com/documents/8ad3b1b406bf3220a4d1e3d9/w/fc8798c474d92921307a86d9/e/264ad14d5fdd55aad3ad745b , now just need it to be 40mm long without 'stretching' the diamonds out. Thanks!
    Basically the two things that control the shape are Sketch 2 and Sketch 3 (which define the radial shape), and Plane 1 and Linear Pattern 1 (the distance of which define the axial shape).  The core idea is to do a linear pattern to create all of the points that you'll need, and then once you have all the points, stitch together one row of them by hand (Planes 2 through 5 and Sketches 5 through 8), Fill them to create a surface, use a Circular Pattern to get all of those individual facets wrapped around the entire cylinder, and then use a Boolean to glue all of the pattern pieces together.

    I really like @Evan_Reese 's answer.  I hadn't even considered using a feature pattern to make, essentially, an iterating loop over U/V coordinates.  (Actually I didn't even know that was possible!  Definitely it would be a lot less brain-hurty if there were, say, a 'foreach folder' or something.)  I think it is a much better solution for your ring because it allows a variable external geometry.
Sign In or Register to comment.