summaryrefslogtreecommitdiff
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--another.scad22
1 files changed, 17 insertions, 5 deletions
diff --git a/another.scad b/another.scad
index 7e8a45f..342d70c 100644
--- a/another.scad
+++ b/another.scad
@@ -88,133 +88,145 @@ module the_extruder(
88 rotate([0,0,45]) 88 rotate([0,0,45])
89 translate([(pulley_d+idler_d)/2,0,0]) 89 translate([(pulley_d+idler_d)/2,0,0])
90 children(); 90 children();
91 } 91 }
92 module finger_indent(d=lever_thickness,depth/*=1*/,r/*=15*/) { 92 module finger_indent(d=lever_thickness,depth/*=1*/,r/*=15*/) {
93 if(depth) { 93 if(depth) {
94 hh = (-4*pow(depth,2)+pow(d,2))/(8*depth); 94 hh = (-4*pow(depth,2)+pow(d,2))/(8*depth);
95 rr = depth+hh; 95 rr = depth+hh;
96 translate([0,0,hh]) sphere(r=rr,$fn=fnr*rr); 96 translate([0,0,hh]) sphere(r=rr,$fn=fnr*rr);
97 }else if(r) { 97 }else if(r) {
98 hh=sqrt(pow(r,2)-pow(d,2)/4); 98 hh=sqrt(pow(r,2)-pow(d,2)/4);
99 translate([0,0,hh]) sphere(r=r,$fn=fnr*r); 99 translate([0,0,hh]) sphere(r=r,$fn=fnr*r);
100 } 100 }
101 } 101 }
102 102
103 % if(vitamins) mirrorleft() { 103 % if(vitamins) mirrorleft() {
104 translate([0,0,-epsilon]) mirror([0,0,1]) cylinder(d=gearbox_d,h=1,$fn=60); 104 translate([0,0,-epsilon]) mirror([0,0,1]) cylinder(d=gearbox_d,h=1,$fn=60);
105 for(zr=[0:90:359]) rotate([0,0,zr]) translate([mount_d/2,0,0]) 105 for(zr=[0:90:359]) rotate([0,0,zr]) translate([mount_d/2,0,0])
106 cylinder(d=mount_screw_d,h=20,$fn=30); 106 cylinder(d=mount_screw_d,h=20,$fn=30);
107 translate([0,0,-epsilon]) cylinder(d=protrusion_d,h=protrusion_h,$fn=30); 107 translate([0,0,-epsilon]) cylinder(d=protrusion_d,h=protrusion_h,$fn=30);
108 translate([0,0,protrusion_h]) { 108 translate([0,0,protrusion_h]) {
109 difference() { 109 difference() {
110 cylinder(d=bore_d,h=bore_l,$fn=30); 110 cylinder(d=bore_d,h=bore_l,$fn=30);
111 translate([-bore_d/2-1,bore_dd-bore_d/2,-1]) 111 translate([-bore_d/2-1,bore_dd-bore_d/2,-1])
112 cube([bore_d+2,bore_d/2,bore_l+2]); 112 cube([bore_d+2,bore_d/2,bore_l+2]);
113 } 113 }
114 translate([0,0,pulley_elevation]) { 114 translate([0,0,pulley_elevation]) {
115 cylinder(d=pulley_d,h=pulley_h,$fn=30); 115 cylinder(d=pulley_d,h=pulley_h,$fn=30);
116 translate([0,0,teeth_elevation]) { 116 translate([0,0,teeth_elevation]) {
117 place_idler() { 117 place_idler() {
118 cylinder(d=idler_d,h=idler_h,center=true,$fn=30); 118 cylinder(d=idler_d,h=idler_h,center=true,$fn=30);
119 cylinder(d=idler_screw_d,h=lever_thickness+2,center=true,$fn=30); 119 cylinder(d=idler_screw_d,h=lever_thickness+2,center=true,$fn=30);
120 }//place idler 120 }//place idler
121 // filament path 121 // filament path
122 rotate([0,0,45]) translate([(pulley_d-filament_path_d)/2,0,0]) { 122 rotate([0,0,45]) translate([(pulley_d-filament_path_d)/2,0,0]) {
123 rotate([90,0,0]) cylinder(d=filament_d,h=gearbox_d*2,center=true,$fn=15); 123 rotate([90,0,0]) cylinder(d=filament_d,h=gearbox_d*2,center=true,$fn=15);
124 rotate([-90,0,0]) 124 rotate([-90,0,0])
125 translate([0,0,mount_d/sqrt(2)/2+mount_screw_d]) 125 translate([0,0,mount_d/sqrt(2)/2+mount_screw_d])
126 pushfit(pf); 126 pushfit(pf);
127 } 127 }
128 }//translate teeth 128 }//translate teeth
129 }//translate pulley 129 }//translate pulley
130 }//translate protrusion 130 }//translate protrusion
131 }//vitamins 131 }//vitamins
132 132
133 module lever() { 133 module lever() {
134 translate([0,0,protrusion_h+pulley_elevation+teeth_elevation]) { 134 translate([0,0,protrusion_h+pulley_elevation+teeth_elevation]) {
135 difference() { 135 difference() {
136 union() { 136 union() {
137 hull() { 137 hull() {
138 place_idler() 138 place_idler()
139 cylinder(d=lsd,h=lever_thickness,center=true,$fn=60); 139 cylinder(d=lsd,h=lever_thickness,center=true,$fn=60);
140 translate([mount_d/2,0,0]) 140 translate([mount_d/2,0,0])
141 cylinder(d=lsd,h=lever_thickness,center=true,$fn=60); 141 cylinder(d=lsd,h=lever_thickness,center=true,$fn=60);
142 }//hull 142 }//hull
143 hull() { 143 hull() {
144 translate([mount_d/2,0,0]) 144 translate([mount_d/2,0,0])
145 cylinder(d=lsd,h=lever_thickness,center=true,$fn=60); 145 cylinder(d=lsd,h=lever_thickness,center=true,$fn=60);
146 translate([mount_d/2,-longwing,0]) rotate([0,90,0]) 146 translate([mount_d/2,-longwing,0]) rotate([0,90,0])
147 cylinder(d=lever_thickness,h=lsd,center=true,$fn=60); 147 cylinder(d=lever_thickness,h=lsd,center=true,$fn=60);
148 }//hull 148 }//hull
149 }//union 149 }//union
150 150
151 // filament path 151 // filament path
152 place_idler() translate([-(idler_d+filament_path_d)/2,0,0]) rotate([90,0,0]) { 152 place_idler() {
153 cylinder(d=filament_path_d,h=3*gearbox_d,center=true,$fn=30); 153 translate([-(idler_d+filament_path_d)/2,0,0]) rotate([90,0,0]) {
154 translate([0,-filament_path_d/2/sqrt(2),0]) rotate([0,0,45]) 154 cylinder(d=filament_path_d,h=3*gearbox_d,center=true,$fn=30);
155 cube(size=[filament_path_d/2,filament_path_d/2,3*gearbox_d],center=true); 155 translate([0,-filament_path_d/2/sqrt(2),0]) rotate([0,0,45])
156 } 156 cube(size=[filament_path_d/2,filament_path_d/2,3*gearbox_d],center=true);
157 }//rotate translate
158 translate([-(idler_d+filament_path_d)/2,0,0])
159 rotate([90,0,0])
160 translate([0,0,
161 sqrt(2)*(mount_d-pulley_d+filament_path_d+lsd)/2
162 ]) {
163 cylinder(d1=filament_path_d,d2=2*filament_path_d,
164 h=filament_path_d,$fn=2*filament_path_d*fnd);
165 translate([0,0,filament_path_d-epsilon])
166 cylinder(d=2*filament_path_d,h=lsd,$fn=2*filament_path_d*fnd);
167 }
168 }//place_idler
157 169
158 // idler space and mounting hole 170 // idler space and mounting hole
159 place_idler() { 171 place_idler() {
160 difference() { 172 difference() {
161 cylinder(d=idler_d+idler_clearance*2,h=idler_h+idler_v_tolerance,center=true,$fn=60); 173 cylinder(d=idler_d+idler_clearance*2,h=idler_h+idler_v_tolerance,center=true,$fn=60);
162 if(supports) for(y=[-lsd/2+extrusion_width:(lsd-2*extrusion_width)/3:lsd/2-extrusion_width]) 174 if(supports) for(y=[-lsd/2+extrusion_width:(lsd-2*extrusion_width)/3:lsd/2-extrusion_width])
163 translate([-lsd/2-1,y-extrusion_width/2,-idler_h/2-idler_v_tolerance/2-1]) 175 translate([-lsd/2-1,y-extrusion_width/2,-idler_h/2-idler_v_tolerance/2-1])
164 cube(size=[lsd+2,extrusion_width,idler_h+idler_v_tolerance+2]); 176 cube(size=[lsd+2,extrusion_width,idler_h+idler_v_tolerance+2]);
165 } 177 }
166 cylinder(d=idler_screw_d,h=lever_thickness+2,center=true,$fn=30); 178 cylinder(d=idler_screw_d,h=lever_thickness+2,center=true,$fn=30);
167 translate([0,0,lever_thickness/2-idler_screwhead_h]) 179 translate([0,0,lever_thickness/2-idler_screwhead_h])
168 cylinder(d=idler_screwhead_d,h=idler_screwhead_h+1,$fn=fnd*idler_screwhead_d); 180 cylinder(d=idler_screwhead_d,h=idler_screwhead_h+1,$fn=fnd*idler_screwhead_d);
169 } 181 }
170 // mounting screw hole 182 // mounting screw hole
171 translate([mount_d/2,0,0]) 183 translate([mount_d/2,0,0])
172 cylinder(d=mount_screw_d+mount_screw_d_tolerance,h=lever_thickness+2,center=true,$fn=fnd*mount_screw_d); 184 cylinder(d=mount_screw_d+mount_screw_d_tolerance,h=lever_thickness+2,center=true,$fn=fnd*mount_screw_d);
173 185
174 // lever end 186 // lever end
175 translate([mount_d/2,0,0]) rotate([0,90,0]) { 187 translate([mount_d/2,0,0]) rotate([0,90,0]) {
176 translate([0,-longwing,lsd/2]) finger_indent(d=lever_thickness-1,r=15); 188 translate([0,-longwing,lsd/2]) finger_indent(d=lever_thickness-1,r=15);
177 translate([0,-longwing,0]) 189 translate([0,-longwing,0])
178 mirror([0,0,1]) 190 mirror([0,0,1])
179 difference() { 191 difference() {
180 cylinder(d=spring_d+spring_d_clearance,h=lsd,$fn=fnd*(spring_d+spring_d_clearance)); 192 cylinder(d=spring_d+spring_d_clearance,h=lsd,$fn=fnd*(spring_d+spring_d_clearance));
181 sphere(d=spring_d*3/4,$fn=fnd*spring_d*3/4); 193 sphere(d=spring_d*3/4,$fn=fnd*spring_d*3/4);
182 } 194 }
183 }//rotate-translate 195 }//rotate-translate
184 }//difference 196 }//difference
185 // bridging patch 197 // bridging patch
186 if(bridges) place_idler() 198 if(bridges) place_idler()
187 translate([0,0,lever_thickness/2-mount_screwhead_h]) 199 translate([0,0,lever_thickness/2-mount_screwhead_h])
188 mirror([0,0,1]) 200 mirror([0,0,1])
189 cylinder(d=mount_screwhead_d,h=layer_height); 201 cylinder(d=mount_screwhead_d,h=layer_height);
190 }//translate 202 }//translate
191 }//lever module 203 }//lever module
192 204
193 module body() { 205 module body() {
194 difference() { 206 difference() {
195 union() { 207 union() {
196 cylinder(d=gearbox_d,h=body_h,$fn=fnd*gearbox_d); 208 cylinder(d=gearbox_d,h=body_h,$fn=fnd*gearbox_d);
197 // finger and spring support 209 // finger and spring support
198 fsw = gearbox_d-(gearbox_d-mount_d)/2-spring_lc; 210 fsw = gearbox_d-(gearbox_d-mount_d)/2-spring_lc;
199 translate([-gearbox_d/2,0,0]) difference() { 211 translate([-gearbox_d/2,0,0]) difference() {
200 union() { 212 union() {
201 hull() { 213 hull() {
202 translate([0,-longwing,ls_z]) 214 translate([0,-longwing,ls_z])
203 rotate([0,90,0]) 215 rotate([0,90,0])
204 cylinder(d=lever_thickness,h=fsw,$fn=fnd*lever_thickness); 216 cylinder(d=lever_thickness,h=fsw,$fn=fnd*lever_thickness);
205 hh=body_h-ls_z; 217 hh=body_h-ls_z;
206 translate([0,0,ls_z-lever_thickness/2]) 218 translate([0,0,ls_z-lever_thickness/2])
207 mirror([0,1,0]) cube(size=[fsw,longwing-hh+lever_thickness/sqrt(2),hh+lever_thickness/2]); 219 mirror([0,1,0]) cube(size=[fsw,longwing-hh+lever_thickness/sqrt(2),hh+lever_thickness/2]);
208 hhh=ls_z; 220 hhh=ls_z;
209 translate([0,0,0]) 221 translate([0,0,0])
210 mirror([0,1,0]) cube(size=[fsw,longwing-hhh+lever_thickness/sqrt(2),hhh+lever_thickness/2]); 222 mirror([0,1,0]) cube(size=[fsw,longwing-hhh+lever_thickness/sqrt(2),hhh+lever_thickness/2]);
211 } 223 }
212 } 224 }
213 translate([0,-longwing,ls_z]) rotate([0,-90,0]) { 225 translate([0,-longwing,ls_z]) rotate([0,-90,0]) {
214 if(!tensioner) finger_indent(d=lever_thickness-1,r=15); else { 226 if(!tensioner) finger_indent(d=lever_thickness-1,r=15); else {
215 mirror([0,0,1]) { 227 mirror([0,0,1]) {
216 translate([0,0,st_thickshell]) 228 translate([0,0,st_thickshell])
217 hull() for(o=[0,spring_d]) translate([0,-o,0]) 229 hull() for(o=[0,spring_d]) translate([0,-o,0])
218 rotate([0,0,30]) 230 rotate([0,0,30])
219 cylinder(d=st_nut_d+st_nut_d_tolerance,h=st_nut_h+st_nut_h_tolerance,$fn=6); 231 cylinder(d=st_nut_d+st_nut_d_tolerance,h=st_nut_h+st_nut_h_tolerance,$fn=6);
220 translate([0,0,-1]) cylinder(d=st_screw_d+st_screw_d_tolerance,h=fsw+2,$fn=fnd*(st_screw_d+st_screw_d_tolerance)); 232 translate([0,0,-1]) cylinder(d=st_screw_d+st_screw_d_tolerance,h=fsw+2,$fn=fnd*(st_screw_d+st_screw_d_tolerance));