Extracted anim. Added holodisk spec.

This commit is contained in:
Dejvino
2020-12-31 14:15:57 +01:00
parent c64fee4e52
commit 814f47b1a8
5 changed files with 220 additions and 85 deletions
+102 -12
View File
@@ -1,11 +1,55 @@
// dependency: https://github.com/revarbat/BOSL
use <BOSL/transforms.scad>
use <BOSL/metric_screws.scad>
//use <BOSL/metric_screws.scad>
use <BOSL/masks.scad>
use <holodisk_spec.scad>
use <anim.scad>
include <tape.scad>
module frame() {
disk_size = get_holodisk_size();
holodisk_size = get_holodisk_size();
wall=3;
plate=3;
top_rim=2;
bolt_headtype="hex";
front_body_depth=12;
front_body_bolt_offset=8;
back_bumpers_radius=5;
back_bumpers_bolt_size=3;
tape_height=5;
tape_thickness=0.2;
spool_tape_tolerance=1;
spool_inner_height=tape_height+spool_tape_tolerance;
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;
spool_slit_depth=0.8;
spool1_depth=disk_size.y*0.77;
spool2_depth=disk_size.y*0.40;
spool3_depth=(spool1_depth+spool2_depth)/2;
spool4_depth=disk_size.y*0.16;
main_spools_x=disk_size.x*0.45;
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;
tape_z=plate+spool_plate_height;
module frame(size) {
width=size.x;
depth=size.y;
height=size.z;
tr=top_rim;
tc=tr*1.5;
fbd=front_body_depth;
@@ -76,21 +120,64 @@ module frame() {
}
}
module slides() {
slide_size = get_holodisk_slide_size();
slide_pos = get_holodisk_slide_pos();
slide_plate_size = [0.1, slide_size.y, slide_size.z];
sliding_size = get_holodisk_slide_sliding_size();
sliding_pos = get_holodisk_slide_sliding_pos();
module slide() {
hull() {
translate(sliding_pos) cube(sliding_size);
translate(slide_pos) cube(slide_plate_size);
}
}
module slider() {
slider_size = get_holodisk_slide_slider_size();
slider_pos = get_holodisk_slide_slider_pos();
slider_plate_size = [0.1, slider_size.y, slider_size.z];
slider_top_size = [slider_size.x, slider_size.y, sliding_size.z];
hull() {
up((slider_size.z-sliding_size.z)/2) translate(slider_pos) cube(slider_top_size);
translate(slider_pos) cube(slider_plate_size);
}
}
right(get_holodisk_size().x) {
slide();
slider();
}
scale([-1,1,1]) {
slide();
slider();
}
}
module bottom_cover() {
linear_extrude(height=plate) {
back_bumpers();
square([width, depth]);
difference() {
linear_extrude(height=plate) {
back_bumpers();
square([width, depth]);
}
down(0.1) translate(get_holodisk_laser_cutout_pos()) cube(get_holodisk_laser_cutout_size());
}
}
color("SaddleBrown") top_cover();
color("grey") walls();
color("Silver") slides();
color("SaddleBrown") bottom_cover();
color("silver") back_bolts();
color("silver") front_bolts();
//color("silver") back_bolts();
//color("silver") front_bolts();
}
module mechanism() {
module mechanism(size) {
width=size.x;
depth=size.y;
height=size.z;
module spool(r_in, r_out, in_rim, out_rim) {
module spindle(d, h) {
color("Sienna") cylinder(h=h, d=d);
@@ -180,9 +267,12 @@ module mechanism() {
tapes();
}
module holodisk() {
#frame();
mechanism();
module holodisk(size) {
frame(size);
mechanism(size);
}
holodisk();
retraction=holodisk_size.y+10;
back((1-anim(1, 2)) * retraction) // anim insert
back((anim(len(get_anim_keys())-2, len(get_anim_keys())-1)) * retraction) // anim remove
holodisk(holodisk_size);