@@ -31,19 +31,18 @@ module holodisk_mechanism() { | |||||
spool_plate_holes=3; | spool_plate_holes=3; | ||||
spool_plate_hole_inner_rim=1; | spool_plate_hole_inner_rim=1; | ||||
spool_plate_hole_outer_rim=4; | 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; | spool3_depth=(spool1_depth+spool2_depth)/2; | ||||
spool4_depth=disk_size.y*0.16; | 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_right_x=main_spools_x + spool_outer_radius + 1; | ||||
aux_spools_left_x=main_spools_x - 13; | aux_spools_left_x=main_spools_x - 13; | ||||
middle_spool_in_r=2; | middle_spool_in_r=2; | ||||
middle_spool_out_r=7; | middle_spool_out_r=7; | ||||
aux_spool_plate_hole_inner_rim=2; | aux_spool_plate_hole_inner_rim=2; | ||||
aux_spool_plate_hole_outer_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; | tape_z=plate+spool_plate_height; | ||||
module main_spool() { | module main_spool() { | ||||
@@ -51,7 +50,8 @@ module holodisk_mechanism() { | |||||
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); | |||||
in_height=spool_inner_height, | |||||
spindle_traction=true); | |||||
} | } | ||||
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, | ||||
@@ -4,6 +4,7 @@ use <BOSL/transforms.scad> | |||||
use <BOSL/masks.scad> | use <BOSL/masks.scad> | ||||
use <holodisk_spec.scad> | use <holodisk_spec.scad> | ||||
use <tape_spool.scad> | |||||
use <anim.scad> | use <anim.scad> | ||||
module holodisk_frame() { | module holodisk_frame() { | ||||
@@ -171,14 +172,20 @@ module holodisk_frame() { | |||||
translate(slider_pos) cube(slider_plate_size); | 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) { | right(get_holodisk_size().x) { | ||||
slide(); | slide(); | ||||
slider(); | |||||
slider_anim(); | |||||
} | } | ||||
scale([-1,1,1]) { | scale([-1,1,1]) { | ||||
slide(); | slide(); | ||||
slider(); | |||||
slider_anim(); | |||||
} | } | ||||
right(get_holodisk_laserwindow_pos_center().x) zrot(-90) { | 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() { | module laserwindow_door() { | ||||
door_size = [ | door_size = [ | ||||
get_holodisk_laserwindow_size().x, | get_holodisk_laserwindow_size().x, | ||||
@@ -209,7 +245,15 @@ module holodisk_frame() { | |||||
back_bumpers(); | back_bumpers(); | ||||
square([width, depth]); | square([width, depth]); | ||||
} | } | ||||
// laser cutout | |||||
down(0.1) translate(get_holodisk_laser_cutout_pos()) cube(get_holodisk_laser_cutout_size()); | 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("grey") walls(); | ||||
color("gold") laserwindow_door(); | color("gold") laserwindow_door(); | ||||
color("Silver") slides(); | color("Silver") slides(); | ||||
color("Silver") sliding_cover_anim(); | |||||
color("SaddleBrown") bottom_cover(); | color("SaddleBrown") bottom_cover(); | ||||
color("SaddleBrown") front_plates(); | color("SaddleBrown") front_plates(); | ||||
//color("silver") back_bolts(); | //color("silver") back_bolts(); | ||||
@@ -21,7 +21,7 @@ function get_holodisk_tape_thickness() = 0.2; | |||||
spz = 8; | spz = 8; | ||||
function get_holodisk_slide_size() = [2, 35, get_holodisk_size().z - spz]; | 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; | sy = 2; | ||||
sz = 4; | sz = 4; | ||||
@@ -31,9 +31,12 @@ function get_holodisk_slide_sliding_pos() = [get_holodisk_slide_pos().x, get_hol | |||||
srx = 2; | srx = 2; | ||||
srz = 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 -- | // -- laser -- | ||||
@@ -69,4 +72,20 @@ function get_holodisk_laserwindow_size() = [ | |||||
get_holodisk_tape_height() + 2 | 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 -- | // -- END -- |