summaryrefslogtreecommitdiff
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--another.scad10
1 files changed, 6 insertions, 4 deletions
diff --git a/another.scad b/another.scad
index 03f3bf9..dbd20f3 100644
--- a/another.scad
+++ b/another.scad
@@ -18,48 +18,50 @@ module the_extruder(
18 pulley_d = 11.5, pulley_h=10, 18 pulley_d = 11.5, pulley_h=10,
19 pulley_elevation = 1, // pulley elevation above the protrusion 19 pulley_elevation = 1, // pulley elevation above the protrusion
20 teeth_elevation = 7.5, // distance from the bottom of the pulley to its teeth 20 teeth_elevation = 7.5, // distance from the bottom of the pulley to its teeth
21 // idler properties 21 // idler properties
22 idler_d = 9.5, idler_h = 4, idler_id = 3,// idler dimensions: outer and inner diameters and height 22 idler_d = 9.5, idler_h = 4, idler_id = 3,// idler dimensions: outer and inner diameters and height
23 // spring properties 23 // spring properties
24 spring_d = 10, spring_lc = 9.6, // spring diameter and compressed length 24 spring_d = 10, spring_lc = 9.6, // spring diameter and compressed length
25 // filament path properties 25 // filament path properties
26 filament_d = 1.75, 26 filament_d = 1.75,
27 filament_path_d = 2, 27 filament_path_d = 2,
28 filament_guide_d = 4, // PTFE filament guide diameter 28 filament_guide_d = 4, // PTFE filament guide diameter
29 // knob properties 29 // knob properties
30 knob_h = 10, 30 knob_h = 10,
31 knob_bore_l = 4, 31 knob_bore_l = 4,
32 knob_indent_d = 4, 32 knob_indent_d = 4,
33 knob_indents = 12, 33 knob_indents = 12,
34 // spring tensioner 34 // spring tensioner
35 st_nut_d = 9, st_nut_h = 4, 35 st_nut_d = 9, st_nut_h = 4,
36 st_screw_d = 5, 36 st_screw_d = 5,
37 st_thickshell = 8*extrusion_width, st_thinshell = 4*extrusion_width, 37 st_thickshell = 8*extrusion_width, st_thinshell = 4*extrusion_width,
38 38
39 // screw it 39 // screw it
40 mount_screw_d = 3.1, mount_screw_l = 20, 40 mount_screw_d = 3.1, mount_screw_l = 20,
41 mount_screwhead_d=6, mount_screwhead_h=3, 41 mount_screwhead_d=6, mount_screwhead_h=3,
42 idler_screw_d = 3,
43 idler_screwhead_d=6, idler_screwhead_h=3,
42 44
43 pf = pushfit_embeddest, 45 pf = pushfit_embeddest,
44 46
45 // empty spaces 47 // empty spaces
46 idler_travel = 3, // how far should idler travel when pressed 48 idler_travel = 3, // how far should idler travel when pressed
47 idler_clearance=1, 49 idler_clearance=1,
48 pulley_clearance=2, 50 pulley_clearance=2,
49 lever_v_clearance=.7, // vertical clearance for the lever 51 lever_v_clearance=.7, // vertical clearance for the lever
50 spring_d_clearance=1, 52 spring_d_clearance=1,
51 protrusion_tolerance_h=.5, // horizontal tolerance for the motor protrusion 53 protrusion_tolerance_h=.5, // horizontal tolerance for the motor protrusion
52 protrusion_tolerance_v=.5, // vertical tolerance for the motor protrusion 54 protrusion_tolerance_v=.5, // vertical tolerance for the motor protrusion
53 mount_screw_d_tolerance=.4, 55 mount_screw_d_tolerance=.4,
54 idler_v_tolerance=.5, 56 idler_v_tolerance=.5,
55 knob_bore_d_tolerance=.6, 57 knob_bore_d_tolerance=.6,
56 st_nut_h_tolerance=.2, 58 st_nut_h_tolerance=.2,
57 st_nut_d_tolerance=.2,/* TODO: make it st_nut_w_tolerance */ 59 st_nut_d_tolerance=.2,/* TODO: make it st_nut_w_tolerance */
58 60
59 what="lever", // lever|body|knob|springpad|* 61 what="lever", // lever|body|knob|springpad|*
60 left=false, 62 left=false,
61 vitamins = true, 63 vitamins = true,
62 supports = false, bridges = true, 64 supports = false, bridges = true,
63 tensioner = true, 65 tensioner = true,
64 debug = false 66 debug = false
65) { 67) {
@@ -92,98 +94,98 @@ module the_extruder(
92 rr = depth+hh; 94 rr = depth+hh;
93 translate([0,0,hh]) sphere(r=rr,$fn=fnr*rr); 95 translate([0,0,hh]) sphere(r=rr,$fn=fnr*rr);
94 }else if(r) { 96 }else if(r) {
95 hh=sqrt(pow(r,2)-pow(d,2)/4); 97 hh=sqrt(pow(r,2)-pow(d,2)/4);
96 translate([0,0,hh]) sphere(r=r,$fn=fnr*r); 98 translate([0,0,hh]) sphere(r=r,$fn=fnr*r);
97 } 99 }
98 } 100 }
99 101
100 % if(vitamins) mirrorleft() { 102 % if(vitamins) mirrorleft() {
101 translate([0,0,-epsilon]) mirror([0,0,1]) cylinder(d=gearbox_d,h=1,$fn=60); 103 translate([0,0,-epsilon]) mirror([0,0,1]) cylinder(d=gearbox_d,h=1,$fn=60);
102 for(zr=[0:90:359]) rotate([0,0,zr]) translate([mount_d/2,0,0]) 104 for(zr=[0:90:359]) rotate([0,0,zr]) translate([mount_d/2,0,0])
103 cylinder(d=mount_screw_d,h=20,$fn=30); 105 cylinder(d=mount_screw_d,h=20,$fn=30);
104 translate([0,0,-epsilon]) cylinder(d=protrusion_d,h=protrusion_h,$fn=30); 106 translate([0,0,-epsilon]) cylinder(d=protrusion_d,h=protrusion_h,$fn=30);
105 translate([0,0,protrusion_h]) { 107 translate([0,0,protrusion_h]) {
106 difference() { 108 difference() {
107 cylinder(d=bore_d,h=bore_l,$fn=30); 109 cylinder(d=bore_d,h=bore_l,$fn=30);
108 translate([-bore_d/2-1,bore_dd-bore_d/2,-1]) 110 translate([-bore_d/2-1,bore_dd-bore_d/2,-1])
109 cube([bore_d+2,bore_d/2,bore_l+2]); 111 cube([bore_d+2,bore_d/2,bore_l+2]);
110 } 112 }
111 translate([0,0,pulley_elevation]) { 113 translate([0,0,pulley_elevation]) {
112 cylinder(d=pulley_d,h=pulley_h,$fn=30); 114 cylinder(d=pulley_d,h=pulley_h,$fn=30);
113 translate([0,0,teeth_elevation]) { 115 translate([0,0,teeth_elevation]) {
114 place_idler() { 116 place_idler() {
115 cylinder(d=idler_d,h=idler_h,center=true,$fn=30); 117 cylinder(d=idler_d,h=idler_h,center=true,$fn=30);
116 cylinder(d=idler_id,h=lever_thickness+2,center=true,$fn=30); 118 cylinder(d=idler_screw_d,h=lever_thickness+2,center=true,$fn=30);
117 }//place idler 119 }//place idler
118 // filament path 120 // filament path
119 rotate([0,0,45]) translate([(pulley_d-filament_path_d)/2,0,0]) { 121 rotate([0,0,45]) translate([(pulley_d-filament_path_d)/2,0,0]) {
120 rotate([90,0,0]) cylinder(d=filament_d,h=gearbox_d*2,center=true,$fn=15); 122 rotate([90,0,0]) cylinder(d=filament_d,h=gearbox_d*2,center=true,$fn=15);
121 rotate([-90,0,0]) 123 rotate([-90,0,0])
122 translate([0,0,mount_d/sqrt(2)/2+mount_screw_d]) 124 translate([0,0,mount_d/sqrt(2)/2+mount_screw_d])
123 pushfit(pf); 125 pushfit(pf);
124 } 126 }
125 }//translate teeth 127 }//translate teeth
126 }//translate pulley 128 }//translate pulley
127 }//translate protrusion 129 }//translate protrusion
128 }//vitamins 130 }//vitamins
129 131
130 module lever() { 132 module lever() {
131 translate([0,0,protrusion_h+pulley_elevation+teeth_elevation]) { 133 translate([0,0,protrusion_h+pulley_elevation+teeth_elevation]) {
132 difference() { 134 difference() {
133 union() { 135 union() {
134 hull() { 136 hull() {
135 place_idler() 137 place_idler()
136 cylinder(d=lsd,h=lever_thickness,center=true,$fn=60); 138 cylinder(d=lsd,h=lever_thickness,center=true,$fn=60);
137 translate([mount_d/2,0,0]) 139 translate([mount_d/2,0,0])
138 cylinder(d=lsd,h=lever_thickness,center=true,$fn=60); 140 cylinder(d=lsd,h=lever_thickness,center=true,$fn=60);
139 }//hull 141 }//hull
140 hull() { 142 hull() {
141 translate([mount_d/2,0,0]) 143 translate([mount_d/2,0,0])
142 cylinder(d=lsd,h=lever_thickness,center=true,$fn=60); 144 cylinder(d=lsd,h=lever_thickness,center=true,$fn=60);
143 translate([mount_d/2,-longwing,0]) rotate([0,90,0]) 145 translate([mount_d/2,-longwing,0]) rotate([0,90,0])
144 cylinder(d=lever_thickness,h=lsd,center=true,$fn=60); 146 cylinder(d=lever_thickness,h=lsd,center=true,$fn=60);
145 }//hull 147 }//hull
146 }//union 148 }//union
147 149
148 // filament path 150 // filament path
149 place_idler() translate([-(idler_d+filament_path_d)/2,0,0]) rotate([90,0,0]) { 151 place_idler() translate([-(idler_d+filament_path_d)/2,0,0]) rotate([90,0,0]) {
150 cylinder(d=filament_path_d,h=3*gearbox_d,center=true,$fn=30); 152 cylinder(d=filament_path_d,h=3*gearbox_d,center=true,$fn=30);
151 translate([0,-filament_path_d/2/sqrt(2),0]) rotate([0,0,45]) 153 translate([0,-filament_path_d/2/sqrt(2),0]) rotate([0,0,45])
152 cube(size=[filament_path_d/2,filament_path_d/2,3*gearbox_d],center=true); 154 cube(size=[filament_path_d/2,filament_path_d/2,3*gearbox_d],center=true);
153 } 155 }
154 156
155 // idler space and mounting hole 157 // idler space and mounting hole
156 place_idler() { 158 place_idler() {
157 difference() { 159 difference() {
158 cylinder(d=idler_d+idler_clearance*2,h=idler_h+idler_v_tolerance,center=true,$fn=60); 160 cylinder(d=idler_d+idler_clearance*2,h=idler_h+idler_v_tolerance,center=true,$fn=60);
159 if(supports) for(y=[-lsd/2+extrusion_width:(lsd-2*extrusion_width)/3:lsd/2-extrusion_width]) 161 if(supports) for(y=[-lsd/2+extrusion_width:(lsd-2*extrusion_width)/3:lsd/2-extrusion_width])
160 translate([-lsd/2-1,y-extrusion_width/2,-idler_h/2-idler_v_tolerance/2-1]) 162 translate([-lsd/2-1,y-extrusion_width/2,-idler_h/2-idler_v_tolerance/2-1])
161 cube(size=[lsd+2,extrusion_width,idler_h+idler_v_tolerance+2]); 163 cube(size=[lsd+2,extrusion_width,idler_h+idler_v_tolerance+2]);
162 } 164 }
163 cylinder(d=mount_screw_d+mount_screw_d_tolerance,h=lever_thickness+2,center=true,$fn=30); 165 cylinder(d=idler_screw_d,h=lever_thickness+2,center=true,$fn=30);
164 translate([0,0,lever_thickness/2-mount_screwhead_h]) 166 translate([0,0,lever_thickness/2-idler_screwhead_h])
165 cylinder(d=mount_screwhead_d,h=mount_screwhead_h+1,$fn=fnd*mount_screwhead_d); 167 cylinder(d=idler_screwhead_d,h=idler_screwhead_h+1,$fn=fnd*idler_screwhead_d);
166 } 168 }
167 // mounting screw hole 169 // mounting screw hole
168 translate([mount_d/2,0,0]) 170 translate([mount_d/2,0,0])
169 cylinder(d=mount_screw_d+mount_screw_d_tolerance,h=lever_thickness+2,center=true,$fn=fnd*mount_screw_d); 171 cylinder(d=mount_screw_d+mount_screw_d_tolerance,h=lever_thickness+2,center=true,$fn=fnd*mount_screw_d);
170 172
171 // lever end 173 // lever end
172 translate([mount_d/2,0,0]) rotate([0,90,0]) { 174 translate([mount_d/2,0,0]) rotate([0,90,0]) {
173 translate([0,-longwing,lsd/2]) finger_indent(d=lever_thickness-1,r=15); 175 translate([0,-longwing,lsd/2]) finger_indent(d=lever_thickness-1,r=15);
174 translate([0,-longwing,0]) 176 translate([0,-longwing,0])
175 mirror([0,0,1]) 177 mirror([0,0,1])
176 difference() { 178 difference() {
177 cylinder(d=spring_d+spring_d_clearance,h=lsd,$fn=fnd*(spring_d+spring_d_clearance)); 179 cylinder(d=spring_d+spring_d_clearance,h=lsd,$fn=fnd*(spring_d+spring_d_clearance));
178 sphere(d=spring_d*3/4,$fn=fnd*spring_d*3/4); 180 sphere(d=spring_d*3/4,$fn=fnd*spring_d*3/4);
179 } 181 }
180 }//rotate-translate 182 }//rotate-translate
181 }//difference 183 }//difference
182 // bridging patch 184 // bridging patch
183 if(bridges) place_idler() 185 if(bridges) place_idler()
184 translate([0,0,lever_thickness/2-mount_screwhead_h]) 186 translate([0,0,lever_thickness/2-mount_screwhead_h])
185 mirror([0,0,1]) 187 mirror([0,0,1])
186 cylinder(d=mount_screwhead_d,h=layer_height); 188 cylinder(d=mount_screwhead_d,h=layer_height);
187 }//translate 189 }//translate
188 }//lever module 190 }//lever module
189 191