forked from jcrocholl/kossel
-
Notifications
You must be signed in to change notification settings - Fork 1
/
round_glass.scad
53 lines (46 loc) · 1.53 KB
/
round_glass.scad
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
include <configuration.scad>;
glass_diameter = 170; // mm
glass_radius = glass_diameter/2;
glass_thickness = 2.9; // mm
triangle_openbeam = 300; // mm length
clip_width = 20; // mm
// Intersection points between inside edges of triangle OpenBeam.
triangle_inside = triangle_openbeam + 45;
// Distance from center to inside edge of OpenBeam.
triangle_offset = triangle_inside/2 * tan(30) + 7.5;
// Borosilicate glass.
translate([0, 0, thickness-1]) %
cylinder(r=glass_radius, h=glass_thickness, $fn=120);
// OpenBeam triangle.
for (a = [0:120:359]) {
rotate([0, 0, a]) {
translate([0, triangle_offset, -7.5]) %
cube([triangle_openbeam, 15, 15], center=true);
}
}
module frame_glass() {
difference() {
union() {
translate([0, triangle_offset-20, thickness/2]) minkowski() {
difference() {
cube([clip_width+21, 40, thickness-1], center=true);
cube([clip_width+11, 50, 20], center=true);
}
cylinder(r=5, h=1, center=true);
}
intersection() {
translate([0, triangle_offset-20, (thickness+1)/2])
cube([clip_width+31, 50, thickness+1], center=true);
cylinder(r=glass_radius+5, h=20, center=true, $fn=120);
}
}
cylinder(r=glass_radius-5, h=20, center=true, $fn=120);
translate([0, 0, thickness-1])
cylinder(r=glass_radius, h=glass_thickness, $fn=120);
for (x = [clip_width/2+8, -clip_width/2-8]) {
translate([x, triangle_offset, 0]) #
cylinder(r=m3_wide_radius, h=20, center=true, $fn=12);
}
}
}
frame_glass();