Extracted and polished tape spool
This commit is contained in:
		
							parent
							
								
									171eff19e0
								
							
						
					
					
						commit
						6908a1441e
					
				| @ -7,6 +7,7 @@ use <holodisk_spec.scad> | |||||||
| use <anim.scad> | use <anim.scad> | ||||||
| 
 | 
 | ||||||
| include <tape.scad> | include <tape.scad> | ||||||
|  | use <tape_spool.scad> | ||||||
| 
 | 
 | ||||||
| disk_size = get_holodisk_size(); | disk_size = get_holodisk_size(); | ||||||
| holodisk_size = get_holodisk_size(); | holodisk_size = get_holodisk_size(); | ||||||
| @ -235,7 +236,7 @@ module frame(size) { | |||||||
|         module laserwindow_slider_cover() { |         module laserwindow_slider_cover() { | ||||||
|             cover_size=[ |             cover_size=[ | ||||||
|                 get_holodisk_laserwindow_size().x, |                 get_holodisk_laserwindow_size().x, | ||||||
|                 rails_size.y + overlap*2, |                 get_holodisk_slide_slider_size().x, | ||||||
|                 get_holodisk_slide_slider_size().z |                 get_holodisk_slide_slider_size().z | ||||||
|             ]; |             ]; | ||||||
|             cover_plate=[cover_size.x, rail_size.y, cover_size.z]; |             cover_plate=[cover_size.x, rail_size.y, cover_size.z]; | ||||||
| @ -247,7 +248,7 @@ module frame(size) { | |||||||
|             translate(cover_pos) |             translate(cover_pos) | ||||||
|             hull() { |             hull() { | ||||||
|                 fwd(cover_plate.y) cube(cover_plate); |                 fwd(cover_plate.y) cube(cover_plate); | ||||||
|                 fwd(cover_top.y) up((cover_plate.z-cover_top.z)/2) cube(cover_top); |                 right(overlap/2) fwd(cover_top.y) up((cover_plate.z-cover_top.z)/2) cube(cover_top); | ||||||
|             } |             } | ||||||
|         } |         } | ||||||
|          |          | ||||||
| @ -270,52 +271,19 @@ module mechanism(size) { | |||||||
|     depth=size.y; |     depth=size.y; | ||||||
|     height=size.z; |     height=size.z; | ||||||
|      |      | ||||||
|     module spool(r_in, r_out, in_rim, out_rim) { |  | ||||||
|         module spindle(d, h) { |  | ||||||
|             color("Sienna") cylinder(h=h, d=d); |  | ||||||
|         } |  | ||||||
|              |  | ||||||
|         module spool_plate() { |  | ||||||
|             difference() { |  | ||||||
|                 cylinder(h=spool_plate_height, r=r_out); |  | ||||||
|                 if (!$preview && r_out - r_in > out_rim) { |  | ||||||
|                     angle=spool_plate_hole_angle; |  | ||||||
|                     difference() { |  | ||||||
|                         for (i = [1:spool_plate_holes]) { |  | ||||||
|                             zrot(360/spool_plate_holes * i) { |  | ||||||
|                                 angle_pie_mask(r=r_out - out_rim, l=spool_plate_height, ang=angle, center=false); |  | ||||||
|                             } |  | ||||||
|                         } |  | ||||||
|                         cylinder(h=spool_plate_height, r=r_in + in_rim); |  | ||||||
|                     } |  | ||||||
|                 } |  | ||||||
|             } |  | ||||||
|         } |  | ||||||
|          |  | ||||||
|         spindle_h=height-plate; |  | ||||||
|         difference() { |  | ||||||
|             color("Azure") { |  | ||||||
|                 spool_plate(); |  | ||||||
|                 up(spool_plate_height) cylinder(h=spool_inner_height, r=r_in); |  | ||||||
|                 up(spool_plate_height + spool_inner_height) spool_plate(); |  | ||||||
|             } |  | ||||||
|             up(spool_plate_height + spool_inner_height/2) cube([r_in*2, spool_slit_depth, spool_inner_height], center=true); |  | ||||||
|             // TODO: spindle height |  | ||||||
|             spindle(d=spindle_diam+spindle_diam_tolerance, h=spindle_h); |  | ||||||
|         } |  | ||||||
|         spindle(d=spindle_diam, h=spindle_h); |  | ||||||
|     } |  | ||||||
|      |  | ||||||
|     module main_spool() { |     module main_spool() { | ||||||
|         spool(r_in=spool_inner_radius, |         spool(r_in=spool_inner_radius, | ||||||
|             r_out=spool_outer_radius, |             r_out=spool_outer_radius, | ||||||
|             in_rim=spool_plate_hole_inner_rim, |             in_rim=spool_plate_hole_inner_rim, | ||||||
|             out_rim=spool_plate_hole_outer_rim); |             out_rim=spool_plate_hole_outer_rim, | ||||||
|  |             in_height=spool_inner_height); | ||||||
|     } |     } | ||||||
|     module aux_spool() { |     module aux_spool() { | ||||||
|         spool(r_in=middle_spool_in_r, r_out=middle_spool_out_r, |         spool(r_in=middle_spool_in_r, r_out=middle_spool_out_r, | ||||||
|             in_rim=aux_spool_plate_hole_inner_rim, |             in_rim=aux_spool_plate_hole_inner_rim, | ||||||
|             out_rim=aux_spool_plate_hole_outer_rim); |             out_rim=aux_spool_plate_hole_outer_rim, | ||||||
|  |             in_height=spool_inner_height, | ||||||
|  |             spokes=4); | ||||||
|     } |     } | ||||||
|      |      | ||||||
|     module spools() { |     module spools() { | ||||||
|  | |||||||
							
								
								
									
										82
									
								
								tape_spool.scad
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										82
									
								
								tape_spool.scad
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,82 @@ | |||||||
|  | spool_tape_tolerance=1; | ||||||
|  | spool_inner_radius=4; | ||||||
|  | spool_outer_radius=18; | ||||||
|  | spool_plate_height=2; | ||||||
|  | spool_plate_holes=3; | ||||||
|  | spool_plate_hole_angle=360/spool_plate_holes * 0.5; | ||||||
|  | spool_plate_hole_inner_rim=1; | ||||||
|  | spool_plate_hole_outer_rim=4; | ||||||
|  | spindle_diam_tolerance=0.2; | ||||||
|  | 
 | ||||||
|  | // dependency: https://github.com/revarbat/BOSL | ||||||
|  | use <BOSL/transforms.scad> | ||||||
|  | 
 | ||||||
|  | module spindle(d, h, traction=false) { | ||||||
|  |     color("Sienna") cylinder(h=h, d=d, $fn=(traction ? 6 : 20)); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | module spool( | ||||||
|  |         r_in, r_out, | ||||||
|  |         in_rim=1, out_rim=4, | ||||||
|  |         in_height=5, plate_height=1, | ||||||
|  |         center=false, slit_depth=0.5, | ||||||
|  |         spindle_diam=3, spindle_diam_tolerance=0.1, spindle_traction=false, | ||||||
|  |         spokes=3 | ||||||
|  |         ) { | ||||||
|  |     height = plate_height*2 + in_height; | ||||||
|  |     tape_height=in_height; | ||||||
|  |     module spool_plate() { | ||||||
|  |         $fn = ($preview ? 18 : 100); | ||||||
|  |         if (/*!$preview &&*/ spokes > 0 && r_out - r_in > out_rim) { | ||||||
|  |             union() { | ||||||
|  |                 cylinder(h=plate_height, r=r_in + in_rim); | ||||||
|  |                 intersection() { | ||||||
|  |                     cylinder(h=plate_height, r=r_out - out_rim); | ||||||
|  |                     for (i = [1:spokes]) { | ||||||
|  |                         zrot(360/spokes * i) { | ||||||
|  |                             right(r_out/2) up(plate_height/2) | ||||||
|  |                             cube([r_out, r_in, plate_height], center=true); | ||||||
|  |                         } | ||||||
|  |                     } | ||||||
|  |                      | ||||||
|  |                 } | ||||||
|  |                 difference() { | ||||||
|  |                     cylinder(h=plate_height, r=r_out); | ||||||
|  |                     cylinder(h=plate_height, r=r_out - out_rim); | ||||||
|  |                 } | ||||||
|  |             } | ||||||
|  |         } else { | ||||||
|  |             cylinder(h=plate_height, r=r_out); | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  |      | ||||||
|  |     module spool_inner() { | ||||||
|  |         $fn = ($preview ? 10 : 60); | ||||||
|  |         cylinder(h=in_height, r=r_in); | ||||||
|  |     } | ||||||
|  |      | ||||||
|  |     down(center ? height/2 : 0) | ||||||
|  |     difference() { | ||||||
|  |         color("Azure") { | ||||||
|  |             spool_plate(); | ||||||
|  |             up(plate_height) spool_inner(); | ||||||
|  |             up(plate_height + in_height) spool_plate(); | ||||||
|  |         } | ||||||
|  |         if (slit_depth > 0) { | ||||||
|  |             up(plate_height + in_height/2) cube([r_in*2, slit_depth, in_height], center=true); | ||||||
|  |         } | ||||||
|  |         down(height) scale(1 + spindle_diam_tolerance/spindle_diam) spindle(d=spindle_diam+spindle_diam_tolerance, h=height*3, traction=spindle_traction); | ||||||
|  |     } | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | module spool_spindle() { | ||||||
|  |     spindle_h=height-plate; | ||||||
|  |     spindle(d=spindle_diam, h=spindle_h); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | // test | ||||||
|  | spindle_diam=2; | ||||||
|  | tape_height=5; | ||||||
|  | traction=true; | ||||||
|  | spool(r_in=4, r_out=20, in_height=tape_height, spindle_diam=spindle_diam, spindle_traction=traction); | ||||||
|  | down(3) spindle(d=spindle_diam, h=tape_height + 8, traction=traction); | ||||||
		Loading…
	
		Reference in New Issue
	
	Block a user