summaryrefslogtreecommitdiff
path: root/Optokopplerhalterung.scad
blob: b1729ced7c0a477df3bc5e4027b51d6b86772659 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
Leiterplattendicke = 1;
Bodenfreiheit = 3;
Kopffreiheit = 24;
Breite = 100;
Hoehe = 67;
Dicke = 1.5;
Nuttiefe = 1;
Nutlaenge = 20;
a = 7;

module Sechseck(a,d) {
  for (alpha = [30:60:330])
    rotate([0,0,alpha])
      translate([0,a,0])
        rotate([0,0,-30])
          translate([a/2,0,d/2])
            cube([a,d,d], center=true);
}

module Wabe(x,y,d,a) {
  intersection() {
    cube([x,y,d]);
    for (dy=[0:2*y/(sqrt(3)*a)])
      for (dx=[0:3*a:x])
        translate([dx+(dy%2 == 1 ? 3/2*a : 0),dy*sqrt(3)/2*a,0])
          Sechseck(a,d);
  }
}

module Rahmen(x,y,z,d) {
  difference() {
    cube([x,y,z]);
    for (f=[[-1,1,1],[1,-1,1],[1,1,-1]])
      translate([f[0]*d,f[1]*d,f[2]*d])
        cube([x-f[0]*2*d,y-f[1]*2*d,z-f[2]*2*d]);
  };
  Wabe(x,y,d,a);
  for (i = [0:1])
    translate([d+(x-d)*i,0,0])
      rotate([0,-90,0])
        Wabe(z,y,d,a);
  for (i = [0:1])
    translate([0,d+(y-d)*i,z])
      rotate([90,90,0])
        Wabe(z,x,d,a);
};

translate([0,Bodenfreiheit,0])
  difference() {
    cube([Breite + 2*Dicke, 2*Dicke + Leiterplattendicke, Nutlaenge + Dicke]);
    translate([Dicke,Dicke,Dicke])
      cube([Breite, Leiterplattendicke, Hoehe + Dicke]);
    translate([Dicke+Nuttiefe,-Dicke,Dicke+Nuttiefe])
      cube([Breite-2*Nuttiefe, Leiterplattendicke + 4*Dicke, Hoehe + Dicke]);
  }
Rahmen(Breite+2*Dicke,Kopffreiheit+Bodenfreiheit+Leiterplattendicke+2*Dicke,Hoehe+2*Dicke,Dicke);