99 lines
2.0 KiB
OpenSCAD
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);
|
|
}
|