aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPacien TRAN-GIRARD2016-02-16 23:48:03 +0100
committerPacien TRAN-GIRARD2016-02-16 23:48:44 +0100
commit89c18acb1055905909c5f219922e354406c16e9a (patch)
tree5bb2d9846454ac6afbaca9c01db18f389243c3bc
downloadtabletop-spool-holder-master.tar.gz
Import existing filesHEADmaster
-rw-r--r--ParametricTabletopSpoolHolder.scad320
-rw-r--r--instructions.md27
-rw-r--r--readme.md22
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
12material_thickness = 1.5;
13material_space = 0.35;
14material_eco = true;
15
16rod_length = 150;
17rod_radius = 8;
18
19pillar_height = 120;
20
21base_height = 25;
22base_length = 150;
23
24
25/***** TO PRINT *****/
26
27// preview_all();
28
29print_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
45module 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
79module 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
120module print_base() {
121 translate([base_length/2, 0, 0]) {
122 sized_base();
123 }
124}
125
126module 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
136module print_rod() {
137 translate([0, rod_radius, rod_radius]) {
138 sized_rod();
139 }
140}
141
142module print_pillar() {
143 rotate([90, 0, 90]) {
144 sized_pillar();
145 }
146}
147
148
149/***** MODULE SIZING *****/
150
151module 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
161module sized_coupler() {
162 coupler(rod_length, 2*rod_radius, material_thickness, material_space, material_eco);
163}
164
165module sized_rod() {
166 rod(rod_length, rod_radius);
167}
168
169module 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
181module 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
191module 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
214module 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]);
226 }
227
228