diff options
author | Pacien TRAN-GIRARD | 2016-02-16 23:48:03 +0100 |
---|---|---|
committer | Pacien TRAN-GIRARD | 2016-02-16 23:48:44 +0100 |
commit | 89c18acb1055905909c5f219922e354406c16e9a (patch) | |
tree | 5bb2d9846454ac6afbaca9c01db18f389243c3bc | |
download | tabletop-spool-holder-89c18acb1055905909c5f219922e354406c16e9a.tar.gz |
-rw-r--r-- | ParametricTabletopSpoolHolder.scad | 320 | ||||
-rw-r--r-- | instructions.md | 27 | ||||
-rw-r--r-- | readme.md | 22 |
3 files changed, 369 insertions, 0 deletions
diff --git a/ParametricTabletopSpoolHolder.scad b/ParametricTabletopSpoolHolder.scad new file mode 100644 index 0000000..b0fe1df --- /dev/null +++ b/ParametricTabletopSpoolHolder.scad | |||
@@ -0,0 +1,320 @@ | |||
1 | /** | ||
2 | * PARAMETRIC TABLETOP SPOOL HOLDER | ||
3 | * | ||
4 | * @author Pacien TRAN-GIRARD | ||
5 | * @version 1.1 | ||
6 | * @license CC BY-NC-SA 3.0 | ||
7 | */ | ||
8 | |||
9 | |||
10 | /***** PARAMETERS *****/ | ||
11 | |||
12 | material_thickness = 1.5; | ||
13 | material_space = 0.35; | ||
14 | material_eco = true; | ||
15 | |||
16 | rod_length = 150; | ||
17 | rod_radius = 8; | ||
18 | |||
19 | pillar_height = 120; | ||
20 | |||
21 | base_height = 25; | ||
22 | base_length = 150; | ||
23 | |||
24 | |||
25 | /***** TO PRINT *****/ | ||
26 | |||
27 | // preview_all(); | ||
28 | |||
29 | print_all(); | ||
30 | |||
31 | // print_base(); | ||
32 | // print_coupler(); | ||
33 | // print_rod(); | ||
34 | // print_pillar(); | ||
35 | |||
36 | |||
37 | |||
38 | /********** This is where it gets complicated **********/ | ||
39 | |||
40 | |||
41 | |||
42 | /***** MODELS *****/ | ||
43 | |||
44 | |||
45 | module print_all() { | ||
46 | |||
47 | space=5; | ||
48 | |||
49 | print_pillar(); | ||
50 | |||
51 | translate([0, 2*rod_radius+2*(material_thickness+material_space)+space, 0]) { | ||
52 | |||
53 | print_pillar(); | ||
54 | |||
55 | translate([0, 2*rod_radius+2*(material_thickness+material_space)+space, 0]) { | ||
56 | |||
57 | print_base(); | ||
58 | |||
59 | translate([0, 2*rod_radius+2*(material_thickness+material_space)+space, 0]) { | ||
60 | |||
61 | print_base(); | ||
62 | |||
63 | translate([0, 2*rod_radius+2*(material_thickness+material_space)+space, 0]) { | ||
64 | |||
65 | print_rod(); | ||
66 | |||
67 | translate([0, rod_radius*2+space, 0]) { | ||
68 | |||
69 | print_coupler(); | ||
70 | |||
71 | } | ||
72 | } | ||
73 | } | ||
74 | } | ||
75 | } | ||
76 | |||
77 | } | ||
78 | |||
79 | module preview_all() { | ||
80 | |||
81 | translate([ -(rod_radius+material_thickness+material_space), | ||
82 | material_thickness+material_space, | ||
83 | material_thickness+material_space]) { | ||
84 | |||
85 | sized_pillar(); | ||
86 | |||
87 | translate([0, rod_length+2*(material_thickness+material_space), 0]) { | ||
88 | mirror([0, 1, 0]) { | ||
89 | sized_pillar(); | ||
90 | } | ||
91 | } | ||
92 | |||
93 | translate([ rod_radius+material_thickness+material_space, | ||
94 | material_thickness+material_space, | ||
95 | pillar_height]) { | ||
96 | rotate([0, 0, 90]) { | ||
97 | sized_rod(); | ||
98 | } | ||
99 | } | ||
100 | |||
101 | } | ||
102 | |||
103 | sized_base(); | ||
104 | |||
105 | translate([0, rod_length+4*(material_thickness+material_space), 0]) { | ||
106 | mirror([0, 1, 0]) { | ||
107 | sized_base(); | ||
108 | } | ||
109 | } | ||
110 | |||
111 | translate([-rod_radius, 2*(material_thickness+material_space), 0]) { | ||
112 | sized_coupler(); | ||
113 | } | ||
114 | |||
115 | } | ||
116 | |||
117 | |||
118 | /***** MODULE TRANSLATING *****/ | ||
119 | |||
120 | module print_base() { | ||
121 | translate([base_length/2, 0, 0]) { | ||
122 | sized_base(); | ||
123 | } | ||
124 | } | ||
125 | |||
126 | module print_coupler() { | ||
127 | translate([rod_length, 0, 4*(material_thickness+material_space)]) { | ||
128 | rotate([0, 0, 90]) { | ||
129 | mirror([0, 0, 1]) { | ||
130 | sized_coupler(); | ||
131 | } | ||
132 | } | ||
133 | } | ||
134 | } | ||
135 | |||
136 | module print_rod() { | ||
137 | translate([0, rod_radius, rod_radius]) { | ||
138 | sized_rod(); | ||
139 | } | ||
140 | } | ||
141 | |||
142 | module print_pillar() { | ||
143 | rotate([90, 0, 90]) { | ||
144 | sized_pillar(); | ||
145 | } | ||
146 | } | ||
147 | |||
148 | |||
149 | /***** MODULE SIZING *****/ | ||
150 | |||
151 | module sized_base() { | ||
152 | base( base_length, | ||
153 | 2*rod_radius+2*(material_thickness+material_space), | ||
154 | base_height, | ||
155 | material_thickness, | ||
156 | material_space, | ||
157 | material_eco | ||
158 | ); | ||
159 | } | ||
160 | |||
161 | module sized_coupler() { | ||
162 | coupler(rod_length, 2*rod_radius, material_thickness, material_space, material_eco); | ||
163 | } | ||
164 | |||
165 | module sized_rod() { | ||
166 | rod(rod_length, rod_radius); | ||
167 | } | ||
168 | |||
169 | module sized_pillar() { | ||
170 | pillar( 2*rod_radius+2*(material_thickness+material_space), | ||
171 | 2*rod_radius, | ||
172 | pillar_height, | ||
173 | material_thickness, | ||
174 | rod_radius+material_space, | ||
175 | material_eco); | ||
176 | } | ||
177 | |||
178 | |||
179 | /***** MODULES *****/ | ||
180 | |||
181 | module base(length, width, height, material_thickness, material_space, material_eco) { | ||
182 | |||
183 | half_base(length/2, width, height, material_thickness, material_space, material_eco); | ||
184 | |||
185 | mirror([1, 0, 0]) { | ||
186 | half_base(length/2, width, height, material_thickness, material_space, material_eco); | ||
187 | } | ||
188 | |||
189 | } | ||
190 | |||
191 | module half_base(length, width, height, material_thickness, material_space, material_eco) { | ||
192 | |||
193 | difference() { | ||
194 | |||
195 | prism(width, length, height); | ||
196 | |||
197 | translate([0, material_thickness, material_thickness]) { | ||
198 | cube([width/8+material_space, width, height]); | ||
199 | |||
200 | cube([width/2+material_space, width-2*material_thickness, height]); | ||
201 | |||
202 | if (material_eco == true) { | ||
203 | translate([width/2+material_thickness+material_space, 0, 0]) { | ||
204 | cube([length, width-2*material_thickness, height]); | ||
205 | } | ||
206 | } | ||
207 | |||
208 | } | ||
209 | |||
210 | } | ||
211 | |||
212 | } | ||
213 | |||
214 | module pillar(length, width, height, material_thickness, rod_slot, material_eco) { | ||
215 | |||
216 | coupler_slot_height = 2*(material_thickness+material_space)+2*material_space; | ||
217 | length_inside = length-2*material_thickness; | ||
218 | width_inside = width-material_thickness; | ||
219 | |||
220 | difference() { | ||
221 | |||
222 | cube([length, width, height]); | ||
223 | |||
224 | translate([material_thickness, material_thickness, material_thickness]) { | ||
225 | cube([length_inside, width_inside, coupler_slot_height]); | ||