@@ -31,19 +31,18 @@ module holodisk_mechanism() { | |||
spool_plate_holes=3; | |||
spool_plate_hole_inner_rim=1; | |||
spool_plate_hole_outer_rim=4; | |||
spool1_depth=disk_size.y*0.77; | |||
spool2_depth=disk_size.y*0.40; | |||
spool1_depth=get_holodisk_spool1_socket_pos_center().y; | |||
spool2_depth=get_holodisk_spool2_socket_pos_center().y; | |||
spool3_depth=(spool1_depth+spool2_depth)/2; | |||
spool4_depth=disk_size.y*0.16; | |||
main_spools_x=disk_size.x*0.45; | |||
main_spools_x=get_holodisk_spool1_socket_pos_center().x; | |||
aux_spools_right_x=main_spools_x + spool_outer_radius + 1; | |||
aux_spools_left_x=main_spools_x - 13; | |||
middle_spool_in_r=2; | |||
middle_spool_out_r=7; | |||
aux_spool_plate_hole_inner_rim=2; | |||
aux_spool_plate_hole_outer_rim=2; | |||
spindle_diam=2; | |||
spindle_diam_tolerance=0.2; | |||
spindle_diam=get_holodisk_spools_spindle_diam(); | |||
tape_z=plate+spool_plate_height; | |||
module main_spool() { | |||
@@ -51,7 +50,8 @@ module holodisk_mechanism() { | |||
r_out=spool_outer_radius, | |||
in_rim=spool_plate_hole_inner_rim, | |||
out_rim=spool_plate_hole_outer_rim, | |||
in_height=spool_inner_height); | |||
in_height=spool_inner_height, | |||
spindle_traction=true); | |||
} | |||
module aux_spool() { | |||
spool(r_in=middle_spool_in_r, r_out=middle_spool_out_r, | |||
@@ -4,6 +4,7 @@ use <BOSL/transforms.scad> | |||
use <BOSL/masks.scad> | |||
use <holodisk_spec.scad> | |||
use <tape_spool.scad> | |||
use <anim.scad> | |||
module holodisk_frame() { | |||
@@ -171,14 +172,20 @@ module holodisk_frame() { | |||
translate(slider_pos) cube(slider_plate_size); | |||
} | |||
} | |||
module slider_anim() { | |||
back(anim(1,2)*get_holodisk_slide_slider_travel()) // anim insert | |||
fwd(anim(5,6)*get_holodisk_slide_slider_travel()) // anim remove | |||
slider(); | |||
} | |||
right(get_holodisk_size().x) { | |||
slide(); | |||
slider(); | |||
slider_anim(); | |||
} | |||
scale([-1,1,1]) { | |||
slide(); | |||
slider(); | |||
slider_anim(); | |||
} | |||
right(get_holodisk_laserwindow_pos_center().x) zrot(-90) { | |||
@@ -188,6 +195,35 @@ module holodisk_frame() { | |||
} | |||
} | |||
module sliding_cover() { | |||
thickness=1; | |||
overlap=2; | |||
cover_size=[ | |||
get_holodisk_size().x+thickness*2, | |||
get_holodisk_laser_cutout_size().y+overlap*2, | |||
thickness | |||
]; | |||
cover_posc=[ | |||
get_holodisk_laser_cutout_pos_center().x, | |||
get_holodisk_laser_cutout_pos_center().y, | |||
cover_size.z/2 | |||
]; | |||
cover_side_size=[thickness, cover_size.y, get_holodisk_slide_slider_pos().z]; | |||
cover_side_left_posd=[-cover_size.x/2+thickness/2, 0, cover_side_size.z/2]; | |||
cover_side_right_posd=[cover_size.x/2-thickness/2, 0, cover_side_size.z/2]; | |||
translate(cover_posc) { | |||
cube(cover_size, center=true); | |||
translate(cover_side_left_posd) cube(cover_side_size, center=true); | |||
translate(cover_side_right_posd) cube(cover_side_size, center=true); | |||
} | |||
} | |||
module sliding_cover_anim() { | |||
back(anim(1,2)*get_holodisk_slide_slider_travel()) // anim insert | |||
fwd(anim(5,6)*get_holodisk_slide_slider_travel()) // anim remove | |||
sliding_cover(); | |||
} | |||
module laserwindow_door() { | |||
door_size = [ | |||
get_holodisk_laserwindow_size().x, | |||
@@ -209,7 +245,15 @@ module holodisk_frame() { | |||
back_bumpers(); | |||
square([width, depth]); | |||
} | |||
// laser cutout | |||
down(0.1) translate(get_holodisk_laser_cutout_pos()) cube(get_holodisk_laser_cutout_size()); | |||
// sliding cover | |||
sliding_cover(); | |||
back(get_holodisk_slide_slider_travel()*0.5) sliding_cover(); | |||
back(get_holodisk_slide_slider_travel()) sliding_cover(); | |||
// spool spindles | |||
translate(get_holodisk_spool1_socket_pos_center()) spindle(h=height, d=get_holodisk_spools_spindle_diam()); | |||
translate(get_holodisk_spool2_socket_pos_center()) spindle(h=height, d=get_holodisk_spools_spindle_diam()); | |||
} | |||
} | |||
@@ -258,6 +302,7 @@ module holodisk_frame() { | |||
color("grey") walls(); | |||
color("gold") laserwindow_door(); | |||
color("Silver") slides(); | |||
color("Silver") sliding_cover_anim(); | |||
color("SaddleBrown") bottom_cover(); | |||
color("SaddleBrown") front_plates(); | |||
//color("silver") back_bolts(); | |||
@@ -21,7 +21,7 @@ function get_holodisk_tape_thickness() = 0.2; | |||
spz = 8; | |||
function get_holodisk_slide_size() = [2, 35, get_holodisk_size().z - spz]; | |||
function get_holodisk_slide_pos() = [0, 15, spz/2]; | |||
function get_holodisk_slide_pos() = [0, 6, spz/2]; | |||
sy = 2; | |||
sz = 4; | |||
@@ -31,9 +31,12 @@ function get_holodisk_slide_sliding_pos() = [get_holodisk_slide_pos().x, get_hol | |||
srx = 2; | |||
srz = 2; | |||
function get_holodisk_slide_slider_size() = [get_holodisk_slide_size().x + srx, 15, get_holodisk_slide_size().z + srz]; | |||
function get_holodisk_slide_slider_size() = [get_holodisk_slide_size().x + srx, 13, get_holodisk_slide_size().z + srz]; | |||
function get_holodisk_slide_slider_pos() = [get_holodisk_slide_sliding_pos().x, get_holodisk_slide_sliding_pos().y + 5, get_holodisk_slide_sliding_pos().z - get_holodisk_slide_slider_size().z/2 + srz]; | |||
sliding_reserve=3; | |||
function get_holodisk_slide_slider_pos() = [get_holodisk_slide_sliding_pos().x, get_holodisk_slide_sliding_pos().y + sliding_reserve, get_holodisk_slide_sliding_pos().z - get_holodisk_slide_slider_size().z/2 + srz]; | |||
function get_holodisk_slide_slider_travel() = get_holodisk_slide_sliding_size().y - get_holodisk_slide_slider_size().y - 2*sliding_reserve; | |||
// -- laser -- | |||
@@ -69,4 +72,20 @@ function get_holodisk_laserwindow_size() = [ | |||
get_holodisk_tape_height() + 2 | |||
]; | |||
// -- spools -- | |||
function get_holodisk_spool1_socket_pos_center() = [ | |||
get_holodisk_size().x*0.45, | |||
get_holodisk_size().y*0.77, | |||
0 | |||
]; | |||
function get_holodisk_spool2_socket_pos_center() = [ | |||
get_holodisk_spool1_socket_pos_center().x, | |||
get_holodisk_size().y*0.40, | |||
0 | |||
]; | |||
function get_holodisk_spools_spindle_diam() = 3; | |||
// -- END -- |