use include hinge_outer_t=1.6; hinge_cylinder_r=2.5; h_play=0.35; diagonal_play=0.35; /* translate([0,0,10]) rotate([95]) planeur(); */ /* translate([-2,0,-38]) cube([4,10,40]); */ first_h=hinge_pitch-bridge_play; n=6; hinge_h=first_h+(n-2)*hinge_pitch+last_h+bridge_play; echo(hinge_h); angle=135; top_l=40; module lanceur() { translate([0,0,-top_l]) intersection() { translate([-hinge_h/2,0]) rotate([0,90]) hinge(n=n,min_angle=90,max_angle=180,angle=angle,join_angle_1=45,join_angle_2=45,bottom_cylinder=true,x_max=100,y_min=-10,y_max=10,z_min=0,z_max=hinge_h); union() { rotate([0,90]) cylinder(r=hinge_cylinder_r+3,h=50,center=true); rotate([angle-180]) difference() { rotate(22.5) cylinder(r=11,h=40,$fn=8); translate([0,0,top_l]) { translate([0,3]) rotate([-70]) translate([-20,-50]) cube([40,100,50]); translate([0,-3]) rotate([75]) translate([-20,-50]) cube([40,100,50]); translate([-20,-50]) cube([40,100,50]); translate([-20,-1.2,-4.6]) cube([40,3,3]); for(i=[0,1]) mirror([i,0]) translate([hinge_h/2-1,-1,-4.6]) rotate(-45) cube([10,2,3]); translate([-20,0.8,-4]) cube([40,1,5]); } } mirror([0,0,1]) rotate(22.5) cylinder(r=11,h=100,$fn=8); } } translate([0,0,-top_l-14]) difference() { linear_extrude(3.6) hull() { translate([-hinge_h/2,0]) square([hinge_h,1]); for(i=[0,1]) mirror([i,0]) translate([4-hinge_h/2,12]) circle(r=4,$fn=120); } translate([-20,10,-1]) cube([40,2,3]); for(i=[0,1]) mirror([i,0]) translate([hinge_h/2-1.8,10,1]) rotate([0,-45]) translate([-20,0,-10]) cube([40,2,10]); } } rotate([0,-90,-90]) lanceur();