# Parametric teardrop script

## by whosawhatsis, published Jun 30, 2010

Parametric teardrop script Jun 30, 2010

## Give a Shout Out

If you print this Thing and display it in public proudly give attribution by printing and displaying this tag.

Print Thing Tag

# Summary

This script generates a teardrop shape at the appropriate angle to prevent overhangs greater than 45 degrees. The image shows a 45-degree rotation (no teardrop), a 60-degree rotation (shallow teardrop), and a 90-degree rotation (full 45-degree teardrop). This allows you to make holes at any angle that are as round as possible.

I actually came up with two solutions to this problem, because a bug was making my first solution take FOREVER to calculate. The second solution is still in the file, but has been commented-out.

# Instructions

The angle is in degrees, and is a rotation around the Y axis. You can then rotate around Z to point it in any direction. Rotation around Y or Z will cause the angle to be wrong. The module is intended to be used inside a difference statement.

view more

# All Apps

Upgrade this Thing with Thingiverse Apps

whosawhatsis - in reply to elmom

Ok.

This seems extremely complicated way. I do it like this:

module teardrop()
{
linear_extrude(height=10)
union()
{
circle(r=10);
square([10,10]);
}
}

teardrop();

I've done it that way too, but that will create a 45 degree angle on the top of the teardrop no matter what direction the hole actually points. A horizontal hole needs that, but a vertical hole or even one at 45 degrees doesn't need any. A hole between 45 degrees and horizontal does not need the full 45-degree teardrop, but only a shallow one like the middle example in the attached picture. The point of doing it this way is to only create as much of a teardrop shape as necessary to avoid an overhang exceeding 45 degrees.

This is very useful! Smart usage of the projection feature, too.
You could further improve it so that it truncates the teardrop when the top spans only a small, configurable length. In many cases this allows you to have even more round holes (but depending on printer settings). My parametric script also uses a global overhang variable, might be an idea to keep? Though this script is nice and simple.

Top