discuss@lists.openscad.org

OpenSCAD general discussion Mailing-list

View all threads

Linear extrude question

T
tjhowse
Fri, Dec 31, 2021 3:13 AM

Hi all,

I'm designing an auger for pumping honey, but I'm not getting the results
out of linear_extrude() that I need:

https://imgur.com/a/eJxzpfZ

https://pastebin.com/tei5tmW3

I'd like to make the "fins" thicker, but making fin_slice_size wider
doesn't work above shaft_r+wt)*2, as we get a flat area where the fin meets
the shaft. I could duplicate the fin and translate it along the shaft by
the current edge thickness in order to double it, but I feel there should
be a more elegant way.

Cheers,
tjhowse.

Hi all, I'm designing an auger for pumping honey, but I'm not getting the results out of linear_extrude() that I need: https://imgur.com/a/eJxzpfZ https://pastebin.com/tei5tmW3 I'd like to make the "fins" thicker, but making fin_slice_size wider doesn't work above shaft_r+wt)*2, as we get a flat area where the fin meets the shaft. I could duplicate the fin and translate it along the shaft by the current edge thickness in order to double it, but I feel there should be a more elegant way. Cheers, tjhowse.
JB
Jordan Brown
Fri, Dec 31, 2021 6:59 AM

On 12/30/2021 7:13 PM, tjhowse wrote:

Hi all,

I'm designing an auger for pumping honey, but I'm not getting the
results out of linear_extrude() that I need:

https://imgur.com/a/eJxzpfZ

https://pastebin.com/tei5tmW3

I'd like to make the "fins" thicker, but making fin_slice_size wider
doesn't work above shaft_r+wt)*2, as we get a flat area where the fin
meets the shaft. I could duplicate the fin and translate it along the
shaft by the current edge thickness in order to double it, but I feel
there should be a more elegant way.

The geometry always makes my head hurt, but it turns out that
linear_extrude twisting is not a good way to make screw threads.  I
think the fundamental problem is that it operates by taking a flat
horizontal shape and moving that up and around the object, where what
you really want is more of a rotational extrusion, extruding the
cross-section of the thread rotationally and vertically.

I'm sure that the guys who do thread design (notably the BOSL2 guys) can
give more information.  They will probably give you a single BOSL2 call
that will give you the screw shape that you want.

However, here's a few other tidbits for you:

  • You need to set "convexity" on that linear_extrude call. 
    Theoretically you need it as big as the number of times the thread
    goes around, but for most purposes setting it to five or ten should
    be fine.  Not setting it is why you get rendering artifacts in preview.
  • You have way, way more slices than you need.  You have a 40mm tall
    object, and you're slicing it into 3000 segments.  Each segment is
    0.013mm.  That's nearly ten times finer than the finest Z layering
    on my printer.  400 segments would give you 0.1mm layers, which is
    still probably way finer than you need.  This really hurts your
    preview performance.
  • Preview doesn't like it when the camera is inside an object used for
    an intersection or difference.  With the intersection to clip the
    auger in half, expect to have rendering artifacts if the camera is
    inside that 100x100x100 cube.  Put a # in front of the "translate"
    to see where that cube is.
On 12/30/2021 7:13 PM, tjhowse wrote: > Hi all, > > I'm designing an auger for pumping honey, but I'm not getting the > results out of linear_extrude() that I need: > > https://imgur.com/a/eJxzpfZ > > https://pastebin.com/tei5tmW3 > > I'd like to make the "fins" thicker, but making fin_slice_size wider > doesn't work above shaft_r+wt)*2, as we get a flat area where the fin > meets the shaft. I could duplicate the fin and translate it along the > shaft by the current edge thickness in order to double it, but I feel > there should be a more elegant way. > The geometry always makes my head hurt, but it turns out that linear_extrude twisting is not a good way to make screw threads.  I think the fundamental problem is that it operates by taking a flat horizontal shape and moving that up and around the object, where what you really want is more of a rotational extrusion, extruding the cross-section of the thread rotationally and vertically. I'm sure that the guys who do thread design (notably the BOSL2 guys) can give more information.  They will probably give you a single BOSL2 call that will give you the screw shape that you want. However, here's a few other tidbits for you: * You need to set "convexity" on that linear_extrude call.  Theoretically you need it as big as the number of times the thread goes around, but for most purposes setting it to five or ten should be fine.  Not setting it is why you get rendering artifacts in preview. * You have way, way more slices than you need.  You have a 40mm tall object, and you're slicing it into 3000 segments.  Each segment is 0.013mm.  That's nearly ten times finer than the finest Z layering on my printer.  400 segments would give you 0.1mm layers, which is still probably way finer than you need.  This really hurts your preview performance. * Preview doesn't like it when the camera is inside an object used for an intersection or difference.  With the intersection to clip the auger in half, expect to have rendering artifacts if the camera is inside that 100x100x100 cube.  Put a # in front of the "translate" to see where that cube is.
T
tjhowse
Sat, Jan 1, 2022 7:17 AM

Thanks for the notes Jordan. I gave up on using linear_extrude and  did a
bit of poking around in various libraries. I found a great one by
"wtgibson" that does nearly exactly what I need:
https://www.thingiverse.com/thing:96462

On Fri, 31 Dec 2021 at 16:59, Jordan Brown openscad@jordan.maileater.net
wrote:

On 12/30/2021 7:13 PM, tjhowse wrote:

Hi all,

I'm designing an auger for pumping honey, but I'm not getting the results
out of linear_extrude() that I need:

https://imgur.com/a/eJxzpfZ

https://pastebin.com/tei5tmW3

I'd like to make the "fins" thicker, but making fin_slice_size wider
doesn't work above shaft_r+wt)*2, as we get a flat area where the fin meets
the shaft. I could duplicate the fin and translate it along the shaft by
the current edge thickness in order to double it, but I feel there should
be a more elegant way.

The geometry always makes my head hurt, but it turns out that
linear_extrude twisting is not a good way to make screw threads.  I think
the fundamental problem is that it operates by taking a flat horizontal
shape and moving that up and around the object, where what you really want
is more of a rotational extrusion, extruding the cross-section of the
thread rotationally and vertically.

I'm sure that the guys who do thread design (notably the BOSL2 guys) can
give more information.  They will probably give you a single BOSL2 call
that will give you the screw shape that you want.

However, here's a few other tidbits for you:

- You need to set "convexity" on that linear_extrude call.
Theoretically you need it as big as the number of times the thread goes
around, but for most purposes setting it to five or ten should be fine.
Not setting it is why you get rendering artifacts in preview.
- You have way, way more slices than you need.  You have a 40mm tall
object, and you're slicing it into 3000 segments.  Each segment is
0.013mm.  That's nearly ten times finer than the finest Z layering on my
printer.  400 segments would give you 0.1mm layers, which is still probably
way finer than you need.  This really hurts your preview performance.
- Preview doesn't like it when the camera is inside an object used for
an intersection or difference.  With the intersection to clip the auger in
half, expect to have rendering artifacts if the camera is inside that
100x100x100 cube.  Put a # in front of the "translate" to see where that
cube is.
Thanks for the notes Jordan. I gave up on using linear_extrude and did a bit of poking around in various libraries. I found a great one by "wtgibson" that does nearly exactly what I need: https://www.thingiverse.com/thing:96462 On Fri, 31 Dec 2021 at 16:59, Jordan Brown <openscad@jordan.maileater.net> wrote: > On 12/30/2021 7:13 PM, tjhowse wrote: > > Hi all, > > I'm designing an auger for pumping honey, but I'm not getting the results > out of linear_extrude() that I need: > > https://imgur.com/a/eJxzpfZ > > https://pastebin.com/tei5tmW3 > > I'd like to make the "fins" thicker, but making fin_slice_size wider > doesn't work above shaft_r+wt)*2, as we get a flat area where the fin meets > the shaft. I could duplicate the fin and translate it along the shaft by > the current edge thickness in order to double it, but I feel there should > be a more elegant way. > > > > The geometry always makes my head hurt, but it turns out that > linear_extrude twisting is not a good way to make screw threads. I think > the fundamental problem is that it operates by taking a flat horizontal > shape and moving that up and around the object, where what you really want > is more of a rotational extrusion, extruding the cross-section of the > thread rotationally and vertically. > > I'm sure that the guys who do thread design (notably the BOSL2 guys) can > give more information. They will probably give you a single BOSL2 call > that will give you the screw shape that you want. > > However, here's a few other tidbits for you: > > - You need to set "convexity" on that linear_extrude call. > Theoretically you need it as big as the number of times the thread goes > around, but for most purposes setting it to five or ten should be fine. > Not setting it is why you get rendering artifacts in preview. > - You have way, way more slices than you need. You have a 40mm tall > object, and you're slicing it into 3000 segments. Each segment is > 0.013mm. That's nearly ten times finer than the finest Z layering on my > printer. 400 segments would give you 0.1mm layers, which is still probably > way finer than you need. This really hurts your preview performance. > - Preview doesn't like it when the camera is inside an object used for > an intersection or difference. With the intersection to clip the auger in > half, expect to have rendering artifacts if the camera is inside that > 100x100x100 cube. Put a # in front of the "translate" to see where that > cube is. > >