54 lines
No EOL
1.6 KiB
OpenSCAD
54 lines
No EOL
1.6 KiB
OpenSCAD
//deg is the amount in degrees the hinge should be able to pivot, len_before the length of the section before the hinge, len_after the length of the section after the hinge
|
|
module hinge(deg, len_before = 0, len_after = 0){
|
|
|
|
cut_points = [[6,0,5.5],
|
|
[6,7,5.5],
|
|
[4.5,0,7],
|
|
[4.5,7,7],
|
|
[6,0,7],
|
|
[6,7,7]];
|
|
|
|
cut_faces = [[0,2,4],
|
|
[1,5,3],
|
|
[0,1,3,2],
|
|
[0,4,5,1],
|
|
[2,3,5,4]];
|
|
|
|
union(){
|
|
difference(){
|
|
cube([6,7,6], center = false);
|
|
polyhedron(points = cut_points, faces = cut_faces, convexity = 10);
|
|
translate([3,3.5,3.5]){
|
|
rotate(90, [1,0,0]) cylinder(h = 6, r = 2, center = true, $fn = 16);
|
|
}
|
|
if(deg <= 45){
|
|
translate([3,2,4.75]){
|
|
rotate(-deg,[0,1,0]){
|
|
translate([0,0,-4]){
|
|
cube([4,3,4], center = false);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
else{
|
|
translate([1.75,2,3.5]){
|
|
rotate(-deg,[0,1,0]){
|
|
translate([0,0,-6]){
|
|
cube([6,3,6], center = false);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
translate([4,2,1.5]) cube([4,3,4], center = false);
|
|
}
|
|
cube([6.5,7,1.5], center = false);
|
|
|
|
translate([3,3.5,3.5]){
|
|
rotate(90, [1,0,0]) cylinder(h = 4.5, r = 1.25, center = true, $fn = 16);
|
|
}
|
|
translate([3,2.5,2.25]) cube([4,2,2.5], center = false);
|
|
translate([-len_before,0,0]) cube([len_before,7,6], center = false);
|
|
translate([7,0,0]) cube([len_after,7,6], center = false);
|
|
}
|
|
} |