Air Scoop

Why I like OpenSCADAccidents

An air scoop.

I like OpenSCAD for a number of reasons. It can be quick and easy to make simple, geometric objects very quickly. It’s my goto (pun intended) app for designing something quick when the dimensions are already known. It’s great for parametric designs, which allow for quick changes to a basic design. It’s one 3d modeling tool out of many, and I use it more than many others.

However, OpenSCAD does have it’s limits. To be fair, a large part of it’s limitations are on the user. If you know how to do the math in order to model an object, there’s a good bet OpenSCAD can do it. But as I’m not a mathematician, I’m limited in what I can create with it. (But if you want to see what real mathematician’s can do with OpenSCAD, check out MathGrrl (Lauren Taalman), Henry Segerman, and kitwallace (Chris Wallace))

That said, at the same time, OpenSCAD allows me to stumble upon accidents that I wasn’t actually trying to create. It’s one of the best features of OpenSCAD in my opinion. Accidental Modeling.

Sometimes I start modeling one thing, only to find myself accidentally creating something completely different. The air scoop was one of these happy accidents. I don’t even remember what I was trying to model, but I did a rotate_extrude, and there it was.

A second scoop, designed for the intake opening to be closer/lower to the output.

And then all that’s left is to make some parameter tweaks, and you can get different shapes. Now all I have to do is to make a dragster so that I can 3d print these and place it on the hood.

With some relatively minor changes, you can make a more complex shape.

The Code. Just remember, that like 99% of my programs, the parameters are designed for a sweet spot. Once you take it out of that range, it’s probably going to have problems. The good news is that this might help you make your own happy little accident.

//sgn - july 2017
//air scoop test - work in progress
//I recommend getting the shape, then just scaling it for correct size.

$fn = 64;

scale_x = 2.3;
scale_y = 1.2;
scale_z = 1;
main_diameter = 26; //has to be below 40. because it runs into itself if translation value stays at 22.
translation_value = 22;  //sort of height of scoop

//test one
//main body
difference(){
scale([scale_x,scale_y,scale_z])
rotate([90,270,0])
rotate_extrude(angle=90, convexity=10)
   translate([translation_value, 0]) 
    circle(d = main_diameter);

//subtractive copy
scale([0.98,0.98,0.98]){
translate([-0.5,0,0.3])  //these values will need to be played with sometimes to get the openings correct    
scale([scale_x,scale_y,scale_z])
rotate([90,270,0])
rotate_extrude(angle=90, convexity=10)
   translate([translation_value, 0]) 
    circle(d = main_diameter);


//top opening
translate([-0.55,0,translation_value + 0.3])  //these values will need to be played with sometimes to get the openings correct
scale([scale_x,scale_y,scale_z])
rotate([0,90,0])
cylinder(d = main_diameter, h = 1.1);


//bottom opening
translate([-51.11,0,-0.1])  //these values will need to be played with sometimes to get the openings correct
scale([scale_x,scale_y,scale_z])
cylinder(d = main_diameter, h = 1.1);
}
}

OpenSCAD Screwdriver Handle

I’ve needed to make a couple of handles for some homemade tools over the past few years, and I’ve always like the look and feel of the traditional screwdriver handle, so I made a semi-parametric OpenSCAD handle.

You may need to make changes for the actual tool holding aspect. I’ve used epoxy, as well as a flat, and in one simple case, just an interference fit (it worked just fine for the low torque tool.)

Here’s the code:

//Tool Handle - SGN 2016
//modified 2020
//STILL HAVE TO MAKE CHANGES FOR TOOL HOLDING


handle_height = 45;
handle_diameter = 25;
tool_diameter = 13.12;
tool_height = 7.2;
handle_cutout_diameter = 6.5;
toroid_adj = -9; //have to sometimes adjust height of toroid 


difference(){
union(){
//main handle
cylinder(h = handle_height, d = handle_diameter, $fn = 18);


//ball on top of handle
translate([0,0,handle_height + 0.25])
sphere(d = handle_diameter - 0.25, $fn = 100);

//BOTTOM CONES
union(){    
translate([0,0,-21])
cylinder(h = 2, d = handle_diameter - 2, $fn = 18);
    
translate([0,0,-23])
cylinder(h = 2, d1 = handle_diameter - 4, d2 = handle_diameter - 2, $fn = 18);

translate([0,0,-19])
cylinder(h = 3, d1 = handle_diameter - 2, d2 = handle_diameter - 7, $fn = 18);
}    

//MID-BOTTOM CONES FOR TOROID
translate([0,0,-10])
cylinder(h = 10, d1 = handle_diameter - 11, d2 = handle_diameter, $fn = 18); //$fn = 64

//translate([0,0,-18])
//cylinder(h = 12, d1 = 19, d2 = 14, $fn = 18); //$fn = 64

translate([0,0,-19])
cylinder(h = 28, d1 = handle_diameter - 2.7, d2 = handle_diameter - 11, $fn = 64); //$fn = 64

}



//internal cutouts for main handle texture
for ( i = [0 : 5] ){
    rotate( i * 60, [0, 0, 1]){
    translate([(0.5 * handle_diameter) + 1, 0, -8])
    cylinder(h = handle_height + 20, d = handle_cutout_diameter, $fn = 16);
    //translate([12,0,5])
    //sphere(d = 6, $fn = 64);
    //translate([12,0,43])
    //sphere(d = 6, $fn = 64);
    }
}


translate([0,0,-30])    
//internal cutouts for bottom handle texture
for ( i = [0 : 5] ){
    rotate( i * 60, [0, 0, 1]){
    translate([(handle_diameter * 0.5), 0, 5])
    cylinder(h = 12, d = handle_cutout_diameter - 2, $fn = 64);
    
    }
}

//toroid to cut out of bottom of handle
translate([0, 0, toroid_adj]){
rotate_extrude(convexity = 10, $fn = 64)
translate([handle_diameter - 5, 0, 0])
circle(r = (0.5 * handle_diameter) - 0.5 , $fn = 128);
}


//TOOL HOLDING PART!
translate([0,0,-25])
cylinder(h = 12, d = 10.1, $fn = 6);

//SCREWDRIVER HOLDING PART
union(){
translate([0,0,-25])
cylinder(d = 3.7, h = 15.5, $fn = 64);

translate([0,0,-18])
cylinder(d1 = tool_diameter + 0.03, d2 = tool_diameter - 7, h = 5.5, $fn = 64);

translate([0,0,-25])
cylinder(d = tool_diameter, h = tool_height, $fn = 64);
}
}

3d printed speaker enclosure in OpenSCAD

I designed this a few years ago just having fun with OpenSCAD. I had a small speaker that I needed a small enclosure for, and I wanted to test my new 3d printer at the time as well. So I came up with this design.

small 3d printed speaker enclosure

And the OpenSCAD Code:

//weird ass speaker cabinet for ~1.5 inch speaker. sgn June 2017

$fn = 6;
translate([0,0,102]){
rotate([195.57939, 29.244305, 54.377626]){ //puts it so base is flat, used repetier "lay flat" to find these numbers.
difference(){

snakey();

snakey2();

//SPEAKER hole
translate([5,22.5,75.75]) //translate([-1,26,75])
rotate([0,100,150])
cylinder(d = 36, h = 19, $fn = 32);

//flat face
translate([-5,28,75])
rotate([0,100,150])
cylinder(d = 57, h = 17, $fn = 32);

//"bottom" hole (for sphere at 0,0,0)
translate([0,0,-12])
cylinder(d = 6, h = 6);

//TEST CUBE
//translate([0,0,40])
//cube([100,100,20], center = true);

}

//BAD SIMPLE SPEAKER MODEL
//translate([-1,26,75])
//rotate([0,100,150])
//cylinder(d = 36, h = 10, $fn = 32);

difference(){
//FILL THE FACE
translate([-2.555,26.8,74]) //translate([-1,26,75])
rotate([0,100,150])
cylinder(d = 48, h = 2.5);

//SPEAKER hole
translate([5,22.5,75.75]) //translate([-1,26,75])
rotate([0,100,150])
cylinder(d = 36, h = 19, $fn = 32);

}

//fill small hole near speaker
//FILL THE FACE
translate([-2.5,20.5,53]) //translate([-1,26,75])
rotate([0,100,150])
cylinder(d = 5, h = 2.0);

}
}

module snakey(){

for( i = [0:11]){
translate([0,0,i
7]) rotate([0,i40,i30]) translate([0,i2,0])
sphere((i+5)*2.2);

}
}

module snakey2(){

for( i = [0:11]){
translate([0,0,i
7]) rotate([0,i40,i30]) translate([0,i2,0])
sphere((i+4.2)*2.2);

}
}