Browse Source

Added custom FPV top plate

Thomas Buck 7 years ago
parent
commit
0015406c47
2 changed files with 13951 additions and 0 deletions
  1. 173
    0
      Quanum Trifecta/fpv_top.scad
  2. 13778
    0
      Quanum Trifecta/fpv_top.stl

+ 173
- 0
Quanum Trifecta/fpv_top.scad View File

@@ -0,0 +1,173 @@
1
+/*
2
+ * Created by:
3
+ * Thomas Buck <xythobuz@xythobuz.de> in June 2016
4
+ *
5
+ * Licensed under the
6
+ * Creative Commons - Attribution - Share Alike license.
7
+ */
8
+
9
+// -----------------------------------------------------------
10
+
11
+dist_x = 44;
12
+dist_y = 68.5;
13
+height = 35;
14
+base_height = 2;
15
+diameter = 6.5;
16
+hole = 2.5;
17
+cuts = 4;
18
+
19
+vtx_width = 21;
20
+vtx_height = 28;
21
+vtx_x = ((dist_x - vtx_width) / 2) - 3;
22
+vtx_y = 2;
23
+vtx_off_1 = 0.15;
24
+vtx_off_2 = 0.5;
25
+
26
+osd_width = 51;
27
+osd_height = 24;
28
+osd_x = (dist_x - osd_width) / 2;
29
+osd_y = dist_y - osd_height - 6;
30
+osd_off_1 = 0.3;
31
+osd_off_2 = 0.7;
32
+
33
+display_hole = 3;
34
+display_width = 6;
35
+display_length = 6;
36
+display_depth = 2;
37
+display_depth_add = 2;
38
+display_dist = 21;
39
+display_off_x = 13;
40
+display_off_y = 2.23;
41
+display_off_z = -3.08;
42
+display_angle = 35;
43
+
44
+add_handle = 0; // [0,1]
45
+handle = 3;
46
+
47
+helper_plate = 0.2;
48
+
49
+$fn = 25;
50
+
51
+// -----------------------------------------------------------
52
+
53
+module leg() {
54
+    difference() {
55
+        cylinder(d = diameter, h = height);
56
+        
57
+        translate([0, 0, -1])
58
+            cylinder(d = hole, h = height + 2);
59
+    }
60
+}
61
+
62
+module legs() {
63
+    leg();
64
+    
65
+    translate([dist_x, 0, 0])
66
+        leg();
67
+    
68
+    translate([dist_x, dist_y, 0])
69
+        leg();
70
+    
71
+    translate([0, dist_y, 0])
72
+        leg();
73
+}
74
+
75
+module handle() {
76
+    rotate([90, 0, 0])
77
+    translate([dist_x / 2, dist_y / 2 + handle / 2, base_height])
78
+    difference() {
79
+        cylinder(d = dist_x, h = handle);
80
+        translate([0, 0, -1])
81
+            cylinder(d = dist_x - handle, h = handle + 2);
82
+        translate([-dist_x / 2, -dist_x / 2, -1])
83
+            cube([dist_x, dist_x / 2, handle + 2]);
84
+    }
85
+}
86
+
87
+module display_nub() {
88
+    translate([0, 0, -display_depth_add])
89
+    difference() {
90
+        cube([display_width, display_length, display_depth + display_depth_add]);
91
+        translate([display_width / 2, display_width / 2, -1])
92
+            cylinder(d = display_hole, h = display_depth + display_depth_add + 2);
93
+    }
94
+}
95
+
96
+module display() {
97
+    translate([display_off_x, -display_length + display_off_y, display_off_z])
98
+    rotate([display_angle, 0, 0])
99
+    union() {
100
+        display_nub();
101
+        translate([display_dist, 0, 0])
102
+            display_nub();
103
+    }
104
+}
105
+
106
+module base() {
107
+    difference() {
108
+        cube([dist_x, dist_y, base_height]);
109
+        
110
+        // VTX holes
111
+        translate([vtx_x - (cuts / 2), vtx_y + (cuts / 2) + (vtx_off_1 * vtx_height), -1])
112
+            cylinder(d = cuts, h = base_height + 2);
113
+        
114
+        translate([vtx_x - (cuts / 2), vtx_y + (cuts / 2) + (vtx_off_2 * vtx_height), -1])
115
+            cylinder(d = cuts, h = base_height + 2);
116
+        
117
+        translate([vtx_x + (cuts / 2) + vtx_width, vtx_y + (cuts / 2) + (vtx_off_1 * vtx_height), -1])
118
+            cylinder(d = cuts, h = base_height + 2);
119
+        
120
+        translate([vtx_x + (cuts / 2) + vtx_width, vtx_y + (cuts / 2) + (vtx_off_2 * vtx_height), -1])
121
+            cylinder(d = cuts, h = base_height + 2);
122
+        
123
+        // OSD holes
124
+        translate([osd_x - (cuts / 2) + (osd_off_1 * osd_width), osd_y - (cuts / 2), -1])
125
+            cylinder(d = cuts, h = base_height + 2);
126
+        
127
+        translate([osd_x - (cuts / 2) + (osd_off_2 * osd_width), osd_y - (cuts / 2), -1])
128
+            cylinder(d = cuts, h = base_height + 2);
129
+        
130
+        translate([osd_x - (cuts / 2) + (osd_off_1 * osd_width), osd_y + (cuts / 2) + osd_height, -1])
131
+            cylinder(d = cuts, h = base_height + 2);
132
+        
133
+        translate([osd_x - (cuts / 2) + (osd_off_2 * osd_width), osd_y + (cuts / 2) + osd_height, -1])
134
+            cylinder(d = cuts, h = base_height + 2);
135
+    }
136
+    
137
+    translate([-diameter / 2, -diameter / 2, base_height - helper_plate])
138
+        cube([dist_x + diameter, dist_y + diameter, helper_plate]);
139
+    
140
+    cylinder(d = diameter, h = base_height);
141
+    
142
+    translate([dist_x, 0, 0])
143
+        cylinder(d = diameter, h = base_height);
144
+    
145
+    translate([dist_x, dist_y, 0])
146
+        cylinder(d = diameter, h = base_height);
147
+    
148
+    translate([0, dist_y, 0])
149
+        cylinder(d = diameter, h = base_height);
150
+    
151
+    display();
152
+    
153
+    if (add_handle) {
154
+        handle();
155
+    }
156
+}
157
+
158
+// -----------------------------------------------------------
159
+
160
+translate([dist_x, 0, base_height + height])
161
+rotate([0, 180, 0])
162
+union() {
163
+    legs();
164
+    
165
+    translate([0, 0, height])
166
+        base();
167
+    
168
+    %translate([vtx_x, vtx_y, height + base_height])
169
+        cube([vtx_width, vtx_height, 5]);
170
+    
171
+    %translate([osd_x, osd_y, height + base_height])
172
+        cube([osd_width, osd_height, 10]);
173
+}

+ 13778
- 0
Quanum Trifecta/fpv_top.stl
File diff suppressed because it is too large
View File


Loading…
Cancel
Save