SurfFins/lib/chinook.scad

99 lines
2.0 KiB
OpenSCAD

module chinook(length)
{
difference()
{
base_cube(length);
tab_cut();
screw_cut();
back_round_cut(length);
pin_cut(length);
thickness_cut(length, thick/2);
thickness_cut(length, -thick/2);
}
}
module finfit(base_length, mirror_vec)
{
front_offset = tab_length;
length = base_length + tab_length;
echo ("length:",length);
mirror(mirror_vec)
translate([0,-front_offset, 0])
chinook(length);
}
module base_cube(BaseLength)
{
translate([0,0,-thick/2])
cube(size=[height,
BaseLength,
thick],
center=false);
}
module tab_cut()
{
translate([tab_height,0,-thick/2*1.1])
union()
{
translate([0,-thick,0])
cube(size=[height,
tab_length+thick,
thick*1.1],
center=false);
translate([tab_round,tab_length,0])
cylinder(h=thick*1.1,
r=tab_round,
center=false);
}
}
module screw_cut()
{
translate([tab_height/2,screw_pos,0])
rotate([0,90,0])
cylinder(h=tab_height*1.1,
d=screw_dia,
center=true);
}
module back_round_cut(BaseLength)
{
translate([height-tab_round,
BaseLength-tab_round,
-thick/2*1.1])
difference()
{
cube(size=[tab_round*1.1,
tab_round*1.1,
thick*1.1],
center=false);
cylinder(h=thick*1.2,
r=tab_round,
center=false);
}
}
module pin_cut(BaseLength)
{
translate([pin_depth,
BaseLength-pin_back,
0])
rotate([0,0,0])
cylinder(h=tab_height*1.1,
d=pin_dia,
center=true);
}
module thickness_cut(BaseLength, zOffset)
{
translate([pin_depth,
BaseLength-pin_back,
zOffset])
rotate([0,0,45])
cube(size=[pin_depth*2.2,
height*3,
thick_cut],
center=true);
}