catears-v2/dogear.scad
2026-03-08 20:46:02 +01:00

97 lines
No EOL
2.6 KiB
OpenSCAD

use <hinge.scad>;
module dogearAllOptions(a1, a2, a3, a4){
translate([25,0,0]){
union(){
linear_extrude(height = 6, center = false, convexity = 10){
polygon(points = [[-32,0],[-25,0],[-25,7]]);
}
hinge(a1, lb = 25, la = 5.5);
translate([12.5,0,0]){
hinge(a2, lb = 0, la = 5.5);
}
translate([25,0,0]){
hinge(a3, lb = 0, la = 5.5);
}
translate([0,37,0]){
hinge(a1, lb = 5, la = 5.5);
}
translate([12.5,37,0]){
hinge(a2, lb = 0, la = 5.5);
}
translate([25,37,0]){
hinge(a3, lb = 0, la = 8);
}
translate([34,0,0]){
cube([7,18.5,6]);
translate([3.5,18.5,0]){
cylinder(h = 6, r = 3.5, center = false, $fn=32);
}
}
translate([35,37,0]){
translate([5,3.5,0]){
cylinder(h = 6, r = 3.5, center = false, $fn=32);
}
}
translate([53,0,0]){
cube([24,7,6], center = false);
}
translate([40,11,0]){
rotate(-45,[0,0,1]){
hinge(a4, lb = 7, la = 7);
translate([14.1,3.5,0]){
cylinder(h = 6, r = 3.5, center = false, $fn=32);
}
translate([0,17.3,0]){
hinge(a4, lb = 21, la = 24.6);
}
translate([31.4,20.8,0]){
cylinder(h = 6, r = 3.5, center = false, $fn=32);
}
}
}
}
}
}
module dogear(flopness){
a1 = 30;
a2 = 30;
a3 = 30;
a4 = 45;
if(flopness == "vvvflop"){
a1 = 45;
a2 = 45;
a3 = 45;
dogearAllOptions(a1, a2, a3, a4);
}
else{
if(flopness == "vvflop"){
a2 = 45;
a3 = 45;
dogearAllOptions(a1, a2, a3, a4);
}
else{
if(flopness == "vflop"){
a3 = 45;
dogearAllOptions(a1, a2, a3, a4);
}
else{
if(flopness == "nflop"){
a1 = 15;
a2 = 15;
a3 = 15;
a4 = 30;
dogearAllOptions(a1, a2, a3, a4);
}
else{
dogearAllOptions(a1, a2, a3, a4);
}
}
}
}
}