Render fails when threads cut through bottlecap

classic Classic list List threaded Threaded
4 messages Options
Reply | Threaded
Open this post in threaded view
|

Render fails when threads cut through bottlecap

paynterf
I'm trying to fit a bottlecap to the decorative bottle shown in the photo below. The owner lost the cap but doesn't want to discard such a lovely bottle.  I have a 3D printer, so I said I would design and print a new bottlecap.  As part of the fitting process, I tried to create a bottlecap with threads that 'cut through' the cap material so that I could visually see how the bottlecap 'innie' threads match up with the bottlecap 'outie' threads.  Imagine my surprise when, after generating the model I wanted, the rendering process completely obliterated the threads, the cuts, and everything else, resulting in a solid cylinder of material.  

decorative bottle

Here are some some screenshots showing the problem:

F5 preview of 'normal' thread geometry
F5 preview of 'normal' thread geometry

render operation for 'normal' geometry
Render operation for 'normal' geometry

F5 preview of 'cut through' thread geometry
F5 preview of 'cut through' thread geometry

render operation for 'cut through' geometry
Render operation for 'cut through' geometry

And here is the code that produced the above geometries:

210430_BottleCap_Normal.scad
210430_BottleCap_CutThrough.scad

The only difference between the two .SCAD files above is that the 'normal' file has 'thread_depth=5.75' in the 'helix_thread' command, and the 'cut through' file has 'thread_depth=5.75'

Any ideas?  I'd really like to be able to print this (maybe modified slightly to add some support for the 'flying thread' portion at the end) so I can visualize the fit to the bottle.

TIA,

Frank




Sent from the OpenSCAD mailing list archive at Nabble.com.

_______________________________________________
OpenSCAD mailing list
To unsubscribe send an email to [hidden email]
Reply | Threaded
Open this post in threaded view
|

Re: Render fails when threads cut through bottlecap

LenStruttmann
I'd guess that the BOSL2 library has a bit of a problem with deep thread_depth values.

If you create the thread outside of the difference using

thread_helix(d=37, pitch=7, thread_depth=15.75, thread_angle=25, twist=520, $fn=72);

... you'll see that the thread no longer has a clean, triangular cut.  The result is probably not manifold.  In this case, a thread_depth greater than about 6.5 shows that problem.



Sent from the OpenSCAD mailing list archive at Nabble.com.

_______________________________________________
OpenSCAD mailing list
To unsubscribe send an email to [hidden email]
Reply | Threaded
Open this post in threaded view
|

Re: Render fails when threads cut through bottlecap

lar3ry
In reply to this post by paynterf
Personally, I would not do a deep thread cut like you did. If you want to see how the threads fit, I would suggest something like this:

include <BOSL2/std.scad>
include <BOSL2/threading.scad>
include <BOSL2/bottlecaps.scad>

difference() {
        translate([0,0,-2.5]) cylinder(18,21.5,21.5);
        cylinder(24,19,19);
        translate([-30,-5,0]) cube([60,10,25]);
        translate([0,0,11])
        thread_helix(d=37, pitch=7, thread_depth=5.75, thread_angle=25, twist=520, $fn=72);
}

The big advantage of this method is that you don't need supports.
And for speed of printing, you might want to cut out some more slots.


Sent from the OpenSCAD mailing list archive at Nabble.com.

_______________________________________________
OpenSCAD mailing list
To unsubscribe send an email to [hidden email]
Reply | Threaded
Open this post in threaded view
|

Re: Render fails when threads cut through bottlecap

paynterf
Thanks to both responders; Once I knew what to look for, it was obvious the deep thread setting created non-manifold artifacts.

Also, I tried the 'rectangular cut' idea and this worked nicely as well - thanks!

Frank


Sent from the OpenSCAD mailing list archive at Nabble.com.

_______________________________________________
OpenSCAD mailing list
To unsubscribe send an email to [hidden email]