hull() – hull modifier Tutorial

hull() is a simple command to use, merely place whatever objects from which you want to form a hull as children of the command. The hull command() merges the outermost bits to form a single object. ( It is really a bit magical to me ).

It is one of those commands that I personal don’t find a lot of use for, but here and there I find ways it can make life easier.

For example:

Two sphere’s and a hull give us this pill shape:

hull(){
    sphere(r=5,$fn=50);
    translate( [20,0,0] ) sphere(r=5,$fn=50);
}

Just for this article I made this Axe Head using hull and a few other commands. Don’t ask why, it just popped into my head. Is is a little more “Low Poly” than I wanted but it was interesting how easily I was able to complete it.

Here is the code I used:

One of the concepts this code highlight s is that hull() works on both 2D Object and 3d Objects

rotate([-90,0,0]){
    hull() {
        linear_extrude(1)
            square([5,20],center=true);
        rotate([30,0,0])
            rotate([0,-90,0])
                rotate_extrude(angle=60,$fn=50)
                    translate([40,0] )
                        circle(.1,$fn=50);
    }

    difference() {
        union() {
            hull(){
                translate([0,0,-20])
                    linear_extrude(1)
                        square([5,20],center=true);
                translate([0,0,-10])
                    linear_extrude(1)
                        square([5,25],center=true);
        }

        hull(){
          translate([0,0,-10])
                linear_extrude(1)
                    square([5,25],center=true);
            linear_extrude(1)
                square([5,20],center=true);
            }
    }

    translate([0,50,-10])
        rotate([90,0,0])
            linear_extrude(){
                hull($fn=50){
                    translate ([0,0]) circle(r=2);
                    translate ([0,3]) circle(r=1.5);
                    translate ([0,-3]) circle(r=1.2);
                }
            }
    }
}

2d vs. 3d Hull

the hull command coan be used in the 2d sub-system or the 3d system

2D Hull

3d Hull

hull to make a simple cam, using cylinder.

Before hull()

After hull()

Simple code for this cam:

CAM_OFFSET=30;

hull(){
    cylinder(h=20,r=30);
    translate([CAM_OFFSET,0,0])
        cylinder(h=20,r=10);
}

Hopefully this gives you some ideas on what to use hull() for, I will keep looking looking for some best use case.

Leave a Reply