Extracted anim. Added holodisk spec.
This commit is contained in:
+102
-12
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user