|
@@ -1,41 +1,52 @@
|
1
|
1
|
$fa=1/1;
|
2
|
2
|
$fs=1/2;
|
3
|
3
|
bissl=1/100;
|
4
|
|
-wall=1.6;
|
5
|
|
-hole=3;
|
6
|
|
-hd=10;
|
7
|
|
-height=40;
|
8
|
|
-vd=height-wall;
|
9
|
|
-segments=14;
|
10
|
|
-radius=1;
|
11
|
|
-thickness=7;
|
|
4
|
+wall=1.6;//twice nozzle diameter is fine, walls of triangles
|
|
5
|
+hole=3; //hole for mounting thread inserts
|
|
6
|
+hd=10; //horizontal distance between mounting points, depends on mounting hole distance in the actuator
|
|
7
|
+height=40; //dimension of the beam in the direction of tambourine depth
|
|
8
|
+vd=height-wall; //vertical distance between mounting holes
|
|
9
|
+segments=14; //number of mounting points, defines the beam length
|
|
10
|
+radius=1; //rounding of inner corners
|
|
11
|
+thickness=2*wall+hole; //thickness of the beam, keep some material to properly hold the threaded insert on the side
|
12
|
12
|
offset=wall/2+hole/2;
|
13
|
13
|
difference() {
|
14
|
14
|
linear_extrude(thickness, convexity=4) difference() {
|
15
|
|
- offset(r=-radius)offset(r=radius)union() {
|
16
|
|
- for (i=[0:hd:hd*(segments-1)]) translate ([i,0]) {
|
17
|
|
- for (tr=[[[hd,0],[0,0]],[[-hd/2,vd],[0,0]],[[hd/2,vd],[0,0]],[[hd/2,vd],[-hd/2,vd]]]) hull() { //diagonals
|
|
15
|
+ offset(r=-radius)offset(r=radius)union() {
|
|
16
|
+ for (i=[0:hd:hd*(segments-1)]) translate ([i,0]) {
|
|
17
|
+ for (tr=[[[hd,0],[0,0]],[[-hd/2,vd],[0,0]],[[hd/2,vd],[0,0]],[[hd/2,vd],[-hd/2,vd]]]) hull() { //diagonals
|
|
18
|
+ translate(tr[0])circle(d=wall);
|
|
19
|
+ translate(tr[1]) circle(d=wall);
|
|
20
|
+ }
|
|
21
|
+ for (tr=[[hd/2,vd-offset],[-hd/2,vd-offset],[hd,offset],[0,offset]]) translate(tr)circle(d=2*wall+hole); //big circles
|
|
22
|
+ }
|
|
23
|
+
|
|
24
|
+ //left vertical wall, not generated by the loop
|
|
25
|
+ for (tr=[[[-hd/2-offset,0],[0,0]],[[-hd/2-offset,0],[-hd/2-offset,vd]],[[-hd/2-offset,vd],[-hd/2,vd]]]) hull() {
|
18
|
26
|
translate(tr[0])circle(d=wall);
|
19
|
27
|
translate(tr[1]) circle(d=wall);
|
20
|
28
|
}
|
21
|
|
- for (tr=[[hd/2,vd-offset],[-hd/2,vd-offset],[hd,offset],[0,offset]]) translate(tr)circle(d=2*wall+hole); //big circles
|
22
|
|
- }
|
23
|
|
- for (tr=[[[-hd/2-offset,0],[0,0]],[[-hd/2-offset,0],[-hd/2-offset,vd]],[[-hd/2-offset,vd],[-hd/2,vd]]]) hull() {//left
|
24
|
|
- translate(tr[0])circle(d=wall);
|
25
|
|
- translate(tr[1]) circle(d=wall);
|
|
29
|
+
|
|
30
|
+ //solid triangle to jhold threaded inserts
|
|
31
|
+ hull() for (tr=[[0,0],[-hd/2-offset,0],[-hd/2-offset,vd],[-hd/2,vd]]) translate(tr) circle(d=wall);
|
|
32
|
+
|
|
33
|
+ //right vertical wall, not generated by the loop
|
|
34
|
+ for (tr=[[[hd*segments+offset,0],[0,0]],
|
|
35
|
+ [[hd*segments+offset,0],[hd*segments+offset,vd]],
|
|
36
|
+ [[hd*segments+offset,vd],[hd*(segments-0.5),vd]],
|
|
37
|
+ [[hd*segments,0],[hd*(segments-0.5),vd]]])
|
|
38
|
+ hull() {
|
|
39
|
+ translate(tr[0])circle(d=wall);
|
|
40
|
+ translate(tr[1]) circle(d=wall);
|
|
41
|
+ }
|
26
|
42
|
}
|
27
|
|
-hull() for (tr=[[0,0],[-hd/2-offset,0],[-hd/2-offset,vd],[-hd/2,vd]]) translate(tr) circle(d=wall); //solid triangle
|
28
|
|
- for (tr=[[[hd*segments+offset,0],[0,0]],[[hd*segments+offset,0],[hd*segments+offset,vd]],[[hd*segments+offset,vd],[hd*(segments-0.5),vd]],[[hd*segments,0],[hd*(segments-0.5),vd]]]) hull() { //right
|
29
|
|
- translate(tr[0])circle(d=wall);
|
30
|
|
- translate(tr[1]) circle(d=wall);
|
|
43
|
+ for (i=[0:segments]) {
|
|
44
|
+ translate([i*hd,offset]) circle(d=hole);
|
|
45
|
+ translate([(i-0.5)*hd,vd-offset]) circle(d=hole);
|
31
|
46
|
}
|
32
|
47
|
}
|
33
|
|
- for (i=[0:segments]) {
|
34
|
|
- translate([i*hd,offset]) circle(d=hole);
|
35
|
|
- translate([(i-0.5)*hd,vd-offset]) circle(d=hole);
|
36
|
|
- }
|
37
|
|
- }
|
38
|
|
-translate([-hd/2-offset-wall/2,height/4-wall,thickness/2])rotate([0,90,0])cylinder(d=hole,h=hd-wall);
|
39
|
|
-translate([-hd/2-offset-wall/2,height/2-wall/2,thickness/2])rotate([0,90,0])cylinder(d=hole,h=hd-wall);
|
40
|
|
-translate([-hd/2-offset-wall/2,height*3/4,thickness/2])rotate([0,90,0])cylinder(d=hole,h=hd-wall);
|
41
|
|
-}
|
|
48
|
+ //mounting holes for threaded inserts, three just in case, it's better to use the middle one
|
|
49
|
+ translate([-hd/2-offset-wall/2,height/4-wall,thickness/2])rotate([0,90,0])cylinder(d=hole,h=hd-wall);
|
|
50
|
+ translate([-hd/2-offset-wall/2,height/2-wall/2,thickness/2])rotate([0,90,0])cylinder(d=hole,h=hd-wall);
|
|
51
|
+ translate([-hd/2-offset-wall/2,height*3/4,thickness/2])rotate([0,90,0])cylinder(d=hole,h=hd-wall);
|
|
52
|
+}
|