kauzerei 8 месяцев назад
Родитель
Сommit
78b62c6b49
1 измененных файлов: 74 добавлений и 1 удалений
  1. 74
    1
      3dprint/enclosure.scad

+ 74
- 1
3dprint/enclosure.scad Просмотреть файл

@@ -1 +1,74 @@
1
-part="bottom";//[bottom,top]
1
+//currantly the box is unfinished, but you can still use faceplate.
2
+$fa=1/1;
3
+$fs=1/2;
4
+bissl=1/100;
5
+part="bottom";//[bottom,top,faceplate]
6
+pegs_h=5;
7
+pegs_id=3;
8
+pegs_od=7;
9
+wall=1;
10
+depth=30;
11
+air=0.5; //wiggle room
12
+//board (and box) size goes here
13
+//defined as corners of inner space relatove to x=y=0 point on the board
14
+//[x1,y1,x2,y2]
15
+board=[-2,-2,90.81+4,118.75+2];
16
+screen=[67.2+2,16.5-10,20,27];
17
+//holes in the front panel
18
+//defined as [x,y,diameter], where x from KiCAD becomes y and y becomes x, because
19
+//coordinate conventions in Kicad and OpenSCAD are mirrored
20
+holes_positions=[
21
+  [48.90,66.68,12], //encoder
22
+  [48.3,85.4,7], //power
23
+  [71.12,48.26,8], //leds
24
+  [71.12,67.31,8],
25
+  [71.12,86.36,8],
26
+  [71.12,105.41,8],
27
+  [85.73,48,12], //buttons
28
+  [85.73,67.3,12],
29
+  [85.73,86.36,12],
30
+  [85.73,105.41,12]];
31
+//standoffs to hold the board
32
+//defined as [x,y,id,od,height], where x from KiCAD becomes y and y becomes x, because
33
+//coordinate conventions in Kicad and OpenSCAD are mirrored
34
+mount_pegs=[
35
+  [1.90,1.90,pegs_id,pegs_od,pegs_h],
36
+  [1.90,116.84,pegs_id,pegs_od,pegs_h],
37
+  [88.90,1.90,pegs_id,pegs_od,pegs_h],
38
+  [88.90,116.84,pegs_id,pegs_od,pegs_h]
39
+];
40
+module bottom() {
41
+  difference() {
42
+    translate([board[0]-wall,board[1]-wall,-wall]) cube([board[2]-board[0]+2*wall,board[3]-board[1]+2*wall,depth+wall]);
43
+    translate([board[0],board[1],0]) cube([board[2]-board[0],board[3]-board[1],depth+bissl]);
44
+  }
45
+  for (peg=mount_pegs) {
46
+    translate([peg[0],peg[1],0]) difference() {
47
+      cylinder(d=peg[3],h=peg[4]);
48
+      translate([0,0,-bissl]) cylinder(d=peg[2],h=peg[4]+2*bissl);
49
+    }
50
+  }
51
+}
52
+module faceplate() {
53
+  difference() {
54
+    translate([board[0]-wall,board[1]-wall,0]) cube([board[2]-board[0]+2*wall,board[3]-board[1]+2*wall,wall]);
55
+    for (hole=holes_positions) {
56
+      translate([hole[0],hole[1],-bissl]) cylinder(d=hole[2],h=wall+2*bissl);
57
+    }
58
+    translate([screen[0],screen[1],-bissl])cube([screen[2],screen[3],wall+2*bissl]);
59
+  }
60
+};
61
+module top() {
62
+  mirror([0,0,1])faceplate();
63
+    difference() {
64
+    translate([board[0]-wall,board[1]-wall,0]) cube([board[2]-board[0]+2*wall,board[3]-board[1]+2*wall,depth]);
65
+    translate([board[0],board[1],-bissl]) cube([board[2]-board[0],board[3]-board[1],depth+2*bissl]);
66
+  }
67
+}
68
+if (part=="bottom") bottom();
69
+if (part=="faceplate") faceplate();
70
+if (part=="top") top();
71
+if (part=="all") {
72
+  bottom();
73
+  translate([0,0,depth+wall]) faceplate();
74
+}

Загрузка…
Отмена
Сохранить