-
Notifications
You must be signed in to change notification settings - Fork 0
/
curtain_flush_dowel.scad
108 lines (103 loc) · 4.24 KB
/
curtain_flush_dowel.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
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
// used to push the top edge of a roll-down curtain against a windowframe
// with a 16.3mm/.65in diameter dowel
// at lines 81-86 and lines 97-102 note the option of toggling between a
// long version and short version
// my windowsills are slightly proud of the surrounding drywall so YMMV
$fn = 50;
diameter = 17;
buck_height = 40;
bracket_thickness = (diameter / 2) + 6;
// commented out dowel to check clearances
translate([0, 0, -50]) %cylinder(r1=diameter/2, r2=diameter/2, h=100);
// wall clearance
%translate([0, -16, -5]) cube([10, 15, 10], center=true);
difference(){
union(){
//racetrack body of bracket before chamfer
intersection(){
difference(){
//bracket_body
translate([-10, 0, 0]){
hull(){
cylinder(r1=bracket_thickness, r2=bracket_thickness, h=10);
translate([20, 0, 0]){
cylinder(r1=bracket_thickness, r2=bracket_thickness, h=10);
}
}
}
// cutout for dowel
translate([-10, 0, -(buck_height / 2)]){
hull(){
cylinder(r1=diameter/2, r2=diameter/2, h=buck_height);
translate([20, 0, 0]){
cylinder(r1=diameter/2, r2=diameter/2, h=buck_height);
}
}
}
//buck for UPPER inner chamfer of racetrack
translate([-10, 0, .5]){
hull(){
cylinder(r1=0, r2=diameter, h=diameter);
translate([20, 0, 0]){
cylinder(r1=0, r2=diameter, h=diameter);
}
}
}
//buck for LOWER inner chamfer of racetrack
translate([-10, 0, -7.5]){
hull(){
cylinder(r1=diameter, r2=0, h=diameter);
translate([20, 0, 0]){
cylinder(r1=diameter, r2=0, h=diameter);
}
}
}
}
// buck for LOWER outer chamfer of racetrack
translate([-10, 0, -13.5]){
hull(){
cylinder(r1=0, r2=diameter * 2, h=diameter * 2);
translate([20, 0, 0]){
cylinder(r1=0, r2=diameter * 2, h=diameter * 2);
}
}
}
// buck for UPPER outer chamfer of racetrack
translate([-10, 0, -10.5]){
hull(){
cylinder(r2=0, r1=diameter * 2, h=diameter * 2);
translate([20, 0, 0]){
cylinder(r2=0, r1=diameter * 2, h=diameter * 2);
}
}
}
}
// attachment plate
minkowski(){
union(){
//vertical block
// short version
translate([0, -20.5, 11]) cube([24, 4, 20], center=true);
translate([0, -15, 3]) rotate([90, 0, 0]) cube([24, 4, 10], center=true);
// long version
//translate([0, -25.5, 11]) cube([24, 4, 20], center=true);
//translate([0, -20, 3]) rotate([90, 0, 0]) cube([24, 4, 14], center=true);
//horizontal block
}
union(){
cylinder(r1=1, r2=0, h=1);
translate([0, 0, -1]) cylinder(r2=1, r1=0, h=1);
}
}
}
// screw hole (-X)
translate([-7, -15, 15]) rotate([90, 0, 0]) cylinder(r1=2, r2=2, h=30, center=true);
// screw hole (+X)
translate([7, -15, 15]) rotate([90, 0, 0]) cylinder(r1=2, r2=2, h=30, center=true);
// short version hole chamfers
translate([-7, -18.5, 15]) rotate([90, 0, 0]) cylinder(r1=4, r2=0, h=4, center=true);
translate([7, -18.5, 15]) rotate([90, 0, 0]) cylinder(r1=4, r2=0, h=4, center=true);
// long version hole chamfers
//translate([-7, -23.5, 15]) rotate([90, 0, 0]) cylinder(r1=4, r2=0, h=4, center=true);
//translate([7, -23.5, 15]) rotate([90, 0, 0]) cylinder(r1=4, r2=0, h=4, center=true);
}