136 lines
3.1 KiB
OpenSCAD
136 lines
3.1 KiB
OpenSCAD
|
|
include <BOSL2/std.scad>;
|
|
|
|
module finfit(base_length, mirror_vec,screw = true,pin=true)
|
|
{
|
|
front_offset = tab_length;
|
|
length = base_length + tab_length;
|
|
mirror(mirror_vec)
|
|
translate([0,-front_offset, 0])
|
|
chinook( length, screw ,pin );
|
|
}
|
|
|
|
module chinook(length,screw = true,pin=true,thick = 9.2,height=25,tab_height=13,)
|
|
{
|
|
difference()
|
|
{
|
|
base_cube( length, thick, height );
|
|
tab_cut( thick ,height, tab_height );
|
|
if (screw)
|
|
screw_cut(tab_height);
|
|
back_round_cut(length,thick,height);
|
|
if (pin)
|
|
pin_cut(length,tab_height);
|
|
thickness_cut(length,height, thick/2);
|
|
thickness_cut(length,height, -thick/2);
|
|
}
|
|
}
|
|
|
|
module chinook_profile(length,thick = 9.2,height=25,tab_height=13,tab_round=13,tab_length=9.6*2)
|
|
{
|
|
difference(){
|
|
rect(
|
|
[height,length],
|
|
rounding=[tab_round,0,0,0],
|
|
anchor=BOTTOM+LEFT
|
|
)
|
|
{
|
|
align(RIGHT+BOTTOM,inside=true,shiftout=0.1)
|
|
rect( [ height-tab_height, tab_length+tab_round ],rounding=[0,tab_round-1,0,0] );
|
|
}
|
|
}
|
|
|
|
//region(difference(shape1,shape2));
|
|
|
|
}
|
|
|
|
module base_cube( length,thick,height )
|
|
{
|
|
translate([0,0,-thick/2])
|
|
cube(
|
|
size=[
|
|
height,
|
|
length,
|
|
thick
|
|
],
|
|
center=false
|
|
);
|
|
}
|
|
|
|
module tab_cut( thick, height,tab_height,tab_round=13,tab_length=9.6*2 )
|
|
{
|
|
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(tab_height,screw_pos=9.6,screw_dia=4.5)
|
|
{
|
|
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,thick,height,tab_round=13)
|
|
{
|
|
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,tab_height,pin_dia=3, pin_back=9,pin_depth=16.4)
|
|
{
|
|
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,height, zOffset,pin_depth=16.4, pin_back=9,thick_cut = 1 )
|
|
{
|
|
translate([
|
|
pin_depth,
|
|
BaseLength-pin_back,
|
|
zOffset])
|
|
rotate([0,0,45])
|
|
cube(
|
|
size=[
|
|
pin_depth*2.2,
|
|
height*3,
|
|
thick_cut
|
|
],
|
|
center=true
|
|
);
|
|
}
|
|
|
|
|
|
|
|
|
|
|